diff --git a/configure.ac b/configure.ac index 55d5eadaf..91cdf73d6 100644 --- a/configure.ac +++ b/configure.ac @@ -180,6 +180,13 @@ 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, +# and the Nix libraries are dynamic. +if test "$(uname)" = "Darwin"; then + LDFLAGS="-all_load $LDFLAGS" +fi + + AM_CONFIG_HEADER([config.h]) AC_CONFIG_FILES([Makefile externals/Makefile diff --git a/scripts/nix-pull.in b/scripts/nix-pull.in index e5c9cac53..eb14a1739 100644 --- a/scripts/nix-pull.in +++ b/scripts/nix-pull.in @@ -1,7 +1,6 @@ #! @perl@ -w -I@libexecdir@/nix use strict; -use IPC::Open2; use POSIX qw(tmpnam); use readmanifest; @@ -74,11 +73,9 @@ print "$size store paths in manifest\n"; # Register all substitutes. print STDERR "registering substitutes...\n"; -my $pid = open2(\*READ, \*WRITE, "$binDir/nix-store --register-substitutes") +my $pid = open(WRITE, "|$binDir/nix-store --register-substitutes") or die "cannot run nix-store"; -close READ; - foreach my $storePath (keys %narFiles) { my $narFileList = $narFiles{$storePath}; foreach my $narFile (@{$narFileList}) { @@ -95,7 +92,4 @@ foreach my $storePath (keys %narFiles) { } } -close WRITE; - -waitpid $pid, 0; -$? == 0 or die "nix-store failed"; +close WRITE or die "nix-store failed: $?"; diff --git a/scripts/nix-push.in b/scripts/nix-push.in index c087b3e37..800424c89 100644 --- a/scripts/nix-push.in +++ b/scripts/nix-push.in @@ -1,7 +1,6 @@ #! @perl@ -w -I@libexecdir@/nix use strict; -use IPC::Open2; use POSIX qw(tmpnam); use readmanifest; @@ -62,20 +61,17 @@ foreach my $path (@ARGV) { # Get all paths referenced by the normalisation of the given # Nix expression. - my $pid = open2(\*READ, \*WRITE, + my $pid = open(READ, "$binDir/nix-store --query --requisites --force-realise " . - "--include-outputs '$path'") or die; - close WRITE; + "--include-outputs '$path'|") or die; while () { chomp; die "bad: $_" unless /^\//; $storePaths{$_} = ""; } - close READ; - - waitpid $pid, 0; - $? == 0 or die "nix-store failed"; + + close READ or die "nix-store failed: $?"; } my @storePaths = keys %storePaths; @@ -104,18 +100,14 @@ close NIX; # Instantiate store expressions from the Nix expression. my @storeExprs; print STDERR "instantiating store expressions...\n"; -my $pid = open2(\*READ, \*WRITE, "$binDir/nix-instantiate $nixfile") +my $pid = open(READ, "$binDir/nix-instantiate $nixfile|") or die "cannot run nix-instantiate"; -close WRITE; while () { chomp; die unless /^\//; push @storeExprs, $_; } -close READ; - -waitpid $pid, 0; -$? == 0 or die "nix-instantiate failed"; +close READ or die "nix-instantiate failed: $?"; # Realise the store expressions. @@ -130,18 +122,14 @@ while (scalar @tmp > 0) { my @tmp2 = @tmp[0..$n - 1]; @tmp = @tmp[$n..scalar @tmp - 1]; - my $pid = open2(\*READ, \*WRITE, "$binDir/nix-store --realise @tmp2") + my $pid = open(READ, "$binDir/nix-store --realise @tmp2|") or die "cannot run nix-store"; - close WRITE; while () { chomp; die unless (/^\//); push @narPaths, "$_"; } - close READ; - - waitpid $pid, 0; - $? == 0 or die "nix-store failed"; + close READ or die "nix-store failed: $?"; }