Commit e3c1e1fbcbf50d86bdbc6d6cf31ea6c87b1ed407
1 parent
706e37a4
Validate RUNPATH of standalone Linux binaries in CI
Showing
2 changed files
with
7 additions
and
4 deletions
TODO
| ... | ... | @@ -19,10 +19,6 @@ Pending changes: |
| 19 | 19 | |
| 20 | 20 | * Consider also exposing a way to set a new logger and to get the |
| 21 | 21 | logger from QPDF and QPDFJob in the C API. |
| 22 | -* Check about runpath in the linux-bin distribution. I think the | |
| 23 | - appimage build specifically is setting the runpath, which is | |
| 24 | - actually desirable in this case. Make sure to understand and | |
| 25 | - document this. Maybe add a check for it in the build. | |
| 26 | 22 | |
| 27 | 23 | Soon: Break ground on "Document-level work" |
| 28 | 24 | ... | ... |
build-scripts/build-appimage
| ... | ... | @@ -26,6 +26,13 @@ done |
| 26 | 26 | version=$(basename distribution/qpdf*AppImage | cut -d- -f 2) |
| 27 | 27 | ./distribution/qpdf*AppImage --appimage-extract |
| 28 | 28 | D=$PWD/distribution |
| 29 | +if ! (readelf -d squashfs-root/usr/bin/qpdf | \ | |
| 30 | + grep RUNPATH | grep -q -F ..); then | |
| 31 | + # We are relying on the AppImage build to create an executable | |
| 32 | + # whose runpath is relative to the binary so that the extract zip | |
| 33 | + # file is relocatable. | |
| 34 | + echo "Standalone linux binary lacks relative RUNPATH" | |
| 35 | +fi | |
| 29 | 36 | (cd squashfs-root/usr; \ |
| 30 | 37 | zip -9 --symlinks $D/qpdf-$version-bin-linux-x86_64-ci.zip \ |
| 31 | 38 | bin/{qpdf,fix-qdf,zlib-flate} lib/*) | ... | ... |