1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-08-06 15:43:39 +02:00

fix adding dirs as compressed archive

The content in the todo dict are strings. In python3 the communicate
method expects a bytes-like object not a string.

Solution: Encode every element in todo to a new dict (enc_todo) and
pass this instead of todo
This commit is contained in:
lethliel
2019-05-14 10:24:17 +02:00
parent 53d3cc7bb5
commit 597eadf2f4

View File

@@ -7144,10 +7144,11 @@ def addFiles(filenames, prj_obj = None):
todo = [os.path.join(p, elm)
for p, dirnames, fnames in os.walk(filename, followlinks=False)
for elm in dirnames + fnames]
enc_todo = [b'%s' % elem.encode() for elem in todo]
with open(archive, 'w') as f:
cpio_proc = subprocess.Popen(['cpio', '-o', '-H', 'newc', '-0'],
stdin=subprocess.PIPE, stdout=f)
cpio_proc.communicate('\0'.join(todo))
cpio_proc.communicate(b'\0'.join(enc_todo))
pacs.extend(findpacs([archive]))
for pac in pacs: