diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-03-26 14:11:59 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-03-26 14:11:59 +0000 |
commit | f30fe65b3ea40434b102b881a0351fcc6fd8bb56 (patch) | |
tree | 9cc1da65d7726c048e54fa31954912898500a17d /pkgs | |
parent | 5322285f9789eebf8da19e7a803a58dedff67a09 (diff) | |
download | nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.tar nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.tar.gz nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.tar.bz2 nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.tar.lz nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.tar.xz nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.tar.zst nixlib-f30fe65b3ea40434b102b881a0351fcc6fd8bb56.zip |
* makeSourceTarball -> sourceTarball.
* Added a function binaryTarball to do a DESTDIR build into /usr/local. Useful for making statically linked binaries. However, it may be better to do this in a VM (since if you do it in a Nix build environment, you can still end up with a lot of Nix dependencies in your binaries, even if you do static linking). svn path=/nixpkgs/trunk/; revision=14726
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/build-support/release/binary-tarball.nix | 87 | ||||
-rw-r--r-- | pkgs/build-support/release/debian-build.nix | 2 | ||||
-rw-r--r-- | pkgs/build-support/release/default.nix | 8 | ||||
-rw-r--r-- | pkgs/build-support/release/nix-build.nix | 9 | ||||
-rw-r--r-- | pkgs/build-support/release/source-tarball.nix (renamed from pkgs/build-support/release/make-source-tarball.nix) | 2 |
5 files changed, 96 insertions, 12 deletions
diff --git a/pkgs/build-support/release/binary-tarball.nix b/pkgs/build-support/release/binary-tarball.nix new file mode 100644 index 000000000000..f8bb5282ee2f --- /dev/null +++ b/pkgs/build-support/release/binary-tarball.nix @@ -0,0 +1,87 @@ +/* This function builds a binary tarball. The resulting binaries are + usually only useful if they are don't have any runtime dependencies + on any paths in the Nix store, since those aren't distributed in + the tarball. For instance, the binaries should be statically + linked: they can't depend on dynamic libraries in the store + (including Glibc). + + The binaries are built and installed with a prefix of /usr/local by + default. They are installed by setting DESTDIR to a temporary + directory, so the Makefile of the package should support DESTDIR. +*/ + +{ src, stdenv +, name ? "binary-tarball" +, ... } @ args: + +stdenv.mkDerivation ( + + { + # Also run a `make check'. + doCheck = true; + + showBuildStats = true; + + prefix = "/usr/local"; + + postPhases = "finalPhase"; + } + + // args // + + { + name = name + (if src ? version then "-" + src.version else ""); + + postHook = '' + ensureDir $out/nix-support + echo "$system" > $out/nix-support/system + + # If `src' is the result of a call to `makeSourceTarball', then it + # has a subdirectory containing the actual tarball(s). If there are + # multiple tarballs, just pick the first one. + origSrc=$src + if test -d $src/tarballs; then + src=$(ls $src/tarballs/*.tar.bz2 $src/tarballs/*.tar.gz | sort | head -1) + fi + + if test -e $origSrc/nix-support/hydra-release-name; then + releaseName=$(cat $origSrc/nix-support/hydra-release-name) + fi + + installFlagsArray=(DESTDIR=$TMPDIR/inst) + + # Prefix hackery because of a bug in stdenv (it tries to `mkdir + # $prefix', which doesn't work due to the DESTDIR). + configureFlags="--prefix=$prefix $configureFlags" + dontAddPrefix=1 + prefix=$TMPDIR/inst$prefix + ''; # */ + + + doDist = true; + + distPhase = + '' + ensureDir $out/tarballs + tar cvfj $out/tarballs/''${releaseName:-binary-dist}.tar.bz2 -C $TMPDIR/inst . + ''; + + + finalPhase = + '' + for i in $out/tarballs/*; do + echo "file binary-dist $i" >> $out/nix-support/hydra-build-products + done + + # Propagate the release name of the source tarball. This is + # to get nice package names in channels. + test -n "$releaseName" && (echo "$releaseName" >> $out/nix-support/hydra-release-name) + ''; + + + meta = (if args ? meta then args.meta else {}) // { + description = "Build of a generic binary distribution"; + }; + + } +) diff --git a/pkgs/build-support/release/debian-build.nix b/pkgs/build-support/release/debian-build.nix index d41750733b5d..a0b75f9fa8ae 100644 --- a/pkgs/build-support/release/debian-build.nix +++ b/pkgs/build-support/release/debian-build.nix @@ -13,7 +13,7 @@ vmTools.runInLinuxImage (stdenv.mkDerivation ( prefix = "/usr"; - phases = "installExtraDebsPhase sysInfoPhase unpackPhase patchPhase configurePhase buildPhase checkPhase installPhase distPhase"; + prePhases = "installExtraDebsPhase sysInfoPhase"; } // removeAttrs args ["vmTools"] // diff --git a/pkgs/build-support/release/default.nix b/pkgs/build-support/release/default.nix index 130fae6e4bb8..52ed7d60b495 100644 --- a/pkgs/build-support/release/default.nix +++ b/pkgs/build-support/release/default.nix @@ -4,11 +4,17 @@ with pkgs; rec { - makeSourceTarball = args: import ./make-source-tarball.nix ( + sourceTarball = args: import ./source-tarball.nix ( { inherit autoconf automake libtool; stdenv = stdenvNew; } // args); + makeSourceTarball = sourceTarball; # compatibility + + binaryTarball = args: import ./binary-tarball.nix ( + { inherit stdenv; + } // args); + nixBuild = args: import ./nix-build.nix ( { inherit stdenv; } // args); diff --git a/pkgs/build-support/release/nix-build.nix b/pkgs/build-support/release/nix-build.nix index f9d2351d9253..703dc07a6e44 100644 --- a/pkgs/build-support/release/nix-build.nix +++ b/pkgs/build-support/release/nix-build.nix @@ -47,15 +47,6 @@ stdenv.mkDerivation ( src=$(ls $src/tarballs/*.tar.bz2 $src/tarballs/*.tar.gz | sort | head -1) fi - # Hack to compress log files. Prevents (by pointer hiding!) - # unnecessary dependencies. - startLogWrite() { - # Use process substitution to send the FIFO output to both - # stdout and bzip2. - bash -c "tee >(bzip2 > \"$1\".bz2) < \"$2\"" & - logWriterPid=$! - } - # Set GCC flags for coverage analysis, if desired. if test -n "${toString doCoverageAnalysis}"; then export NIX_CFLAGS_COMPILE="-O0 -fprofile-arcs -ftest-coverage $NIX_CFLAGS_COMPILE" diff --git a/pkgs/build-support/release/make-source-tarball.nix b/pkgs/build-support/release/source-tarball.nix index 731c29945275..46f94994be32 100644 --- a/pkgs/build-support/release/make-source-tarball.nix +++ b/pkgs/build-support/release/source-tarball.nix @@ -94,7 +94,7 @@ stdenv.mkDerivation ( finalPhase = '' for i in $out/tarballs/*; do - echo "file source-dist $i" >> $out/nix-support/hydra-build-products + echo "file source-dist $i" >> $out/nix-support/hydra-build-products done # Try to figure out the release name. |