diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index fe4b43539d4..0256eacc436 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -12,6 +12,8 @@ stdenv.mkDerivation rec { #doCheck = true; # takes lots of time + outputs = [ "dev" "out" "bin" "doc" ]; + meta = with stdenv.lib; { 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 c79680712ee..dbd95505437 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 " 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 @@ -95,6 +95,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@^$ld^g" \ < "$src" > "$dst" } @@ -210,5 +211,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 8e8b0b90945..64dab123ec4 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -41,7 +41,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 a3ada9e984f..c0082471916 100644 --- a/pkgs/build-support/gcc-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-wrapper/setup-hook.sh @@ -27,7 +27,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 de4566c12dd..cc58162deef 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,7 +30,7 @@ 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" @@ -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 @@ -217,6 +225,7 @@ postInstall() { # 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 8528be07729..23a67d8d533 100644 --- a/pkgs/development/compilers/gcc/4.6/default.nix +++ b/pkgs/development/compilers/gcc/4.6/default.nix @@ -173,7 +173,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 @@ -185,13 +185,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 c1a5374c92e..bc9a0f0f4dd 100644 --- a/pkgs/development/interpreters/perl/5.16/default.nix +++ b/pkgs/development/interpreters/perl/5.16/default.nix @@ -18,6 +18,11 @@ stdenv.mkDerivation rec { sha256 = "1dpd9lhc4723wmsn4dsn4m320qlqgyw28bvcbhnfqp2nl3f0ikv9"; }; + # TODO: Add a "dev" output containing the header files. + outputs = [ "out" "man" ]; + + setOutputConfigureFlags = false; + patches = [ # Do not look in /usr etc. for dependencies. ./no-sys-dirs.patch @@ -49,7 +54,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" ${optionalString stdenv.isArm '' configureFlagsArray=(-Dldflags="-lm -lrt") @@ -68,6 +73,17 @@ stdenv.mkDerivation rec { substituteInPlace dist/Cwd/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" ''; + postInstall = + '' + # Remove dependency between "out" and "man" outputs. + rm $out/lib/perl5/*/*/.packlist + + # Remove dependencies on glibc.dev and coreutils. + substituteInPlace $out/lib/perl5/*/*/Config_heavy.pl \ + --replace ${stdenv.glibc.dev or "/blabla"} /no-such-path \ + --replace $man /no-such-path + ''; # */ + setupHook = ./setup-hook.sh; passthru.libPrefix = "lib/perl5/site_perl"; diff --git a/pkgs/development/libraries/acl/default.nix b/pkgs/development/libraries/acl/default.nix index d37d8926fbd..4055708907b 100644 --- a/pkgs/development/libraries/acl/default.nix +++ b/pkgs/development/libraries/acl/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p"; }; + 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 229529f08ce..da03ab44ecd 100644 --- a/pkgs/development/libraries/apr-util/default.nix +++ b/pkgs/development/libraries/apr-util/default.nix @@ -23,11 +23,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=${db}"} ${stdenv.lib.optionalString ldapSupport "--with-ldap"} ''; + buildInputs = stdenv.lib.optional sslSupport openssl; + propagatedBuildInputs = [ makeWrapper apr expat ] ++ optional sslSupport openssl ++ optional bdbSupport db diff --git a/pkgs/development/libraries/apr/default.nix b/pkgs/development/libraries/apr/default.nix index c2737b20eff..23ad3261fb5 100644 --- a/pkgs/development/libraries/apr/default.nix +++ b/pkgs/development/libraries/apr/default.nix @@ -10,6 +10,13 @@ stdenv.mkDerivation rec { patches = stdenv.lib.optionals stdenv.isDarwin [ ./darwin_fix_configure.patch ]; + outputs = [ "dev" "out" ]; + + preConfigure = + '' + configureFlagsArray+=("--with-installbuilddir=$dev/share/build") + ''; + configureFlags = # Including the Windows headers breaks unistd.h. # Based on ftp://sourceware.org/pub/cygwin/release/libapr1/libapr1-1.3.8-2-src.tar.bz2 @@ -17,6 +24,13 @@ stdenv.mkDerivation rec { 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 ce7f92a2035..d6b080050be 100644 --- a/pkgs/development/libraries/atk/default.nix +++ b/pkgs/development/libraries/atk/default.nix @@ -12,6 +12,10 @@ stdenv.mkDerivation rec { sha256 = "13zijfcmx7sda83qkryzsmr9hw0r3b73xkagq9cmm733fhcl7a28"; }; + enableParallelBuilding = true; + + outputs = [ "dev" "out" "doc" ]; + buildInputs = libintlOrEmpty; nativeBuildInputs = [ pkgconfig perl ]; @@ -20,8 +24,6 @@ stdenv.mkDerivation rec { #doCheck = true; # no checks in there (2.10.0) - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "Accessibility toolkit"; diff --git a/pkgs/development/libraries/attr/default.nix b/pkgs/development/libraries/attr/default.nix index 8d87e2ee50d..e4e9142b632 100644 --- a/pkgs/development/libraries/attr/default.nix +++ b/pkgs/development/libraries/attr/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0nd8y0m6awc9ahv0ciiwf8gy54c8d3j51pw9xg7f7cn579jjyxr5"; }; + 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/boehm-gc/default.nix b/pkgs/development/libraries/boehm-gc/default.nix index 3b2670d988a..d2435419941 100644 --- a/pkgs/development/libraries/boehm-gc/default.nix +++ b/pkgs/development/libraries/boehm-gc/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr"; }; + outputs = [ "dev" "out" "doc" ]; + configureFlags = "--enable-cplusplus"; doCheck = true; @@ -15,6 +17,12 @@ stdenv.mkDerivation rec { # Don't run the native `strip' when cross-compiling. dontStrip = stdenv ? cross; + postInstall = + '' + mkdir -p $out/share/doc + mv $out/share/gc $out/share/doc/gc + ''; + meta = { description = "The Boehm-Demers-Weiser conservative garbage collector for C and C++"; diff --git a/pkgs/development/libraries/cairo/default.nix b/pkgs/development/libraries/cairo/default.nix index 6c73b17e6f4..0be0d74b292 100644 --- a/pkgs/development/libraries/cairo/default.nix +++ b/pkgs/development/libraries/cairo/default.nix @@ -18,6 +18,8 @@ stdenv.mkDerivation rec { sha256 = "0inqwsylqkrzcjivdirkjx5nhdgxbdc62fq284c3xppinfg9a195"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + nativeBuildInputs = [ pkgconfig ] ++ libintlOrEmpty ++ libiconvOrEmpty; propagatedBuildInputs = @@ -53,12 +55,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - # The default `--disable-gtk-doc' is ignored. - postInstall = "rm -rf $out/share/gtk-doc" - + stdenv.lib.optionalString stdenv.isDarwin ('' - #newline - '' + glib.flattenInclude - ); + postInstall = stdenv.lib.optionalString stdenv.isDarwin glib.flattenInclude; 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 a13e399ab0f..1df9e46c0f7 100644 --- a/pkgs/development/libraries/freetype/default.nix +++ b/pkgs/development/libraries/freetype/default.nix @@ -23,6 +23,10 @@ stdenv.mkDerivation rec { sha256 = "0pppcn73b5pwd7zdi9yfx16f5i93y18q7q4jmlkwmwrfsllqp160"; }; + outputs = [ "dev" "out" ]; + + configureFlags = "--disable-static --bindir=$(dev)/bin"; + patches = [ ./enable-validation.patch ] # from Gentoo ++ [ (fetch_bohoomil "freetype-2.5.3-pkgconfig.patch" "1dpfdh8kmka3gzv14glz7l79i545zizah6wma937574v5z2iy3nn") @@ -50,6 +54,10 @@ stdenv.mkDerivation rec { # compat hacks postInstall = glib.flattenInclude + '' ln -s . "$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 27e2cad062b..a72d7ad5e40 100644 --- a/pkgs/development/libraries/gdk-pixbuf/default.nix +++ b/pkgs/development/libraries/gdk-pixbuf/default.nix @@ -13,8 +13,12 @@ stdenv.mkDerivation rec { sha256 = "1gpqpskp4zzf7h35bp247jcvnk6rxc52r69pb11v8g8i2q386ls8"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + setupHook = ./setup-hook.sh; + enableParallelBuilding = true; + # !!! We might want to factor out the gdk-pixbuf-xlib subpackage. buildInputs = [ libX11 libintlOrEmpty ]; @@ -28,8 +32,6 @@ stdenv.mkDerivation rec { doCheck = true; - postInstall = "rm -rf $out/share/gtk-doc"; - meta = { description = "A library for image loading and manipulation"; homepage = http://library.gnome.org/devel/gdk-pixbuf/; diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index f4157cdd8d0..ec43d9f8c4b 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -51,6 +51,9 @@ stdenv.mkDerivation rec { patches = optional stdenv.isDarwin ./darwin-compilation.patch; + outputs = [ "dev" "out" "bin" "doc" ]; + + setupHook = ./setup-hook.sh; buildInputs = [ libelf ] @@ -97,8 +100,6 @@ stdenv.mkDerivation rec { sed -e '/g_subprocess_launcher_set_environ (launcher, envp);/a g_subprocess_launcher_setenv (launcher, "PATH", g_getenv("PATH"), TRUE);' -i gio/tests/gsubprocess.c ''; - postInstall = ''rm -rvf $out/share/gtk-doc''; - passthru = { gioModuleDir = "lib/gio/modules"; inherit flattenInclude; diff --git a/pkgs/development/libraries/gmime/default.nix b/pkgs/development/libraries/gmime/default.nix index a8a3943e409..144dd0d9bfb 100644 --- a/pkgs/development/libraries/gmime/default.nix +++ b/pkgs/development/libraries/gmime/default.nix @@ -8,9 +8,13 @@ stdenv.mkDerivation rec { sha256 = "0jm1fgbjgh496rsc0il2y46qd4bqq2ln9168p4zzh68mk4ml1yxg"; }; + 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 8812ea70c79..6106c786590 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 = "0v9xxpkypizy9k866rvqc36zvj4kj9p8nd1nxf9znay8k3hv5khj"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + enableParallelBuilding = true; NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (libintlOrEmpty != []) "-lintl"; @@ -35,8 +37,6 @@ stdenv.mkDerivation rec { then "--disable-glibtest --disable-introspection --disable-visibility" else "--with-xinput=yes"; - postInstall = "rm -rf $out/share/gtk-doc"; - meta = with stdenv.lib; { description = "A multi-platform toolkit for creating graphical user interfaces"; homepage = http://www.gtk.org/; 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/libdrm/default.nix b/pkgs/development/libraries/libdrm/default.nix index d7a6f8d5443..a2bfa08c0da 100644 --- a/pkgs/development/libraries/libdrm/default.nix +++ b/pkgs/development/libraries/libdrm/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0c20wpfa94d8kww0f2xinmm4axsl4nhq921xj4i88yhpjbhbn3z2"; }; + outputs = [ "dev" "out" ]; + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ libpthreadstubs libpciaccess ] ++ stdenv.lib.optional stdenv.isLinux udev; diff --git a/pkgs/development/libraries/libelf/default.nix b/pkgs/development/libraries/libelf/default.nix index d9436456d0d..4e04e88eaa6 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 = [ ]; }; } - -// - -# 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-turbo/default.nix b/pkgs/development/libraries/libjpeg-turbo/default.nix index bf27e074dd5..f59c205af4f 100644 --- a/pkgs/development/libraries/libjpeg-turbo/default.nix +++ b/pkgs/development/libraries/libjpeg-turbo/default.nix @@ -8,8 +8,12 @@ stdenv.mkDerivation rec { sha256 = "1fbgcvlnn3d5gvf0v9jnlcabpv2z3nwxclzyabahxi6x2xs90cn1"; }; + outputs = [ "dev" "out" "doc" "bin" ]; + buildInputs = [ nasm ]; + enableParallelBuilding = true; + doCheck = true; checkTarget = "test"; diff --git a/pkgs/development/libraries/libjpeg/default.nix b/pkgs/development/libraries/libjpeg/default.nix index d7a1bcb4638..8884546bcdf 100644 --- a/pkgs/development/libraries/libjpeg/default.nix +++ b/pkgs/development/libraries/libjpeg/default.nix @@ -1,17 +1,19 @@ -{ stdenv, fetchurl, static ? false }: +{ stdenv, fetchurl, static ? false }: with stdenv.lib; stdenv.mkDerivation { name = "libjpeg-8d"; - + src = fetchurl { url = http://www.ijg.org/files/jpegsrc.v8d.tar.gz; sha256 = "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0"; }; configureFlags = optional static "--enable-static --disable-shared"; - + + 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 492538f1802..9d5b9cd9298 100644 --- a/pkgs/development/libraries/libogg/default.nix +++ b/pkgs/development/libraries/libogg/default.nix @@ -5,13 +5,15 @@ let in stdenv.mkDerivation { inherit name; - + src = fetchurl { url = "http://downloads.xiph.org/releases/ogg/${name}.tar.xz"; sha256 = "16z74q422jmprhyvy7c9x909li8cqzmvzyr8cgbm52xcsp6pqs1z"; }; meta = with stdenv.lib; { + + outputs = [ "dev" "doc" "out" ]; homepage = http://xiph.org/ogg/; license = licenses.bsd3; maintainers = [ maintainers.emery ]; diff --git a/pkgs/development/libraries/libpng/default.nix b/pkgs/development/libraries/libpng/default.nix index 1f04ae8fca5..c4aa41681a3 100644 --- a/pkgs/development/libraries/libpng/default.nix +++ b/pkgs/development/libraries/libpng/default.nix @@ -19,6 +19,10 @@ in stdenv.mkDerivation rec { inherit sha256; }; + outputs = [ "dev" "out" "man" ]; + + preConfigure = "export bin=$dev"; + postPatch = whenPatched "gunzip < ${patch_src} | patch -Np1"; propagatedBuildInputs = [ zlib ]; diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 85d51d0ad71..f885024bca0 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.8"; @@ -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" ]; + postConfigure = stdenv.lib.optionalString stdenv.isDarwin '' # need headers from the Carbon.framework in /System/Library/Frameworks to diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index 74140d5f335..c4bdc23f937 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -10,6 +10,10 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig flac libogg libvorbis ]; + enableParallelBuilding = true; + + outputs = [ "dev" "out" "bin" "doc" ]; + # need headers from the Carbon.framework in /System/Library/Frameworks to # compile this on darwin -- not sure how to handle preConfigure = stdenv.lib.optionalString stdenv.isDarwin diff --git a/pkgs/development/libraries/libtiff/default.nix b/pkgs/development/libraries/libtiff/default.nix index 7ed9794011c..aa4ac0a7922 100644 --- a/pkgs/development/libraries/libtiff/default.nix +++ b/pkgs/development/libraries/libtiff/default.nix @@ -19,6 +19,8 @@ stdenv.mkDerivation rec { sha256 = "0wj8d1iwk9vnpax2h29xqc2hwknxg3s0ay2d5pxkg59ihbifn6pa"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + patchPhase = '' for p in ${patchDir}/*-{2013-4244,2012-4447,2012-4564,2013-1960,2013-1961,libjpeg-turbo}.patch; do patch -p1 < "$p" diff --git a/pkgs/development/libraries/libvorbis/default.nix b/pkgs/development/libraries/libvorbis/default.nix index 0dd99605b33..5e883771b71 100644 --- a/pkgs/development/libraries/libvorbis/default.nix +++ b/pkgs/development/libraries/libvorbis/default.nix @@ -5,7 +5,7 @@ let in stdenv.mkDerivation { inherit name; - + src = fetchurl { url = "http://downloads.xiph.org/releases/vorbis/${name}.tar.xz"; sha256 = "0wpk87jnhngcl3nc5i39flkycx1sjzilx8jjx4zc4p8r55ylj19g"; @@ -15,6 +15,8 @@ stdenv.mkDerivation { propagatedBuildInputs = [ libogg ]; + outputs = [ "dev" "out" "doc" ]; + doCheck = true; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index c972635c9c7..cca5049c0d4 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -48,6 +48,10 @@ stdenv.mkDerivation { patches = patchesCross false; + outputs = [ "dev" "out" "man" "bin" ]; + + setOutputConfigureFlags = false; + buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders; nativeBuildInputs = [ perl ]; @@ -67,7 +71,7 @@ stdenv.mkDerivation { sed -i -e "s|-march=i486|-march=x86-64|g" Makefile ''; - makeFlags = "MANDIR=$(out)/share/man"; + makeFlags = "MANDIR=$(man)/share/man"; # Parallel building is broken in OpenSSL. enableParallelBuilding = false; @@ -79,6 +83,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 = { @@ -89,14 +105,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"; } // stdenv.lib.optionalAttrs (opensslCrossSystem == "darwin64-x86_64-cc") { CC = "gcc"; diff --git a/pkgs/development/libraries/pango/default.nix b/pkgs/development/libraries/pango/default.nix index 40b02c2afbb..355c4c048c7 100644 --- a/pkgs/development/libraries/pango/default.nix +++ b/pkgs/development/libraries/pango/default.nix @@ -9,10 +9,11 @@ stdenv.mkDerivation rec { sha256 = "08aqis6j8nd1lb4f2h4h9d9kjvp54iwf8zvqzss0qn4v7nfcjyvx"; }; + outputs = [ "dev" "out" "bin" "doc" ]; + buildInputs = with stdenv.lib; optional (!stdenv.isDarwin) gobjectIntrospection # build problems of itself and flex ++ optionals stdenv.isDarwin [ gettext fontconfig ]; - nativeBuildInputs = [ pkgconfig ]; propagatedBuildInputs = [ x11 glib cairo libpng harfbuzz ] ++ libintlOrEmpty; @@ -25,8 +26,6 @@ stdenv.mkDerivation rec { # .../bin/sh: line 5: 14823 Abort trap: 6 srcdir=. PANGO_RC_FILE=./pangorc ${dir}$tst # FAIL: testiter doCheck = !stdenv.isDarwin; - 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 4cf6bd44dd3..961a9e7b9ea 100644 --- a/pkgs/development/libraries/pcre/default.nix +++ b/pkgs/development/libraries/pcre/default.nix @@ -12,6 +12,8 @@ stdenv.mkDerivation rec { sha256 = "0gsqmsp0q0n3q0ba32gkjvgcsdy6nwidqa7sbxkbw817zzhkl15n"; }; + 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 @@ -30,6 +32,12 @@ stdenv.mkDerivation rec { buildInputs = [ windows.mingw_w64_pthreads.crossDrv ]; }; + 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/perl-modules/generic/builder.sh b/pkgs/development/perl-modules/generic/builder.sh index 7c51bf1b591..d657a6ccc98 100644 --- a/pkgs/development/perl-modules/generic/builder.sh +++ b/pkgs/development/perl-modules/generic/builder.sh @@ -28,6 +28,13 @@ preConfigure() { perl Makefile.PL PREFIX=$out INSTALLDIRS=site $makeMakerFlags } +preFixup() { + if [ -n "$man" ]; then + mkdir -p $man/share + if [ -d $out/man ]; then mv $out/man $man/share/; fi + fi +} + postFixup() { # If a user installs a Perl package, she probably also wants its # dependencies in the user environment (since Perl modules don't diff --git a/pkgs/development/perl-modules/generic/default.nix b/pkgs/development/perl-modules/generic/default.nix index 96094ab4e53..121581d8397 100644 --- a/pkgs/development/perl-modules/generic/default.nix +++ b/pkgs/development/perl-modules/generic/default.nix @@ -1,13 +1,15 @@ perl: -{ buildInputs ? [], ... } @ attrs: +{ buildInputs ? [], name, ... } @ attrs: perl.stdenv.mkDerivation ( { + outputs = [ "out" "man" ]; + doCheck = true; - + checkTarget = "test"; - + # Prevent CPAN downloads. PERL_AUTOINSTALL = "--skipdeps"; @@ -20,7 +22,7 @@ perl.stdenv.mkDerivation ( attrs // { - name = "perl-" + attrs.name; + name = "perl-" + name; builder = ./builder.sh; buildInputs = buildInputs ++ [ perl ]; } diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 45dffe06676..951a19cde90 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation rec { ++ optional useQt4 qt4; CMAKE_PREFIX_PATH = stdenv.lib.concatStringsSep ":" buildInputs; - + configureFlags = "--docdir=/share/doc/${name} --mandir=/share/man --system-libs" + stdenv.lib.optionalString useQt4 " --qt-gui"; diff --git a/pkgs/development/tools/misc/libtool/libtool2.nix b/pkgs/development/tools/misc/libtool/libtool2.nix index 8b0a92c1244..98d22dcf42b 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 5aa81e46bed..1c1245a29c9 100644 --- a/pkgs/development/tools/misc/patchelf/default.nix +++ b/pkgs/development/tools/misc/patchelf/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation rec { setupHook = [ ./setup-hook.sh ]; + doCheck = true; + meta = { homepage = http://nixos.org/patchelf.html; license = "GPL"; diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix index 1b3d4950e37..57968bfe8f4 100644 --- a/pkgs/development/web/nodejs/default.nix +++ b/pkgs/development/web/nodejs/default.nix @@ -45,9 +45,9 @@ in stdenv.mkDerivation { (cd tools/gyp; patch -Np1 -i ${../../python-modules/gyp/no-darwin-cflags.patch}) '' else null; - buildInputs = [ python which ] + buildInputs = [ python openssl ] ++ (optional stdenv.isLinux utillinux) - ++ optionals stdenv.isDarwin [ pkgconfig openssl dtrace ]; + ++ optionals stdenv.isDarwin [ pkgconfig dtrace ]; setupHook = ./setup-hook.sh; meta = { diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix index bb1f60ed5db..db6acb4cd0d 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 libusb ] ++ stdenv.lib.optionals stdenv.isLinux [ pam dbus.libs acl ] ; @@ -38,6 +41,12 @@ stdenv.mkDerivation { "CUPS_PRIMARY_SYSTEM_GROUP=root" ]; + postInstall = + '' + mkdir $dev/bin + mv $out/bin/cups-config $dev/bin/ + ''; + meta = { homepage = "http://www.cups.org/"; description = "A standards-based printing system for UNIX"; diff --git a/pkgs/os-specific/linux/libcap/default.nix b/pkgs/os-specific/linux/libcap/default.nix index 92f15c1ade3..e82214df634 100644 --- a/pkgs/os-specific/linux/libcap/default.nix +++ b/pkgs/os-specific/linux/libcap/default.nix @@ -5,12 +5,14 @@ assert stdenv.isLinux; stdenv.mkDerivation rec { name = "libcap-${version}"; version = "2.22"; - + src = fetchurl { url = "mirror://gentoo/distfiles/${name}.tar.bz2"; sha256 = "03q50j6bg65cc501q87qh328ncav1i8qw2bjig99vxmmfx4bvsvk"; }; - + + outputs = [ "dev" "out" ]; + nativeBuildInputs = [ perl ]; propagatedBuildInputs = [ attr ]; diff --git a/pkgs/os-specific/linux/module-init-tools/default.nix b/pkgs/os-specific/linux/module-init-tools/default.nix index 240150b09dd..66bd2dc30aa 100644 --- a/pkgs/os-specific/linux/module-init-tools/default.nix +++ b/pkgs/os-specific/linux/module-init-tools/default.nix @@ -17,6 +17,8 @@ stdenv.mkDerivation { }) ]; + buildInputs = [ stdenv.glibc.dev stdenv.glibc.static ]; + SGML_CATALOG_FILES = "${docbook_sgml_dtd_41}/sgml/dtd/docbook-4.1/docbook.cat"; patches = [ ./module-dir.patch ./docbook2man.patch ]; diff --git a/pkgs/os-specific/linux/pam/default.nix b/pkgs/os-specific/linux/pam/default.nix index 43b8204f50c..8423ea6f123 100644 --- a/pkgs/os-specific/linux/pam/default.nix +++ b/pkgs/os-specific/linux/pam/default.nix @@ -10,10 +10,14 @@ stdenv.mkDerivation rec { patches = [ ./CVE-2014-2583.patch ]; + outputs = [ "out" "doc" "man" "modules" ]; + nativeBuildInputs = [ flex ]; buildInputs = [ cracklib ]; + enableParallelBuilding = true; + crossAttrs = { propagatedBuildInputs = [ flex.crossDrv cracklib.crossDrv ]; preConfigure = preConfigure + '' @@ -32,6 +36,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 3445c3cd2dd..9942218be6c 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -19,6 +19,8 @@ stdenv.mkDerivation rec { sha256 = "1hpjcc42svrs06q3isjm3m5aphgkpfdylmvpnif71zh46ys0cab5"; }; + outputs = [ "out" "man" "libudev" ]; + patches = [ # These are all changes between upstream and # https://github.com/edolstra/systemd/tree/nixos-v212. @@ -57,11 +59,12 @@ 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 src/core/shutdown.c src/nspawn/nspawn.c; do test -e $i substituteInPlace $i \ - --replace /usr/bin/getent ${stdenv.glibc}/bin/getent \ - --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 /usr/bin/getent ${stdenv.glibc.bin}/bin/getent \ + --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 \ @@ -70,6 +73,8 @@ stdenv.mkDerivation rec { substituteInPlace src/journal/catalog.c \ --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/ + + export NIX_CFLAGS_LINK+=" -Wl,-rpath,$libudev/lib" ''; # This is needed because systemd uses the gold linker, which doesn't @@ -126,6 +131,16 @@ stdenv.mkDerivation rec { done rm -rf $out/etc/rpm + + # Move libudev to a separate output. + mkdir -p $libudev/lib/pkgconfig $libudev/include + mv $out/lib/libudev* $libudev/lib/ + mv $out/lib/pkgconfig/libudev*.pc $libudev/lib/pkgconfig/ + mv $out/include/libudev.h $libudev/include/ + + for i in $libudev/lib/*.la $libudev/lib/pkgconfig/*.pc; do + substituteInPlace $i --replace $out $libudev + done ''; # */ enableParallelBuilding = true; diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index 1dd7c0c089f..03b4f2a894a 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 = "1w0g8q5aj5pjdf8l52g0mxyvlk62f4dch51q9jm3hnqwgz0dchqj"; }; + outputs = [ "dev" "out" "bin" ]; + crossAttrs = { # Work around use of `AC_RUN_IFELSE'. preConfigure = "export scanf_cv_type_modifier=ms"; @@ -27,6 +29,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 e5e2e2215b4..bcbc5baf37b 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 { sha256 = "0iw19y6knijinqwvv4q16fgq5xq8nwxdg14wrrbc0mfasvg76n90"; }; + 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 d03249387b7..81988e45db0 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -606,6 +606,7 @@ let url = mirror://xorg/individual/lib/libX11-1.6.2.tar.bz2; sha256 = "05mx0s0vqzds3qjc1gmjr2s6x2ll37z4lfhgm7p2w7936zl2g81a"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig inputproto kbproto libxcb xextproto xf86bigfontproto xproto xtrans ]; })) // {inherit inputproto kbproto libxcb xextproto xf86bigfontproto xproto xtrans ;}; @@ -626,6 +627,7 @@ let url = mirror://xorg/individual/lib/libXau-1.0.8.tar.bz2; sha256 = "1wm4pv12f36cwzhldpp7vy3lhm3xdcnp4f184xkxsp7b18r7gm7x"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig xproto ]; })) // {inherit xproto ;}; @@ -646,6 +648,7 @@ let url = mirror://xorg/individual/lib/libXcomposite-0.4.4.tar.bz2; sha256 = "0y21nfpa5s8qmx0srdlilyndas3sgl0c6rc26d5fx2vx436m1qpd"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig compositeproto libX11 libXfixes xproto ]; })) // {inherit compositeproto libX11 libXfixes xproto ;}; @@ -656,6 +659,7 @@ let url = mirror://xorg/individual/lib/libXcursor-1.1.14.tar.bz2; sha256 = "1prkdicl5y5yx32h1azh6gjfbijvjp415javv8dsakd13jrarilv"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig fixesproto libX11 libXfixes xproto libXrender ]; })) // {inherit fixesproto libX11 libXfixes xproto libXrender ;}; @@ -666,6 +670,7 @@ let url = mirror://xorg/individual/lib/libXdamage-1.1.4.tar.bz2; sha256 = "1bamagq7g6s0d23l8rb3nppj8ifqj05f7z9bhbs4fdg8az3ffgvw"; }; + outputs = [ "dev" "out" ]; buildInputs = [pkgconfig damageproto fixesproto libX11 xextproto libXfixes xproto ]; })) // {inherit damageproto fixesproto libX11 xextproto libXfixes xproto ;}; @@ -676,6 +681,7 @@ let url = mirror://xorg/X11R7.7/src/everything/libXdmcp-1.1.1.tar.bz2; sha256 = "13highx4xpgkiwykpcl7z2laslrjc4pzi4h617ny9p7r6116vkls"; }; + outputs = [ "dev" "out" "doc" ]; buildInputs = [pkgconfig xproto ]; })) // {inherit xproto ;}; @@ -686,6 +692,7 @@ let url = mirror://xorg/individual/lib/libXext-1.3.3.tar.bz2; sha256 = "0dbfn5bznnrhqzvkrcmw4c44yvvpwdcsrvzxf4rk27r36b9x865m"; }; + outputs = [ "dev" "out" "man" "doc" ]; buildInputs = [pkgconfig libX11 xextproto xproto ]; })) // {inherit libX11 xextproto xproto ;}; @@ -696,6 +703,7 @@ let 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 ;}; @@ -716,6 +724,7 @@ let url = mirror://xorg/individual/lib/libXft-2.3.2.tar.bz2; sha256 = "0k6wzi5rzs0d0n338ms8n8lfyhq914hw4yl2j7553wqxfqjci8zm"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig fontconfig freetype libX11 xproto libXrender ]; })) // {inherit fontconfig freetype libX11 xproto libXrender ;}; @@ -726,6 +735,7 @@ let url = mirror://xorg/individual/lib/libXi-1.7.4.tar.bz2; sha256 = "0i12lj973grlp9fa79v0vh9cahk3nf9csdjnf81iip0qcrlc5zrc"; }; + outputs = [ "dev" "out" "man" "doc" ]; buildInputs = [pkgconfig inputproto libX11 libXext xextproto libXfixes xproto ]; })) // {inherit inputproto libX11 libXext xextproto libXfixes xproto ;}; @@ -736,6 +746,7 @@ let 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 ;}; @@ -776,6 +787,7 @@ let url = mirror://xorg/individual/lib/libXrandr-1.4.2.tar.bz2; sha256 = "1b95p3l84ppv6j7dbbmg0zrz6k8xdwvnag1l6ajm3gk9qwdb79ya"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig randrproto renderproto libX11 libXext xextproto xproto libXrender ]; })) // {inherit randrproto renderproto libX11 libXext xextproto xproto libXrender ;}; @@ -786,6 +798,7 @@ let 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 ;}; @@ -866,6 +879,7 @@ let url = mirror://xorg/individual/lib/libXxf86vm-1.1.3.tar.bz2; sha256 = "1f1pxj018nk7ybxv58jmn5y8gm2288p4q3l2dng9n1p25v1qcpns"; }; + outputs = [ "dev" "out" "man" ]; buildInputs = [pkgconfig libX11 libXext xextproto xf86vidmodeproto xproto ]; })) // {inherit libX11 libXext xextproto xf86vidmodeproto xproto ;}; @@ -916,6 +930,7 @@ let url = http://xcb.freedesktop.org/dist/libxcb-1.11.tar.bz2; sha256 = "1xqgc81krx14f2c8yl5chzg5g2l26mhm2rwffy8dx7jv0iq5sqq3"; }; + 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 d96a9483285..aa76cd67191 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -183,8 +183,8 @@ rec { # 6) Construct a third stdenv identical to the 2nd, except that this - # one uses the Glibc built in step 5. It still uses the recent - # binutils and rest of the bootstrap tools, including GCC. + # 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 = binutils1; @@ -295,7 +295,7 @@ rec { inherit (stdenvLinuxBoot4Pkgs) gzip bzip2 xz bash coreutils diffutils findutils gawk gnumake gnused gnutar gnugrep gnupatch patchelf - attr acl paxctl; + attr acl pcre paxctl; }; }; diff --git a/pkgs/tools/compression/xz/default.nix b/pkgs/tools/compression/xz/default.nix index e1d7c26fa43..c9b57bc4669 100644 --- a/pkgs/tools/compression/xz/default.nix +++ b/pkgs/tools/compression/xz/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation rec { sha256 = "1404i59bp6rzxya0br1q9njdv32z4sggyfrkjr7vq695hk94hv0n"; }; + outputs = [ "out" "dev" "man" "doc" ]; + doCheck = true; # In stdenv-linux, prevent a dependency on bootstrap-tools. diff --git a/pkgs/tools/networking/ppp/default.nix b/pkgs/tools/networking/ppp/default.nix index 6f6f2a0da55..8f1cf29e519 100644 --- a/pkgs/tools/networking/ppp/default.nix +++ b/pkgs/tools/networking/ppp/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { [ ( substituteAll { src = ./nix-purity.patch; inherit libpcap; - glibc = stdenv.gcc.libc; + glibc = stdenv.gcc.libc.dev; }) ./nonpriv.patch ]; diff --git a/pkgs/tools/typesetting/tex/texlive/default.nix b/pkgs/tools/typesetting/tex/texlive/default.nix index c2840fd843f..016b63dd3cf 100644 --- a/pkgs/tools/typesetting/tex/texlive/default.nix +++ b/pkgs/tools/typesetting/tex/texlive/default.nix @@ -112,7 +112,7 @@ rec { "patchShebangsInterimLibexec" "patchShebangsInterimTexmfDist" "patchShebangsInterimShareTexmfDist"]; - buildInputs = [ zlib bzip2 ncurses libpng flex bison libX11 libICE xproto + buildInputs = [ zlib bzip2 ncurses libpng flex bison libX11.out libICE xproto freetype t1lib gd libXaw icu ghostscript ed libXt libXpm libXmu libXext xextproto perl libSM ruby expat curl libjpeg python fontconfig xz pkgconfig poppler libpaper graphite2 lesstif zziplib harfbuzz texinfo potrace ] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9a79222a672..1a81b1400f9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4833,12 +4833,15 @@ let }; glib = callPackage ../development/libraries/glib { }; + glib-tested = glib.override { doCheck = true; }; # checked version separate to break cycles + glibmm = callPackage ../development/libraries/glibmm { }; glib_networking = callPackage ../development/libraries/glib-networking {}; atk = callPackage ../development/libraries/atk { }; + atkmm = callPackage ../development/libraries/atkmm { }; pixman = callPackage ../development/libraries/pixman { }; @@ -4847,6 +4850,8 @@ let glSupport = config.cairo.gl or (stdenv.isLinux && !stdenv.isArm && !stdenv.isMips); }; + + cairomm = callPackage ../development/libraries/cairomm { }; pango = callPackage ../development/libraries/pango { }; @@ -5130,7 +5135,6 @@ let libdnet = callPackage ../development/libraries/libdnet { }; libdrm = callPackage ../development/libraries/libdrm { - inherit fetchurl stdenv pkgconfig; inherit (xorg) libpthreadstubs; }; @@ -5330,8 +5334,10 @@ 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 = 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; @@ -7801,7 +7807,8 @@ let }); udev145 = callPackage ../os-specific/linux/udev/145.nix { }; - udev = pkgs.systemd; + + udev = pkgs.systemd.libudev; udisks1 = callPackage ../os-specific/linux/udisks/1-default.nix { }; udisks2 = callPackage ../os-specific/linux/udisks/2-default.nix { }; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 8895d4d093b..8b87d253b3d 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -6644,8 +6644,14 @@ let self = _self // overrides; _self = with self; { sha256 = "0mizg2g07fa4c13zpnhmjc87psal5gp5hi23kqpynigmkp0m1p0b"; }; buildInputs = [ pkgs.openssl ]; - OPENSSL_PREFIX = pkgs.openssl; doCheck = false; # Test performs network access. + preConfigure = '' + mkdir openssl + ln -s ${pkgs.openssl.out}/lib openssl + ln -s ${pkgs.openssl.bin}/bin openssl + ln -s ${pkgs.openssl.dev}/include openssl + export OPENSSL_PREFIX=$(realpath openssl) + ''; meta = { description = "Perl extension for using OpenSSL"; license = "SSLeay";