Merge branch 'staging', containing closure-size #7701

This commit is contained in:
Vladimír Čunát
2016-04-13 09:25:28 +02:00
882 changed files with 8958 additions and 2482 deletions

View File

@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
b=$(basename $f)
if [ $b == "mix" ]; then continue; fi
wrapProgram $f \
--prefix PATH ":" "${erlang}/bin:${coreutils}/bin:${curl}/bin:${bash}/bin" \
--prefix PATH ":" "${erlang}/bin:${coreutils}/bin:${curl.bin}/bin:${bash}/bin" \
--set CURL_CA_BUNDLE /etc/ssl/certs/ca-certificates.crt
done

View File

@@ -51,7 +51,7 @@
sed -i "$out/lib/pkgconfig/guile-2.0.pc" \
-e 's|-lunistring|-L${libunistring}/lib -lunistring|g ;
s|^Cflags:\(.*\)$|Cflags: -I${libunistring}/include \1|g ;
s|-lltdl|-L${libtool}/lib -lltdl|g'
s|-lltdl|-L${libtool.lib}/lib -lltdl|g'
'';
# make check doesn't work on darwin

View File

@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
'';
NIX_CFLAGS_COMPILE = ''
-I${SDL}/include/SDL
-I${SDL.dev}/include/SDL
-I${freetype}include/freetype2
'';

View File

