summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/llnl/util/filesystem.py8
-rw-r--r--lib/spack/spack/build_environment.py1
-rw-r--r--var/spack/packages/bzip2/package.py17
3 files changed, 25 insertions, 1 deletions
diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py
index 24c77a80db..9f08832598 100644
--- a/lib/spack/llnl/util/filesystem.py
+++ b/lib/spack/llnl/util/filesystem.py
@@ -30,6 +30,7 @@ import os
import sys
import re
import shutil
+import stat
import errno
import getpass
from contextlib import contextmanager, closing
@@ -145,6 +146,13 @@ def install(src, dest):
shutil.copy(src, dest)
set_install_permissions(dest)
+ src_mode = os.stat(src).st_mode
+ dest_mode = os.stat(dest).st_mode
+ if src_mode | stat.S_IXUSR: dest_mode |= stat.S_IXUSR
+ if src_mode | stat.S_IXGRP: dest_mode |= stat.S_IXGRP
+ if src_mode | stat.S_IXOTH: dest_mode |= stat.S_IXOTH
+ os.chmod(dest, dest_mode)
+
def expand_user(path):
"""Find instances of '%u' in a path and replace with the current user's
diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 87cfa772ca..45353ec640 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -190,6 +190,7 @@ def set_module_variables_for_package(pkg):
m.makedirs = os.makedirs
m.remove = os.remove
m.removedirs = os.removedirs
+ m.symlink = os.symlink
m.mkdirp = mkdirp
m.install = install
diff --git a/var/spack/packages/bzip2/package.py b/var/spack/packages/bzip2/package.py
index 83ae88e564..fbd5869a53 100644
--- a/var/spack/packages/bzip2/package.py
+++ b/var/spack/packages/bzip2/package.py
@@ -1,4 +1,5 @@
from spack import *
+from glob import glob
class Bzip2(Package):
"""bzip2 is a freely available, patent free high-quality data
@@ -15,5 +16,19 @@ class Bzip2(Package):
# No configure system -- have to filter the makefile for this package.
filter_file(r'CC=gcc', 'CC=cc', 'Makefile', string=True)
- make()
+ make('-f', 'Makefile-libbz2_so')
+ make('clean')
make("install", "PREFIX=%s" % prefix)
+
+ bzip2_exe = join_path(prefix.bin, 'bzip2')
+ install('bzip2-shared', bzip2_exe)
+ for libfile in glob('libbz2.so*'):
+ install(libfile, prefix.lib)
+
+ bunzip2 = join_path(prefix.bin, 'bunzip2')
+ remove(bunzip2)
+ symlink(bzip2_exe, bunzip2)
+
+ bzcat = join_path(prefix.bin, 'bzcat')
+ remove(bzcat)
+ symlink(bzip2_exe, bzcat)