diff options
-rw-r--r-- | pkgs/development/interpreters/python/2.7/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/interpreters/python/2.7/nix-store-mtime.patch | 12 |
2 files changed, 18 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix index 88147fef31dc..8b8699db77d8 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/2.7/default.nix @@ -33,6 +33,12 @@ stdenv.mkDerivation { patches = [ # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff. ./search-path.patch + + # Python recompiles a Python if the mtime stored *in* the + # pyc/pyo file differs from the mtime of the source file. This + # doesn't work in Nix because Nix changes the mtime of files in + # the Nix store to 1. So treat that as a special case. + ./nix-store-mtime.patch ]; inherit buildInputs; diff --git a/pkgs/development/interpreters/python/2.7/nix-store-mtime.patch b/pkgs/development/interpreters/python/2.7/nix-store-mtime.patch new file mode 100644 index 000000000000..044a96e3a8a3 --- /dev/null +++ b/pkgs/development/interpreters/python/2.7/nix-store-mtime.patch @@ -0,0 +1,12 @@ +diff -ru -x '*~' Python-2.7.1-orig//Python/import.c Python-2.7.1//Python/import.c +--- Python-2.7.1-orig//Python/import.c 2010-05-20 20:37:55.000000000 +0200 ++++ Python-2.7.1//Python/import.c 2011-01-04 15:55:11.000000000 +0100 +@@ -751,7 +751,7 @@ + return NULL; + } + pyc_mtime = PyMarshal_ReadLongFromFile(fp); +- if (pyc_mtime != mtime) { ++ if (pyc_mtime != mtime && mtime != 1) { + if (Py_VerboseFlag) + PySys_WriteStderr("# %s has bad mtime\n", cpathname); + fclose(fp); |