* 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.

  Yes, this should make Python programs faster.

svn path=/nixpkgs/branches/modular-python/; revision=25387
This commit is contained in:
Eelco Dolstra 2011-01-04 15:10:03 +00:00
parent b7b1fc322a
commit 4a5042a1a1
2 changed files with 18 additions and 0 deletions

View file

@ -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;

View file

@ -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);