* Turns out that nested backticks (like $(... $(...))) are evil, since

bash doesn't check the exit status of the inner commands.  Replace
  the $(nix-store -r $(nix-instantiate)) calls with nix-build.

* Some of the diet packages are gone now, use the dietlibc stdenv.

svn path=/nixu/trunk/; revision=6920
This commit is contained in:
Eelco Dolstra 2006-10-31 20:28:35 +00:00
parent c55460a027
commit 2b995a1150
2 changed files with 73 additions and 64 deletions

View File

@ -7,22 +7,21 @@ if test -z "$TMPDIR"; then export TMPDIR=/tmp; fi
# deps is an array # deps is an array
declare -a deps declare -a deps
NIXSTORE=`which nix-store` build="nix-build --no-out-link"
NIXINSTANTIATE=`which nix-instantiate`
coreutils=$(nix-store -r $(nix-instantiate ./pkgs.nix -A coreutils)) coreutils=$($build ./pkgs.nix -A coreutils)
# determine where we can find the Nix binaries # determine where we can find the Nix binaries
NIX=$($coreutils/bin/dirname $(which nix-store)) NIX=$($coreutils/bin/dirname $(which nix-store))
# make sure we use many of our own tools, because it is more pure # make sure we use many of our own tools, because it is more pure
mktemp=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).mktemp' | $NIX/nix-instantiate -)) mktemp=$($build ./pkgs.nix -A mktemp)
gnused=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).gnused' | $NIX/nix-instantiate -)) gnused=$($build ./pkgs.nix -A gnused)
gnutar=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).gnutar151' | $NIX/nix-instantiate -)) gnutar=$($build ./pkgs.nix -A gnutar151)
cdrtools=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).cdrtools' | $NIX/nix-instantiate -)) cdrtools=$($build ./pkgs.nix -A cdrtools)
gzip=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).gzip' | $NIX/nix-instantiate -)) gzip=$($build ./pkgs.nix -A gzip)
cpio=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).cpio' | $NIX/nix-instantiate -)) cpio=$($build ./pkgs.nix -A cpio)
archivesDir=$($mktemp/bin/mktemp -d) archivesDir=$($mktemp/bin/mktemp -d)
archivesDir2=$($mktemp/bin/mktemp -d) archivesDir2=$($mktemp/bin/mktemp -d)
@ -39,52 +38,47 @@ initrd=$TMPDIR/initram.img
initdir=${archivesDir}/initdir initdir=${archivesDir}/initdir
initscript=$archivesDir/scripts/init.sh initscript=$archivesDir/scripts/init.sh
nix=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).nix' | $NIX/nix-instantiate -)) nix=$($build ./pkgs.nix -A nix)
busybox=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).busybox' | $NIX/nix-instantiate -)) busybox=$($build ./pkgs.nix -A busybox)
nano=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).nano' | $NIX/nix-instantiate -)) nano=$($build ./pkgs.nix -A nano)
nanoDiet=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).nanoDiet' | $NIX/nix-instantiate -)) nanoDiet=$($build ./pkgs.nix -A nanoDiet)
ncurses=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).ncursesDiet' | $NIX/nix-instantiate -)) ncurses=$($build ./pkgs.nix -A ncursesDiet)
nixDeps=$($NIX/nix-store -qR $nix) nixDeps=$($NIX/nix-store -qR $nix)
#storeExpr=$($NIX/nix-store -qR $($NIX/nix-store -r $(echo '(import ./pkgs.nix).everything' | $NIX/nix-instantiate -))) storeExpr=$($build ./pkgs.nix -A boot)
#storeExpr1=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).boot' | $NIX/nix-instantiate -))
storeExpr=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).boot' | $NIX/nix-instantiate -))
#storeExpr=$($NIX/nix-store -r $($NIX/nix-store -qR $(echo '(import ./pkgs.nix).everything' | $NIX/nix-instantiate -)))
kernelscripts=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).kernelscripts' | $NIX/nix-instantiate -)) kernelscripts=$($build ./pkgs.nix -A kernelscripts)
mkinitrd=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).mkinitrd' | $NIX/nix-instantiate -)) mkinitrd=$($build ./pkgs.nix -A mkinitrd)
### make NAR files for everything we want to install and some more. Make sure ### make NAR files for everything we want to install and some more. Make sure
### the right URL is in there, so specify /cdrom and not cdrom ### the right URL is in there, so specify /cdrom and not cdrom
$NIX/nix-push --copy $archivesDir $manifest --target file:///cdrom $storeExpr $($NIX/nix-store -r $(echo '(import ./pkgs.nix).kernel' | $NIX/nix-instantiate -)) $kernelscripts $mkinitrd $NIX/nix-push --copy $archivesDir $manifest --target file:///cdrom $storeExpr $($build ./pkgs.nix -A kernel) $kernelscripts $mkinitrd
#$NIX/nix-push --copy $archivesDir2 $manifest --target http://losser.labs.cs.uu.nl/~armijn/.nix $storeExpr $($NIX/nix-store -r $(echo '(import ./pkgs.nix).kernel' | $NIX/nix-instantiate -)) $kernelscripts #$NIX/nix-push --copy $archivesDir2 $manifest --target http://losser.labs.cs.uu.nl/~armijn/.nix $storeExpr $($build ./pkgs.nix -A kernel) $kernelscripts
# Location of sysvinit? # Location of sysvinit?
sysvinitPath=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).sysvinit' | $NIX/nix-instantiate -)) sysvinitPath=$($build ./pkgs.nix -A sysvinit)
# Location of Nix boot scripts? # Location of Nix boot scripts?
bootPath=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).boot' | $NIX/nix-instantiate -)) bootPath=$($build ./pkgs.nix -A boot)
syslinux=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).syslinux' | $NIX/nix-instantiate -)) syslinux=$($build ./pkgs.nix -A syslinux)
kernel=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).kernel' | $NIX/nix-instantiate -)) kernel=$($build ./pkgs.nix -A kernel)
kernelscripts=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).kernelscripts' | $NIX/nix-instantiate -)) kernelscripts=$($build ./pkgs.nix -A kernelscripts)
#nixDeps=$($NIX/nix-store -qR $(echo '(import ./pkgs.nix).nix' | $NIX/nix-instantiate -)) utillinux=$($build ./pkgs.nix -A utillinux)
utillinux=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).utillinux' | $NIX/nix-instantiate -)) gnugrep=$($build ./pkgs.nix -A gnugrep)
gnugrep=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).gnugrep' | $NIX/nix-instantiate -)) grub=$($build ./pkgs.nix -A grubWrapper)
grub=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).grubWrapper' | $NIX/nix-instantiate -)) findutils=$($build ./pkgs.nix -A findutilsWrapper)
findutils=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).findutilsWrapper' | $NIX/nix-instantiate -)) modutils=$($build ./pkgs.nix -A module_init_toolsStatic)
modutils=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).module_init_toolsStatic' | $NIX/nix-instantiate -)) dhcp=$($build ./pkgs.nix -A dhcpWrapper)
dhcp=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).dhcpWrapper' | $NIX/nix-instantiate -))
#combideps=$($NIX/nix-store -qR $nix $utillinux $gnugrep $grub $gzip $findutils) #combideps=$($NIX/nix-store -qR $nix $utillinux $gnugrep $grub $gzip $findutils)
combideps=$($NIX/nix-store -qR $nix $busybox $grub $findutils $modutils $dhcp $nano) combideps=$($NIX/nix-store -qR $nix $busybox $grub $findutils $modutils $dhcp $nano)
@ -111,35 +105,32 @@ done
tar zcf ${archivesDir}/nixstore.tgz $combideps tar zcf ${archivesDir}/nixstore.tgz $combideps
utilLinux=$(nix-store -r $(echo '(import ./pkgs.nix).utillinuxStatic' | $NIX/nix-instantiate -)) utilLinux=$($build ./pkgs.nix -A utillinuxStatic)
coreUtilsDiet=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).coreutilsDiet' | $NIX/nix-instantiate -))) coreUtilsDiet=$($NIX/nix-store -qR $($build ./pkgs.nix -A coreutilsDiet))
## temporarily normal e2fsprogs until I can get it to build with dietlibc ## temporarily normal e2fsprogs until I can get it to build with dietlibc
e2fsProgs=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).e2fsprogsDiet' | $NIX/nix-instantiate -))) e2fsProgs=$($NIX/nix-store -qR $($build ./pkgs.nix -A e2fsprogsDiet))
#e2fsProgs=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).e2fsprogs' | $NIX/nix-instantiate -))) #e2fsProgs=$($NIX/nix-store -qR $($build ./pkgs.nix -A e2fsprogs))
modUtils=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).module_init_toolsStatic' | $NIX/nix-instantiate -))) modUtils=$($NIX/nix-store -qR $($build ./pkgs.nix -A module_init_toolsStatic))
Grub=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).grubWrapper' | $NIX/nix-instantiate -))) Grub=$($NIX/nix-store -qR $($build ./pkgs.nix -A grubWrapper))
Kernel=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).kernel' | $NIX/nix-instantiate -))) Kernel=$($NIX/nix-store -qR $($build ./pkgs.nix -A kernel))
SysVinit=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).sysvinit' | $NIX/nix-instantiate -))) SysVinit=$($NIX/nix-store -qR $($build ./pkgs.nix -A sysvinit))
BootPath=$($NIX/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).boot' | $NIX/nix-instantiate -))) BootPath=$($NIX/nix-store -qR $($build ./pkgs.nix -A boot))
bashGlibc=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).bash' | $NIX/nix-instantiate -)) bashGlibc=$($build ./pkgs.nix -A bash)
bash=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).bashStatic' | $NIX/nix-instantiate -)) bash=$($build ./pkgs.nix -A diet.bash)
coreutilsdiet=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).coreutilsDiet' | $NIX/nix-instantiate -)) coreutilsdiet=$($build ./pkgs.nix -A diet.coreutils)
#findutils=$($NIX/nix-store -q $(echo '(import ./pkgs.nix).findutilsWrapper' | $NIX/nix-instantiate -)) utillinux=$($build ./pkgs.nix -A utillinux)
utillinux=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).utillinux' | $NIX/nix-instantiate -)) e2fsprogs=$($build ./pkgs.nix -A e2fsprogsDiet)
e2fsprogs=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).e2fsprogsDiet' | $NIX/nix-instantiate -)) modutils=$($build ./pkgs.nix -A module_init_toolsStatic)
#e2fsprogs=$($NIX/nix-store -q $(echo '(import ./pkgs.nix).e2fsprogs' | $NIX/nix-instantiate -)) grub=$($build ./pkgs.nix -A grubWrapper)
#e2fsprogs=$($NIX/nix-store -q $(echo '(import ./pkgs.nix).e2fsprogs' | $NIX/nix-instantiate -)) mingettyWrapper=$($build ./pkgs.nix -A mingettyWrapper)
modutils=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).module_init_toolsStatic' | $NIX/nix-instantiate -)) dhcp=$($build ./pkgs.nix -A dhcpWrapper)
grub=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).grubWrapper' | $NIX/nix-instantiate -)) gnugrep=$($build ./pkgs.nix -A gnugrep)
mingettyWrapper=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).mingettyWrapper' | $NIX/nix-instantiate -)) which=$($build ./pkgs.nix -A which)
dhcp=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).dhcpWrapper' | $NIX/nix-instantiate -)) eject=$($build ./pkgs.nix -A eject)
gnugrep=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).gnugrep' | $NIX/nix-instantiate -)) sysklogd=$($build ./pkgs.nix -A sysklogd)
which=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).which' | $NIX/nix-instantiate -)) #kudzu=$($build ./pkgs.nix -A kudzu)
eject=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).eject' | $NIX/nix-instantiate -))
sysklogd=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).sysklogd' | $NIX/nix-instantiate -))
#kudzu=$($NIX/nix-store -r $(echo '(import ./pkgs.nix).kudzu' | $NIX/nix-instantiate -))
echo creating directories for bootimage echo creating directories for bootimage

View File

@ -1,6 +1,21 @@
rec { let
inherit (import ./pkgs/top-level/all-packages.nix {})
stdenv kernelscripts kernel bash bashStatic coreutils coreutilsDiet pkgs = import ./pkgs/top-level/all-packages.nix {};
# !!! copied from stdenv/linux/make-bootstrap-tools.nix.
pkgsToRemove =
[ "binutils" "gcc" "coreutils" "findutils" "diffutils" "gnused" "gnugrep"
"gawk" "gnutar" "gzip" "bzip2" "gnumake" "bash" "patch" "patchelf"
];
pkgsDiet = import ./pkgs/top-level/all-packages.nix {
bootStdenv = removeAttrs (pkgs.useDietLibC pkgs.stdenv) pkgsToRemove;
};
in rec {
inherit (pkgs)
stdenv kernelscripts kernel bash coreutils coreutilsDiet
findutilsWrapper utillinux utillinuxStatic sysvinit e2fsprogsDiet findutilsWrapper utillinux utillinuxStatic sysvinit e2fsprogsDiet
e2fsprogs nettools nix subversion gcc wget which vim less screen e2fsprogs nettools nix subversion gcc wget which vim less screen
openssh binutils nixStatic strace shadowutils iputils gnumake curl gnused openssh binutils nixStatic strace shadowutils iputils gnumake curl gnused
@ -8,6 +23,8 @@ rec {
module_init_tools module_init_toolsStatic dhcpWrapper man nano nanoDiet module_init_tools module_init_toolsStatic dhcpWrapper man nano nanoDiet
eject sysklogd mktemp cdrtools cpio busybox mkinitrd ncursesDiet; eject sysklogd mktemp cdrtools cpio busybox mkinitrd ncursesDiet;
diet = pkgsDiet;
boot = (import ./boot) { boot = (import ./boot) {
inherit stdenv bash coreutils findutilsWrapper utillinux sysvinit inherit stdenv bash coreutils findutilsWrapper utillinux sysvinit
e2fsprogs nettools subversion gcc wget which vim less screen openssh e2fsprogs nettools subversion gcc wget which vim less screen openssh
@ -23,4 +40,5 @@ rec {
#}; #};
everything = [boot sysvinit sysklogd kernelscripts kernel mkinitrd]; everything = [boot sysvinit sysklogd kernelscripts kernel mkinitrd];
} }