diff options
Diffstat (limited to 'pkgs')
44 files changed, 443 insertions, 141 deletions
diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index 0383a1ce0ad..95ab8244478 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -12,6 +12,10 @@ stdenv.mkDerivation rec { doCheck = true; # takes lots of time but will be run rarely (small build-time closure) + enableParallelBuilding = true; + + outputs = [ "dev" "out" "bin" "doc" ]; + meta = { homepage = http://xiph.org/flac/; description = "Library and tools for encoding and decoding the FLAC lossless audio file format"; diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index ed7ad0a50b7..b499aa612f8 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -24,7 +24,7 @@ if test -z "$nativeLibc"; then # compile, because it uses "#include_next <limits.h>" to find the # limits.h file in ../includes-fixed. To remedy the problem, # another -idirafter is necessary to add that directory again. - echo "-B$libc/lib/ -idirafter $libc/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags + echo "-B$libc/lib/ -idirafter $libc_dev/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags echo "-L$libc/lib" > $out/nix-support/libc-ldflags @@ -39,9 +39,9 @@ if test -n "$nativeTools"; then ldPath="$nativePrefix/bin" else if test -e "$gcc/lib64"; then - gccLDFlags="$gccLDFlags -L$gcc/lib64" + gccLDFlags="$gccLDFlags -L$gcc_lib/lib64" fi - gccLDFlags="$gccLDFlags -L$gcc/lib" + gccLDFlags="$gccLDFlags -L$gcc_lib/lib" if [ -n "$langVhdl" ]; then gccLDFlags="$gccLDFlags -L$zlib/lib" fi @@ -85,6 +85,7 @@ doSubstitute() { -e "s^@binutils@^$binutils^g" \ -e "s^@coreutils@^$coreutils^g" \ -e "s^@libc@^$libc^g" \ + -e "s^@libc_bin@^$libc_bin^g" \ -e "s^@ld@^$ldPath/ld^g" \ < "$src" > "$dst" } @@ -191,5 +192,5 @@ cp -p $utils $out/nix-support/utils.sh # tools like gcov, the manpages, etc. as well (including for binutils # and Glibc). if test -z "$nativeTools"; then - echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages + echo $gcc $binutils $libc $libc_bin > $out/nix-support/propagated-user-env-packages fi diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 992c0f9af37..d4ba45b26f4 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -40,7 +40,10 @@ stdenv.mkDerivation { addFlags = ./add-flags; inherit nativeTools nativeLibc nativePrefix gcc; + gcc_lib = gcc.lib or gcc; libc = if nativeLibc then null else libc; + libc_dev = if nativeLibc then null else libc.dev or libc; + libc_bin = if nativeLibc then null else libc.bin or libc; binutils = if nativeTools then null else binutils; # The wrapper scripts use 'cat', so we may need coreutils coreutils = if nativeTools then null else coreutils; diff --git a/pkgs/build-support/gcc-wrapper/setup-hook.sh b/pkgs/build-support/gcc-wrapper/setup-hook.sh index 513ab8053a7..26a722bac9b 100644 --- a/pkgs/build-support/gcc-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-wrapper/setup-hook.sh @@ -25,7 +25,7 @@ if test -n "@binutils@"; then fi if test -n "@libc@"; then - addToSearchPath PATH @libc@/bin + addToSearchPath PATH @libc_bin@/bin fi if test -n "@coreutils@"; then diff --git a/pkgs/build-support/multiple-outputs.nix b/pkgs/build-support/multiple-outputs.nix new file mode 100644 index 00000000000..016558c1e73 --- /dev/null +++ b/pkgs/build-support/multiple-outputs.nix @@ -0,0 +1,85 @@ +{ stdenv }: + +with stdenv.lib; + +{ outputs ? [ "out" ], setOutputConfigureFlags ? true, ... } @ args: + +stdenv.mkDerivation (args // { + + #postPhases = [ "fixupOutputsPhase" ] ++ args.postPhases or []; + + preHook = + if setOutputConfigureFlags then + optionalString (elem "man" outputs) '' + configureFlags="--mandir=$man/share/man --infodir=$man/share/info $configureFlags" + '' + + optionalString (elem "bin" outputs) '' + configureFlags="--bindir=$bin/bin --sbindir=$bin/sbin --mandir=$bin/share/man --infodir=$man/share/info $configureFlags" + '' + + optionalString (elem "lib" outputs) '' + configureFlags="--libdir=$lib/lib $configureFlags" + '' + + optionalString (elem "dev" outputs) '' + configureFlags="--includedir=$dev/include $configureFlags" + installFlags="pkgconfigdir=$dev/lib/pkgconfig m4datadir=$dev/share/aclocal aclocaldir=$dev/share/aclocal $installFlags" + '' + else null; + + preFixup = + '' + runHook preFixupOutputs + + if [ -n "$doc" ]; then + for i in share/doc share/gtk-doc; do + if [ -e $out/$i ]; then + mkdir -p $doc/$i + mv $out/$i/* $doc/$i/ + rmdir $out/$i + fi + done + 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 "$out $lib $bin $propagatedNativeBuildInputs" > "$dev/nix-support/propagated-native-build-inputs" + propagatedNativeBuildInputs= + elif [ -n "$out" ]; then + propagatedNativeBuildInputs="$lib $propagatedNativeBuildsInputs" + fi + + for i in $bin $lib $man $static; do + if [ -z "$dontStrip" ]; then + prefix="$i" stripDirs "lib lib64 libexec bin sbin" "''${stripDebugFlags:--S}" + fi + if [ "$havePatchELF" = 1 -a -z "$dontPatchELF" ]; then + prefix="$i" patchELF + fi + if [ -z "$dontPatchShebangs" ]; then + patchShebangs "$i" + fi + + # Cut&paste... + if [ -z "$dontGzipMan" ]; then + GLOBIGNORE=.:..:*.gz:*.bz2 + for f in $i/share/man/*/* $i/share/man/*/*/*; do + if [ -f $f ]; then + if gzip -c $f > $f.gz; then + rm $f + else + rm $f.gz + fi + fi + done + unset GLOBIGNORE + fi + done + + runHook postFixupOutputs + ''; # */ + +}) diff --git a/pkgs/development/compilers/gcc/4.6/builder.sh b/pkgs/development/compilers/gcc/4.6/builder.sh index bdf15be5a99..6aa0ae440c8 100644 --- a/pkgs/development/compilers/gcc/4.6/builder.sh +++ b/pkgs/development/compilers/gcc/4.6/builder.sh @@ -8,9 +8,10 @@ mkdir $NIX_FIXINC_DUMMY if test "$staticCompiler" = "1"; then EXTRA_LDFLAGS="-static" else - EXTRA_LDFLAGS="" + EXTRA_LDFLAGS="-Wl,-rpath,$lib/lib" fi + # GCC interprets empty paths as ".", which we don't want. if test -z "$CPATH"; then unset CPATH; fi if test -z "$LIBRARY_PATH"; then unset LIBRARY_PATH; fi @@ -29,11 +30,11 @@ if test "$noSysDirs" = "1"; then # Use *real* header files, otherwise a limits.h is generated # that does not include Glibc's limits.h (notably missing # SSIZE_MAX, which breaks the build). - export NIX_FIXINC_DUMMY=$(cat $NIX_GCC/nix-support/orig-libc)/include + export NIX_FIXINC_DUMMY=$libc_dev/include # The path to the Glibc binaries such as `crti.o'. glibc_libdir="$(cat $NIX_GCC/nix-support/orig-libc)/lib" - + else # Hack: support impure environments. extraFlags="-isystem /usr/include" @@ -50,10 +51,10 @@ if test "$noSysDirs" = "1"; then # bootstrap compiler are optimized and (optionally) contain # debugging information (info "(gccinstall) Building"). if test -n "$dontStrip"; then - extraFlags="-O2 -g $extraFlags" + extraFlags="-O2 -g $extraFlags" else - # Don't pass `-g' at all; this saves space while building. - extraFlags="-O2 $extraFlags" + # Don't pass `-g' at all; this saves space while building. + extraFlags="-O2 $extraFlags" fi EXTRA_FLAGS="$extraFlags" @@ -170,9 +171,8 @@ preConfigure() { # Patch the configure script so it finds glibc headers. It's # important for example in order not to get libssp built, # because its functionality is in glibc already. - glibc_headers="$(cat $NIX_GCC/nix-support/orig-libc)/include" sed -i \ - -e "s,glibc_header_dir=/usr/include,glibc_header_dir=$glibc_headers", \ + -e "s,glibc_header_dir=/usr/include,glibc_header_dir=$libc_dev/include", \ gcc/configure fi @@ -206,6 +206,14 @@ preInstall() { postInstall() { + # Move runtime libraries to $lib. + mkdir -p $lib/lib + ln -s lib $lib/lib64 + mv -v $out/lib/lib*.so $out/lib/lib*.so.*[0-9] $out/lib/*.la $lib/lib/ + for i in $lib/lib/*.la; do + substituteInPlace $i --replace $out $lib + done + # Remove precompiled headers for now. They are very big and # probably not very useful yet. find $out/include -name "*.gch" -exec rm -rf {} \; -prune @@ -214,9 +222,10 @@ postInstall() { # previous gcc. rm -rf $out/libexec/gcc/*/*/install-tools rm -rf $out/lib/gcc/*/*/install-tools - + # More dependencies with the previous gcc or some libs (gccbug stores the build command line) rm -rf $out/bin/gccbug + # Take out the bootstrap-tools from the rpath, as it's not needed at all having $out for i in $out/libexec/gcc/*/*/*; do if PREV_RPATH=`patchelf --print-rpath $i`; then @@ -225,7 +234,7 @@ postInstall() { done # Get rid of some "fixed" header files - rm -rf $out/lib/gcc/*/*/include/root + rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux} # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. for i in $out/bin/*-gcc*; do diff --git a/pkgs/development/compilers/gcc/4.6/default.nix b/pkgs/development/compilers/gcc/4.6/default.nix index 6713dd12b3c..476ddaa8409 100644 --- a/pkgs/development/compilers/gcc/4.6/default.nix +++ b/pkgs/development/compilers/gcc/4.6/default.nix @@ -175,7 +175,7 @@ let version = "4.6.3"; "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips; + bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips; in @@ -187,13 +187,19 @@ stdenv.mkDerivation ({ builder = ./builder.sh; - src = (import ./sources.nix) { + srcs = (import ./sources.nix) { inherit fetchurl optional version; inherit langC langCC langFortran langJava langAda langGo; }; + outputs = [ "out" "lib" ]; + + setOutputConfigureFlags = false; + inherit patches enableMultilib; + libc_dev = stdenv.gcc.libc_dev; + postPatch = if (stdenv.isGNU || (libcCross != null # e.g., building `gcc.crossDrv' diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix index 2113faee164..752f0d49885 100644 --- a/pkgs/development/interpreters/perl/5.16/default.nix +++ b/pkgs/development/interpreters/perl/5.16/default.nix @@ -14,6 +14,10 @@ stdenv.mkDerivation rec { sha256 = "1dpd9lhc4723wmsn4dsn4m320qlqgyw28bvcbhnfqp2nl3f0ikv9"; }; + outputs = [ "out" "man" ]; + + setOutputConfigureFlags = false; + patches = [ # Do not look in /usr etc. for dependencies. ./no-sys-dirs.patch @@ -44,7 +48,7 @@ stdenv.mkDerivation rec { preConfigure = '' - configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3" + configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$man/share/man/man1 -Dman3dir=$man/share/man/man3" ${stdenv.lib.optionalString stdenv.isArm '' configureFlagsArray=(-Dldflags="-lm -lrt") diff --git a/pkgs/development/libraries/acl/default.nix b/pkgs/development/libraries/acl/default.nix index bc0821f39fd..065ef0ba7ca 100644 --- a/pkgs/development/libraries/acl/default.nix +++ b/pkgs/development/libraries/acl/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "09aj30m49ivycl3irram8c3givc0crivjm3ymw0nhfaxrwhlb186"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + nativeBuildInputs = [ gettext ]; buildInputs = [ attr ]; diff --git a/pkgs/development/libraries/apr-util/default.nix b/pkgs/development/libraries/apr-util/default.nix index 5f6291127e9..de5c64a06a1 100644 --- a/pkgs/development/libraries/apr-util/default.nix +++ b/pkgs/development/libraries/apr-util/default.nix @@ -19,11 +19,13 @@ stdenv.mkDerivation rec { configureFlags = '' --with-apr=${apr} --with-expat=${expat} --with-crypto - ${stdenv.lib.optionalString sslSupport "--with-openssl=${openssl}"} + ${stdenv.lib.optionalString sslSupport "--with-openssl"} ${stdenv.lib.optionalString bdbSupport "--with-berkeley-db=${db4}"} ${stdenv.lib.optionalString ldapSupport "--with-ldap"} ''; + buildInputs = stdenv.lib.optional sslSupport openssl; + propagatedBuildInputs = stdenv.lib.optional ldapSupport openldap; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/apr/default.nix b/pkgs/development/libraries/apr/default.nix index 07a565596bb..0a83741635e 100644 --- a/pkgs/development/libraries/apr/default.nix +++ b/pkgs/development/libraries/apr/default.nix @@ -14,6 +14,13 @@ stdenv.mkDerivation rec { patches = optionals stdenv.isDarwin [ ./darwin_fix_configure.patch ]; + outputs = [ "dev" "out" ]; + + preConfigure = + '' + configureFlagsArray+=("--with-installbuilddir=$dev/share/build") + ''; + configureFlags = # Don't use accept4 because it's only supported on Linux >= 2.6.28. [ "apr_cv_accept4=no" ] @@ -21,6 +28,15 @@ stdenv.mkDerivation rec { # Based on ftp://sourceware.org/pub/cygwin/release/libapr1/libapr1-1.3.8-2-src.tar.bz2 ++ stdenv.lib.optional (stdenv.system == "i686-cygwin") "ac_cv_header_windows_h=no"; + enableParallelBuilding = true; + + postInstall = + '' + mkdir $dev/bin $dev/lib + mv $out/bin/apr-1-config $dev/bin + mv $out/lib/pkgconfig $dev/lib + ''; + meta = { homepage = http://apr.apache.org/; description = "The Apache Portable Runtime library"; diff --git a/pkgs/development/libraries/atk/default.nix b/pkgs/development/libraries/atk/default.nix index cea207f27bc..180392cc5e0 100644 --- a/pkgs/development/libraries/atk/default.nix +++ b/pkgs/development/libraries/atk/default.nix @@ -8,14 +8,16 @@ stdenv.mkDerivation rec { sha256 = "1x3dd3hg9l1j9dq70xwph13vxdp6a9wbfcnryryf1wr6c8bij9dj"; }; + enableParallelBuilding = true; + + outputs = [ "dev" "out" "doc" ]; + buildInputs = libintlOrEmpty; nativeBuildInputs = [ pkgconfig perl ]; propagatedBuildInputs = [ glib ]; - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "ATK, the accessibility toolkit"; diff --git a/pkgs/development/libraries/attr/default.nix b/pkgs/development/libraries/attr/default.nix index 3c5855ea284..8000dacfc46 100644 --- a/pkgs/development/libraries/attr/default.nix +++ b/pkgs/development/libraries/attr/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "07qf6kb2zk512az481bbnsk9jycn477xpva1a726n5pzlzf9pmnw"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + nativeBuildInputs = [ gettext ]; configureFlags = "MAKE=make MSGFMT=msgfmt MSGMERGE=msgmerge XGETTEXT=xgettext ECHO=echo SED=sed AWK=gawk"; diff --git a/pkgs/development/libraries/cairo/default.nix b/pkgs/development/libraries/cairo/default.nix index a09903f7ea9..f971a290358 100644 --- a/pkgs/development/libraries/cairo/default.nix +++ b/pkgs/development/libraries/cairo/default.nix @@ -18,6 +18,8 @@ stdenv.mkDerivation rec { sha256 = "04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + nativeBuildInputs = [ pkgconfig ] ++ libintlOrEmpty ++ libiconvOrEmpty; propagatedBuildInputs = @@ -55,9 +57,6 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - # The default `--disable-gtk-doc' is ignored. - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "A 2D graphics library with support for multiple output devices"; diff --git a/pkgs/development/libraries/freetype/default.nix b/pkgs/development/libraries/freetype/default.nix index 8fa75425544..b2e39e41a0b 100644 --- a/pkgs/development/libraries/freetype/default.nix +++ b/pkgs/development/libraries/freetype/default.nix @@ -32,12 +32,14 @@ stdenv.mkDerivation rec { sha256 = "0gxyzxqpyf8g85y6g1zc1wqrh71prbbk8xfw4m8rwzb4ck5hp7gg"; }; + outputs = [ "dev" "out" ]; + + configureFlags = "--disable-static --bindir=$(dev)/bin"; + infinality_patch = if useInfinality then fetchurl { inherit (infinality) url sha256; } else null; - configureFlags = "--disable-static"; - NIX_CFLAGS_COMPILE = with stdenv.lib; " -fno-strict-aliasing" # from Gentoo, see https://bugzilla.redhat.com/show_bug.cgi?id=506840 + optionalString useEncumberedCode " -DFT_CONFIG_OPTION_SUBPIXEL_RENDERING=1" @@ -58,7 +60,9 @@ stdenv.mkDerivation rec { postInstall = '' - ln -s freetype2/freetype $out/include/freetype + mkdir $dev/lib + mv $out/lib/pkgconfig $dev/lib/ + ln -s freetype2/freetype $dev/include/freetype ''; crossAttrs = { diff --git a/pkgs/development/libraries/gdk-pixbuf/default.nix b/pkgs/development/libraries/gdk-pixbuf/default.nix index 3a22bb4c3c1..8306f3831b1 100644 --- a/pkgs/development/libraries/gdk-pixbuf/default.nix +++ b/pkgs/development/libraries/gdk-pixbuf/default.nix @@ -9,6 +9,10 @@ stdenv.mkDerivation rec { sha256 = "1fy2a05xhfg7gy4l4aajsbmgj62zxhikdxqh6bicihxmzm1vg85y"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + + enableParallelBuilding = true; + # !!! We might want to factor out the gdk-pixbuf-xlib subpackage. buildInputs = [ libX11 libintlOrEmpty ]; @@ -18,8 +22,6 @@ stdenv.mkDerivation rec { configureFlags = "--with-libjasper --with-x11"; - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "A library for image loading and manipulation"; diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 7469b07ce86..f9229793165 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -32,6 +32,8 @@ stdenv.mkDerivation (rec { sha256 = "090bw5par3dfy5m6dhq393pmy92zpw3d7rgbzqjc14jfg637bqvx"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + # configure script looks for d-bus but it is only needed for tests buildInputs = [ libelf ]; @@ -48,8 +50,6 @@ stdenv.mkDerivation (rec { enableParallelBuilding = true; - postInstall = ''rm -rvf $out/share/gtk-doc''; - passthru = { gioModuleDir = "lib/gio/modules"; inherit flattenInclude; diff --git a/pkgs/development/libraries/glibc/2.17/builder.sh b/pkgs/development/libraries/glibc/2.17/builder.sh index e68e13f9bec..f9e491868ef 100644 --- a/pkgs/development/libraries/glibc/2.17/builder.sh +++ b/pkgs/development/libraries/glibc/2.17/builder.sh @@ -12,14 +12,16 @@ postConfigure() { export NIX_DONT_SET_RPATH=1 unset CFLAGS -} + # Apparently --bindir is not respected. + makeFlagsArray+=("bindir=$bin/bin" "sbindir=$bin/sbin" "rootsbindir=$bin/sbin") +} postInstall() { if test -n "$installLocales"; then make -j${NIX_BUILD_CORES:-1} -l${NIX_BUILD_CORES:-1} localedata/install-locales fi - + test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache # FIXME: Use `test -n $linuxHeaders' when `kernelHeaders' has been @@ -27,19 +29,19 @@ postInstall() { if test -z "$hurdHeaders"; then # Include the Linux kernel headers in Glibc, except the `scsi' # subdirectory, which Glibc provides itself. - (cd $out/include && \ - ln -sv $(ls -d $kernelHeaders/include/* | grep -v 'scsi$') .) + (cd $dev/include && \ + ln -sv $(ls -d $kernelHeaders/include/* | grep -v 'scsi$') .) fi if test -f "$out/lib/libhurduser.so"; then - # libc.so, libhurduser.so, and libmachuser.so depend on each - # other, so add them to libc.so (a RUNPATH on libc.so.0.3 - # would be ignored by the cross-linker.) - echo "adding \`libhurduser.so' and \`libmachuser.so' to the \`libc.so' linker script..." - sed -i "$out/lib/libc.so" \ - -e"s|\(libc\.so\.[^ ]\+\>\)|\1 $out/lib/libhurduser.so $out/lib/libmachuser.so|g" + # libc.so, libhurduser.so, and libmachuser.so depend on each + # other, so add them to libc.so (a RUNPATH on libc.so.0.3 + # would be ignored by the cross-linker.) + echo "adding \`libhurduser.so' and \`libmachuser.so' to the \`libc.so' linker script..." + sed -i "$out/lib/libc.so" \ + -e"s|\(libc\.so\.[^ ]\+\>\)|\1 $out/lib/libhurduser.so $out/lib/libmachuser.so|g" fi - + # Fix for NIXOS-54 (ldd not working on x86_64). Make a symlink # "lib64" to "lib". if test -n "$is64bit"; then @@ -49,6 +51,17 @@ postInstall() { # This file, that should not remain in the glibc derivation, # may have not been created during the preInstall rm -f $out/lib/libgcc_s.so.1 + + # Put libraries for static linking in a separate output. Note + # that libc_nonshared.a and libpthread_nonshared.a are required + # for dynamically-linked applications. + mkdir -p $static/lib + mv $out/lib/*.a $static/lib + mv $static/lib/lib*_nonshared.a $out/lib + + # Work around a Nix bug: hard links across outputs cause a build failure. + cp $bin/bin/getconf $bin/bin/getconf_ + mv $bin/bin/getconf_ $bin/bin/getconf } genericBuild diff --git a/pkgs/development/libraries/glibc/2.17/default.nix b/pkgs/development/libraries/glibc/2.17/default.nix index b6d91c932db..da2ddc7a797 100644 --- a/pkgs/development/libraries/glibc/2.17/default.nix +++ b/pkgs/development/libraries/glibc/2.17/default.nix @@ -23,6 +23,8 @@ in builder = ./builder.sh; + outputs = [ "out" "dev" "bin" "static" ]; + # When building glibc from bootstrap-tools, we need libgcc_s at RPATH for # any program we run, because the gcc will have been placed at a new # store path than that determined when built (as a source for the @@ -93,7 +95,7 @@ in # To avoid a dependency on the build system 'bash'. preFixup = '' - rm $out/bin/{ldd,tzselect,catchsegv,xtrace} + rm $bin/bin/{ldd,tzselect,catchsegv,xtrace} ''; } else {})) diff --git a/pkgs/development/libraries/gmime/default.nix b/pkgs/development/libraries/gmime/default.nix index 99859b9f34e..8394f5c4e62 100644 --- a/pkgs/development/libraries/gmime/default.nix +++ b/pkgs/development/libraries/gmime/default.nix @@ -8,9 +8,13 @@ stdenv.mkDerivation rec { sha256 = "16n9gmlwn6rphi59hrwy6dpn785s3r13h2kmrn3k61l2kfws1hml"; }; + outputs = [ "dev" "out" "doc" ]; + nativeBuildInputs = [ pkgconfig ]; propagatedBuildInputs = [ glib zlib libgpgerror ]; + enableParallelBuilding = true; + meta = { homepage = http://spruce.sourceforge.net/gmime/; description = "A C/C++ library for manipulating MIME messages"; diff --git a/pkgs/development/libraries/gtk+/2.x.nix b/pkgs/development/libraries/gtk+/2.x.nix index c7dc45aa462..e5aadea9507 100644 --- a/pkgs/development/libraries/gtk+/2.x.nix +++ b/pkgs/development/libraries/gtk+/2.x.nix @@ -15,6 +15,8 @@ stdenv.mkDerivation rec { sha256 = "1193frzg0qrwa885w77kd055zfpbdjwby88xn2skpx9g4w0k35kc"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + enableParallelBuilding = true; NIX_CFLAGS_COMPILE = "-I${cairo}/include/cairo"; @@ -32,8 +34,6 @@ stdenv.mkDerivation rec { configureFlags = "--with-xinput=yes"; - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "A multi-platform toolkit for creating graphical user interfaces"; diff --git a/pkgs/development/libraries/jasper/default.nix b/pkgs/development/libraries/jasper/default.nix index 4046c05f79e..f6777dc3bb9 100644 --- a/pkgs/development/libraries/jasper/default.nix +++ b/pkgs/development/libraries/jasper/default.nix @@ -12,7 +12,11 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ libjpeg ]; configureFlags = "--enable-shared"; - + + outputs = [ "dev" "out" "man" "bin" ]; + + enableParallelBuilding = true; + meta = { homepage = http://www.ece.uvic.ca/~mdadams/jasper/; description = "JasPer JPEG2000 Library"; diff --git a/pkgs/development/libraries/libelf/default.nix b/pkgs/development/libraries/libelf/default.nix index 40eb2a10faf..b37bf593c03 100644 --- a/pkgs/development/libraries/libelf/default.nix +++ b/pkgs/development/libraries/libelf/default.nix @@ -1,6 +1,6 @@ { fetchurl, stdenv, gettext }: -stdenv.mkDerivation (rec { +stdenv.mkDerivation rec { name = "libelf-0.8.13"; src = fetchurl { @@ -10,6 +10,11 @@ stdenv.mkDerivation (rec { doCheck = true; + # Libelf's custom NLS macros fail to determine the catalog file extension on + # Darwin, so disable NLS for now. + # FIXME: Eventually make Gettext a build input on all platforms. + configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-nls"; + meta = { description = "Libelf, an ELF object file access library"; @@ -21,12 +26,3 @@ stdenv.mkDerivation (rec { maintainers = [ stdenv.lib.maintainers.ludo ]; }; } - -// - -# Libelf's custom NLS macros fail to determine the catalog file extension on -# Darwin, so disable NLS for now. -# FIXME: Eventually make Gettext a build input on all platforms. -(if stdenv.isDarwin - then { configureFlags = [ "--disable-nls" ]; } - else { })) diff --git a/pkgs/development/libraries/libjpeg/default.nix b/pkgs/development/libraries/libjpeg/default.nix index 63d698dda18..166f399dc25 100644 --- a/pkgs/development/libraries/libjpeg/default.nix +++ b/pkgs/development/libraries/libjpeg/default.nix @@ -1,13 +1,15 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl }: stdenv.mkDerivation { name = "libjpeg-8d"; - + src = fetchurl { url = http://www.ijg.org/files/jpegsrc.v8d.tar.gz; sha256 = "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0"; }; - + + outputs = [ "dev" "out" "man" "bin" ]; + meta = { homepage = http://www.ijg.org/; description = "A library that implements the JPEG image file format"; diff --git a/pkgs/development/libraries/libogg/default.nix b/pkgs/development/libraries/libogg/default.nix index f3c2d3b766d..add52e00419 100644 --- a/pkgs/development/libraries/libogg/default.nix +++ b/pkgs/development/libraries/libogg/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { name = "libogg-1.3.0"; - + src = fetchurl { url = "http://downloads.xiph.org/releases/ogg/${name}.tar.xz"; sha256 = "0jy79ffkl34vycnwfsj4svqsdg1lwy2l1rr49y8r4d44kh12a5r3"; @@ -10,6 +10,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ xz ]; + outputs = [ "dev" "doc" "out" ]; + meta = { homepage = http://xiph.org/ogg/; }; diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 17f06e46711..0e2f042104d 100644 --- a/pkgs/development/libraries/libsamplerate/default.nix +++ b/pkgs/development/libraries/libsamplerate/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, fftw, libsndfile }: +{ stdenv, fetchurl, pkgconfig, libsndfile }: stdenv.mkDerivation rec { name = "libsamplerate-0.1.7"; @@ -9,12 +9,14 @@ stdenv.mkDerivation rec { }; buildInputs = [ pkgconfig ]; - propagatedBuildInputs = [ fftw libsndfile ]; + propagatedBuildInputs = [ libsndfile ]; # maybe interesting configure flags: #--disable-fftw disable usage of FFTW #--disable-cpu-clip disable tricky cpu specific clipper + outputs = [ "dev" "bin" "out" ]; + meta = { description = "Sample Rate Converter for audio"; homepage = http://www.mega-nerd.com/SRC/index.html; diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index d9b4afbf0ff..7140843a453 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, flac, libogg, libvorbis, pkgconfig }: +{ stdenv, fetchurl, flac, libogg, libvorbis, pkgconfig }: stdenv.mkDerivation rec { name = "libsndfile-1.0.23"; @@ -8,7 +8,11 @@ stdenv.mkDerivation rec { sha256 = "0k9x4804gfh9d9zd4rm1v2izm8l716rzk4d6jlrjcf45b5sw7jal"; }; - buildInputs = [pkgconfig flac libogg libvorbis]; + buildInputs = [ pkgconfig flac libogg libvorbis ]; + + enableParallelBuilding = true; + + outputs = [ "dev" "out" "bin" "doc" ]; meta = { description = "Libsndfile, a C library for reading and writing files containing sampled sound"; diff --git a/pkgs/development/libraries/libtiff/default.nix b/pkgs/development/libraries/libtiff/default.nix index e073717de56..5101429a403 100644 --- a/pkgs/development/libraries/libtiff/default.nix +++ b/pkgs/development/libraries/libtiff/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { sha256 = "0wj8d1iwk9vnpax2h29xqc2hwknxg3s0ay2d5pxkg59ihbifn6pa"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + propagatedBuildInputs = [ zlib libjpeg ]; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/libvorbis/default.nix b/pkgs/development/libraries/libvorbis/default.nix index b1277b87e6a..b6c25ad9a93 100644 --- a/pkgs/development/libraries/libvorbis/default.nix +++ b/pkgs/development/libraries/libvorbis/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { name = "libvorbis-1.3.3"; - + src = fetchurl { url = "http://downloads.xiph.org/releases/vorbis/${name}.tar.xz"; sha256 = "1gby6hapz9njx4l9g0pndyk4q83z5fgrgc30mfwfgx7bllspsk43"; @@ -11,6 +11,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ xz ]; propagatedBuildInputs = [ libogg ]; + outputs = [ "dev" "out" "doc" ]; + meta = { homepage = http://xiph.org/vorbis/; }; diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 640b99df547..6a3beee80de 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -46,6 +46,10 @@ stdenv.mkDerivation { patches = patchesCross false; + outputs = [ "dev" "out" "man" "bin" ]; + + setOutputConfigureFlags = false; + buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders; nativeBuildInputs = [ perl ]; @@ -58,7 +62,7 @@ stdenv.mkDerivation { configureFlags = "shared --libdir=lib --openssldir=etc/ssl" + stdenv.lib.optionalString withCryptodev " -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"; - makeFlags = "MANDIR=$(out)/share/man"; + makeFlags = "MANDIR=$(man)/share/man"; # Parallel building is broken in OpenSSL. #enableParallelBuilding = true; @@ -70,6 +74,18 @@ stdenv.mkDerivation { if [ -n "$(echo $out/lib/*.so $out/lib/*.dylib)" ]; then rm $out/lib/*.a fi + + mkdir -p $bin + mv $out/bin $bin/ + + rm -rf $out/etc/ssl/misc + + mkdir $dev + mv $out/include $dev/ + + # OpenSSL installs readonly files, which otherwise we can't strip. + # FIXME: Can remove this after the next stdenv merge. + chmod -R +w $out ''; # */ crossAttrs = { @@ -80,14 +96,6 @@ stdenv.mkDerivation { export configureFlags="--libdir=lib --cross-compile-prefix=${stdenv.cross.config}- shared ${opensslCrossSystem}" ''; - postInstall = '' - # Openssl installs readonly files, which otherwise we can't strip. - # This could at some stdenv hash change be put out of crossAttrs, too - chmod -R +w $out - - # Remove references to perl, to avoid depending on it at runtime - rm $out/bin/c_rehash $out/ssl/misc/CA.pl $out/ssl/misc/tsget - ''; configureScript = "./Configure"; }; diff --git a/pkgs/development/libraries/pango/default.nix b/pkgs/development/libraries/pango/default.nix index 1acb3639f06..2de9d98e579 100644 --- a/pkgs/development/libraries/pango/default.nix +++ b/pkgs/development/libraries/pango/default.nix @@ -9,6 +9,8 @@ stdenv.mkDerivation rec { sha256 = "08aqis6j8nd1lb4f2h4h9d9kjvp54iwf8zvqzss0qn4v7nfcjyvx"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + NIX_CFLAGS_COMPILE = "-I${cairo}/include/cairo"; buildInputs = stdenv.lib.optionals stdenv.isDarwin [ gettext fontconfig ]; @@ -19,8 +21,6 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "A library for laying out and rendering of text, with an emphasis on internationalization"; diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix index e59c249348a..d7d13c6de4c 100644 --- a/pkgs/development/libraries/pcre/default.nix +++ b/pkgs/development/libraries/pcre/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "5778a02535473c7ee7838ea598c19f451e63cf5eec0bf0307a688301c9078c3c"; }; + outputs = [ "dev" "out" "bin" "doc" "man" ]; + # The compiler on Darwin crashes with an internal error while building the # C++ interface. Disabling optimizations on that platform remedies the # problem. In case we ever update the Darwin GCC version, the exception for @@ -19,6 +21,12 @@ stdenv.mkDerivation rec { doCheck = !stdenv.isCygwin; # XXX: test failure on Cygwin + postInstall = + '' + mkdir $dev/bin + mv $bin/bin/pcre-config $dev/bin/ + ''; + meta = { homepage = "http://www.pcre.org/"; description = "A library for Perl Compatible Regular Expressions"; diff --git a/pkgs/development/libraries/speex/default.nix b/pkgs/development/libraries/speex/default.nix index 93a01a3d2bc..6aceef78eea 100644 --- a/pkgs/development/libraries/speex/default.nix +++ b/pkgs/development/libraries/speex/default.nix @@ -2,11 +2,18 @@ stdenv.mkDerivation rec { name = "speex-1.2rc1"; - + src = fetchurl { url = "http://downloads.us.xiph.org/releases/speex/${name}.tar.gz"; sha256 = "19mpkhbz3s08snvndn0h1dk2j139max6b0rr86nnsjmxazf30brl"; }; - + buildInputs = [ libogg ]; + + outputs = [ "dev" "out" "bin" "doc" ]; + + meta = { + homepage = http://www.speex.org/; + description = "A audio compression codec designed for speech"; + }; } diff --git a/pkgs/development/tools/misc/libtool/libtool2.nix b/pkgs/development/tools/misc/libtool/libtool2.nix index 4c3500c65a2..0252750bf12 100644 --- a/pkgs/development/tools/misc/libtool/libtool2.nix +++ b/pkgs/development/tools/misc/libtool/libtool2.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, m4, perl, lzma }: -stdenv.mkDerivation (rec { +stdenv.mkDerivation rec { name = "libtool-2.4.2"; src = fetchurl { @@ -10,6 +10,8 @@ stdenv.mkDerivation (rec { nativeBuildInputs = [ lzma m4 perl ]; + outputs = [ "out" "lib" ]; + # Don't fixup "#! /bin/sh" in Libtool, otherwise it will use the # "fixed" path in generated files! dontPatchShebangs = true; @@ -18,6 +20,10 @@ stdenv.mkDerivation (rec { # leads to the failure of a number of tests. doCheck = false; + # Don't run the native `strip' when cross-compiling. This breaks at least + # with `.a' files for MinGW. + dontStrip = stdenv ? cross; + meta = { description = "GNU Libtool, a generic library support script"; @@ -38,11 +44,3 @@ stdenv.mkDerivation (rec { maintainers = [ stdenv.lib.maintainers.ludo ]; }; } - -// - -# Don't run the native `strip' when cross-compiling. This breaks at least -# with `.a' files for MinGW. -(if (stdenv ? cross) - then { dontStrip = true; } - else { })) diff --git a/pkgs/development/tools/misc/patchelf/default.nix b/pkgs/development/tools/misc/patchelf/default.nix index 857aa1cabcf..65edd1a5187 100644 --- a/pkgs/development/tools/misc/patchelf/default.nix +++ b/pkgs/development/tools/misc/patchelf/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "fc7e7fa95f282fc37a591a802629e0e1ed07bc2a8bf162228d9a69dd76127c01"; }; + doCheck = true; + meta = { homepage = http://nixos.org/patchelf.html; license = "GPL"; diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix index ad25b4180b5..471fbcdc464 100644 --- a/pkgs/misc/cups/default.nix +++ b/pkgs/misc/cups/default.nix @@ -13,6 +13,9 @@ stdenv.mkDerivation { md5 = "de3006e5cf1ee78a9c6145ce62c4e982"; }; + # FIXME: Split off the cups client library. + outputs = [ "dev" "out" "doc" "man" ]; + buildInputs = [ pkgconfig zlib libjpeg libpng libtiff libusb1 ] ++ stdenv.lib.optionals stdenv.isLinux [ pam dbus.libs acl ] ; @@ -38,6 +41,14 @@ stdenv.mkDerivation { "CUPS_PRIMARY_SYSTEM_GROUP=root" ]; + postInstall = + '' + mkdir $dev/bin + mv $out/bin/cups-config $dev/bin/ + + chmod -R +w $out + ''; + meta = { homepage = "http://www.cups.org/"; description = "A standards-based printing system for UNIX"; diff --git a/pkgs/os-specific/linux/pam/default.nix b/pkgs/os-specific/linux/pam/default.nix index 43300425c00..5545b5c16d6 100644 --- a/pkgs/os-specific/linux/pam/default.nix +++ b/pkgs/os-specific/linux/pam/default.nix @@ -8,10 +8,14 @@ stdenv.mkDerivation rec { sha256 = "1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s"; }; + outputs = [ "out" "doc" "man" "modules" ]; + nativeBuildInputs = [ flex ]; buildInputs = [ cracklib ]; + enableParallelBuilding = true; + crossAttrs = { propagatedBuildInputs = [ flex.crossDrv cracklib.crossDrv ]; preConfigure = preConfigure + '' @@ -30,6 +34,11 @@ stdenv.mkDerivation rec { postInstall = '' mv -v $out/sbin/unix_chkpwd{,.orig} ln -sv /var/setuid-wrappers/unix_chkpwd $out/sbin/unix_chkpwd + + rm -rf $out/etc + + mkdir -p $modules/lib + mv $out/lib/security $modules/lib/ ''; preConfigure = '' diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index 77126e5ffdc..e7184aa27b9 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -53,11 +53,11 @@ stdenv.mkDerivation rec { for i in src/remount-fs/remount-fs.c src/core/mount.c src/core/swap.c src/fsck/fsck.c units/emergency.service.in units/rescue.service.m4.in src/journal/cat.c; do test -e $i substituteInPlace $i \ - --replace /bin/mount ${utillinux}/bin/mount \ - --replace /bin/umount ${utillinux}/bin/umount \ - --replace /sbin/swapon ${utillinux}/sbin/swapon \ - --replace /sbin/swapoff ${utillinux}/sbin/swapoff \ - --replace /sbin/fsck ${utillinux}/sbin/fsck \ + --replace /bin/mount ${utillinux.bin}/bin/mount \ + --replace /bin/umount ${utillinux.bin}/bin/umount \ + --replace /sbin/swapon ${utillinux.bin}/sbin/swapon \ + --replace /sbin/swapoff ${utillinux.bin}/sbin/swapoff \ + --replace /sbin/fsck ${utillinux.bin}/sbin/fsck \ --replace /bin/echo ${coreutils}/bin/echo \ --replace /bin/cat ${coreutils}/bin/cat \ --replace /sbin/sulogin ${sysvtools}/sbin/sulogin diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index d42424e6fc8..84cb42693f1 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0vf3ifb45gr4cd27pmmxk8y5b3r0920mv16fv0vfwz5705xa2qvl"; }; + outputs = [ "dev" "out" "bin" ]; + crossAttrs = { # Work around use of `AC_RUN_IFELSE'. preConfigure = "export scanf_cv_type_modifier=ms"; @@ -29,6 +31,8 @@ stdenv.mkDerivation rec { ${if ncurses == null then "--without-ncurses" else ""} ''; + makeFlags = "usrbin_execdir=$(bin)/bin usrsbin_execdir=$(bin)/sbin"; + buildInputs = [ zlib pam ] ++ stdenv.lib.optional (ncurses != null) ncurses diff --git a/pkgs/servers/http/apache-httpd/2.2.nix b/pkgs/servers/http/apache-httpd/2.2.nix index 23454d048b7..450936d343c 100644 --- a/pkgs/servers/http/apache-httpd/2.2.nix +++ b/pkgs/servers/http/apache-httpd/2.2.nix @@ -20,6 +20,8 @@ stdenv.mkDerivation rec { sha1 = "f73bce14832ec40c1aae68f4f8c367cab2266241"; }; + outputs = [ "dev" "out" "doc" ]; + buildInputs = [perl apr aprutil pcre] ++ stdenv.lib.optional sslSupport openssl; @@ -42,11 +44,19 @@ stdenv.mkDerivation rec { --with-mpm=${mpm} ''; + preConfigure = + '' + makeFlagsArray+=("installbuilddir=$dev/share/build") + ''; + enableParallelBuilding = true; + stripDebugList = "lib modules bin"; + postInstall = '' - echo "removing manual" - rm -rf $out/manual + mkdir -p $doc/share/doc/httpd + mv $out/manual $doc/share/doc/httpd + mkdir -p $out/share # FIXME, hack ''; passthru = { diff --git a/pkgs/servers/x11/xorg/builder.sh b/pkgs/servers/x11/xorg/builder.sh index 6ba50d24507..733d04e787a 100644 --- a/pkgs/servers/x11/xorg/builder.sh +++ b/pkgs/servers/x11/xorg/builder.sh @@ -9,7 +9,7 @@ postInstall() { if test -n "$origPostInstall"; then eval "$origPostInstall"; fi local r p requires - requires=$(grep "Requires:" $out/lib/pkgconfig/*.pc | \ + requires=$(grep "Requires:" ${dev:-$out}/lib/pkgconfig/*.pc | \ sed "s/Requires://" | sed "s/,/ /g") echo "propagating requisites $requires" @@ -31,10 +31,6 @@ postInstall() { done fi done - - mkdir -p "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - echo "$propagatedNativeBuildInputs" > "$out/nix-support/propagated-native-build-inputs" } diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index 3a523469248..18a24100851 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -579,13 +579,14 @@ let buildInputs = [pkgconfig windowswmproto libX11 libXext xextproto ]; })) // {inherit windowswmproto libX11 libXext xextproto ;}; - libX11 = (stdenv.mkDerivation ((if overrides ? libX11 then overrides.libX11 else x: x) { + libX11 = (stdenvMulti.mkDerivation ((if overrides ? libX11 then overrides.libX11 else x: x) { name = "libX11-1.6.0"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libX11-1.6.0.tar.bz2; sha256 = "1yhrf36is2f2h28x8wjd87wmdhslmzg06jg1gwq55hiy6h9184sk"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig inputproto kbproto libxcb xextproto xf86bigfontproto xproto xtrans ]; })) // {inherit inputproto kbproto libxcb xextproto xf86bigfontproto xproto xtrans ;}; @@ -599,13 +600,14 @@ let buildInputs = [pkgconfig scrnsaverproto libX11 libXext xextproto ]; })) // {inherit scrnsaverproto libX11 libXext xextproto ;}; - libXau = (stdenv.mkDerivation ((if overrides ? libXau then overrides.libXau else x: x) { + libXau = (stdenvMulti.mkDerivation ((if overrides ? libXau then overrides.libXau else x: x) { name = "libXau-1.0.7"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libXau-1.0.7.tar.bz2; sha256 = "12d4f7sdv2pjxhk0lcay0pahccddszkw579dc59daqi37r8bllvi"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig xproto ]; })) // {inherit xproto ;}; @@ -619,13 +621,14 @@ let buildInputs = [pkgconfig libX11 libXext xextproto libXmu libXpm xproto libXt ]; })) // {inherit libX11 libXext xextproto libXmu libXpm xproto libXt ;}; - libXcomposite = (stdenv.mkDerivation ((if overrides ? libXcomposite then overrides.libXcomposite else x: x) { + libXcomposite = (stdenvMulti.mkDerivation ((if overrides ? libXcomposite then overrides.libXcomposite else x: x) { name = "libXcomposite-0.4.3"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libXcomposite-0.4.3.tar.bz2; sha256 = "1b8sniijb85v4my6v30ma9yqnwl4hkclci9l1hqxnipfyhl4sa9j"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig compositeproto libX11 libXfixes xproto ]; })) // {inherit compositeproto libX11 libXfixes xproto ;}; @@ -649,33 +652,36 @@ let buildInputs = [pkgconfig damageproto fixesproto libX11 xextproto libXfixes xproto ]; })) // {inherit damageproto fixesproto libX11 xextproto libXfixes xproto ;}; - libXdmcp = (stdenv.mkDerivation ((if overrides ? libXdmcp then overrides.libXdmcp else x: x) { + libXdmcp = (stdenvMulti.mkDerivation ((if overrides ? libXdmcp then overrides.libXdmcp else x: x) { name = "libXdmcp-1.1.1"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libXdmcp-1.1.1.tar.bz2; sha256 = "13highx4xpgkiwykpcl7z2laslrjc4pzi4h617ny9p7r6116vkls"; }; + outputs = [ "dev" "out" "doc" ]; buildInputs = [pkgconfig xproto ]; })) // {inherit xproto ;}; - libXext = (stdenv.mkDerivation ((if overrides ? libXext then overrides.libXext else x: x) { + libXext = (stdenvMulti.mkDerivation ((if overrides ? libXext then overrides.libXext else x: x) { name = "libXext-1.3.2"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libXext-1.3.2.tar.bz2; sha256 = "1q1j0kjyhmy24wqr6mdkrrciffyqhmc8vn95za2w1ka6qrdhfagq"; }; + outputs = [ "dev" "out" "man" "doc" ]; buildInputs = [pkgconfig libX11 xextproto xproto ]; })) // {inherit libX11 xextproto xproto ;}; - libXfixes = (stdenv.mkDerivation ((if overrides ? libXfixes then overrides.libXfixes else x: x) { + libXfixes = (stdenvMulti.mkDerivation ((if overrides ? libXfixes then overrides.libXfixes else x: x) { name = "libXfixes-5.0.1"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libXfixes-5.0.1.tar.bz2; sha256 = "0rs7qgzr6dpr62db7sd91c1b47hzhzfr010qwnpcm8sg122w1gk3"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig fixesproto libX11 xextproto xproto ]; })) // {inherit fixesproto libX11 xextproto xproto ;}; @@ -689,33 +695,36 @@ let buildInputs = [pkgconfig libfontenc fontsproto freetype xproto xtrans zlib ]; })) // {inherit libfontenc fontsproto freetype xproto xtrans zlib ;}; - libXft = (stdenv.mkDerivation ((if overrides ? libXft then overrides.libXft else x: x) { + libXft = (stdenvMulti.mkDerivation ((if overrides ? libXft then overrides.libXft else x: x) { name = "libXft-2.3.1"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libXft-2.3.1.tar.bz2; sha256 = "1gdv6559cdz1lfw73x7wsvax1fkvphmayrymprljhyyb5nwk5kkz"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig fontconfig freetype libX11 xproto libXrender ]; })) // {inherit fontconfig freetype libX11 xproto libXrender ;}; - libXi = (stdenv.mkDerivation ((if overrides ? libXi then overrides.libXi else x: x) { + libXi = (stdenvMulti.mkDerivation ((if overrides ? libXi then overrides.libXi else x: x) { name = "libXi-1.7.1"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libXi-1.7.1.tar.bz2; sha256 = "1ib6026bh4bcc2q0y04klqsvjl9pwabxnr8ybkh52g65d5mxnap9"; }; + outputs = [ "dev" "out" "man" "doc" ]; buildInputs = [pkgconfig inputproto libX11 libXext xextproto libXfixes xproto ]; })) // {inherit inputproto libX11 libXext xextproto libXfixes xproto ;}; - libXinerama = (stdenv.mkDerivation ((if overrides ? libXinerama then overrides.libXinerama else x: x) { + libXinerama = (stdenvMulti.mkDerivation ((if overrides ? libXinerama then overrides.libXinerama else x: x) { name = "libXinerama-1.1.3"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libXinerama-1.1.3.tar.bz2; sha256 = "1qlqfvzw45gdzk9xirgwlp2qgj0hbsyiqj8yh8zml2bk2ygnjibs"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig libX11 libXext xextproto xineramaproto ]; })) // {inherit libX11 libXext xextproto xineramaproto ;}; @@ -749,23 +758,25 @@ let buildInputs = [pkgconfig libX11 libXext xextproto xproto libXt ]; })) // {inherit libX11 libXext xextproto xproto libXt ;}; - libXrandr = (stdenv.mkDerivation ((if overrides ? libXrandr then overrides.libXrandr else x: x) { + libXrandr = (stdenvMulti.mkDerivation ((if overrides ? libXrandr then overrides.libXrandr else x: x) { name = "libXrandr-1.4.1"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libXrandr-1.4.1.tar.bz2; sha256 = "01dr1wvyxq2y4yq4hilgglkjlvn551dmnl4l65nfm8nh1x4s056r"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig randrproto renderproto libX11 libXext xextproto xproto libXrender ]; })) // {inherit randrproto renderproto libX11 libXext xextproto xproto libXrender ;}; - libXrender = (stdenv.mkDerivation ((if overrides ? libXrender then overrides.libXrender else x: x) { + libXrender = (stdenvMulti.mkDerivation ((if overrides ? libXrender then overrides.libXrender else x: x) { name = "libXrender-0.9.8"; builder = ./builder.sh; src = fetchurl { url = mirror://xorg/individual/lib/libXrender-0.9.8.tar.bz2; sha256 = "0qpwyjhbpp734vnhca992pjh4w7ijslidkzx1pcwbbk000pv050x"; }; + outputs = [ "dev" "out" "doc" ]; buildInputs = [pkgconfig renderproto libX11 xproto ]; })) // {inherit renderproto libX11 xproto ;}; @@ -889,13 +900,14 @@ let buildInputs = [pkgconfig ]; })) // {inherit ;}; - libxcb = (stdenv.mkDerivation ((if overrides ? libxcb then overrides.libxcb else x: x) { + libxcb = (stdenvMulti.mkDerivation ((if overrides ? libxcb then overrides.libxcb else x: x) { name = "libxcb-1.9.1"; builder = ./builder.sh; src = fetchurl { url = http://xcb.freedesktop.org/dist/libxcb-1.9.1.tar.bz2; sha256 = "0brn7vw66widc5mw7gynwy8dln3gmzym2fqqyzk6k58bxgs5yjnl"; }; + outputs = [ "dev" "out" "doc" "man" ]; buildInputs = [pkgconfig libxslt libpthreadstubs python libXau xcbproto libXdmcp ]; })) // {inherit libxslt libpthreadstubs python libXau xcbproto libXdmcp ;}; diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 84af23a263c..8714afa0358 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -7,7 +7,7 @@ # The function defaults are for easy testing. { system ? builtins.currentSystem , allPackages ? import ../../top-level/all-packages.nix -, platform ? null, config }: +, platform ? null, config ? {} }: rec { @@ -193,9 +193,9 @@ rec { stdenvLinuxGlibc = stdenvLinuxBoot2Pkgs.glibc; - # 6) Construct a third stdenv identical to the 2nd, except that - # this one uses the Glibc built in step 3. It still uses - # the recent binutils and rest of the bootstrap tools, including GCC. + # 6) Construct a third stdenv identical to the 2nd, except that this + # one uses the Glibc built in step 3. It still uses the recent + # binutils and the rest of the bootstrap tools, including GCC. stdenvLinuxBoot3 = stdenvBootFun { gcc = wrapGCC { binutils = stdenvLinuxBoot1Pkgs.binutils; @@ -286,7 +286,7 @@ rec { extraAttrs = { inherit (stdenvLinuxBoot3Pkgs) glibc; inherit platform bootstrapTools; - shellPackage = stdenvLinuxBoot4Pkgs.bash; + shellPackage = stdenvLinuxBoot4Pkgs.bash; }; overrides = pkgs: { @@ -295,7 +295,7 @@ rec { inherit (stdenvLinuxBoot4Pkgs) gzip bzip2 xz bash coreutils diffutils findutils gawk gnumake gnused gnutar gnugrep gnupatch patchelf - attr acl; + attr acl pcre; }; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 782e83d1948..da533493520 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -344,6 +344,10 @@ let inherit stdenv perl cpio contents ubootChooser compressor; }; + stdenvMulti = stdenv // { + mkDerivation = import ../build-support/multiple-outputs.nix { inherit (pkgs) stdenv; }; + }; + makeWrapper = makeSetupHook { } ../build-support/setup-hooks/make-wrapper.sh; makeModulesClosure = {kernel, rootModules, allowMissing ? false}: @@ -2292,6 +2296,7 @@ let })); gcc46_real = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.6 { + stdenv = stdenvMulti; inherit noSysDirs; # bootstrapping a profiled compiler does not work in the sheevaplug: @@ -3034,6 +3039,7 @@ let perl514 = callPackage ../development/interpreters/perl/5.14 { }; perl516 = callPackage ../development/interpreters/perl/5.16 { + stdenv = stdenvMulti; fetchurl = fetchurlBoot; }; @@ -3465,7 +3471,9 @@ let libtool_1_5 = callPackage ../development/tools/misc/libtool { }; - libtool_2 = callPackage ../development/tools/misc/libtool/libtool2.nix { }; + libtool_2 = callPackage ../development/tools/misc/libtool/libtool2.nix { + stdenv = stdenvMulti; + }; lsof = callPackage ../development/tools/misc/lsof { }; @@ -3612,7 +3620,9 @@ let aalib = callPackage ../development/libraries/aalib { }; - acl = callPackage ../development/libraries/acl { }; + acl = callPackage ../development/libraries/acl { + stdenv = stdenvMulti; + }; activemq = callPackage ../development/libraries/apache-activemq { }; @@ -3629,7 +3639,9 @@ let amrwb = callPackage ../development/libraries/amrwb { }; - apr = callPackage ../development/libraries/apr { }; + apr = callPackage ../development/libraries/apr { + stdenv = stdenvMulti; + }; aprutil = callPackage ../development/libraries/apr-util { bdbSupport = true; @@ -3651,7 +3663,9 @@ let attica = callPackage ../development/libraries/attica { }; - attr = callPackage ../development/libraries/attr { }; + attr = callPackage ../development/libraries/attr { + stdenv = stdenvMulti; + }; aqbanking = callPackage ../development/libraries/aqbanking { }; @@ -3894,7 +3908,9 @@ let freeglut = if stdenv.isDarwin then darwinX11AndOpenGL else callPackage ../development/libraries/freeglut { }; - freetype = callPackage ../development/libraries/freetype { }; + freetype = callPackage ../development/libraries/freetype { + stdenv = stdenvMulti; + }; fribidi = callPackage ../development/libraries/fribidi { }; @@ -3975,6 +3991,7 @@ let })); glibc217 = callPackage ../development/libraries/glibc/2.17 { + stdenv = stdenvMulti; kernelHeaders = linuxHeaders; installLocales = config.glibc.locales or false; machHeaders = null; @@ -4043,7 +4060,9 @@ let inherit (ocamlPackages) lablgl findlib camlimages ocaml_mysql mlgmp; }; - gmime = callPackage ../development/libraries/gmime { }; + gmime = callPackage ../development/libraries/gmime { + stdenv = stdenvMulti; + }; gmm = callPackage ../development/libraries/gmm { }; @@ -4155,31 +4174,44 @@ let glib = callPackage ../development/libraries/glib { stdenv = if stdenv.isDarwin then overrideGCC stdenv gccApple - else stdenv; + else stdenvMulti; }; + glibmm = callPackage ../development/libraries/glibmm { }; glib_networking = callPackage ../development/libraries/glib-networking {}; - atk = callPackage ../development/libraries/atk { }; + atk = callPackage ../development/libraries/atk { + stdenv = stdenvMulti; + }; + atkmm = callPackage ../development/libraries/atkmm { }; pixman = callPackage ../development/libraries/pixman { }; cairo = callPackage ../development/libraries/cairo { + stdenv = stdenvMulti; glSupport = lib.elem system lib.platforms.mesaPlatforms; }; + cairo_1_12_2 = callPackage ../development/libraries/cairo/1.12.2.nix { }; + cairomm = callPackage ../development/libraries/cairomm { }; - pango = callPackage ../development/libraries/pango { }; + pango = callPackage ../development/libraries/pango { + stdenv = stdenvMulti; + }; + pangomm = callPackage ../development/libraries/pangomm/2.28.x.nix { }; pangox_compat = callPackage ../development/libraries/pangox-compat { }; - gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf { }; + gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf { + stdenv = stdenvMulti; + }; gtk2 = callPackage ../development/libraries/gtk+/2.x.nix { + stdenv = stdenvMulti; cupsSupport = config.gtk2.cups or stdenv.isLinux; }; @@ -4292,7 +4324,9 @@ let inherit mesa SDL SDL_image SDL_mixer; }; - jasper = callPackage ../development/libraries/jasper { }; + jasper = callPackage ../development/libraries/jasper { + stdenv = stdenvMulti; + }; jama = callPackage ../development/libraries/jama { }; @@ -4552,7 +4586,9 @@ let libre = callPackage ../development/libraries/libre {}; librem = callPackage ../development/libraries/librem {}; - libsamplerate = callPackage ../development/libraries/libsamplerate { }; + libsamplerate = callPackage ../development/libraries/libsamplerate { + stdenv = stdenvMulti; + }; libspectre = callPackage ../development/libraries/libspectre { }; @@ -4584,9 +4620,15 @@ let libiptcdata = callPackage ../development/libraries/libiptcdata { }; - libjpeg_original = callPackage ../development/libraries/libjpeg { }; - libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { }; - libjpeg = if (stdenv.isLinux) then libjpeg_turbo else libjpeg_original; # some problems, both on FreeBSD and Darwin + libjpeg_original = callPackage ../development/libraries/libjpeg { + stdenv = stdenvMulti; + }; + + libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { + stdenv = stdenvMulti; + }; + + libjpeg = if stdenv.isLinux then libjpeg_turbo else libjpeg_original; # some problems, both on FreeBSD and Darwin libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix { libtool = libtool_1_5; @@ -4654,7 +4696,9 @@ let libofx = callPackage ../development/libraries/libofx { }; - libogg = callPackage ../development/libraries/libogg { }; + libogg = callPackage ../development/libraries/libogg { + stdenv = stdenvMulti; + }; liboggz = callPackage ../development/libraries/liboggz { }; @@ -4704,7 +4748,9 @@ let # To bootstrap SBCL, I need CLisp 2.44.1; it needs libsigsegv 2.5 libsigsegv_25 = callPackage ../development/libraries/libsigsegv/2.5.nix { }; - libsndfile = callPackage ../development/libraries/libsndfile { }; + libsndfile = callPackage ../development/libraries/libsndfile { + stdenv = stdenvMulti; + }; libsoup = callPackage ../development/libraries/libsoup { }; @@ -4718,7 +4764,9 @@ let libtheora = callPackage ../development/libraries/libtheora { }; - libtiff = callPackage ../development/libraries/libtiff { }; + libtiff = callPackage ../development/libraries/libtiff { + stdenv = stdenvMulti; + }; libtiger = callPackage ../development/libraries/libtiger { }; @@ -4779,7 +4827,9 @@ let libvterm = callPackage ../development/libraries/libvterm { }; - libvorbis = callPackage ../development/libraries/libvorbis { }; + libvorbis = callPackage ../development/libraries/libvorbis { + stdenv = stdenvMulti; + }; libwebp = callPackage ../development/libraries/libwebp { }; @@ -5023,6 +5073,7 @@ let openscenegraph = callPackage ../development/libraries/openscenegraph {}; openssl = callPackage ../development/libraries/openssl { + stdenv = stdenvMulti; fetchurl = fetchurlBoot; cryptodevHeaders = linuxPackages.cryptodev.override { fetchurl = fetchurlBoot; @@ -5041,6 +5092,7 @@ let }; pcre = callPackage ../development/libraries/pcre { + stdenv = stdenvMulti; unicodeSupport = config.pcre.unicode or true; }; @@ -5242,7 +5294,9 @@ let speech_tools = callPackage ../development/libraries/speech-tools {}; - speex = callPackage ../development/libraries/speex { }; + speex = callPackage ../development/libraries/speex { + stdenv = stdenvMulti; + }; sphinxbase = callPackage ../development/libraries/sphinxbase { }; @@ -5695,6 +5749,7 @@ let apacheHttpd = pkgs.apacheHttpd_2_2; apacheHttpd_2_2 = callPackage ../servers/http/apache-httpd/2.2.nix { + stdenv = stdenvMulti; sslSupport = true; }; @@ -5936,7 +5991,7 @@ let xinetd = callPackage ../servers/xinetd { }; xorg = recurseIntoAttrs (import ../servers/x11/xorg/default.nix { - inherit fetchurl fetchgit stdenv pkgconfig intltool freetype fontconfig + inherit fetchurl fetchgit stdenv stdenvMulti pkgconfig intltool freetype fontconfig libxslt expat libdrm libpng zlib perl mesa_drivers xkeyboard_config dbus libuuid openssl gperf m4 autoconf libtool xmlto asciidoc udev flex bison python mtdev pixman; @@ -6481,7 +6536,9 @@ let nss_ldap = callPackage ../os-specific/linux/nss_ldap { }; - pam = callPackage ../os-specific/linux/pam { }; + pam = callPackage ../os-specific/linux/pam { + stdenv = stdenvMulti; + }; # pam_bioapi ( see http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader ) @@ -6639,10 +6696,12 @@ let utillinux = lowPrio (callPackage ../os-specific/linux/util-linux { ncurses = null; perl = null; + stdenv = stdenvMulti; }); utillinuxCurses = utillinux.override { inherit ncurses perl; + stdenv = stdenvMulti; }; v4l_utils = callPackage ../os-specific/linux/v4l-utils { @@ -7393,7 +7452,9 @@ let firefox21Wrapper = lowPrio (wrapFirefox { browser = firefox21Pkgs.firefox; }); - flac = callPackage ../applications/audio/flac { }; + flac = callPackage ../applications/audio/flac { + stdenv = stdenvMulti; + }; flashplayer = callPackage ../applications/networking/browsers/mozilla-plugins/flashplayer-11 { debug = config.flashplayer.debug or false; @@ -9335,7 +9396,9 @@ let auctex = callPackage ../tools/typesetting/tex/auctex { }; - cups = callPackage ../misc/cups { }; + cups = callPackage ../misc/cups { + stdenv = stdenvMulti; + }; cups_pdf_filter = callPackage ../misc/cups/pdf-filter.nix { }; |