about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/build-fhs-chrootenv/default.nix28
-rw-r--r--pkgs/build-support/build-pecl.nix9
-rw-r--r--pkgs/build-support/cabal/default.nix4
-rw-r--r--pkgs/build-support/fetchgit/builder.sh4
-rw-r--r--pkgs/build-support/fetchgit/default.nix4
-rwxr-xr-xpkgs/build-support/fetchgit/nix-prefetch-git7
-rw-r--r--pkgs/build-support/gcc-cross-wrapper/builder.sh2
-rw-r--r--pkgs/build-support/gcc-wrapper/builder.sh2
-rw-r--r--pkgs/build-support/gcc-wrapper/default.nix2
-rw-r--r--pkgs/build-support/kernel/cpio-clean.pl17
-rw-r--r--pkgs/build-support/kernel/make-initrd.nix5
-rw-r--r--pkgs/build-support/kernel/make-initrd.sh2
-rw-r--r--pkgs/build-support/trivial-builders.nix1
-rw-r--r--pkgs/build-support/vm/default.nix7
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