From 0202ce6b94f287f70a6723473c73a4c7f135dae4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 25 Nov 2013 18:47:03 +0100 Subject: [PATCH] =?UTF-8?q?Add=20support=20for=20=E2=80=98make=20installch?= =?UTF-8?q?eck=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 9 --------- Makefile | 3 ++- Makefile.config.in | 2 +- corepkgs/config.nix.in | 2 +- mk/lib.mk | 6 ++++++ scripts/nix-reduce-build.in | 2 +- src/nix-log2xml/Makefile | 3 +++ tests/Makefile | 21 +++++++++++++++++++++ tests/common.sh.in | 8 ++++---- tests/{config.nix.in => config.nix} | 12 +++++++----- tests/parallel.sh | 12 ++++++------ 11 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 tests/Makefile rename tests/{config.nix.in => config.nix} (60%) diff --git a/.gitignore b/.gitignore index fafe8a17a..42c7be2b7 100644 --- a/.gitignore +++ b/.gitignore @@ -85,10 +85,6 @@ Makefile.config # /src/nix-log2xml/ /src/nix-log2xml/nix-log2xml -/src/nix-log2xml/test*.* -/src/nix-log2xml/*.log -/src/nix-log2xml/*.xml -/src/nix-log2xml/*.html # /src/nix-store/ /src/nix-store/nix-store @@ -98,7 +94,6 @@ Makefile.config # /tests/ /tests/test-tmp -/tests/config.nix /tests/common.sh /tests/dummy /tests/result* @@ -111,11 +106,7 @@ Makefile.config /perl/lib/Nix/Config.pm /perl/lib/Nix/Store.cc -.deps -.libs *.a -*.lo -*.la *.o *.so *.dep diff --git a/Makefile b/Makefile index 6abce9372..85a2dc8e5 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,8 @@ SUBS = \ src/bsdiff-4.3/Makefile \ perl/Makefile \ scripts/Makefile \ - corepkgs/Makefile + corepkgs/Makefile \ + tests/Makefile GLOBAL_CXXFLAGS = -I . -I src -I src/libutil -I src/libstore -I src/libmain -I src/libexpr diff --git a/Makefile.config.in b/Makefile.config.in index 65080c88f..130da2625 100644 --- a/Makefile.config.in +++ b/Makefile.config.in @@ -1,5 +1,4 @@ BDW_GC_LIBS = @BDW_GC_LIBS@ -BUILD_DEBUG = 1 CC = @CC@ CFLAGS = @CFLAGS@ CXX = @CXX@ @@ -8,6 +7,7 @@ HAVE_OPENSSL = @HAVE_OPENSSL@ OPENSSL_LIBS = @OPENSSL_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ +bash = @bash@ bindir = @bindir@ bsddiff_compat_include = @bsddiff_compat_include@ datadir = @datadir@ diff --git a/corepkgs/config.nix.in b/corepkgs/config.nix.in index 3819dc96c..a5ec83b9e 100644 --- a/corepkgs/config.nix.in +++ b/corepkgs/config.nix.in @@ -4,7 +4,7 @@ let if val != "" then val else def; in { perl = "@perl@"; - shell = "@shell@"; + shell = "@bash@"; coreutils = "@coreutils@"; bzip2 = "@bzip2@"; gzip = "@gzip@"; diff --git a/mk/lib.mk b/mk/lib.mk index 107a5af3f..60b6815e9 100644 --- a/mk/lib.mk +++ b/mk/lib.mk @@ -17,6 +17,8 @@ noinst_SCRIPTS := # Pass -fPIC if we're building dynamic libraries. +BUILD_SHARED_LIBS = 1 + ifeq ($(BUILD_SHARED_LIBS), 1) GLOBAL_CFLAGS += -fPIC GLOBAL_CXXFLAGS += -fPIC @@ -25,6 +27,8 @@ endif # Pass -g if we want debug info. +BUILD_DEBUG = 1 + ifeq ($(BUILD_DEBUG), 1) GLOBAL_CFLAGS += -g GLOBAL_CXXFLAGS += -g @@ -38,6 +42,7 @@ include mk/libraries.mk include mk/programs.mk include mk/patterns.mk include mk/templates.mk +include mk/tests.mk # Include all sub-Makefiles. @@ -56,6 +61,7 @@ $(foreach script, $(bin_SCRIPTS), $(eval $(call install-program-in,$(script),$(b $(foreach script, $(bin_SCRIPTS), $(eval programs_list += $(script))) $(foreach script, $(noinst_SCRIPTS), $(eval programs_list += $(script))) $(foreach template, $(template_files), $(eval $(call instantiate-template,$(template)))) +$(foreach test, $(INSTALL_TESTS), $(eval $(call run-install-test,$(test)))) all: $(programs_list) $(libs_list) diff --git a/scripts/nix-reduce-build.in b/scripts/nix-reduce-build.in index 0c33275d5..50beb9d10 100755 --- a/scripts/nix-reduce-build.in +++ b/scripts/nix-reduce-build.in @@ -1,4 +1,4 @@ -#! @shell@ +#! @bash@ WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX); cd "$WORKING_DIRECTORY"; diff --git a/src/nix-log2xml/Makefile b/src/nix-log2xml/Makefile index a88f94867..8b02dca7a 100644 --- a/src/nix-log2xml/Makefile +++ b/src/nix-log2xml/Makefile @@ -3,3 +3,6 @@ PROGRAMS += nix-log2xml nix-log2xml_DIR := $(d) nix-log2xml_SOURCES = log2xml.cc + +$(foreach file, mark-errors.xsl log2html.xsl treebits.js, \ + $(eval $(call install-data-in, $(d)/$(file), $(datadir)/nix/log2html))) diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 000000000..21ffd047f --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,21 @@ +check: + @echo "Warning: Nix has no 'make check'. Please install Nix and run 'make installcheck' instead." + +nix_tests = \ + init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \ + parallel.sh build-hook.sh substitutes.sh substitutes2.sh \ + fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \ + referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \ + gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \ + remote-store.sh export.sh export-graph.sh negative-caching.sh \ + binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh \ + multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \ + binary-cache.sh nix-profile.sh + +INSTALL_TESTS += $(foreach x, $(nix_tests), tests/$(x)) + +TESTS_ENVIRONMENT = NIX_REMOTE= $(bash) -e + +clean_files += $(d)/common.sh + +installcheck: $(d)/common.sh diff --git a/tests/common.sh.in b/tests/common.sh.in index 2ae34603f..633769ae2 100644 --- a/tests/common.sh.in +++ b/tests/common.sh.in @@ -1,7 +1,7 @@ set -e datadir="@datadir@" -profiledir="@profiledir@" +profiledir="@sysconfdir@/profile.d" export TEST_ROOT=$(pwd)/test-tmp export NIX_STORE_DIR @@ -16,7 +16,7 @@ export NIX_STATE_DIR=$TEST_ROOT/var/nix export NIX_DB_DIR=$TEST_ROOT/db export NIX_CONF_DIR=$TEST_ROOT/etc export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests -export SHARED=$TEST_ROOT/shared +export _NIX_TEST_SHARED=$TEST_ROOT/shared export NIX_REMOTE=$NIX_REMOTE_ export PATH=@bindir@:$PATH @@ -26,9 +26,9 @@ export dot=@dot@ export xmllint="@xmllint@" export xmlflags="@xmlflags@" export xsltproc="@xsltproc@" -export SHELL="@shell@" +export SHELL="@bash@" -export version=@version@ +export version=@PACKAGE_VERSION@ export system=@system@ readLink() { diff --git a/tests/config.nix.in b/tests/config.nix similarity index 60% rename from tests/config.nix.in rename to tests/config.nix index db3da1451..6244a15fa 100644 --- a/tests/config.nix.in +++ b/tests/config.nix @@ -1,12 +1,14 @@ +with import ; + rec { - shell = "@shell@"; + inherit shell; - path = "@testPath@"; + path = coreutils; - system = "@system@"; + system = builtins.currentSystem; + + shared = builtins.getEnv "_NIX_TEST_SHARED"; - shared = "@extra1@"; - mkDerivation = args: derivation ({ inherit system; diff --git a/tests/parallel.sh b/tests/parallel.sh index 9b150263a..3b7bbe5a2 100644 --- a/tests/parallel.sh +++ b/tests/parallel.sh @@ -6,7 +6,7 @@ echo "testing nix-build -j..." clearStore -rm -f $SHARED.cur $SHARED.max +rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max outPath=$(nix-build -j10000 parallel.nix --no-out-link) @@ -15,8 +15,8 @@ echo "output path is $outPath" text=$(cat "$outPath") if test "$text" != "abacade"; then exit 1; fi -if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi -if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi +if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi +if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi # Second, test that parallel invocations of nix-build perform builds @@ -25,7 +25,7 @@ echo "testing multiple nix-build -j1..." clearStore -rm -f $SHARED.cur $SHARED.max +rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max drvPath=$(nix-instantiate parallel.nix --argstr sleepTime 15) @@ -52,5 +52,5 @@ wait $pid2 || fail "instance 2 failed: $?" wait $pid3 || fail "instance 3 failed: $?" wait $pid4 || fail "instance 4 failed: $?" -if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi -if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi +if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi +if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi