diff options
author | Harmen Stoppels <harmenstoppels@gmail.com> | 2023-10-03 09:56:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-03 09:56:18 +0200 |
commit | 06057d6dbac34a1f775f6cab1ab88ee8e145087f (patch) | |
tree | bf3aa5e04236e87bbfc78df210c12a3db76f8f8e /share | |
parent | bb03a1768b317607204ae05e66485ce7f7398a6f (diff) | |
download | spack-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