add ensureNewerSourcesHook and apply to all python

Fixes #12663: problems in python stuff due to old timestamps in sources.
- Files in sources older than a certain year are set to that year.
- Applied with 1980 for all python packages due to the way it often uses zip.
This commit is contained in:
Vladimír Čunát 2016-02-01 12:31:17 +01:00
parent 70efc87a06
commit e4ab8aee62
2 changed files with 11 additions and 1 deletions

View File

@ -3,7 +3,8 @@
(http://pypi.python.org/pypi/setuptools/), which represents a large (http://pypi.python.org/pypi/setuptools/), which represents a large
number of Python packages nowadays. */ number of Python packages nowadays. */
{ python, setuptools, unzip, wrapPython, lib, bootstrapped-pip }: { python, setuptools, unzip, wrapPython, lib, bootstrapped-pip
, ensureNewerSourcesHook }:
{ name { name
@ -60,6 +61,7 @@ python.stdenv.mkDerivation (builtins.removeAttrs attrs ["disabled" "doCheck"] //
name = namePrefix + name; name = namePrefix + name;
buildInputs = [ wrapPython bootstrapped-pip ] ++ buildInputs ++ pythonPath buildInputs = [ wrapPython bootstrapped-pip ] ++ buildInputs ++ pythonPath
++ [ (ensureNewerSourcesHook { year = "1980"; }) ]
++ (lib.optional (lib.hasSuffix "zip" attrs.src.name or "") unzip); ++ (lib.optional (lib.hasSuffix "zip" attrs.src.name or "") unzip);
# propagate python/setuptools to active setup-hook in nix-shell # propagate python/setuptools to active setup-hook in nix-shell

View File

@ -259,6 +259,14 @@ let
{ substitutions = { inherit autoconf automake gettext libtool; }; } { substitutions = { inherit autoconf automake gettext libtool; }; }
../build-support/setup-hooks/autoreconf.sh; ../build-support/setup-hooks/autoreconf.sh;
ensureNewerSourcesHook = { year }: makeSetupHook {}
(writeScript "ensure-newer-sources-hook.sh" ''
postUnpackHooks+=(_ensureNewerSources)
_ensureNewerSources() {
find "$sourceRoot" '!' -newermt '${year}-01-01' -exec touch -d '${year}-01-02' '{}' '+'
}
'');
buildEnv = callPackage ../build-support/buildenv { }; # not actually a package buildEnv = callPackage ../build-support/buildenv { }; # not actually a package
buildFHSEnv = callPackage ../build-support/build-fhs-chrootenv/env.nix { buildFHSEnv = callPackage ../build-support/build-fhs-chrootenv/env.nix {