@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
makeFlagsArray=(
LUA_LDIR="$out/share/lua/${lua5.luaversion}"
LUA_INC="-I${lua5}/include" LUA_CDIR="$out/lib/lua/${lua5.luaversion}"
EXPAT_INC="-I${expat}/include");
EXPAT_INC="-I${expat.dev}/include");
'';
meta = {

View File

@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
'' + stdenv.lib.optionalString (stdenv.cc.libc != null)
''
substituteInPlace Makefile \
--replace ldconfig ${stdenv.cc.libc}/sbin/ldconfig
--replace ldconfig ${stdenv.cc.libc.bin or stdenv.cc.libc}/bin/ldconfig
'';
configurePhase = false;

View File

@@ -17,7 +17,8 @@ assert enableThreading -> (stdenv ? glibc);
let
libc = if stdenv.cc.libc or null != null then stdenv.cc.libc else "/usr";
libcInc = libc.dev or libc;
libcLib = libc.out or libc;
common = { version, sha256 }: stdenv.mkDerivation rec {
name = "perl-${version}";
@@ -26,7 +27,9 @@ let
inherit sha256;
};
outputs = [ "out" "man" ];
# TODO: Add a "dev" output containing the header files.
outputs = [ "out" "man" "docdev" ];
setOutputFlags = false;
patches =
[ # Do not look in /usr etc. for dependencies.
@@ -35,17 +38,11 @@ let
++ optional stdenv.isSunOS ./ld-shared.patch
++ optional stdenv.isDarwin [ ./cpp-precomp.patch ];
# There's an annoying bug on sandboxed Darwin in Perl's Cwd.pm where it looks for pwd
# in /bin/pwd and /usr/bin/pwd and then falls back on just "pwd" if it can't get them
# while at the same time erasing the PATH environment variable so it unconditionally
# fails. The code in question is guarded by a check for Mac OS, but the patch below
# doesn't have any runtime effect on other platforms.
postPatch = optional stdenv.isDarwin ''
postPatch = ''
pwd="$(type -P pwd)"
substituteInPlace dist/PathTools/Cwd.pm \
--replace "/bin/pwd" "$pwd"
'';
sandboxProfile = sandbox.allow "ipc-sysv-sem";
# Build a thread-safe Perl with a dynamic libperls.o. We need the
@@ -59,8 +56,8 @@ let
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
"-Dlocincpth=${libc}/include"
"-Dloclibpth=${libc}/lib"
"-Dlocincpth=${libcInc}/include"
"-Dloclibpth=${libcLib}/lib"
]
++ optional stdenv.isSunOS "-Dcc=gcc"
++ optional enableThreading "-Dusethreads";
@@ -74,10 +71,8 @@ let
preConfigure =
''
configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"
${optionalString stdenv.isArm ''
configureFlagsArray=(-Dldflags="-lm -lrt")
''}
'' + optionalString stdenv.isArm ''
configureFlagsArray=(-Dldflags="-lm -lrt")
'' + optionalString stdenv.isDarwin ''
substituteInPlace hints/darwin.sh --replace "env MACOSX_DEPLOYMENT_TARGET=10.3" ""
'' + optionalString (!enableThreading) ''
@@ -91,18 +86,26 @@ let
substituteInPlace dist/PathTools/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'"
'';
# Inspired by nuke-references, which I can't depend on because it uses perl. Perhaps it should just use sed :)
postInstall = ''
self=$(echo $out | sed -n "s|^$NIX_STORE/\\([a-z0-9]\{32\}\\)-.*|\1|p")
sed -i "/$self/b; s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" "$out"/lib/perl5/*/*/Config.pm
sed -i "/$self/b; s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" "$out"/lib/perl5/*/*/Config_heavy.pl
'';
setupHook = ./setup-hook.sh;
passthru.libPrefix = "lib/perl5/site_perl";
# TODO: it seems like absolute paths to some coreutils is required.
postInstall =
''
# Remove dependency between "out" and "man" outputs.
rm "$out"/lib/perl5/*/*/.packlist
# Remove dependencies on glibc and gcc
sed "/ *libpth =>/c libpth => ' '," \
-i "$out"/lib/perl5/*/*/Config.pm
# TODO: removing those paths would be cleaner than overwriting with nonsense.
substituteInPlace "$out"/lib/perl5/*/*/Config_heavy.pl \
--replace "${libcInc}" /no-such-path \
--replace "${stdenv.cc.cc or "/no-such-path"}" /no-such-path \
--replace "$man" /no-such-path
''; # */
meta = {
homepage = https://www.perl.org/;
description = "The standard implementation of the Perl 5 programmming language";

View File

@@ -30,7 +30,7 @@ let
# SAPI modules:
apxs2 = {
configureFlags = ["--with-apxs2=${apacheHttpd}/bin/apxs"];
configureFlags = ["--with-apxs2=${apacheHttpd.dev}/bin/apxs"];
buildInputs = [apacheHttpd];
};
@@ -44,7 +44,13 @@ let
};
ldap = {
configureFlags = ["--with-ldap=${openldap}"];
configureFlags = [
"--with-ldap"
"LDAP_DIR=${openldap.dev}"
"LDAP_INCDIR=${openldap.dev}/include"
"LDAP_LIBDIR=${openldap.out}/lib"
"--with-ldap-sasl=${cyrus_sasl.dev}"
];
buildInputs = [openldap cyrus_sasl openssl];
};
@@ -69,7 +75,7 @@ let
libxml2 = {
configureFlags = [
"--with-libxml-dir=${libxml2}"
"--with-libxml-dir=${libxml2.dev}"
];
buildInputs = [ libxml2 ];
};
@@ -148,7 +154,7 @@ let
};
openssl = {
configureFlags = ["--with-openssl=${openssl}"];
configureFlags = ["--enable-openssl"];
buildInputs = [openssl];
};

View File

