3
0
Fork 0
forked from mirrors/nixpkgs

stream_layered_image: Use pathlib module for directory traversal

This commit is contained in:
Utku Demir 2020-06-22 15:11:04 +12:00
parent 16199521ea
commit fa8f2bf34f
No known key found for this signature in database
GPG key ID: F3F8629C3E0BF60B

View file

@ -37,8 +37,8 @@ import re
import sys import sys
import json import json
import hashlib import hashlib
import pathlib
import tarfile import tarfile
import itertools
import threading import threading
from datetime import datetime from datetime import datetime
from collections import namedtuple from collections import namedtuple
@ -90,18 +90,17 @@ def archive_paths_to(obj, paths, mtime, add_nix, filter=None):
ti = tar.gettarinfo(os.path.join("/", path)) ti = tar.gettarinfo(os.path.join("/", path))
tar.addfile(apply_filters(append_root(ti))) tar.addfile(apply_filters(append_root(ti)))
for root, dirs, files in os.walk(path, topdown=True): for filename in pathlib.Path(path).rglob("*"):
for name in itertools.chain(dirs, files): ti = append_root(tar.gettarinfo(filename))
name = os.path.join(root, name)
ti = append_root(tar.gettarinfo(name))
# copy hardlinks as regular files # copy hardlinks as regular files
if ti.islnk(): if ti.islnk():
ti.type = tarfile.REGTYPE ti.type = tarfile.REGTYPE
ti.linkname = ""
ti = apply_filters(ti) ti = apply_filters(ti)
if ti.isfile(): if ti.isfile():
with open(name, "rb") as f: with open(filename, "rb") as f:
tar.addfile(ti, f) tar.addfile(ti, f)
else: else:
tar.addfile(ti) tar.addfile(ti)