diff options
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/build-fhs-chrootenv/default.nix | 28 | ||||
-rw-r--r-- | pkgs/build-support/build-pecl.nix | 9 | ||||
-rw-r--r-- | pkgs/build-support/cabal/default.nix | 4 | ||||
-rw-r--r-- | pkgs/build-support/fetchgit/builder.sh | 4 | ||||
-rw-r--r-- | pkgs/build-support/fetchgit/default.nix | 4 | ||||
-rwxr-xr-x | pkgs/build-support/fetchgit/nix-prefetch-git | 7 | ||||
-rw-r--r-- | pkgs/build-support/gcc-cross-wrapper/builder.sh | 2 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/builder.sh | 2 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/default.nix | 2 | ||||
-rw-r--r-- | pkgs/build-support/kernel/cpio-clean.pl | 17 | ||||
-rw-r--r-- | pkgs/build-support/kernel/make-initrd.nix | 5 | ||||
-rw-r--r-- | pkgs/build-support/kernel/make-initrd.sh | 2 | ||||
-rw-r--r-- | pkgs/build-support/trivial-builders.nix | 1 | ||||
-rw-r--r-- | pkgs/build-support/vm/default.nix | 7 |
14 files changed, 69 insertions, 25 deletions
diff --git a/pkgs/build-support/build-fhs-chrootenv/default.nix b/pkgs/build-support/build-fhs-chrootenv/default.nix index 8756c4835b29..2f3aa14c6a0f 100644 --- a/pkgs/build-support/build-fhs-chrootenv/default.nix +++ b/pkgs/build-support/build-fhs-chrootenv/default.nix @@ -1,10 +1,12 @@ {stdenv, glibc, glibcLocales, gcc, coreutils, diffutils, findutils, gnused, gnugrep, gnutar, gzip, bzip2, -bashInteractive, xz, shadow, gawk, less, buildEnv}: +bashInteractive, xz, shadow, gawk, less, su, buildEnv}: {name, pkgs ? [], profile ? ""}: let - basePkgs = [ glibc glibcLocales gcc coreutils diffutils findutils gnused gnugrep gnutar gzip bzip2 -bashInteractive xz shadow gawk less ]; + basePkgs = [ + glibc glibcLocales gcc coreutils diffutils findutils gnused gnugrep gnutar + gzip bzip2 bashInteractive xz shadow gawk less su + ]; # Compose a global profile for the chroot environment profilePkg = stdenv.mkDerivation { @@ -31,16 +33,16 @@ bashInteractive xz shadow gawk less ]; mountSh = ./mount.sh.in; loadSh = ./load.sh.in; umountSh = ./umount.sh.in; - destroySh = ./destroy.sh.in; -in -stdenv.mkDerivation { - name = "${name}-chrootenv"; - buildCommand = '' - mkdir -p $out/sw - cd $out/sw - - for i in ${staticUsrProfile}/{etc,bin,lib{,32,64},sbin,var} - do + destroySh = ./destroy.sh.in; +in +stdenv.mkDerivation { + name = "${name}-chrootenv"; + buildCommand = '' + mkdir -p $out/sw + cd $out/sw + + for i in ${staticUsrProfile}/{etc,bin,lib{,32,64},sbin,var} + do if [ -x "$i" ] then ln -s "$i" diff --git a/pkgs/build-support/build-pecl.nix b/pkgs/build-support/build-pecl.nix new file mode 100644 index 000000000000..d84497e8019c --- /dev/null +++ b/pkgs/build-support/build-pecl.nix @@ -0,0 +1,9 @@ +{ stdenv, php, autoreconfHook }: + +args: stdenv.mkDerivation (args // { + buildInputs = [ php autoreconfHook ] ++ args.buildInputs or []; + + makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ args.makeFlags or []; + + autoreconfPhase = "phpize"; +}) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index 5e028863b06d..ed7ca30db132 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -195,10 +195,6 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version; done done - ${optionalString self.enableSharedExecutables '' - configureFlags+=" --ghc-option=-optl=-Wl,-rpath=$out/lib/${ghc.ghc.name}/${self.pname}-${self.version}"; - ''} - echo "configure flags: $extraConfigureFlags $configureFlags" ./Setup configure --verbose --prefix="$out" --libdir='$prefix/lib/$compiler' \ --libsubdir='$pkgid' $extraConfigureFlags $configureFlags 2>&1 \ diff --git a/pkgs/build-support/fetchgit/builder.sh b/pkgs/build-support/fetchgit/builder.sh index 5c7d92698cc3..9050cce6ee8f 100644 --- a/pkgs/build-support/fetchgit/builder.sh +++ b/pkgs/build-support/fetchgit/builder.sh @@ -6,6 +6,8 @@ source $stdenv/setup header "exporting $url (rev $rev) into $out" -$fetcher --builder --url "$url" --out "$out" --rev "$rev" ${leaveDotGit:+--leave-dotGit} +$fetcher --builder --url "$url" --out "$out" --rev "$rev" \ + ${leaveDotGit:+--leave-dotGit} \ + ${fetchSubmodules:+--fetch-submodules} stopNest diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index b22bdc88f83b..a17daf9a2c57 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -1,5 +1,5 @@ {stdenv, git, cacert}: -{url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? false }: +{url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? false, fetchSubmodules ? true}: /* NOTE: fetchgit has one problem: git fetch only works for refs. @@ -35,7 +35,7 @@ stdenv.mkDerivation { outputHashMode = "recursive"; outputHash = if sha256 == "" then md5 else sha256; - inherit url rev leaveDotGit; + inherit url rev leaveDotGit fetchSubmodules; GIT_SSL_CAINFO = "${cacert}/etc/ca-bundle.crt"; diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git index 8d0de055c756..6e79f82eae86 100755 --- a/pkgs/build-support/fetchgit/nix-prefetch-git +++ b/pkgs/build-support/fetchgit/nix-prefetch-git @@ -6,6 +6,7 @@ expHash= hashType=$NIX_HASH_ALGO deepClone=$NIX_PREFETCH_GIT_DEEP_CLONE leaveDotGit=$NIX_PREFETCH_GIT_LEAVE_DOT_GIT +fetchSubmodules= builder= if test -n "$deepClone"; then @@ -33,6 +34,7 @@ for arg; do --deepClone) deepClone=true;; --no-deepClone) deepClone=false;; --leave-dotGit) leaveDotGit=true;; + --fetch-submodules) fetchSubmodules=true;; --builder) builder=true;; *) argi=$(($argi + 1)) @@ -66,6 +68,7 @@ Options: --deepClone Clone submodules recursively. --no-deepClone Do not clone submodules. --leave-dotGit Keep the .git directories. + --fetch-submodules Fetch submodules. --builder Clone as fetchgit does, but url, rev, and out option are mandatory. " exit 1 @@ -178,7 +181,9 @@ clone(){ ) # Checkout linked sources. - init_submodules; + if test -n "$fetchSubmodules"; then + init_submodules; + fi if [ -z "$builder" -a -f .topdeps ]; then if tg help 2>&1 > /dev/null diff --git a/pkgs/build-support/gcc-cross-wrapper/builder.sh b/pkgs/build-support/gcc-cross-wrapper/builder.sh index 18d26b3e9451..1d7d1046d367 100644 --- a/pkgs/build-support/gcc-cross-wrapper/builder.sh +++ b/pkgs/build-support/gcc-cross-wrapper/builder.sh @@ -91,6 +91,8 @@ mkGccWrapper $out/bin/$crossConfig-gcc $gccPath/$crossConfig-gcc mkGccWrapper $out/bin/$crossConfig-g++ $gccPath/$crossConfig-g++ ln -s $crossConfig-g++ $out/bin/$crossConfig-c++ +mkGccWrapper $out/bin/$crossConfig-cpp $gccPath/$crossConfig-cpp + mkGccWrapper $out/bin/$crossConfig-g77 $gccPath/$crossConfig-g77 ln -s $crossConfig-g77 $out/bin/$crossConfig-f77 diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index e7c3400e9f7f..c79680712ee7 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -154,6 +154,8 @@ then ln -sv g++ $out/bin/c++ fi +mkGccWrapper $out/bin/cpp $gccPath/cpp || true + if mkGccWrapper $out/bin/gfortran $gccPath/gfortran then ln -sv gfortran $out/bin/g77 diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 1f521f405850..8e8b0b909454 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -73,6 +73,8 @@ stdenv.mkDerivation { abort "don't know the name of the dynamic linker for this platform"); }; + preferLocalBuild = true; + meta = let gcc_ = if gcc != null then gcc else {}; in (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // diff --git a/pkgs/build-support/kernel/cpio-clean.pl b/pkgs/build-support/kernel/cpio-clean.pl new file mode 100644 index 000000000000..ddc6435a5a81 --- /dev/null +++ b/pkgs/build-support/kernel/cpio-clean.pl @@ -0,0 +1,17 @@ +use strict; + +# Make inode number, link info and mtime consistent in order to get a consistent hash. +# +# Author: Alexander Kjeldaas <ak@formalprivacy.com> + +use Archive::Cpio; + +my $cpio = Archive::Cpio->new; +my $IN = \*STDIN; +my $ino = 1; +$cpio->read_with_handler($IN, sub { + my ($e) = @_; + $e->{mtime} = 1; + $cpio->write_one(\*STDOUT, $e); + }); +$cpio->write_trailer(\*STDOUT); diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix index 4ddf0706e03e..0582ca553012 100644 --- a/pkgs/build-support/kernel/make-initrd.nix +++ b/pkgs/build-support/kernel/make-initrd.nix @@ -12,10 +12,10 @@ # `contents = {object = ...; symlink = /init;}' is a typical # argument. -{stdenv, perl, cpio, contents, ubootChooser, compressor}: +{stdenv, perl, perlArchiveCpio, cpio, contents, ubootChooser, compressor}: let - inputsFun = ubootName : [perl cpio] + inputsFun = ubootName : [perl cpio perlArchiveCpio ] ++ stdenv.lib.optional (ubootName != null) [ (ubootChooser ubootName) ]; makeUInitrdFun = ubootName : (ubootName != null); in @@ -35,6 +35,7 @@ stdenv.mkDerivation { exportReferencesGraph = map (x: [("closure-" + baseNameOf x.symlink) x.object]) contents; pathsFromGraph = ./paths-from-graph.pl; + cpioClean = ./cpio-clean.pl; crossAttrs = { nativeBuildInputs = inputsFun stdenv.cross.platform.uboot; diff --git a/pkgs/build-support/kernel/make-initrd.sh b/pkgs/build-support/kernel/make-initrd.sh index f6cadaf02819..17b261f98407 100644 --- a/pkgs/build-support/kernel/make-initrd.sh +++ b/pkgs/build-support/kernel/make-initrd.sh @@ -36,7 +36,7 @@ storePaths=$(perl $pathsFromGraph closure-*) # Put the closure in a gzipped cpio archive. mkdir -p $out -(cd root && find * -print0 | cpio -o -H newc --null | $compressor > $out/initrd) +(cd root && find * -print0 | cpio -o -H newc --null | perl $cpioClean | $compressor > $out/initrd) if [ -n "$makeUInitrd" ]; then mv $out/initrd $out/initrd.gz diff --git a/pkgs/build-support/trivial-builders.nix b/pkgs/build-support/trivial-builders.nix index 5ae2e7b4fc9b..c08a6c3a265f 100644 --- a/pkgs/build-support/trivial-builders.nix +++ b/pkgs/build-support/trivial-builders.nix @@ -33,6 +33,7 @@ rec { # Shorthands for `writeTextFile'. writeText = name: text: writeTextFile {inherit name text;}; + writeTextDir = name: text: writeTextFile {inherit name text; destination = "/${name}";}; writeScript = name: text: writeTextFile {inherit name text; executable = true;}; writeScriptBin = name: text: writeTextFile {inherit name text; executable = true; destination = "/bin/${name}";}; diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 3dcb8aa17055..274cd05024bd 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -2,7 +2,7 @@ , kernel ? pkgs.linux_3_10 , img ? "bzImage" , rootModules ? - [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" ] + [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ] }: with pkgs; @@ -57,6 +57,7 @@ rec { mknod ${dev}/random c 1 8 mknod ${dev}/urandom c 1 9 mknod ${dev}/tty c 5 0 + mknod ${dev}/rtc c 254 0 . /sys/class/block/${hd}/uevent mknod ${dev}/${hd} b $MAJOR $MINOR ''; @@ -159,6 +160,10 @@ rec { #! ${bash}/bin/sh source /tmp/xchg/saved-env + # Set the system time from the hardware clock. Works around an + # apparent KVM > 1.5.2 bug. + ${pkgs.utillinux}/sbin/hwclock -s + export NIX_STORE=/nix/store export NIX_BUILD_TOP=/tmp export TMPDIR=/tmp |