From 3d05166086682b39e013001bdaedb3e8b68a769f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 27 Apr 2007 22:40:59 +0000 Subject: * Allow conflicting packages to be kept in a user environment, and allow switching between them (NIX-80). Example: two versions of Pan: $ nix-env -q pan pan-0.128 pan-0.14.2.91 $ readlink $(which pan) /nix/store/l38jrbilw269drpjkx7kinhrxj6fjh59-pan-0.14.2.91/bin/pan At most one of them can be active any given time. Assuming than 0.14.2.91 is active, you can active 0.128 as follows: $ nix-env --set-flag active false pan-0.14.2.91 $ nix-env --set-flag active true pan-0.128 $ readlink $(which pan) /nix/store/nziqwnlzy7xl385kglxhg75pfl5i936n-pan-0.128/bin/pan More flags to follow. --- corepkgs/buildenv/builder.pl.in | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'corepkgs/buildenv/builder.pl.in') diff --git a/corepkgs/buildenv/builder.pl.in b/corepkgs/buildenv/builder.pl.in index 57fa56903bc1..faebe27cc2a1 100755 --- a/corepkgs/buildenv/builder.pl.in +++ b/corepkgs/buildenv/builder.pl.in @@ -108,10 +108,15 @@ sub addPkg { # Symlink to the packages that have been installed explicitly by the user. -my @args = split ' ', $ENV{"derivations"}; +my @paths = split ' ', $ENV{"derivations"}; +my @active = split ' ', $ENV{"active"}; -foreach my $pkgDir (sort @args) { - addPkg($pkgDir, 0); +die if scalar @paths != scalar @active; + +for (my $n = 0; $n < scalar @paths; $n++) { + my $pkgDir = $paths[$n]; + my $isActive = $active[$n]; + addPkg($pkgDir, 0) if $isActive ne "false"; } -- cgit 1.4.1