GNU bug report logs -
#22533
Non-determinism in python-3 ".pyc" bytecode
Previous Next
Reported by: Leo Famulari <leo <at> famulari.name>
Date: Tue, 2 Feb 2016 05:17:02 UTC
Severity: important
Done: Ricardo Wurmus <rekado <at> elephly.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
On Tue, Feb 02, 2016 at 09:41:19PM +0100, Ludovic Courtès wrote:
> Could you give it a try and refine as needed? :-)
I altered your example as shown in the attached patch. It causes some
tests related to timestamps to fail, so I disabled them in a very crude
way. The final patch should address those tests more carefully.
But, the patch doesn't seem to have the desired effect so I'm asking for
help!
Here is how I tested the patch:
I build python-3 with it, and then `export SOURCE_DATE_EPOCH=1` and
enter the resulting Python shell. I manually define the '_w_long'
function used by the patched function. Then:
print (_w_long(locale.atoi(os.getenv('SOURCE_DATE_EPOCH'))))
b'\x01\x00\x00\x00'
But, when I leave the Python shell and issue `python3 -m compileall
helloworld.py`, the timestamps are present in the compiled bytecode. I
can watch the clock "tick" by doing this repeatedly:
$ touch helloworld.py && rm -r __pycache__ && \
python3 -m compileall helloworld.py && \
hexdump __pycache__/helloworld.cpython-34.pyc | head -n1
I'm not much of a Python programmer, so I'm stumped.
[0001-SOURCE_DATE_EPOCH.patch (text/x-diff, attachment)]
This bug report was last modified 6 years and 106 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.