AppImage / AppImage/AppImageKit

Investigate auditwheel and manylinux to produce, bundle, and audit cross-distro binaries

未關閉
#987 2 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
沒有語言資料
星號
9.4k
分支
588
PR 合併指標
PR 指標待擷取

描述

@lkollar suggested in https://github.com/NixOS/patchelf/issues/174#issuecomment-520609300 to check out [LIEF](https://lief.quarkslab.com/doc/latest/Intro.html) to replace `patchelf`and linked to https://github.com/pypa/auditwheel.

`auditwheel` is a Python tool for "Auditing and relabeling cross-distribution Linux wheels". What does this mean?

> `auditwheel show`: shows external shared libraries that the wheel depends on (beyond the libraries included in the manylinux policies), and checks the extension modules for the use of versioned symbols that exceed the manylinux ABI.

Sounds a lot like what we are doing for generic Linux applications (rather than Python modules) with tools like [appimagelint](https://github.com/TheAssassin/appimagelint).

> manylinux ABI

Now, what is the [manylinux](https://github.com/pypa/manylinux) ABI? Sounds a lot like what we are doing for generic Linux applications (rather than Python modules) with 1. mandating that binaries shall be built on systems no newer than the oldest Ubuntu LTS, and 2. mandating that all libraries but those listed at https://github.com/AppImage/pkg2appimage/blob/master/excludelist shall be privately bundled with the application.

Their approach may be better than ours because those platforms are more strictly defined?
* https://www.python.org/dev/peps/pep-0513/
* https://www.python.org/dev/peps/pep-0571/

https://github.com/pypa/manylinux contains Docker images and tools to produce compliant binaries.

> `auditwheel repair`: copies these external shared libraries into the wheel itself, and automatically modifies the appropriate RPATH entries such that these libraries will be picked up at runtime. This accomplishes a similar result as if the libraries had been statically linked without requiring changes to the build system. Packagers are advised that bundling, like static linking, may implicate copyright concerns.

Sounds a lot like what we are doing for generic Linux applications (rather than Python modules) with tools like [linuxdeployqt](https://github.com/probonopd/linuxdeployqt) and [linuxdeploy](https://github.com/linuxdeploy/linuxdeploy).

Like we do, it has been using `patchelf` so far to accomplish this but is now possibly switching to [LIEF](https://lief.quarkslab.com/doc/latest/Intro.html).

Wdyt @TheAssassin @azubieta @lkollar, all?

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。