python3{5,6}: Reintroduce bytecode determinism
Originally introduced in8970a9c
and1531b5e
, these patches were lost inefbe87f
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
|
||||
# libuuid, slowing down program startup a lot).
|
||||
(./. + "/${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 [
|
||||
# Backports support for LD_LIBRARY_PATH from 3.6
|
||||
./3.5/ld_library_path.patch
|
||||
@ -168,8 +171,8 @@ in with passthru; stdenv.mkDerivation {
|
||||
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.6
|
||||
'' + optionalString (isPy3k && pythonOlder "3.7") ''
|
||||
# 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.
|
||||
# Determinism: The interpreter is patched to write null timestamps when compiling Python files
|
||||
# so Python doesn't try to update the bytecode when seeing frozen timestamps in Nix's store.
|
||||
export DETERMINISTIC_BUILD=1;
|
||||
'' + optionalString stdenv.hostPlatform.isMusl ''
|
||||
export NIX_CFLAGS_COMPILE+=" -DTHREAD_STACK_SIZE=0x100000"
|
||||
|
Loading…
Reference in New Issue
Block a user