pyinstaller / pyinstaller/pyinstaller

unable to build bootloader

Open
#6,308 19 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:documentation
Dominant language
Python
Stars
13.1k
Forks
2k
Avg merge
1d 3h
Merged PRs (30d)
11

Description

Description of the issue

Context information (for bug reports)
  • Output of pyinstaller --version: (4.5.1)

  • Version of Python: Python 3.9.7

  • Platform: OSX -> targeting arm64

  • How you installed Python: brew

  • Did you also try this on another platform? Does it work there? tried in venv, no

  • try the latest development version, using the following command:

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Make sure everything is packaged correctly
  • [ x] start with clean installation
  • [ x] use the latest development version
  • [x ] Run your frozen program from a command window (shell) — instead of double-clicking on it
  • Package your program in --onedir mode
  • Package without UPX, say: use the option --noupx or set upx=False in your .spec-file
  • Repackage you application in verbose/debug mode. For this, pass the option --debug to pyi-makespec or pyinstaller or use EXE(..., debug=1, ...) in your .spec file.
A minimal example program which shows the error

I started by cloning the pyinstaller code, and followed the directions contained within the Dockerfile

(paste text here)
docker run -v "$PWD:/io" -t arm64-full-test
Stacktrace / full error message
(venv) {USER}@{MAC} pyinstaller % sudo docker build --build-arg BASE=dockcross/linux-arm64-full -t arm64-full-test ./bootloader
[+] Building 0.2s (12/12) FINISHED                                                                                                                                             
 => [internal] load build definition from Dockerfile                                                                                                                      0.0s
 => => transferring dockerfile: 1.80kB                                                                                                                                    0.0s
 => [internal] load .dockerignore                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                           0.0s
 => [internal] load metadata for docker.io/dockcross/linux-arm64-full:latest                                                                                              0.0s
 => [1/8] FROM docker.io/dockcross/linux-arm64-full                                                                                                                       0.0s
 => CACHED [2/8] WORKDIR /home/                                                                                                                                           0.0s
 => CACHED [3/8] RUN curl -s https://zlib.net/zlib-1.2.11.tar.gz | tar xfz -                                                                                              0.0s
 => CACHED [4/8] WORKDIR zlib-1.2.11                                                                                                                                      0.0s
 => CACHED [5/8] RUN ./configure --prefix="$(/buildroot/bin/aarch64-buildroot-linux-gnu-gcc -print-sysroot)"                                                              0.0s
 => CACHED [6/8] RUN make                                                                                                                                                 0.0s
 => CACHED [7/8] RUN make install                                                                                                                                         0.0s
 => CACHED [8/8] WORKDIR /io                                                                                                                                              0.0s
 => exporting to image                                                                                                                                                    0.0s
 => => exporting layers                                                                                                                                                   0.0s
 => => writing image sha256:32f9198c79ea3f9372e696b660f4011257ffa9b8b52ee2fd98771b87251c0a1b                                                                              0.0s
 => => naming to docker.io/library/arm64-full-test                                                                                                                        0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
(venv) {USER}@{MAC} pyinstaller % docker run -v "$PWD:/io" -t arm64-full-test
'all' finished successfully (0.002s)
'distclean' finished successfully (0.002s)
Setting top to                           : /io/bootloader 
Setting out to                           : /io/bootloader/build 
Python Version                           : 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] 
Checking for 'gcc' (C compiler)          : /buildroot/bin/aarch64-buildroot-linux-gnu-gcc 
Checking size of pointer                 : 8 
Platform                                 : Linux-64bit-arm detected based on compiler 
Checking for compiler flags -m64         : no 
Checking for linker flags -m64           : no 
Checking for library dl                  : yes 
Checking for library pthread             : yes 
Checking for library m                   : yes 
Checking for library z                   : yes 
Checking for library cmocka              : not found 
Checking for function unsetenv           : yes 
Checking for function mkdtemp            : yes 
Checking for function dirname            : yes 
Checking for function basename           : yes 
Checking for function strndup            : yes 
Checking for function strnlen            : yes 
Checking for compiler flags -Wl,--as-needed : yes 
Checking for program 'strip'                : /usr/bin/strip 
Checking for program 'strip'                : /usr/bin/strip 
'configure' finished successfully (2.610s)
'make_all' finished successfully (0.027s)
Waf: Entering directory `/io/bootloader/build/debug'
[ 1/16] Compiling src/pyi_path.c
[ 2/16] Compiling src/pyi_exception_dialog.c
[ 3/16] Compiling src/pyi_apple_events.c
[ 4/16] Compiling src/pyi_win32_utils.c
[ 5/16] Compiling src/pyi_utils.c
[ 6/16] Compiling src/pyi_main.c
[ 7/16] Compiling src/pyi_archive.c
[ 8/16] Compiling src/pyi_splash.c
[ 9/16] Compiling src/pyi_global.c
[10/16] Compiling src/pyi_splashlib.c
[11/16] Compiling src/pyi_python.c
[12/16] Compiling src/pyi_pythonlib.c
[13/16] Compiling src/pyi_launch.c
[14/16] Compiling src/main.c
[15/16] Linking build/debug/run_d
[16/16] Processing build/debug/run_d
/usr/bin/strip: Unable to recognise the format of the input file `run_d'

Waf: Leaving directory `/io/bootloader/build/debug'
Build failed
 -> task in 'run_d' failed with exit status 1 (run with -v to display more information)

Please also see https://github.com/pyinstaller/pyinstaller/wiki/How-to-Report-Bugs
for more about what would use to solve the issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with bootloader/Dockerfile and reproduce the documented docker build and docker run commands using the arm64 base image. Trace the final strip step that reports an unrecognized run_d format; done means the arm64 bootloader build completes successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, docker, python
Domain
build-system, devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.