pikepdf / pikepdf

A Python library for reading and writing PDF, powered by QPDF
https://pikepdf.readthedocs.io/
Mozilla Public License 2.0
2.12k stars 188 forks source link

Build error on aarch64 #187

Closed tandy-1000 closed 3 years ago

tandy-1000 commented 3 years ago

I'm trying to install paperless-ng, and came across this build error. On running this command: sudo -Hu paperless pip3 install -r requirements.txt which pulls in pikepdf, pip tries to build a wheel but fails, producing this output:

  Building wheel for pikepdf (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 /opt/paperless/.local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpq6k2cvvr
       cwd: /tmp/pip-install-ozwbokfw/pikepdf_29fbbbdb4379430c9c18528a20419ff7
  Complete output (41 lines):
  /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'cmd_class'
    warnings.warn(msg)
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-aarch64-3.9
  creating build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/_cpphelpers.py -> build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/objects.py -> build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/_version.py -> build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/__init__.py -> build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/jbig2.py -> build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/_methods.py -> build/lib.linux-aarch64-3.9/pikepdf
  copying src/pikepdf/codec.py -> build/lib.linux-aarch64-3.9/pikepdf
  creating build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/models/matrix.py -> build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/models/outlines.py -> build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/models/__init__.py -> build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/models/encryption.py -> build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/models/image.py -> build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/models/metadata.py -> build/lib.linux-aarch64-3.9/pikepdf/models
  copying src/pikepdf/py.typed -> build/lib.linux-aarch64-3.9/pikepdf
  running build_ext
  building 'pikepdf._qpdf' extension
  creating build/temp.linux-aarch64-3.9
  creating build/temp.linux-aarch64-3.9/src
  creating build/temp.linux-aarch64-3.9/src/qpdf
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/object.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/object.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/annotation.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/annotation.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/object_repr.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/object_repr.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/object_convert.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/object_convert.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/pikepdf.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/pikepdf.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/page.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/page.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/pipeline.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/pipeline.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/qpdf.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/qpdf.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/qpdf_pagelist.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/qpdf_pagelist.o -fvisibility=hidden -g0 -std=c++14
  aarch64-linux-gnu-gcc: fatal error: Killed signal terminated program cc1plus
  compilation terminated.
  error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1
  aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-env-5dgdjm_p/overlay/lib/python3.9/site-packages/pybind11/include -I/usr/include/python3.9 -c src/qpdf/utils.cpp -o build/temp.linux-aarch64-3.9/src/qpdf/utils.o -fvisibility=hidden -g0 -std=c++14
  ----------------------------------------
  ERROR: Failed building wheel for pikepdf
Failed to build pikepdf
ERROR: Could not build wheels for pikepdf which use PEP 517 and cannot be installed directly

Details: OS: DietPi / Debian Sid Arch: aarch64

Please let me know if I need to provide any more information. Thank you.

tandy-1000 commented 3 years ago

This may be a memory issue actually, I will try again with a 2GB swapfile. The server is a RockPro64 with 4GB RAM.

[806139.559147] Out of memory: Killed process 1380517 (cc1plus) total-vm:569760kB, anon-rss:529416kB, file-rss:0kB, shmem-rss:0kB, UID:115 pgtables:1160kB oom_score_adj:0
[806139.706917] oom_reaper: reaped process 1380517 (cc1plus), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
tandy-1000 commented 3 years ago

That was it^ sorry, will close the issue!