summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2023-10-03 09:56:18 +0200
committerGitHub <noreply@github.com>2023-10-03 09:56:18 +0200
commit06057d6dbac34a1f775f6cab1ab88ee8e145087f (patch)
treebf3aa5e04236e87bbfc78df210c12a3db76f8f8e /share
parentbb03a1768b317607204ae05e66485ce7f7398a6f (diff)
downloadspack-06057d6dbac34a1f775f6cab1ab88ee8e145087f.tar.gz
spack-06057d6dbac34a1f775f6cab1ab88ee8e145087f.tar.bz2
spack-06057d6dbac34a1f775f6cab1ab88ee8e145087f.tar.xz
spack-06057d6dbac34a1f775f6cab1ab88ee8e145087f.zip
Buildcache tarballs with rootfs structure (#39341)
Two changes in this PR: 1. Register absolute paths in tarballs, which makes it easier to use them as container image layers, or rootfs in general, outside of Spack. Spack supports this already on develop. 2. Assemble the tarfile entries "by hand", which has a few advantages: 1. Avoid reading `/etc/passwd`, `/etc/groups`, `/etc/nsswitch.conf` which `tar.add(dir)` does _for each file it adds_ 2. Reduce the number of stat calls per file added by a factor two, compared to `tar.add`, which should help with slow, shared filesystems where these calls are expensive 4. Create normalized `TarInfo` entries from the start, instead of letting Python create them and patching them after the fact 5. Don't recurse into subdirs before processing files, to avoid keeping nested directories opened. (this changes the tar entry order slightly, it's like sorting by `(not is_dir, name)`.
Diffstat (limited to 'share')
0 files changed, 0 insertions, 0 deletions