← Back to issue list

elf: cleaner patchelf experience

View original Github issue

Metadata

Project
snapcraft
Number
#1873
Type
pull request
State
merged
Author
sergiusens
Labels
Created
Updated
Closed

Current evaluation

Merged improvements to patchelf handling. The change uses the system patchelf by default, copies files to prevent hard-link conflicts, and provides fallback instructions. Approved by two reviewers and passed CI checks before merging.

Suggested action:

No scores available.

Issue body

Use the patchelf on the system by default if not running from the snap and if it fails instruct the user to use patchelf as a part or as a build-snaps entry. Given that when using as a part the user can choose to not use filters to remove the file from prime, we also make a copy of the file to patch (breaking any potential existing hard link with the other steps) to avoid the problem of trying to patch the patchelf primed file with the same patchelf binary file. Signed-off-by: Sergio Schvezov <sergio.schvezov@canonical.com> - [x] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)? - [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)? - [x] If this is a bugfix. Have you checked that there is a bug report open for the issue you are trying to fix on [bug reports](https://bugs.launchpad.net/snapcraft)? - [x] If this is a new feature. Have you discussed the design on the [forum](https://forum.snapcraft.io)? - [x] Have you successfully run `./runtests.sh static`? - [x] Have you successfully run `./runtests.sh unit`? -----

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b Merged improvements to patchelf handling. The change uses the system patchelf by default, copies files to prevent hard-link conflicts, and provides fallback instructions. Approved by two reviewers and passed CI checks before merging.
qwen3.6-35b-a3b-mtp-q6 Merged after fixing tests and receiving approval. Improves patchelf handling by defaulting to the system binary, copying files before patching to prevent hard-link conflicts, and providing clear fallback instructions.
qwen3.6-35b-a3b-mtp-q6 Merged improvements to patchelf handling. Defaults to the system binary, copies files to prevent patching primed outputs, and provides clear fallback instructions. Approved after initial test failures were fixed.

Update history

No update history recorded yet.

Related issues

Issue Project State Summary Similarity
#2006 many: use packaging logic to get patchelf snapcraft merged Merged following reviewer approval and CI checks. Refactored patchelf retrieval to use shared packaging logic, aligning its version across snap and deb packages. Modified four files with a net reduction of 24 lines.
78%
#1888 elf: make patchelf a dependency snapcraft merged Merged after reviewer approval and CI checks. The change corrects patchelf handling by removing it from build_tools and properly configuring it as a dependency via debian/control for deb packages and snapcraft bundling for snaps.
77%
#3985 elf: patch elf files for classic mode snapcraft merged Merged into main. Patches ELF binaries for classic mode to use the base snap interpreter and libraries, or bundled components if libc is staged, when enable-patchelf is enabled. Approved, passed CI, and merged.
77%
#3841 elf: add elf file patcher snapcraft merged Merged an ELF file patcher using patchelf, ported from Snapcraft 6.x. Approved by one reviewer, passed CI checks, and increased test coverage by 0.26%. Resolves CRAFT-1191.
77%
#3589 snap: correct patch apply for patchelf snapcraft merged Merged a two-line fix correcting patch application for patchelf. Approved by a reviewer, passed CI, and merged to master. An unrelated test failure was noted but disregarded to proceed.
76%
#1983 snap: update revision of patchelf to use snapcraft closed Closed without merging. The patchelf revision update received no reviews, comments, or CI checks, indicating it was abandoned or superseded by a later change.
74%
#1959 elf: only patch elf files that aren't referenced by DT_NEEDED snapcraft merged Merged after conflict resolution. Optimizes patchelf usage by only patching ELF files not listed in DT_NEEDED dependencies, reducing unnecessary modifications. Adds architecture extraction to ElfFile to prevent cross-architecture mismatches. Resolves LP #1747097.
74%
#1798 elf: strip the .note.go.buildid to make room for patching elf snapcraft merged Merged. Strips the .note.go.buildid section from ELF binaries to resolve patchelf compatibility issues and fix build failures. Approved after passing CI checks. Introduces a newer patchelf build-snap dependency to ensure correct header patching.
73%
#5486 build: add patchelf to make dependencies snapcraft merged Merged to add patchelf to development environment dependencies, resolving test failures on self-hosted runners. Approved by two reviewers and passed CI checks.
73%
#3840 elf: add handling and patching helpers snapcraft merged Merged into main following reviewer approval and passing CI checks. Introduces ELF binary listing and dynamic linker location helpers, adding handling and patching utilities to the elf module while increasing test coverage.
73%