0

I first tried adding pikepdf in requirements.txt

src/qpdf/annotation.cpp:14:10: fatal error: qpdf/QPDFAnnotationObjectHelper.hh: No such file or directory

I think it was missing a dependency. So I tried installing qpdf using yum install qpdf-devel

However, that is only able to install version 5.0.1, and there is a requirement of qpdf 10.6.2.

Then, I tried to build qpdf from the source.

packages:
  yum:
    python3-devel: []
    git: []
    gcc-c++: []
    libjpeg-turbo-devel: []

container_commands:
  01_upgrade_pip:
    command: "source /var/app/venv/*/bin/activate && python -m pip install --upgrade pip"
    leader_only: true
  04_wget:
    command: "wget https://github.com/qpdf/qpdf/releases/download/release-qpdf-10.6.2/qpdf-10.6.2.tar.gz"
  05_targxf:
    command: "tar -xf qpdf-10.6.2.tar.gz"
  06_cd:
    command: |
      cd qpdf-10.6.2
      ./configure
      make
      sudo make install 
      sudo ldconfig
  07_pikepdf:
    command: "source /var/app/venv/*/bin/activate && python -m pip install pikepdf"

With this, I believe I made some progress as the code deployed, but in the page I tried to load pikepdf, there was an error.

from . import _qpdf
ImportError: /var/app/venv/staging-LQM1lest/lib64/python3.8/site-packages/pikepdf/_qpdf.cpython-38-aarch64-linux-gnu.so: undefined symbol: _ZTIN16QPDFObjectHandle15ParserCallbacksE

...

raise ImportError(_msg) from _e
ImportError: pikepdf's extension library failed to import

Here's what I got when building, I believe qpdf built correctly:

libraries have been installed in:
    /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
    - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
        during execution
    - add LIBDIR to the 'LD_RUN_PATH' environment variable
        during linking
    - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
    - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

Is there another way?

bones225
  • 1,488
  • 2
  • 13
  • 33
  • Did you check any EB logs for errors? Why your compilation fails? – Marcin Apr 22 '22 at 06:13
  • @marcin I believe the qpdf build did work, the code was able to deploy successfully. It wasn't until I loaded a page within my Django app that there was an error. I added the message I got after building qpdf. Thanks. – bones225 Apr 22 '22 at 14:55
  • This may be the answer: https://pikepdf.readthedocs.io/en/latest/installation.html#gcc-or-clang-and-linking-to-user-libraries – bones225 Apr 22 '22 at 15:00

0 Answers0