python3{5,6}: Reintroduce bytecode determinism
Originally introduced in 8970a9c and 1531b5e, these patches were lost in efbe87f when the CPython version files were merged, likely due to CPython 3.7 not needing them anymore. These patches should remain in-tree until CPython 3.5 and 3.6 support is dropped completely. Found with the diffoscope ( https://diffoscope.org/ ).
This commit is contained in:
parent
e53ade7dab
commit
28ac309309
@ -0,0 +1,17 @@
|
|||||||
|
--- a/Lib/py_compile.py
|
||||||
|
+++ b/Lib/py_compile.py
|
||||||
|
@@ -139,3 +139,4 @@
|
||||||
|
source_stats = loader.path_stats(file)
|
||||||
|
+ source_mtime = 1 if 'DETERMINISTIC_BUILD' in os.environ else source_stats['mtime']
|
||||||
|
bytecode = importlib._bootstrap_external._code_to_bytecode(
|
||||||
|
- code, source_stats['mtime'], source_stats['size'])
|
||||||
|
+ code, source_mtime, source_stats['size'])
|
||||||
|
--- a/Lib/importlib/_bootstrap_external.py
|
||||||
|
+++ b/Lib/importlib/_bootstrap_external.py
|
||||||
|
@@ -485,5 +485,5 @@
|
||||||
|
if source_stats is not None:
|
||||||
|
try:
|
||||||
|
- source_mtime = int(source_stats['mtime'])
|
||||||
|
+ source_mtime = 1
|
||||||
|
except KeyError:
|
||||||
|
pass
|
@ -87,6 +87,9 @@ in with passthru; stdenv.mkDerivation {
|
|||||||
# (since it will do a futile invocation of gcc (!) to find
|
# (since it will do a futile invocation of gcc (!) to find
|
||||||
# libuuid, slowing down program startup a lot).
|
# libuuid, slowing down program startup a lot).
|
||||||
(./. + "/${sourceVersion.major}.${sourceVersion.minor}/no-ldconfig.patch")
|
(./. + "/${sourceVersion.major}.${sourceVersion.minor}/no-ldconfig.patch")
|
||||||
|
] ++ optionals (isPy35 || isPy36) [
|
||||||
|
# Determinism: Write null timestamps when compiling python files.
|
||||||
|
./3.5/force_bytecode_determinism.patch
|
||||||
] ++ optionals isPy35 [
|
] ++ optionals isPy35 [
|
||||||
# Backports support for LD_LIBRARY_PATH from 3.6
|
# Backports support for LD_LIBRARY_PATH from 3.6
|
||||||
./3.5/ld_library_path.patch
|
./3.5/ld_library_path.patch
|
||||||
@ -168,8 +171,8 @@ in with passthru; stdenv.mkDerivation {
|
|||||||
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"
|
||||||
export MACOSX_DEPLOYMENT_TARGET=10.6
|
export MACOSX_DEPLOYMENT_TARGET=10.6
|
||||||
'' + optionalString (isPy3k && pythonOlder "3.7") ''
|
'' + optionalString (isPy3k && pythonOlder "3.7") ''
|
||||||
# Determinism: The interpreter is patched to write null timestamps when compiling python files.
|
# Determinism: The interpreter is patched to write null timestamps when compiling Python files
|
||||||
# This way python does not try to update them when we freeze timestamps in nix store.
|
# so Python doesn't try to update the bytecode when seeing frozen timestamps in Nix's store.
|
||||||
export DETERMINISTIC_BUILD=1;
|
export DETERMINISTIC_BUILD=1;
|
||||||
'' + optionalString stdenv.hostPlatform.isMusl ''
|
'' + optionalString stdenv.hostPlatform.isMusl ''
|
||||||
export NIX_CFLAGS_COMPILE+=" -DTHREAD_STACK_SIZE=0x100000"
|
export NIX_CFLAGS_COMPILE+=" -DTHREAD_STACK_SIZE=0x100000"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user