summaryrefslogtreecommitdiff
path: root/pkg/private/zip/build_zip.py
diff options
context:
space:
mode:
authorflode <flo.de@hotmail.de>2023-08-17 15:38:30 +0200
committerFlorian Scheibner <fscheibner@salesforce.com>2023-08-17 15:38:48 +0200
commit76629618788e52ae8264f5df7c99c43d299b69ab (patch)
tree74bb61574d211a9202fcf053496df7031f9b0a40 /pkg/private/zip/build_zip.py
parentb035a74ffac0f72eadd354cb61585e1954d937c5 (diff)
downloadbazelbuild-rules_pkg-76629618788e52ae8264f5df7c99c43d299b69ab.tar.gz
Fix python 3.6, doesn't support compresslevel
Python3.6 is already end-of-life but seems to still be used in the CI.
Diffstat (limited to 'pkg/private/zip/build_zip.py')
-rw-r--r--pkg/private/zip/build_zip.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/pkg/private/zip/build_zip.py b/pkg/private/zip/build_zip.py
index 61ed9d5..cd58740 100644
--- a/pkg/private/zip/build_zip.py
+++ b/pkg/private/zip/build_zip.py
@@ -16,6 +16,7 @@
import argparse
import datetime
import os
+import sys
import zipfile
from pkg.private import build_info
@@ -110,6 +111,13 @@ class ZipWriter(object):
self.zip_file.close()
self.zip_file = None
+ def writestr(self, entry_info, content: str, compresslevel: int):
+ if sys.version_info >= (3, 7):
+ self.zip_file.writestr(entry_info, content, compresslevel=compresslevel)
+ else:
+ # Python 3.6 and lower don't support compresslevel
+ self.zip_file.writestr(entry_info, content)
+
def make_zipinfo(self, path: str, mode: str):
"""Create a Zipinfo.
@@ -158,7 +166,7 @@ class ZipWriter(object):
entry_info.compress_type = self.compression_type
# Using utf-8 for the file names is for python <3.7 compatibility.
with open(src.encode('utf-8'), 'rb') as src_content:
- self.zip_file.writestr(entry_info, src_content.read(), compresslevel=self.compression_level)
+ self.writestr(entry_info, src_content.read(), compresslevel=self.compression_level)
elif entry_type == manifest.ENTRY_IS_DIR:
entry_info.compress_type = zipfile.ZIP_STORED
# Set directory bits
@@ -229,7 +237,7 @@ class ZipWriter(object):
entry_info = self.make_zipinfo(path=path, mode=f_mode)
entry_info.compress_type = self.compression_type
with open(content_path, 'rb') as src:
- self.zip_file.writestr(entry_info, src.read(), compresslevel=self.compression_level)
+ self.writestr(entry_info, src.read(), compresslevel=self.compression_level)
else:
# Implicitly created directory
dir_path = path