aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac26
-rw-r--r--externals/Makefile.am39
-rw-r--r--substitute.mk1
-rw-r--r--tests/common.sh.in4
-rw-r--r--tests/init.sh2
5 files changed, 58 insertions, 14 deletions
diff --git a/configure.ac b/configure.ac
index f6e548729..11ce58e6d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,22 +160,26 @@ fi
AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2=PATH],
[prefix of bzip2]),
bzip2=$withval, bzip2=)
+AM_CONDITIONAL(HAVE_BZIP2, test -n "$bzip2")
if test -z "$bzip2"; then
- AC_CHECK_LIB(bz2, BZ2_bzWriteOpen,
- [bzip2_lib="-lbz2"], [AC_MSG_ERROR([cannot find -lbz (bzip2)])])
- AC_CHECK_HEADER(bzlib.h,
- [bzip2_include=""], [AC_MSG_ERROR([cannot find bzlib.h (bzip2)])])
- AC_PATH_PROG(bzip2_prog, bzip2,
- [AC_MSG_ERROR([cannot find bzip2])])
- bzip2_bin=$(dirname $bzip2_prog)
+ # Headers and libraries will be used from the temporary installation
+ # in externals/inst-bzip2.
+ bzip2_lib='-L${top_builddir}/externals/inst-bzip2/lib -lbz2'
+ bzip2_include='-I${top_builddir}/externals/inst-bzip2/include'
+ # The binary will be copied to $libexecdir.
+ bzip2_bin='${libexecdir}'
+ # But for testing, we have to use the temporary copy :-(
+ bzip2_bin_test='${top_builddir}/externals/inst-bzip2/bin'
else
- bzip2_lib="-L$bzip2/lib -lbz2"
- bzip2_include="-I$bzip2/include"
- bzip2_bin="$bzip2/bin"
+ bzip2_lib="-L$bzip2/lib -lbz2"
+ bzip2_include="-I$bzip2/include"
+ bzip2_bin="$bzip2/bin"
+ bzip2_bin_test="$bzip2/bin"
fi
AC_SUBST(bzip2_lib)
AC_SUBST(bzip2_include)
AC_SUBST(bzip2_bin)
+AC_SUBST(bzip2_bin_test)
AC_CHECK_LIB(pthread, pthread_mutex_init)
@@ -212,7 +216,7 @@ AC_SUBST(NIX_GROUP)
AC_DEFINE_UNQUOTED(NIX_GROUP, ["$NIX_GROUP"], [Nix group])
-# This is needed if either ATerm or Berkeley DB are static libraries,
+# This is needed if ATerm, Berkeley DB or bzip2 are static libraries,
# and the Nix libraries are dynamic.
if test "$(uname)" = "Darwin"; then
LDFLAGS="-all_load $LDFLAGS"
diff --git a/externals/Makefile.am b/externals/Makefile.am
index dcddaa5d1..7fa9e6f64 100644
--- a/externals/Makefile.am
+++ b/externals/Makefile.am
@@ -64,10 +64,43 @@ build-aterm: have-aterm
endif
-all: build-db build-aterm
+# bzip2
-EXTRA_DIST = $(DB).tar.gz $(ATERM).tar.gz
+BZIP2 = bzip2-1.0.3
+
+$(BZIP2).tar.gz:
+ @echo "Nix requires bzip2 to build."
+ @echo "Please download version 1.0.3 from"
+ @echo " http://www.bzip.org/1.0.3/bzip2-1.0.3.tar.gz"
+ @echo "and place it in the externals/ directory."
+ false
+
+$(BZIP2): $(BZIP2).tar.gz
+ gunzip < $(BZIP2).tar.gz | tar xvf -
+
+have-bzip2:
+ $(MAKE) $(BZIP2)
+ touch have-bzip2
+
+if HAVE_BZIP2
+build-bzip2:
+else
+build-bzip2: have-bzip2
+ (pfx=`pwd` && \
+ cd $(BZIP2) && \
+ $(MAKE) && \
+ $(MAKE) install PREFIX=$$pfx/inst-bzip2)
+ touch build-bzip2
+
+install:
+ cp $(bzip2_bin_test)/bzip2 $(bzip2_bin_test)/bunzip2 ${bzip2_bin}
+endif
+
+
+all: build-db build-aterm build-bzip2
+
+EXTRA_DIST = $(DB).tar.gz $(ATERM).tar.gz $(BZIp2).tar.gz
ext-clean:
$(RM) -f have-db build-db have-aterm build-aterm
- $(RM) -rf $(DB) $(ATERM)
+ $(RM) -rf $(DB) $(ATERM) $(BZIP2)
diff --git a/substitute.mk b/substitute.mk
index 9e3123a14..18e4585d7 100644
--- a/substitute.mk
+++ b/substitute.mk
@@ -13,6 +13,7 @@
-e "s^@curl\@^$(curl)^g" \
-e "s^@bzip2\@^$(bzip2_bin)/bzip2^g" \
-e "s^@bunzip2\@^$(bzip2_bin)/bunzip2^g" \
+ -e "s^@bzip2_bin_test\@^$(bzip2_bin_test)^g" \
-e "s^@perl\@^$(perl)^g" \
-e "s^@coreutils\@^$(coreutils)^g" \
-e "s^@tar\@^$(tar)^g" \
diff --git a/tests/common.sh.in b/tests/common.sh.in
index 0f55d6cf8..07250ad6e 100644
--- a/tests/common.sh.in
+++ b/tests/common.sh.in
@@ -24,6 +24,10 @@ export NIX_BUILD_HOOK=
export PERL=perl
export TOP=$(pwd)/..
export aterm_bin=@aterm_bin@
+export bzip2_bin_test="@bzip2_bin_test@"
+if test "${bzip2_bin_test:0:1}" != "/"; then
+ bzip2_bin_test=`pwd`/${bzip2_bin_test}
+fi
export dot=@dot@
export xmllint="@xmllint@"
export xmlflags="@xmlflags@"
diff --git a/tests/init.sh b/tests/init.sh
index 11e0632a4..d49d57ced 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -24,6 +24,8 @@ ln -s $nixhash $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-prefetch-url $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-collect-garbage $NIX_BIN_DIR/
ln -s $TOP/scripts/nix-build $NIX_BIN_DIR/
+ln -s $bzip2_bin_test/bzip2 $NIX_BIN_DIR/
+ln -s $bzip2_bin_test/bunzip2 $NIX_BIN_DIR/
mkdir $NIX_BIN_DIR/nix
ln -s $TOP/scripts/download-using-manifests.pl $NIX_BIN_DIR/nix/
ln -s $TOP/scripts/readmanifest.pm $NIX_BIN_DIR/nix/