Open mfansler opened 3 years ago
I'm hesitant to do this as it would likely cause issues for packages building in conda-forge relying on pyinstaller
. This is because they normally would be getting build utilities (like the compiler and binutils
) from the build environment. Including this in pyinstaller
would pull this in the host environment. This would then likely lead to clashes between these two environments.
Given this, is there a reason one can't install this themselves or grab it from the system?
@jakirkham thanks for the reply. Yes, one can simply install the binutils
to get things working. I created this issue partially to document that workaround for others, partially to spark a discussion as to adding it as an explicit dependency.
If there are non-trivial consequences to the latter, then it sounds better to leave it as is.
Other ways to consider: either vendor a copy of objcopy and patch pyinstaller to use that or urge the developers of pyinstaller to switch to a solution that doesn't require dependency on objcopy (using some ELF library like py-lief or pyelftools). All objcopy is used for is this.
Turns there is already a fallback in place, the path just doesn't get hit. Let's see what upstream devs have to say about https://github.com/pyinstaller/pyinstaller/pull/5991
Issue
Running PyInstaller on condaforge/miniforge3:4.10.3-1 image fails to generate functional binaries. This is due to the assumption that linux-64 platform includes the
objcopy
command supplied bybinutils
. This could be remedied by addingbinutils
as a dependency.Recreate Steps
Result
Throws error message:
Full Output
Expected Result
It should successfully build the binary.
Workaround
The error can be overcome by installing
binutils
. That is, running the above recreate steps, but withenables error-free running of the last step.
Recommended Solution
The feedstock maintainers should consider including
binutils
as a runtime dependency, at least forlinux-64
builds. The recipe should include a end-to-end test that would catch this failure in future builds.