@@ -25,17 +25,17 @@ let
++ stdenv.lib.optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc
++ stdenv.lib.optional zlibSupport zlib;
C_INCLUDE_PATH = stdenv.lib.concatStringsSep ":" (map (p: "${p}/include") buildInputs);
LIBRARY_PATH = stdenv.lib.concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
LD_LIBRARY_PATH = stdenv.lib.concatStringsSep ":" (map (p: "${p}/lib")
C_INCLUDE_PATH = stdenv.lib.concatStringsSep ":" (map (p: "${p.dev or p}/include") buildInputs);
LIBRARY_PATH = stdenv.lib.concatStringsSep ":" (map (p: "${p.lib or p.out or p}/lib") buildInputs);
LD_LIBRARY_PATH = stdenv.lib.concatStringsSep ":" (map (p: "${p.lib or p.out or p}/lib")
(stdenv.lib.filter (x : x.outPath != stdenv.cc.libc.outPath or "") buildInputs));
preConfigure = ''
# hint pypy to find nix ncurses
substituteInPlace pypy/module/_minimal_curses/fficurses.py \
--replace "/usr/include/ncurses/curses.h" "${ncurses}/include/curses.h" \
--replace "ncurses/curses.h" "${ncurses}/include/curses.h" \
--replace "ncurses/term.h" "${ncurses}/include/term.h" \
--replace "/usr/include/ncurses/curses.h" "${ncurses.dev}/include/curses.h" \
--replace "ncurses/curses.h" "${ncurses.dev}/include/curses.h" \
--replace "ncurses/term.h" "${ncurses.dev}/include/term.h" \
--replace "libraries=['curses']" "libraries=['ncurses']"
# tkinter hints
@@ -44,7 +44,7 @@ let
--replace "linklibs = ['tcl' + _ver, 'tk' + _ver]" "linklibs=['${tcl.libPrefix}', '${tk.libPrefix}']" \
--replace "libdirs = []" "libdirs = ['${tk}/lib', '${tcl}/lib']"
sed -i "s@libraries=\['sqlite3'\]\$@libraries=['sqlite3'], include_dirs=['${sqlite}/include'], library_dirs=['${sqlite}/lib']@" lib_pypy/_sqlite3_build.py
sed -i "s@libraries=\['sqlite3'\]\$@libraries=['sqlite3'], include_dirs=['${sqlite.dev}/include'], library_dirs=['${sqlite.out}/lib']@" lib_pypy/_sqlite3_build.py
'';
buildPhase = ''
@@ -66,7 +66,7 @@ let
doCheck = true;
checkPhase = ''
export TERMINFO="${ncurses}/share/terminfo/";
export TERMINFO="${ncurses.out}/share/terminfo/";
export TERM="xterm";
export HOME="$TMPDIR";
# disable shutils because it assumes gid 0 exists

View File

@@ -52,6 +52,10 @@ let
[ bzip2 openssl ]++ optionals includeModules [ db openssl ncurses gdbm readline xlibsWrapper tcl tk sqlite ]
++ optional zlibSupport zlib;
mkPaths = paths: {
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p.dev or p}/include") paths);
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p.lib or (p.out or p)}/lib") paths);
};
# Build the basic Python interpreter without modules that have
# external dependencies.
@@ -62,8 +66,7 @@ let
inherit majorVersion version src patches buildInputs preConfigure
configureFlags;
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2";
@@ -83,9 +86,9 @@ let
ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion}
mv $out/share/man/man1/{python.1,python2.6.1}
ln -s $out/share/man/man1/{python2.6.1,python.1}
paxmark E $out/bin/python${majorVersion}
${ optionalString includeModules "$out/bin/python ./setup.py build_ext"}
'';
@@ -139,8 +142,7 @@ let
buildInputs = [ python ] ++ deps;
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
buildPhase =
''

View File

@@ -101,6 +101,11 @@ let
propagatedBuildInputs = optional stdenv.isDarwin configd;
mkPaths = paths: {
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p.dev or p}/include") paths);
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p.lib or (p.out or p)}/lib") paths);
};
# Build the basic Python interpreter without modules that have
# external dependencies.
python = stdenv.mkDerivation {
@@ -111,8 +116,7 @@ let
preConfigure configureFlags;
LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2";
DETERMINISTIC_BUILD = 1;
@@ -137,7 +141,9 @@ let
paxmark E $out/bin/python${majorVersion}
${ optionalString includeModules "$out/bin/python ./setup.py build_ext"}
${optionalString includeModules "$out/bin/python ./setup.py build_ext"}
rm "$out"/lib/python*/plat-*/regen # refers to glibc.dev
'';
passthru = rec {
@@ -186,8 +192,7 @@ let
buildInputs = [ python ] ++ deps;
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
# non-python gdbm has a libintl dependency on i686-cygwin, not on x86_64-cygwin
buildPhase = (if (stdenv.system == "i686-cygwin" && moduleName == "gdbm") then ''

View File

@@ -44,8 +44,8 @@ stdenv.mkDerivation {
${optionalString stdenv.isDarwin ''export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"''}
configureFlagsArray=( --enable-shared --with-threads --with-wide-unicode
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p}/lib") buildInputs)}"
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p.dev or p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p.lib or (p.out or p)}/lib") buildInputs)}"
LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}"
)
'';

View File

@@ -46,8 +46,8 @@ stdenv.mkDerivation {
${optionalString stdenv.isDarwin ''export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"''}
configureFlagsArray=( --enable-shared --with-threads
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p}/lib") buildInputs)}"
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p.dev or p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p.lib or (p.out or p)}/lib") buildInputs)}"
LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}"
)
'';

View File

@@ -58,8 +58,8 @@ stdenv.mkDerivation {
''}
configureFlagsArray=( --enable-shared --with-threads
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p}/lib") buildInputs)}"
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p.dev or p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p.lib or (p.out or p)}/lib") buildInputs)}"
LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}"
)
'';

