summaryrefslogtreecommitdiff
path: root/Lib/zipfile.py
diff options
context:
space:
mode:
authorBernhard M. Wiedemann <githubbmw@lsmod.de>2018-01-31 11:17:10 +0100
committerVictor Stinner <victor.stinner@gmail.com>2018-01-31 11:17:10 +0100
commit84521047e413d7d1150aaa1c333580b683b3f4b1 (patch)
tree1aae1c2f5a8b27562c9ea1fa153769066b1be5af /Lib/zipfile.py
parent8d83e4ba7823827bcbc119db887004d5c3a63dc6 (diff)
downloadcpython-git-84521047e413d7d1150aaa1c333580b683b3f4b1.tar.gz
bpo-30693: zip+tarfile: sort directory listing (#2263)
tarfile and zipfile now sort directory listing to generate tar and zip archives in a more reproducible way. See also https://reproducible-builds.org/docs/stable-inputs/ on that topic.
Diffstat (limited to 'Lib/zipfile.py')
-rw-r--r--Lib/zipfile.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 5df7b1bf75..b90b60f72e 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -1940,7 +1940,7 @@ class PyZipFile(ZipFile):
if self.debug:
print("Adding", arcname)
self.write(fname, arcname)
- dirlist = os.listdir(pathname)
+ dirlist = sorted(os.listdir(pathname))
dirlist.remove("__init__.py")
# Add all *.py files and package subdirectories
for filename in dirlist:
@@ -1965,7 +1965,7 @@ class PyZipFile(ZipFile):
# This is NOT a package directory, add its files at top level
if self.debug:
print("Adding files from directory", pathname)
- for filename in os.listdir(pathname):
+ for filename in sorted(os.listdir(pathname)):
path = os.path.join(pathname, filename)
root, ext = os.path.splitext(filename)
if ext == ".py":
@@ -2116,7 +2116,7 @@ def main(args=None):
elif os.path.isdir(path):
if zippath:
zf.write(path, zippath)
- for nm in os.listdir(path):
+ for nm in sorted(os.listdir(path)):
addToZip(zf,
os.path.join(path, nm), os.path.join(zippath, nm))
# else: ignore