diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2017-01-26 16:49:41 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2017-01-26 16:49:41 +0100 |
commit | 6973c7739ea1581595931e8c8b3b76241083b2df (patch) | |
tree | f56826492e0e260f24aeeedd2e47d36785ba3519 /pkgs/top-level | |
parent | 5dacc53af3f4537fab693952b5f13b6cafcde6d4 (diff) | |
parent | bca9bcb3c3dd3b2e46f8e07db9a8326de01697c7 (diff) | |
download | nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.tar nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.tar.gz nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.tar.bz2 nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.tar.lz nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.tar.xz nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.tar.zst nixlib-6973c7739ea1581595931e8c8b3b76241083b2df.zip |
Merge branch 'master' into staging
There were some larger rebuilds because of security.
Diffstat (limited to 'pkgs/top-level')
-rw-r--r-- | pkgs/top-level/all-packages.nix | 210 | ||||
-rw-r--r-- | pkgs/top-level/default.nix | 19 | ||||
-rw-r--r-- | pkgs/top-level/haskell-packages.nix | 4 | ||||
-rw-r--r-- | pkgs/top-level/ocaml-packages.nix | 12 | ||||
-rw-r--r-- | pkgs/top-level/perl-packages.nix | 14 | ||||
-rw-r--r-- | pkgs/top-level/python-packages.nix | 149 | ||||
-rw-r--r-- | pkgs/top-level/release-cross.nix | 86 | ||||
-rw-r--r-- | pkgs/top-level/release.nix | 9 | ||||
-rw-r--r-- | pkgs/top-level/splice.nix | 81 | ||||
-rw-r--r-- | pkgs/top-level/stage.nix | 86 |
10 files changed, 382 insertions, 288 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5df31f6bbd39..0dc0ec66c249 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10,26 +10,12 @@ self: pkgs: with pkgs; -let - defaultScope = pkgs // pkgs.xorg; -in - { # Allow callPackage to fill in the pkgs argument inherit pkgs; - # We use `callPackage' to be able to omit function arguments that - # can be obtained from `pkgs' or `pkgs.xorg' (i.e. `defaultScope'). - # Use `newScope' for sets of packages in `pkgs' (see e.g. `gnome' - # below). - callPackage = newScope {}; - - callPackages = lib.callPackagesWith defaultScope; - - newScope = extra: lib.callPackageWith (defaultScope // extra); - # Override system. This is useful to build i686 packages on x86_64-linux. forceSystem = system: kernel: nixpkgsFun { inherit system; @@ -39,15 +25,9 @@ in # Used by wine, firefox with debugging version of Flash, ... pkgsi686Linux = forceSystem "i686-linux" "i386"; - callPackage_i686 = lib.callPackageWith (pkgsi686Linux // pkgsi686Linux.xorg); + callPackage_i686 = pkgsi686Linux.callPackage; - forceNativeDrv = drv: - # Even when cross compiling, some packages come from the stdenv's - # bootstrapping package set. Those packages are only built for the native - # platform. - if crossSystem != null && drv ? crossDrv - then drv // { crossDrv = drv.nativeDrv; } - else drv; + forcedNativePackages = if hostPlatform == buildPlatform then pkgs else buildPackages; # A stdenv capable of building 32-bit binaries. On x86_64-linux, # it uses GCC compiled with multilib support; on i686-linux, it's @@ -524,6 +504,12 @@ in oracle-instantclient = callPackage ../development/libraries/oracle-instantclient { }; + kwm = callPackage ../os-specific/darwin/kwm { }; + + khd = callPackage ../os-specific/darwin/khd { + inherit (darwin.apple_sdk.frameworks) Carbon Cocoa; + }; + reattach-to-user-namespace = callPackage ../os-specific/darwin/reattach-to-user-namespace {}; install_name_tool = callPackage ../os-specific/darwin/install_name_tool { }; @@ -1677,6 +1663,8 @@ in fcppt = callPackage ../development/libraries/fcppt/default.nix { }; + fcrackzip = callPackage ../tools/security/fcrackzip { }; + fcron = callPackage ../tools/system/fcron { }; fdm = callPackage ../tools/networking/fdm {}; @@ -2361,6 +2349,8 @@ in gcc = gcc49; # doesn't build with gcc5 }; + journalbeat = callPackage ../tools/system/journalbeat { }; + jp = callPackage ../development/tools/jp { }; jp2a = callPackage ../applications/misc/jp2a { }; @@ -2852,7 +2842,7 @@ in mkcue = callPackage ../tools/cd-dvd/mkcue { }; - mkpasswd = callPackage ../tools/security/mkpasswd { }; + mkpasswd = hiPrio (callPackage ../tools/security/mkpasswd { }); mkrand = callPackage ../tools/security/mkrand { }; @@ -2935,6 +2925,8 @@ in ndjbdns = callPackage ../tools/networking/ndjbdns { }; + neofetch = callPackage ../tools/misc/neofetch { }; + nerdfonts = callPackage ../data/fonts/nerdfonts { }; nestopia = callPackage ../misc/emulators/nestopia { }; @@ -3266,7 +3258,7 @@ in pngout = callPackage ../tools/graphics/pngout { }; hurdPartedCross = - if crossSystem != null && crossSystem.config == "i586-pc-gnu" + if targetPlatform != buildPlatform && targetPlatform.config == "i586-pc-gnu" then (makeOverridable ({ hurd }: (parted.override { @@ -3894,7 +3886,7 @@ in sshpass = callPackage ../tools/networking/sshpass { }; sslscan = callPackage ../tools/security/sslscan { - openssl = openssl_1_0_1.override { enableSSL2 = true; }; + openssl = openssl_1_0_1-vulnerable.override { enableSSL2 = true; }; }; sslmate = callPackage ../development/tools/sslmate { }; @@ -4771,44 +4763,48 @@ in gccApple = throw "gccApple is no longer supported"; - gccCrossStageStatic = let + gccCrossStageStatic = assert targetPlatform != buildPlatform; let libcCross1 = if stdenv.cross.libc == "msvcrt" then windows.mingw_w64_headers else if stdenv.cross.libc == "libSystem" then darwin.xcode else null; in wrapGCCCross { - gcc = forceNativeDrv (gcc.cc.override { - cross = crossSystem; + gcc = forcedNativePackages.gcc.cc.override { + cross = targetPlatform; crossStageStatic = true; langCC = false; libcCross = libcCross1; enableShared = false; - }); + # Why is this needed? + inherit (forcedNativePackages) binutilsCross; + }; libc = libcCross1; binutils = binutilsCross; - cross = crossSystem; + cross = targetPlatform; }; # Only needed for mingw builds - gccCrossMingw2 = wrapGCCCross { + gccCrossMingw2 = assert targetPlatform != buildPlatform; wrapGCCCross { gcc = gccCrossStageStatic.gcc; libc = windows.mingw_headers2; binutils = binutilsCross; - cross = assert crossSystem != null; crossSystem; + cross = targetPlatform; }; - gccCrossStageFinal = wrapGCCCross { - gcc = forceNativeDrv (gcc.cc.override { - cross = crossSystem; + gccCrossStageFinal = assert targetPlatform != buildPlatform; wrapGCCCross { + gcc = forcedNativePackages.gcc.cc.override { + cross = targetPlatform; crossStageStatic = false; # XXX: We have troubles cross-compiling libstdc++ on MinGW (see # <http://hydra.nixos.org/build/4268232>), so don't even try. - langCC = crossSystem.config != "i686-pc-mingw32"; - }); + langCC = targetPlatform.config != "i686-pc-mingw32"; + # Why is this needed? + inherit (forcedNativePackages) binutilsCross; + }; libc = libcCross; binutils = binutilsCross; - cross = crossSystem; + cross = targetPlatform; }; gcc45 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.5 { @@ -4826,7 +4822,7 @@ in # and host != build), `cross' must be null but the cross-libc must still # be passed. cross = null; - libcCross = if crossSystem != null then libcCross else null; + libcCross = if targetPlatform != buildPlatform then libcCross else null; })); gcc48 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.8 { @@ -4839,7 +4835,7 @@ in # and host != build), `cross' must be null but the cross-libc must still # be passed. cross = null; - libcCross = if crossSystem != null then libcCross else null; + libcCross = if targetPlatform != buildPlatform then libcCross else null; isl = if !stdenv.isDarwin then isl_0_14 else null; cloog = if !stdenv.isDarwin then cloog else null; @@ -4856,7 +4852,7 @@ in # and host != build), `cross' must be null but the cross-libc must still # be passed. cross = null; - libcCross = if crossSystem != null then libcCross else null; + libcCross = if targetPlatform != buildPlatform then libcCross else null; isl = if !stdenv.isDarwin then isl_0_11 else null; @@ -4873,7 +4869,7 @@ in # and host != build), `cross' must be null but the cross-libc must still # be passed. cross = null; - libcCross = if crossSystem != null then libcCross else null; + libcCross = if targetPlatform != buildPlatform then libcCross else null; isl = if !stdenv.isDarwin then isl_0_14 else null; })); @@ -4888,7 +4884,7 @@ in # and host != build), `cross' must be null but the cross-libc must still # be passed. cross = null; - libcCross = if crossSystem != null then libcCross else null; + libcCross = if targetPlatform != buildPlatform then libcCross else null; isl = if !stdenv.isDarwin then isl_0_14 else null; })); @@ -5021,7 +5017,7 @@ in # Haskell and GHC - haskell = callPackage ./haskell-packages.nix { inherit crossSystem; }; + haskell = callPackage ./haskell-packages.nix { }; haskellPackages = haskell.packages.ghc801.override { overrides = config.haskellPackageOverrides or (self: super: {}); @@ -5499,12 +5495,12 @@ in wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: - forceNativeDrv (callPackage ../build-support/gcc-cross-wrapper { + forcedNativePackages.callPackage ../build-support/gcc-cross-wrapper { nativeTools = false; nativeLibc = false; noLibc = (libc == null); inherit gcc binutils libc shell name cross; - }); + }; # prolog yap = callPackage ../development/compilers/yap { }; @@ -5513,6 +5509,8 @@ in yosys = callPackage ../development/compilers/yosys { }; + zulu = callPackage ../development/compilers/zulu { }; + ### DEVELOPMENT / INTERPRETERS @@ -6012,9 +6010,9 @@ in antlr = callPackage ../development/tools/parsing/antlr/2.7.7.nix { }; - antlr3 = callPackage ../development/tools/parsing/antlr { }; antlr3_4 = callPackage ../development/tools/parsing/antlr/3.4.nix { }; antlr3_5 = callPackage ../development/tools/parsing/antlr/3.5.nix { }; + antlr3 = antlr3_5; ant = apacheAnt; @@ -6083,12 +6081,12 @@ in gold = false; }); - binutilsCross = assert crossSystem != null; lowPrio (forceNativeDrv ( - if crossSystem.libc == "libSystem" then darwin.cctools_cross - else binutils.override { + binutilsCross = assert targetPlatform != buildPlatform; lowPrio ( + if targetPlatform.libc == "libSystem" then darwin.cctools_cross + else forcedNativePackages.binutils.override { noSysDirs = true; - cross = crossSystem; - })); + cross = targetPlatform; + }); bison2 = callPackage ../development/tools/parsing/bison/2.x.nix { }; bison3 = callPackage ../development/tools/parsing/bison/3.x.nix { }; @@ -6292,6 +6290,8 @@ in doxygen_gui = lowPrio (doxygen.override { inherit qt4; }); + drake = callPackage ../development/tools/build-managers/drake { }; + drush = callPackage ../development/tools/misc/drush { }; editorconfig-core-c = callPackage ../development/tools/misc/editorconfig-core-c { }; @@ -6479,6 +6479,8 @@ in mk = callPackage ../development/tools/build-managers/mk { }; + msgpack-tools = callPackage ../development/tools/msgpack-tools { }; + msitools = callPackage ../development/tools/misc/msitools { }; multi-ghc-travis = callPackage ../development/tools/haskell/multi-ghc-travis { }; @@ -6555,9 +6557,9 @@ in cross_renaming: we should make all programs use pkgconfig as nativeBuildInput after the renaming. */ - pkgconfig = forceNativeDrv (callPackage ../development/tools/misc/pkgconfig { + pkgconfig = forcedNativePackages.callPackage ../development/tools/misc/pkgconfig { fetchurl = fetchurlBoot; - }); + }; pkgconfigUpstream = lowPrio (pkgconfig.override { vanilla = true; }); postiats-utilities = callPackage ../development/tools/postiats-utilities {}; @@ -6731,7 +6733,7 @@ in gdbGuile = lowPrio (gdb.override { inherit guile; }); gdbCross = lowPrio (callPackage ../development/tools/misc/gdb { - target = crossSystem; + target = if targetPlatform != buildPlatform then targetPlatform else null; }); gdb-multitarget = lowPrio (gdb.override { multitarget = true; }); @@ -6935,10 +6937,6 @@ in chromaprint = callPackage ../development/libraries/chromaprint { }; - cilaterm = callPackage ../development/libraries/cil-aterm { - stdenv = overrideInStdenv stdenv [gnumake380]; - }; - cl = callPackage ../development/libraries/cl { }; classads = callPackage ../development/libraries/classads { }; @@ -7333,10 +7331,10 @@ in withGd = true; }; - glibcCross = forceNativeDrv (glibc.override { + glibcCross = forcedNativePackages.glibc.override { gccCross = gccCrossStageStatic; linuxHeaders = linuxHeadersCross; - }); + }; # We can choose: libcCrossChooser = name: if name == "glibc" then glibcCross @@ -7345,7 +7343,7 @@ in else if name == "libSystem" then darwin.xcode else throw "Unknown libc"; - libcCross = assert crossSystem != null; libcCrossChooser crossSystem.libc; + libcCross = assert targetPlatform != buildPlatform; libcCrossChooser targetPlatform.libc; # Only supported on Linux glibcLocales = if stdenv.isLinux then callPackage ../development/libraries/glibc/locales.nix { } else null; @@ -7564,10 +7562,6 @@ in gtkmm2 = callPackage ../development/libraries/gtkmm/2.x.nix { }; gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix { }; - gtkmozembedsharp = callPackage ../development/libraries/gtkmozembed-sharp { - gtksharp = gtk-sharp-2_0; - }; - gtk-sharp-2_0 = callPackage ../development/libraries/gtk-sharp/2.0.nix { inherit (gnome2) libglade libgtkhtml gtkhtml libgnomecanvas libgnomeui libgnomeprint @@ -8254,9 +8248,9 @@ in # glibc provides libiconv so systems with glibc don't need to build libiconv # separately, but we also provide libiconvReal, which will always be a # standalone libiconv, just in case you want it - libiconv = if crossSystem != null then - (if crossSystem.libc == "glibc" then libcCross - else if crossSystem.libc == "libSystem" then darwin.libiconv + libiconv = if stdenv ? cross then + (if stdenv.cross.libc == "glibc" then libcCross + else if stdenv.cross.libc == "libSystem" then darwin.libiconv else libiconvReal) else if stdenv.isGlibc then glibcIconv stdenv.cc.libc else if stdenv.isDarwin then darwin.libiconv @@ -8306,10 +8300,6 @@ in libjpeg_drop = callPackage ../development/libraries/libjpeg-drop { }; 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; - }; - libjreen = callPackage ../development/libraries/libjreen { }; libjson_rpc_cpp = callPackage ../development/libraries/libjson-rpc-cpp { }; @@ -9015,7 +9005,7 @@ in onlyHeaders = true; }; }) - openssl_1_0_1 + openssl_1_0_1-vulnerable openssl_1_0_2 openssl_1_1_0 openssl_1_0_2-steam; @@ -10015,10 +10005,6 @@ in jflex = callPackage ../development/libraries/java/jflex { }; - jjtraveler = callPackage ../development/libraries/java/jjtraveler { - stdenv = overrideInStdenv stdenv [gnumake380]; - }; - junit = callPackage ../development/libraries/java/junit { antBuild = releaseTools.antBuild; }; junixsocket = callPackage ../development/libraries/java/junixsocket { }; @@ -10345,6 +10331,7 @@ in jetty = callPackage ../servers/http/jetty { }; knot-dns = callPackage ../servers/dns/knot-dns { }; + knot-resolver = callPackage ../servers/dns/knot-resolver { }; rdkafka = callPackage ../development/libraries/rdkafka { }; @@ -10718,6 +10705,7 @@ in spawn_fcgi = callPackage ../servers/http/spawn-fcgi { }; squid = callPackage ../servers/squid { }; + squid4 = callPackage ../servers/squid/4.nix { }; sslh = callPackage ../servers/sslh { }; @@ -10907,8 +10895,8 @@ in cmdline = callPackage ../os-specific/darwin/command-line-tools {}; apple-source-releases = callPackage ../os-specific/darwin/apple-source-releases { }; in apple-source-releases // rec { - cctools_cross = callPackage (forceNativeDrv (callPackage ../os-specific/darwin/cctools/port.nix {}).cross) { - cross = assert crossSystem != null; crossSystem; + cctools_cross = callPackage (forcedNativePackages.callPackage ../os-specific/darwin/cctools/port.nix {}).cross { + cross = assert targetPlatform != buildPlatform; targetPlatform; inherit maloader; xctoolchain = xcode.toolchain; }; @@ -10981,7 +10969,7 @@ in libossp_uuid = callPackage ../development/libraries/libossp-uuid { }; libuuid = - if crossSystem != null && crossSystem.config == "i586-pc-gnu" + if targetPlatform != buildPlatform && targetPlatform.config == "i586-pc-gnu" then (utillinuxMinimal // { crossDrv = lib.overrideDerivation utillinuxMinimal.crossDrv (args: { # `libblkid' fails to build on GNU/Hurd. @@ -11066,7 +11054,7 @@ in # GNU/Hurd core packages. gnu = recurseIntoAttrs (callPackage ../os-specific/gnu { - inherit platform crossSystem; + inherit platform; }); hwdata = callPackage ../os-specific/linux/hwdata { }; @@ -11145,13 +11133,13 @@ in linuxHeaders = linuxHeaders_4_4; - linuxHeaders24Cross = forceNativeDrv (callPackage ../os-specific/linux/kernel-headers/2.4.nix { - cross = assert crossSystem != null; crossSystem; - }); + linuxHeaders24Cross = forcedNativePackages.callPackage ../os-specific/linux/kernel-headers/2.4.nix { + cross = assert targetPlatform != buildPlatform; targetPlatform; + }; - linuxHeaders26Cross = forceNativeDrv (callPackage ../os-specific/linux/kernel-headers/4.4.nix { - cross = assert crossSystem != null; crossSystem; - }); + linuxHeaders26Cross = forcedNativePackages.callPackage ../os-specific/linux/kernel-headers/4.4.nix { + cross = assert targetPlatform != buildPlatform; targetPlatform; + }; linuxHeaders_3_18 = callPackage ../os-specific/linux/kernel-headers/3.18.nix { }; @@ -11162,8 +11150,8 @@ in else if ver == "2.6" then linuxHeaders26Cross else throw "Unknown linux kernel version"; - linuxHeadersCross = assert crossSystem != null; - linuxHeadersCrossChooser crossSystem.platform.kernelMajor; + linuxHeadersCross = assert targetPlatform != buildPlatform; + linuxHeadersCrossChooser targetPlatform.platform.kernelMajor; kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { }; @@ -11240,7 +11228,6 @@ in kernelPatches = [ kernelPatches.bridge_stp_helper kernelPatches.cpu-cgroup-v2."4.4" - kernelPatches.p9_caching_4_4 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu @@ -11257,6 +11244,7 @@ in # !!! 4.7 patch doesn't apply, 4.9 patch not up yet, will keep checking # kernelPatches.cpu-cgroup-v2."4.7" kernelPatches.modinst_arg_list_too_long + kernelPatches.p9_caching_4_9 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu @@ -11269,6 +11257,7 @@ in kernelPatches = [ kernelPatches.bridge_stp_helper kernelPatches.modinst_arg_list_too_long + kernelPatches.p9_caching_4_9 ] ++ lib.optionals ((platform.kernelArch or null) == "mips") [ kernelPatches.mips_fpureg_emu kernelPatches.mips_fpu_sigill @@ -11669,6 +11658,8 @@ in powerdns = callPackage ../servers/dns/powerdns { }; + pdns-recursor = callPackage ../servers/dns/pdns-recursor { }; + powertop = callPackage ../os-specific/linux/powertop { }; prayer = callPackage ../servers/prayer { }; @@ -11825,7 +11816,7 @@ in uclibcCross = lowPrio (callPackage ../os-specific/linux/uclibc { linuxHeaders = linuxHeadersCross; gccCross = gccCrossStageStatic; - cross = assert crossSystem != null; crossSystem; + cross = assert targetPlatform != buildPlatform; targetPlatform; }); udev = systemd; @@ -13540,11 +13531,6 @@ in qrencode = callPackage ../tools/graphics/qrencode { }; - gecko_mediaplayer = callPackage ../applications/networking/browsers/mozilla-plugins/gecko-mediaplayer { - inherit (gnome2) GConf; - browser = firefox-unwrapped; - }; - geeqie = callPackage ../applications/graphics/geeqie { }; gigedit = callPackage ../applications/audio/gigedit { }; @@ -13553,10 +13539,6 @@ in gmpc = callPackage ../applications/audio/gmpc {}; - gmtk = callPackage ../applications/networking/browsers/mozilla-plugins/gmtk { - inherit (gnome2) GConf; - }; - gnome-mpv = callPackage ../applications/video/gnome-mpv { }; gollum = callPackage ../applications/misc/gollum { }; @@ -14739,9 +14721,9 @@ in quiterss = qt5.callPackage ../applications/networking/newsreaders/quiterss {}; - quodlibet = callPackage ../applications/audio/quodlibet { }; + quodlibet-without-gst-plugins = callPackage ../applications/audio/quodlibet { }; - quodlibet-with-gst-plugins = callPackage ../applications/audio/quodlibet { + quodlibet = callPackage ../applications/audio/quodlibet { withGstPlugins = true; gst_plugins_bad = null; }; @@ -16420,9 +16402,7 @@ in warmux = callPackage ../games/warmux { }; - warsow = callPackage ../games/warsow { - libjpeg = libjpeg62; - }; + warsow = callPackage ../games/warsow { }; warzone2100 = qt5.callPackage ../games/warzone2100 { }; @@ -16993,14 +16973,10 @@ in inherit (ocamlPackages_4_01_0) ocaml findlib lablgtk; camlp5 = ocamlPackages_4_01_0.camlp5_transitional; }; - coq_8_5 = callPackage ../applications/science/logic/coq/8.5.nix { - inherit (ocamlPackages) ocaml findlib lablgtk; - camlp5 = ocamlPackages.camlp5_transitional; - }; - coq_8_6 = callPackage ../applications/science/logic/coq/8.6.nix { - inherit (ocamlPackages) ocaml findlib lablgtk; - camlp5 = ocamlPackages.camlp5_transitional; + coq_8_5 = callPackage ../applications/science/logic/coq { + version = "8.5pl3"; }; + coq_8_6 = callPackage ../applications/science/logic/coq {}; coq_HEAD = callPackage ../applications/science/logic/coq/HEAD.nix { inherit (ocamlPackages) ocaml findlib lablgtk; camlp5 = ocamlPackages.camlp5_transitional; @@ -17268,7 +17244,9 @@ in scilab-bin = callPackage ../applications/science/math/scilab-bin {}; - scotch = callPackage ../applications/science/math/scotch { }; + scotch = callPackage ../applications/science/math/scotch { + flex = flex_2_5_35; + }; msieve = callPackage ../applications/science/math/msieve { }; @@ -17590,6 +17568,8 @@ in nix-prefetch-zip nix-prefetch-scripts; + nix-update-source = callPackage ../tools/package-management/nix-update-source {}; + nix-template-rpm = callPackage ../build-support/templaterpm { inherit (pythonPackages) python toposort; }; nix-repl = callPackage ../tools/package-management/nix-repl { }; @@ -18033,4 +18013,6 @@ in simplenote = callPackage ../applications/misc/simplenote { }; hy = callPackage ../development/interpreters/hy {}; + + ghc-standalone-archive = callPackage ../os-specific/darwin/ghc-standalone-archive { inherit (darwin) cctools; }; } diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix index a146dad63bc8..3c67d316f7c8 100644 --- a/pkgs/top-level/default.nix +++ b/pkgs/top-level/default.nix @@ -83,7 +83,24 @@ in let boot = import ../stdenv/booter.nix { inherit lib allPackages; }; stages = stdenvStages { - inherit lib system platform crossSystem config overlays; + # One would think that `localSystem` and `crossSystem` overlap horribly with + # the three `*Platforms` (`buildPlatform`, `hostPlatform,` and + # `targetPlatform`; see `stage.nix` or the manual). Actually, those + # identifiers I, @Ericson2314, purposefully not used here to draw a subtle + # but important distinction: + # + # While the granularity of having 3 platforms is necessary to properly + # *build* packages, it is overkill for specifying the user's *intent* when + # making a build plan or package set. A simple "build vs deploy" dichotomy + # is adequate: the "sliding window" principle described in the manual shows + # how to interpolate between the these two "end points" to get the 3 + # platform triple for each bootstrapping stage. + # + # Also, less philosophically but quite practically, `crossSystem` should be + # null when one doesn't want to cross-compile, while the `*Platform`s are + # always non-null. `localSystem` is always non-null. + localSystem = { inherit system platform; }; + inherit lib crossSystem config overlays; }; pkgs = boot stages; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 5b14af145e9f..7309121486e5 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -1,4 +1,4 @@ -{ pkgs, callPackage, stdenv, crossSystem }: +{ pkgs, callPackage, stdenv, buildPlatform, targetPlatform }: rec { @@ -55,7 +55,7 @@ rec { ghcHEAD = callPackage ../development/compilers/ghc/head.nix rec { bootPkgs = packages.ghc7103; inherit (bootPkgs) alex happy; - inherit crossSystem; + inherit buildPlatform targetPlatform; selfPkgs = packages.ghcHEAD; }; ghcjs = packages.ghc7103.callPackage ../development/compilers/ghcjs { diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 199bc04f9bf4..40f4ba857457 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -20,6 +20,8 @@ let ansiterminal = callPackage ../development/ocaml-modules/ansiterminal { }; + apron = callPackage ../development/ocaml-modules/apron { }; + asn1-combinators = callPackage ../development/ocaml-modules/asn1-combinators { }; astring = callPackage ../development/ocaml-modules/astring { }; @@ -265,6 +267,10 @@ let mlgmp = callPackage ../development/ocaml-modules/mlgmp { }; + mlgmpidl = callPackage ../development/ocaml-modules/mlgmpidl { }; + + mtime = callPackage ../development/ocaml-modules/mtime { }; + nocrypto = callPackage ../development/ocaml-modules/nocrypto { lwt = ocaml_lwt; }; @@ -370,6 +376,8 @@ let sequence = callPackage ../development/ocaml-modules/sequence { }; + spacetime_lib = callPackage ../development/ocaml-modules/spacetime_lib { }; + sqlexpr = callPackage ../development/ocaml-modules/sqlexpr { }; tuntap = callPackage ../development/ocaml-modules/tuntap { }; @@ -723,7 +731,9 @@ in rec ocamlPackages_4_03 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.03.nix { }) (self: super: { }); - ocamlPackages_latest = ocamlPackages_4_03; + ocamlPackages_4_04 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.04.nix { }) (self: super: { }); + + ocamlPackages_latest = ocamlPackages_4_04; ocamlPackages = ocamlPackages_4_01_0; } diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 0b4f53ac8613..9d8bf6930782 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -8599,17 +8599,16 @@ let self = _self // overrides; _self = with self; { }; MooXTypesMooseLikeNumeric = buildPerlPackage rec { - name = "MooX-Types-MooseLike-Numeric-1.02"; + name = "MooX-Types-MooseLike-Numeric-1.03"; src = fetchurl { url = "mirror://cpan/authors/id/M/MA/MATEU/${name}.tar.gz"; - sha256 = "6186f75ab2747723fd979249ec6ee0c4550f5b47aa50c0d222cc7d3590182bb6"; + sha256 = "16adeb617b963d010179922c2e4e8762df77c75232e17320b459868c4970c44b"; }; - buildInputs = [ TestFatal ]; + buildInputs = [ Moo TestFatal ]; propagatedBuildInputs = [ MooXTypesMooseLike ]; meta = { description = "Moo types for numbers"; license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; - maintainers = [ maintainers.rycee ]; }; }; @@ -9138,18 +9137,17 @@ let self = _self // overrides; _self = with self; { }; MooseXTypesCommon = buildPerlPackage rec { - name = "MooseX-Types-Common-0.001013"; + name = "MooseX-Types-Common-0.001014"; src = fetchurl { url = "mirror://cpan/authors/id/E/ET/ETHER/${name}.tar.gz"; - sha256 = "ff0c963f5e8304acb5f64bdf9ba1f19284311148e1a8f0d1f81f123f9950f5f2"; + sha256 = "ef93718b6d2f240d50b5c3acb1a74b4c2a191869651470001a82be1f35d0ef0f"; }; buildInputs = [ ModuleBuildTiny TestDeep TestWarnings perl ]; - propagatedBuildInputs = [ MooseXTypes ]; + propagatedBuildInputs = [ MooseXTypes self."if" ]; meta = { homepage = https://github.com/moose/MooseX-Types-Common; description = "A library of commonly used type constraints"; license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; - maintainers = with maintainers; [ rycee ]; }; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ffb1aefdd336..5c9f43c2870f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4968,6 +4968,23 @@ in { }; }; + pydub = buildPythonPackage rec { + name = "${pname}-${version}"; + pname = "pydub"; + version = "0.16.7"; + src = pkgs.fetchurl { + url = "https://pypi.python.org/packages/05/e0/8d2496c8ef1d7f2c8ff625be3849f550da42809b862879a8fb137c6baa11/${name}.tar.gz"; + sha256 = "10rmbvsld5fni9wsvb7la8lblrglsnzd2l1159rcxqf6b8k441dx"; + }; + + meta = { + description = "Manipulate audio with a simple and easy high level interface."; + homepage = "http://pydub.com/"; + license = licenses.mit; + platforms = platforms.all; + }; + }; + pyjade = buildPythonPackage rec { name = "${pname}-${version}"; pname = "pyjade"; @@ -4997,61 +5014,13 @@ in { pytest = self.pytest_29; - pytest_27 = buildPythonPackage rec { - name = "pytest-2.7.3"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pytest/${name}.tar.gz"; - sha256 = "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"; - }; - - # Disabled temporarily because of Hydra issue with namespaces - doCheck = false; + pytest_27 = callPackage ../development/python-modules/pytest/2_7.nix {}; - preCheck = '' - # don't test bash builtins - rm testing/test_argcomplete.py - ''; - - propagatedBuildInputs = with self; [ py ] - ++ (optional isPy26 argparse) - ++ stdenv.lib.optional - pkgs.config.pythonPackages.pytest.selenium or false - self.selenium; - - meta = { - maintainers = with maintainers; [ domenkozar lovek323 madjar ]; - platforms = platforms.unix; - }; - }; - - pytest_28 = self.pytest_27.override rec { - name = "pytest-2.8.7"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pytest/${name}.tar.gz"; - sha256 = "1bwb06g64x2gky8x5hcrfpg6r351xwvafimnhm5qxq7wajz8ck7w"; - }; - }; - - pytest_29 = self.pytest_27.override rec { - name = "pytest-2.9.2"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pytest/${name}.tar.gz"; - sha256 = "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j"; - }; - }; + pytest_28 = callPackage ../development/python-modules/pytest/2_8.nix {}; - pytest_30 = self.pytest_27.override rec { - name = "pytest-3.0.5"; + pytest_29 = callPackage ../development/python-modules/pytest/2_9.nix {}; - propagatedBuildInputs = with self; [ hypothesis py ]; - src = pkgs.fetchurl { - url = "mirror://pypi/p/pytest/${name}.tar.gz"; - sha256 = "1z9pj39w0r2gw5hsqndlmsqa80kgbrann5kfma8ww8zhaslkl02a"; - }; - }; + pytest_30 = callPackage ../development/python-modules/pytest {}; pytestcache = buildPythonPackage rec { name = "pytest-cache-1.0"; @@ -5077,27 +5046,8 @@ in { }; }; - pytestdjango = buildPythonPackage rec { - name = "pytest-django-${version}"; - version = "2.9.1"; - - src = pkgs.fetchurl { - url = "mirror://pypi/p/pytest-django/${name}.tar.gz"; - sha256 = "1mmc7zsz3dlhs6sx4sppkj1vgshabi362r1a8b8wpj1qfximpqcb"; - }; - - # doing this to allow depending packages to find - # pytest's binaries - pytest = self.pytest; - - buildInputs = with self; [ pytest ]; - propagatedBuildInputs = with self; [ django setuptools_scm_18 ]; - - meta = { - description = "py.test plugin for testing of Django applications"; - homepage = http://pytest-django.readthedocs.org/en/latest/; - license = licenses.bsd3; - }; + pytestdjango = callPackage ../development/python-modules/pytestdjango.nix { + pytest = self.pytest_30; }; pytest-fixture-config = buildPythonPackage rec { @@ -10424,27 +10374,8 @@ in { }; }; - django_guardian = buildPythonPackage rec { - name = "django-guardian-${version}"; - version = "1.4.4"; - - src = pkgs.fetchurl { - url = "mirror://pypi/d/django-guardian/${name}.tar.gz"; - sha256 = "1m7y3brk3697hr2cvkzl8dry4pp7wkmhvxmf8db1ardz1r9d8895"; - }; - - buildInputs = with self ; [ pytest pytestrunner pytestdjango django_environ mock ]; - propagatedBuildInputs = with self ; [ django six ]; - - checkPhase = '' - ${python.interpreter} nix_run_setup.py test --addopts="--ignore build" - ''; - - meta = { - description = "Per object permissions for Django"; - homepage = https://github.com/django-guardian/django-guardian; - licenses = [ licenses.mit licenses.bsd2 ]; - }; + django_guardian = callPackage ../development/python-modules/django_guardian.nix { + pytest = self.pytest_30; }; django_tagging = buildPythonPackage rec { @@ -11778,14 +11709,21 @@ in { }); foolscap = buildPythonPackage (rec { - name = "foolscap-0.10.1"; + name = "foolscap-${version}"; + version = "0.12.6"; src = pkgs.fetchurl { - url = "http://foolscap.lothar.com/releases/${name}.tar.gz"; - sha256 = "1wrnbdq3y3lfxnhx30yj9xbr3iy9512jb60k8qi1da1phalnwz5x"; + url = "mirror://pypi/f/foolscap/${name}.tar.gz"; + sha256 = "1bpmqq6485mmr5jza9q2c55l9m1bfsvsbd9drsip7p5qcsi22jrz"; }; - propagatedBuildInputs = [ self.twisted self.pyopenssl self.service-identity ]; + propagatedBuildInputs = with self; [ mock twisted pyopenssl service-identity ]; + + checkPhase = '' + # Either uncomment this, or remove this custom check phase entirely, if + # you wish to do battle with the foolscap tests. ~ C. + # trial foolscap + ''; meta = { homepage = http://foolscap.lothar.com/; @@ -25264,9 +25202,11 @@ in { ''; patchPhase = '' - substituteInPlace "scripts/syncthing-gtk" \ - --replace "/usr/share" "$out/share" - substituteInPlace setup.py --replace "version = get_version()" "version = '${version}'" + substituteInPlace setup.py --replace "version = get_version()" "version = '${version}'" + substituteInPlace scripts/syncthing-gtk --replace "/usr/share" "$out/share" + substituteInPlace syncthing_gtk/app.py --replace "/usr/share" "$out/share" + substituteInPlace syncthing_gtk/wizard.py --replace "/usr/share" "$out/share" + substituteInPlace syncthing-gtk.desktop --replace "/usr/bin/syncthing-gtk" "$out/bin/syncthing-gtk" ''; meta = { @@ -26094,6 +26034,13 @@ in { propagatedBuildInputs = with self; [ zope_interface ]; + # Patch t.p._inotify to point to libc. Without this, + # twisted.python.runtime.platform.supportsINotify() == False + patchPhase = optionalString stdenv.isLinux '' + substituteInPlace twisted/python/_inotify.py --replace \ + "ctypes.util.find_library('c')" "'${stdenv.glibc.out}/lib/libc.so.6'" + ''; + # Generate Twisted's plug-in cache. Twisted users must do it as well. See # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3 # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix index f582bcf3b323..f9382985fcd1 100644 --- a/pkgs/top-level/release-cross.nix +++ b/pkgs/top-level/release-cross.nix @@ -14,17 +14,17 @@ let /* Basic list of packages to cross-build */ basicCrossDrv = { - gccCrossStageFinal = nativePlatforms; - bison.crossDrv = nativePlatforms; - busybox.crossDrv = nativePlatforms; - coreutils.crossDrv = nativePlatforms; - dropbear.crossDrv = nativePlatforms; + bison = nativePlatforms; + busybox = nativePlatforms; + coreutils = nativePlatforms; + dropbear = nativePlatforms; }; /* Basic list of packages to be natively built, but need a crossSystem defined to get meaning */ basicNativeDrv = { - gdbCross.nativeDrv = nativePlatforms; + buildPackages.gccCrossStageFinal = nativePlatforms; + buildPackages.gdbCross = nativePlatforms; }; basic = basicCrossDrv // basicNativeDrv; @@ -32,8 +32,10 @@ let in { - # These `nativeDrv`s should be identical to their vanilla ones --- cross - # compiling should not affect the native derivation. + # These derivations from a cross package set's `buildPackages` should be + # identical to their vanilla equivalents --- none of these package should + # observe the target platform which is the only difference between those + # package sets. ensureUnaffected = let # Absurd values are fine here, as we are not building anything. In fact, # there probably a good idea to try to be "more parametric" --- i.e. avoid @@ -47,8 +49,12 @@ in # good idea lest there be some irrelevant pass-through debug attrs that # cause false negatives. testEqualOne = path: system: let - f = attrs: builtins.toString (lib.getAttrFromPath path (allPackages attrs)); - in assert f { inherit system; } == f { inherit system crossSystem; }; true; + f = path: attrs: builtins.toString (lib.getAttrFromPath path (allPackages attrs)); + in assert + f path { inherit system; } + == + f (["buildPackages"] ++ path) { inherit system crossSystem; }; + true; testEqual = path: systems: forAllSupportedSystems systems (testEqualOne path); @@ -79,7 +85,7 @@ in openssl.system = "linux-generic32"; }; in mapTestOnCross crossSystem (basic // { - ubootSheevaplug.crossDrv = nativePlatforms; + ubootSheevaplug = nativePlatforms; }); @@ -92,14 +98,14 @@ in platform = {}; }; in mapTestOnCross crossSystem { - coreutils.crossDrv = nativePlatforms; - boehmgc.crossDrv = nativePlatforms; - gmp.crossDrv = nativePlatforms; - guile_1_8.crossDrv = nativePlatforms; - libffi.crossDrv = nativePlatforms; - libtool.crossDrv = nativePlatforms; - libunistring.crossDrv = nativePlatforms; - windows.wxMSW.crossDrv = nativePlatforms; + coreutils = nativePlatforms; + boehmgc = nativePlatforms; + gmp = nativePlatforms; + guile_1_8 = nativePlatforms; + libffi = nativePlatforms; + libtool = nativePlatforms; + libunistring = nativePlatforms; + windows.wxMSW = nativePlatforms; }; @@ -113,14 +119,14 @@ in platform = {}; }; in mapTestOnCross crossSystem { - coreutils.crossDrv = nativePlatforms; - boehmgc.crossDrv = nativePlatforms; - gmp.crossDrv = nativePlatforms; - guile_1_8.crossDrv = nativePlatforms; - libffi.crossDrv = nativePlatforms; - libtool.crossDrv = nativePlatforms; - libunistring.crossDrv = nativePlatforms; - windows.wxMSW.crossDrv = nativePlatforms; + coreutils = nativePlatforms; + boehmgc = nativePlatforms; + gmp = nativePlatforms; + guile_1_8 = nativePlatforms; + libffi = nativePlatforms; + libtool = nativePlatforms; + libunistring = nativePlatforms; + windows.wxMSW = nativePlatforms; }; @@ -150,9 +156,9 @@ in }; }; in mapTestOnCross crossSystem { - coreutils.crossDrv = nativePlatforms; - ed.crossDrv = nativePlatforms; - patch.crossDrv = nativePlatforms; + coreutils = nativePlatforms; + ed = nativePlatforms; + patch = nativePlatforms; }; @@ -176,16 +182,16 @@ in }; }; in mapTestOnCross crossSystem { - coreutils.crossDrv = nativePlatforms; - ed.crossDrv = nativePlatforms; - patch.crossDrv = nativePlatforms; - vim.crossDrv = nativePlatforms; - unzip.crossDrv = nativePlatforms; - ddrescue.crossDrv = nativePlatforms; - lynx.crossDrv = nativePlatforms; - patchelf.crossDrv = nativePlatforms; - binutils.crossDrv = nativePlatforms; - mpg123.crossDrv = nativePlatforms; + coreutils = nativePlatforms; + ed = nativePlatforms; + patch = nativePlatforms; + vim = nativePlatforms; + unzip = nativePlatforms; + ddrescue = nativePlatforms; + lynx = nativePlatforms; + patchelf = nativePlatforms; + buildPackages.binutils = nativePlatforms; + mpg123 = nativePlatforms; }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 2052957edd61..c301ceb1530d 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -67,13 +67,13 @@ let jobs.vim.x86_64-darwin ] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools; }; - + } // (lib.optionalAttrs (builtins.elem "i686-linux" supportedSystems) { stdenvBootstrapTools.i686-linux = { inherit (import ../stdenv/linux/make-bootstrap-tools.nix { system = "i686-linux"; }) dist test; }; - + }) // (lib.optionalAttrs (builtins.elem "x86_64-linux" supportedSystems) { stdenvBootstrapTools.x86_64-linux = { inherit (import ../stdenv/linux/make-bootstrap-tools.nix { system = "x86_64-linux"; }) dist test; }; - + }) // (lib.optionalAttrs (builtins.elem "x86_64-darwin" supportedSystems) { stdenvBootstrapTools.x86_64-darwin = let bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; }; @@ -83,8 +83,7 @@ let # Test a full stdenv bootstrap from the bootstrap tools definition inherit (bootstrap.test-pkgs) stdenv; }; - - } // (mapTestOn ((packagePlatforms pkgs) // rec { + }) // (mapTestOn ((packagePlatforms pkgs) // rec { haskell.compiler = packagePlatforms pkgs.haskell.compiler; haskellPackages = packagePlatforms pkgs.haskellPackages; diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix new file mode 100644 index 000000000000..a22587d5b576 --- /dev/null +++ b/pkgs/top-level/splice.nix @@ -0,0 +1,81 @@ +# The `splicedPackages' package set, and its use by `callPackage` +# +# The `buildPackages` pkg set is a new concept, and the vast majority package +# expression (the other *.nix files) are not designed with it in mind. This +# presents us with a problem with how to get the right version (build-time vs +# run-time) of a package to a consumer that isn't used to thinking so cleverly. +# +# The solution is to splice the package sets together as we do below, so every +# `callPackage`d expression in fact gets both versions. Each# derivation (and +# each derivation's outputs) consists of the run-time version, augmented with a +# `nativeDrv` field for the build-time version, and `crossDrv` field for the +# run-time version. +# +# We could have used any names we want for the disambiguated versions, but +# `crossDrv` and `nativeDrv` were somewhat similarly used for the old +# cross-compiling infrastructure. The names are mostly invisible as +# `mkDerivation` knows how to pull out the right ones for `buildDepends` and +# friends, but a few packages use them directly, so it seemed efficient (to +# @Ericson2314) to reuse those names, at least initially, to minimize breakage. +# +# For performance reasons, rather than uniformally splice in all cases, we only +# do so when `pkgs` and `buildPackages` are distinct. The `actuallySplice` +# parameter there the boolean value of that equality check. +lib: pkgs: actuallySplice: + +let + defaultBuildScope = pkgs.buildPackages // pkgs.buildPackages.xorg; + # TODO(@Ericson2314): we shouldn't preclude run-time fetching by removing + # these attributes. We should have a more general solution for selecting + # whether `nativeDrv` or `crossDrv` is the default in `defaultScope`. + pkgsWithoutFetchers = lib.filterAttrs (n: _: !lib.hasPrefix "fetch" n) pkgs; + defaultRunScope = pkgsWithoutFetchers // pkgs.xorg; + + splicer = buildPkgs: runPkgs: let + mash = buildPkgs // runPkgs; + merge = name: { + inherit name; + value = let + defaultValue = mash.${name}; + buildValue = buildPkgs.${name} or {}; + runValue = runPkgs.${name} or {}; + augmentedValue = defaultValue + // (lib.optionalAttrs (buildPkgs ? ${name}) { nativeDrv = buildValue; }) + // (lib.optionalAttrs (runPkgs ? ${name}) { crossDrv = runValue; }); + # Get the set of outputs of a derivation + getOutputs = value: + lib.genAttrs (value.outputs or []) (output: value.${output}); + in + # Certain *Cross derivations will fail assertions, but we need their + # nativeDrv. We are assuming anything that fails to evaluate is an + # attrset (including derivation) and thus can be unioned. + if !(builtins.tryEval defaultValue).success then augmentedValue + # The derivation along with its outputs, which we recur + # on to splice them together. + else if lib.isDerivation defaultValue then augmentedValue + // splicer (getOutputs buildValue) (getOutputs runValue) + # Just recur on plain attrsets + else if lib.isAttrs defaultValue then splicer buildValue runValue + # Don't be fancy about non-derivations. But we could have used used + # `__functor__` for functions instead. + else defaultValue; + }; + in lib.listToAttrs (map merge (lib.attrNames mash)); + + splicedPackages = + if actuallySplice + then splicer defaultBuildScope defaultRunScope + else pkgs // pkgs.xorg; + +in + +{ + # We use `callPackage' to be able to omit function arguments that can be + # obtained `pkgs` or `buildPackages` and their `xorg` package sets. Use + # `newScope' for sets of packages in `pkgs' (see e.g. `gnome' below). + callPackage = pkgs.newScope {}; + + callPackages = lib.callPackagesWith splicedPackages; + + newScope = extra: lib.callPackageWith (splicedPackages // extra); +} diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index cbf65870eb7e..6febedb79f3d 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -9,8 +9,45 @@ import `pkgs/default.nix` or `default.nix`. */ -{ # The system (e.g., `i686-linux') for which to build the packages. - system +{ ## Misc parameters kept the same for all stages + ## + + # Utility functions, could just import but passing in for efficiency + lib + +, # Use to reevaluate Nixpkgs; a dirty hack that should be removed + nixpkgsFun + + ## Platform parameters + ## + ## The "build" "host" "target" terminology below comes from GNU Autotools. See + ## its documentation for more information on what those words mean. Note that + ## each should always be defined, even when not cross compiling. + ## + ## For purposes of bootstrapping, think of each stage as a "sliding window" + ## over a list of platforms. Specifically, the host platform of the previous + ## stage becomes the build platform of the current one, and likewise the + ## target platform of the previous stage becomes the host platform of the + ## current one. + ## + +, # The platform on which packages are built. Consists of `system`, a + # string (e.g.,`i686-linux') identifying the most import attributes of the + # build platform, and `platform` a set of other details. + buildPlatform + +, # The platform on which packages run. + hostPlatform + +, # The platform which build tools (especially compilers) build for in this stage, + targetPlatform + + ## Other parameters + ## + +, # The package set used at build-time. If null, `buildPackages` will + # be defined internally as the produced package set as itself. + buildPackages , # The standard environment to use for building packages. stdenv @@ -21,21 +58,19 @@ allowCustomOverrides , # Non-GNU/Linux OSes are currently "impure" platforms, with their libc - # outside of the store. Thus, GCC, GFortran, & co. must always look for - # files in standard system directories (/usr/include, etc.) - noSysDirs ? (system != "x86_64-freebsd" && system != "i686-freebsd" - && system != "x86_64-solaris" - && system != "x86_64-kfreebsd-gnu") + # outside of the store. Thus, GCC, GFortran, & co. must always look for files + # in standard system directories (/usr/include, etc.) + noSysDirs ? buildPlatform.system != "x86_64-freebsd" + && buildPlatform.system != "i686-freebsd" + && buildPlatform.system != "x86_64-solaris" + && buildPlatform.system != "x86_64-kfreebsd-gnu" , # The configuration attribute set config -, overlays # List of overlays to use in the fix-point. - -, crossSystem -, platform -, lib -, nixpkgsFun +, # A list of overlays (Additional `self: super: { .. }` customization + # functions) to be fixed together in the produced package set + overlays }: let @@ -50,11 +85,28 @@ let }; stdenvBootstappingAndPlatforms = self: super: { - stdenv = stdenv // { inherit platform; }; - inherit - system platform crossSystem; + buildPackages = (if buildPackages == null then self else buildPackages) + // { recurseForDerivations = false; }; + inherit stdenv + buildPlatform hostPlatform targetPlatform; }; + # The old identifiers for cross-compiling. These should eventually be removed, + # and the packages that rely on them refactored accordingly. + platformCompat = self: super: let + # TODO(@Ericson2314) this causes infinite recursion + #inherit (self) buildPlatform hostPlatform targetPlatform; + in { + stdenv = super.stdenv // { + inherit (buildPlatform) platform; + } // lib.optionalAttrs (targetPlatform != buildPlatform) { + cross = targetPlatform; + }; + inherit (buildPlatform) system platform; + }; + + splice = self: super: import ./splice.nix lib self (buildPackages != null); + allPackages = self: super: let res = import ./all-packages.nix { inherit lib nixpkgsFun noSysDirs config; } @@ -83,8 +135,10 @@ let # The complete chain of package set builders, applied from top to bottom toFix = lib.foldl' (lib.flip lib.extends) (self: {}) ([ stdenvBootstappingAndPlatforms + platformCompat stdenvAdapters trivialBuilders + splice allPackages aliases stdenvOverrides |