View File

@@ -58,8 +58,8 @@ stdenv.mkDerivation {
''}
configureFlagsArray=( --enable-shared --with-threads
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p}/lib") buildInputs)}"
CPPFLAGS="${concatStringsSep " " (map (p: "-I${p.dev or p}/include") buildInputs)}"
LDFLAGS="${concatStringsSep " " (map (p: "-L${p.lib or (p.out or p)}/lib") buildInputs)}"
LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}"
)
'';

View File

@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
'';
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr}/include/nspr"
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr.dev}/include/nspr"
'';
makeFlags = "-f ${makefile} JS_DIST=\${out} BUILD_OPT=1 JS_READLINE=1 JS_THREADSAFE=1";

View File

@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
sha256 = "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij";
};
outputs = [ "dev" "out" "lib" ];
propagatedBuildInputs = [ nspr ];
buildInputs = [ pkgconfig perl python zip libffi readline ];
@@ -21,11 +23,14 @@ stdenv.mkDerivation rec {
'';
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr}/include/nspr"
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr.dev}/include/nspr"
export LIBXUL_DIST=$out
'';
setOutputFlags = false;
configureFlags = [
"--libdir=$(lib)/lib"
"--includedir=$(dev)/include"
"--enable-threadsafe"
"--with-system-nspr"
"--with-system-ffi"
@@ -49,7 +54,10 @@ stdenv.mkDerivation rec {
paxmark mr jsapi-tests/jsapi-tests
'';
postInstall = ''rm "$out"/lib/*.a''; # halve the output size
postInstall = ''
rm "$lib"/lib/*.a # halve the output size
moveToOutput "bin/js*-config" "$dev" # break the cycle
'';
meta = with stdenv.lib; {
description = "Mozilla's JavaScript engine written in C/C++";

View File

@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
postUnpack = "sourceRoot=\${sourceRoot}/js/src";
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr}/include/nspr"
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr.dev}/include/nspr"
export LIBXUL_DIST=$out
'';

View File

@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
sha256 = "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6";
};
outputs = [ "dev" "out" "lib" ];
propagatedBuildInputs = [ nspr ];
buildInputs = [ pkgconfig perl python zip libffi readline ];
@@ -21,11 +23,14 @@ stdenv.mkDerivation rec {
postUnpack = "sourceRoot=\${sourceRoot}/js/src";
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr}/include/nspr"
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr.dev}/include/nspr"
export LIBXUL_DIST=$out
'';
setOutputFlags = false;
configureFlags = [
"--libdir=$(lib)/lib"
"--includedir=$(dev)/include"
"--enable-threadsafe"
"--with-system-nspr"
"--with-system-ffi"
@@ -40,6 +45,11 @@ stdenv.mkDerivation rec {
doCheck = true;
preCheck = "rm jit-test/tests/sunspider/check-date-format-tofte.js"; # https://bugzil.la/600522
postInstall = ''
rm "$lib"/lib/*.a # halve the output size
moveToOutput "bin/js*-config" "$dev" # break the cycle
'';
meta = with stdenv.lib; {
description = "Mozilla's JavaScript engine written in C/C++";
homepage = https://developer.mozilla.org/en/SpiderMonkey;