summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2022-11-04 10:30:53 +0100
committerGitHub <noreply@github.com>2022-11-04 02:30:53 -0700
commit1d4919924de9743f7ec6f47616d2c67d3074648b (patch)
treea206d8a52f1f0057af7677c9d91bf34102239c7a /var
parentb1f896e6c75560cdb4f315cd8e68a653d085db63 (diff)
downloadspack-1d4919924de9743f7ec6f47616d2c67d3074648b.tar.gz
spack-1d4919924de9743f7ec6f47616d2c67d3074648b.tar.bz2
spack-1d4919924de9743f7ec6f47616d2c67d3074648b.tar.xz
spack-1d4919924de9743f7ec6f47616d2c67d3074648b.zip
Add in-place RPATH replacement (#27610)
Whenever the rpath string actually _grows_, it falls back to patchelf, when it stays the same length or gets shorter, we update it in-place, padded with null bytes. This PR only deals with absolute -> absolute rpath replacement. We don't use `_build_tarball(relative=True)` in our CI. If `relative` then it falls back to the old replacement code. With this PR, relocation time goes down significantly, likely because patchelf does some odd things with mmap, causing lots of overhead. Example: - `binutils`: 700MB installed, goes from `1.91s` to `0.57s`, or `3.4x` faster. Relocation time: 27% -> 10% of total install time - `llvm`: 6.8GB installed, goes from `28.56s` to `5.38`, or `5.3x` faster. Relocation time: 44% -> 13% of total install time The bottleneck is now decompression. Note: I'm somewhat confused about the "relative rpath" code paths. Right now this PR only deals with absolute -> absolute replacement. As far as I understand, if you embrace relative rpaths when uploading to the buildcache, the whole point is you _don't_ want to patch rpaths on install? So it seems fine to not expand `$ORIGIN` again imho.
Diffstat (limited to 'var')
0 files changed, 0 insertions, 0 deletions