diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index fe4b43539d44..0256eacc4361 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 c79680712ee7..dbd955054373 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 8e8b0b909454..64dab123ec49 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 a3ada9e984fd..c0082471916f 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 000000000000..016558c1e739 --- /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 de4566c12ddf..cc58162deeff 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 8528be077295..23a67d8d5333 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 c1a5374c92ea..bc9a0f0f4ddd 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 d37d8926fbdc..4055708907b9 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 229529f08cec..da03ab44ecdd 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 c2737b20eff4..23ad3261fb53 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 ce7f92a20354..d6b080050bed 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 8d87e2ee50dd..e4e9142b6328 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 3b2670d988ae..d24354199412 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 6c73b17e6f4e..0be0d74b292a 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 a13e399ab0fe..1df9e46c0f70 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 27e2cad062b9..a72d7ad5e401 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 f4157cdd8d0a..ec43d9f8c4bf 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 a8a3943e409e..144dd0d9bfbe 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 8812ea70c796..6106c7865904 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 4046c05f79e5..f6777dc3bb9c 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 d7a6f8d54430..a2bfa08c0da0 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 d9436456d0d4..4e04e88eaa62 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 bf27e074dd58..f59c205af4fd 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 d7a1bcb46385..8884546bcdf5 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 492538f18026..9d5b9cd92986 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 1f04ae8fca54..c4aa41681a30 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 85d51d0ad71e..f885024bca04 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 74140d5f335e..c4bdc23f937b 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 7ed9794011cd..aa4ac0a79223 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 0dd99605b336..5e883771b71a 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 c972635c9c72..cca5049c0d43 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 40b02c2afbb2..355c4c048c7c 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 4cf6bd44dd3b..961a9e7b9ea6 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 93a01a3d2bcb..6aceef78eea2 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 7c51bf1b5917..d657a6ccc988 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 96094ab4e538..121581d83979 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 45dffe06676b..951a19cde90c 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 8b0a92c12445..98d22dcf42b4 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 5aa81e46bed1..1c1245a29c92 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 1b3d4950e377..57968bfe8f4f 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 bb1f60ed5db0..db6acb4cd0d7 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 92f15c1ade3d..e82214df634a 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 240150b09ddb..66bd2dc30aaf 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 43b8204f50c2..8423ea6f1236 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 3445c3cd2dd3..9942218be6cf 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 1dd7c0c089fa..03b4f2a894a5 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 e5e2e2215b49..bcbc5baf37b0 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 6ba50d245075..733d04e787aa 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 d03249387b71..81988e45db07 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 d96a94832851..aa76cd671917 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 e1d7c26fa430..c9b57bc46694 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 6f6f2a0da554..8f1cf29e5195 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 c2840fd843ff..016b63dd3cf3 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 9a79222a6725..1a81b1400f91 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 8895d4d093b2..8b87d253b3d0 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";