summary refs log tree commit diff
path: root/pkgs/build-support/docker
diff options
context:
space:
mode:
authorUtku Demir <me@utdemir.com>2020-06-22 15:11:04 +1200
committerUtku Demir <me@utdemir.com>2020-06-22 15:11:04 +1200
commitfa8f2bf34f3f065571670c59217f877a73868f8f (patch)
treeb6c4dde900fd65df843b939ee8f5cba6a49b689d /pkgs/build-support/docker
parent16199521eaaf5d31952c19e44bcca205959df57f (diff)
downloadnixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.tar
nixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.tar.gz
nixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.tar.bz2
nixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.tar.lz
nixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.tar.xz
nixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.tar.zst
nixpkgs-fa8f2bf34f3f065571670c59217f877a73868f8f.zip
stream_layered_image: Use pathlib module for directory traversal
Diffstat (limited to 'pkgs/build-support/docker')
-rw-r--r--pkgs/build-support/docker/stream_layered_image.py31
1 files changed, 15 insertions, 16 deletions
diff --git a/pkgs/build-support/docker/stream_layered_image.py b/pkgs/build-support/docker/stream_layered_image.py
index a9de10f9efa..4348513338d 100644
--- a/pkgs/build-support/docker/stream_layered_image.py
+++ b/pkgs/build-support/docker/stream_layered_image.py
@@ -37,8 +37,8 @@ import re
 import sys
 import json
 import hashlib
+import pathlib
 import tarfile
-import itertools
 import threading
 from datetime import datetime
 from collections import namedtuple
@@ -90,21 +90,20 @@ def archive_paths_to(obj, paths, mtime, add_nix, filter=None):
             ti = tar.gettarinfo(os.path.join("/", path))
             tar.addfile(apply_filters(append_root(ti)))
 
-            for root, dirs, files in os.walk(path, topdown=True):
-                for name in itertools.chain(dirs, files):
-                    name = os.path.join(root, name)
-                    ti = append_root(tar.gettarinfo(name))
-
-                    # copy hardlinks as regular files
-                    if ti.islnk():
-                        ti.type = tarfile.REGTYPE
-
-                    ti = apply_filters(ti)
-                    if ti.isfile():
-                        with open(name, "rb") as f:
-                            tar.addfile(ti, f)
-                    else:
-                        tar.addfile(ti)
+            for filename in pathlib.Path(path).rglob("*"):
+                ti = append_root(tar.gettarinfo(filename))
+
+                # copy hardlinks as regular files
+                if ti.islnk():
+                    ti.type = tarfile.REGTYPE
+                    ti.linkname = ""
+
+                ti = apply_filters(ti)
+                if ti.isfile():
+                    with open(filename, "rb") as f:
+                        tar.addfile(ti, f)
+                else:
+                    tar.addfile(ti)
 
 
 class ExtractChecksum: