diff options
author | Bernhard M. Wiedemann <bwiedemann@suse.de> | 2019-08-01 13:18:03 (GMT) |
---|---|---|
committer | Victor Stinner <vstinner@redhat.com> | 2019-08-01 13:18:03 (GMT) |
commit | 0d30ae1a03102de07758650af9243fd31211325a (patch) | |
tree | 2814f7683eda24944220d0c6cd2c03f77a82e3ce /Lib/distutils/command | |
parent | 1a057bab0f18d6ad843ce321d1d77a4819497ae4 (diff) | |
download | cpython-0d30ae1a03102de07758650af9243fd31211325a.zip cpython-0d30ae1a03102de07758650af9243fd31211325a.tar.gz cpython-0d30ae1a03102de07758650af9243fd31211325a.tar.bz2 |
bpo-36302: Sort list of sources (GH-12341)
When building packages (e.g. for openSUSE Linux)
(random) filesystem order of input files
influences ordering of functions in the output .so files.
Thus without the patch, builds (in disposable VMs) would usually differ.
Without this patch, all callers have to be patched individually
https://github.com/dugsong/libdnet/pull/42
https://github.com/sass/libsass-python/pull/212
https://github.com/tahoe-lafs/pycryptopp/pull/41
https://github.com/yt-project/yt/pull/2206
https://github.com/pyproj4/pyproj/pull/142
https://github.com/pytries/datrie/pull/49
https://github.com/Roche/pyreadstat/pull/37
but that is an infinite effort.
See https://reproducible-builds.org/ for why this matters.
Diffstat (limited to 'Lib/distutils/command')
-rw-r--r-- | Lib/distutils/command/build_ext.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 2d7cdf0..38bb8fd 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -490,7 +490,8 @@ class build_ext(Command): "in 'ext_modules' option (extension '%s'), " "'sources' must be present and must be " "a list of source filenames" % ext.name) - sources = list(sources) + # sort to make the resulting .so file build reproducible + sources = sorted(sources) ext_path = self.get_ext_fullpath(ext.name) depends = sources + ext.depends |