Skip to content

Hardlinked files are handled inconsistently when creating binary packages. #37390

@Paul-Ferrell

Description

@Paul-Ferrell

Steps to reproduce

spack install git
spack mirror add foo /tmp/foo
spack buildcache create -m foo --only git -a "/<hash of git package"

Checkout the contents of the installed git's libexec/git-core/ directory. There are a ton of files there, but most of them are just hardlinks to the the same place.
Then checkout the .spack/binary_distribution file - Only a small fraction of files that are in libexec/git-core/ are listed under the relocate_* keys. That would be fine, except when Spack creates the binary distro it simply creates a tarball, and that doesn't recreate the hardlinks when extracted.

The result is that one each set of hardlinked files (semi-randomly) will get properly relocated - the rest will be left with their original paths/rpaths.

If you want, you can install that binary package and use readelf -d or ldd to see that the paths are old and/or broken. (Note that if you install it on the same system, the library paths won't be broken as the original install location will still exist).

Error message

None

Information on your system

  • Spack: 0.19.0 (cb0b70f)
  • Python: 3.6.15
  • Platform: linux-sles15-icelake
  • Concretizer: clingo

General information

  • I have run spack debug report and reported the version of Spack/Python/Platform
  • I have searched the issues of this repo and believe this is not a duplicate
  • I have run the failing commands in debug mode and reported the output

Metadata

Metadata

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions