diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index 3f00d6b834ed..21025b27b249 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -1,6 +1,6 @@ -{ stdenv, fetchurl, libogg }: +{ stdenv, fetchurl, multipleOutputs, libogg }: -stdenv.mkDerivation rec { +multipleOutputs rec { name = "flac-1.2.1"; src = fetchurl { @@ -22,19 +22,6 @@ stdenv.mkDerivation rec { outputs = [ "dev" "out" "bin" "doc" ]; - configureFlags = [ "--bindir=$(bin)/bin" "--includedir=$(dev)/include" "--mandir=$(bin)/share/man" ]; - - installFlags = [ "pkgconfigdir=$(dev)/lib/pkgconfig m4datadir=$(dev)/share/aclocal" ]; - - postInstall = - '' - if [ -e $out/share/doc ]; then - mkdir -p $doc/share/doc - mv $out/share/doc/* $doc/share/doc - rmdir $out/share/doc - fi - ''; # */ - meta = { homepage = http://flac.sourceforge.net; description = "Library and tools for encoding and decoding the FLAC lossless audio file format"; diff --git a/pkgs/build-support/multiple-outputs.nix b/pkgs/build-support/multiple-outputs.nix new file mode 100644 index 000000000000..5b1dc96dfb02 --- /dev/null +++ b/pkgs/build-support/multiple-outputs.nix @@ -0,0 +1,39 @@ +{ stdenv }: + +with stdenv.lib; + +{ outputs, ... } @ args: + +stdenv.mkDerivation (args // { + + configureFlags = + optionals (elem "bin" outputs) + [ "--bindir=$(bin)/bin" "--mandir=$(bin)/share/man" ] + ++ optional (elem "dev" outputs) + "--includedir=$(dev)/include"; + + installFlags = + optionals (elem "dev" outputs) + [ "pkgconfigdir=$(dev)/lib/pkgconfig" "m4datadir=$(dev)/share/aclocal" ]; + + postInstall = + '' + if [ -n "$doc" -a -e $out/share/doc ]; then + mkdir -p $doc/share/doc + mv $out/share/doc/* $doc/share/doc + rmdir $out/share/doc + rmdir --ignore-fail-on-non-empty $out/share + fi + + if [ -n "$dev" ]; then + mkdir -p "$dev/nix-support" + if [ -n "$propagatedBuildInputs" ]; then + echo "$propagatedBuildInputs" > "$dev/nix-support/propagated-build-inputs" + propagatedBuildInputs= + fi + echo "$propagatedBuildNativeInputs $out" > "$dev/nix-support/propagated-build-native-inputs" + propagatedBuildNativeInputs= + fi + ''; # */ + +}) diff --git a/pkgs/development/libraries/libogg/default.nix b/pkgs/development/libraries/libogg/default.nix index 0b5e4e817415..d3e7ba43b31c 100644 --- a/pkgs/development/libraries/libogg/default.nix +++ b/pkgs/development/libraries/libogg/default.nix @@ -1,6 +1,6 @@ -{ stdenv, fetchurl, xz }: +{ stdenv, fetchurl, multipleOutputs, xz }: -stdenv.mkDerivation rec { +multipleOutputs rec { name = "libogg-1.3.0"; src = fetchurl { @@ -12,19 +12,6 @@ stdenv.mkDerivation rec { outputs = [ "dev" "doc" "out" ]; - configureFlags = [ "--includedir=$(dev)/include" ]; - - installFlags = [ "pkgconfigdir=$(dev)/lib/pkgconfig" ]; - - postInstall = - '' - mkdir -p $doc/share/doc - mv $out/share/doc/* $doc/share/doc - - mkdir -p $dev/nix-support - echo $out > $dev/nix-support/propagated-build-native-inputs - ''; # */ - meta = { homepage = http://xiph.org/ogg/; }; diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index 3a9153120be1..166e02668f04 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -1,6 +1,6 @@ -{stdenv, fetchurl, flac, libogg, libvorbis, pkgconfig }: +{ stdenv, fetchurl, multipleOutputs, flac, libogg, libvorbis, pkgconfig }: -stdenv.mkDerivation rec { +multipleOutputs rec { name = "libsndfile-1.0.23"; src = fetchurl { @@ -8,25 +8,12 @@ stdenv.mkDerivation rec { sha256 = "0k9x4804gfh9d9zd4rm1v2izm8l716rzk4d6jlrjcf45b5sw7jal"; }; - buildInputs = [pkgconfig flac libogg libvorbis]; + buildInputs = [ pkgconfig flac libogg libvorbis ]; enableParallelBuilding = true; outputs = [ "dev" "out" "bin" "doc" ]; - configureFlags = [ "--bindir=$(bin)/bin" "--includedir=$(dev)/include" "--mandir=$(bin)/share/man" ]; - - installFlags = [ "pkgconfigdir=$(dev)/lib/pkgconfig m4datadir=$(dev)/share/aclocal" ]; - - postInstall = - '' - if [ -e $out/share/doc ]; then - mkdir -p $doc/share/doc - mv $out/share/doc/* $doc/share/doc - rmdir $out/share/doc - fi - ''; # */ - meta = { description = "Libsndfile, a C library for reading and writing files containing sampled sound"; diff --git a/pkgs/development/libraries/libvorbis/default.nix b/pkgs/development/libraries/libvorbis/default.nix index 945bba3d4ea1..dac058372354 100644 --- a/pkgs/development/libraries/libvorbis/default.nix +++ b/pkgs/development/libraries/libvorbis/default.nix @@ -1,6 +1,6 @@ -{ stdenv, fetchurl, libogg, xz }: +{ stdenv, fetchurl, multipleOutputs, libogg, xz }: -stdenv.mkDerivation rec { +multipleOutputs rec { name = "libvorbis-1.3.3"; src = fetchurl { @@ -13,20 +13,6 @@ stdenv.mkDerivation rec { outputs = [ "dev" "out" "doc" ]; - configureFlags = [ "--includedir=$(dev)/include" ]; - - installFlags = [ "pkgconfigdir=$(dev)/lib/pkgconfig" ]; - - postInstall = - '' - mkdir -p $doc/share/doc - mv $out/share/doc/* $doc/share/doc - - mkdir -p "$dev/nix-support" - echo "$propagatedBuildNativeInputs $out" > "$dev/nix-support/propagated-build-native-inputs" - propagatedBuildNativeInputs= - ''; # */ - meta = { homepage = http://xiph.org/vorbis/; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2ee6dc66b2d6..53e83ca5798f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -327,6 +327,8 @@ let inherit stdenv perl cpio contents ubootChooser; }; + multipleOutputs = import ../build-support/multiple-outputs.nix { inherit (pkgs) stdenv; }; + makeWrapper = makeSetupHook {} ../build-support/make-wrapper/make-wrapper.sh; makeModulesClosure = {kernel, rootModules, allowMissing ? false}: