Code Monkey home page Code Monkey logo

Comments (9)

adam-huganir avatar adam-huganir commented on June 20, 2024 1

I look forward to seeing out it works, the ctypesgen builds + the binaries are always temperamental for me for any project I use them for

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024 1

Source build works with no issues, though I have a bunch of dev dependencies in general on my computer, so this should probably be tested in a vm at some point

I just successfully built PyPDFium2 in VirtualBox with OpenSUSE Leap 15.3. However, I yet found some important external dependencies that I've listed in DEPS.txt now.

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024

I've started experimenting in the sourcebuild branch.
The build appears to work, but the generated binary - for some peculiar reason - is much smaller than it should be, and not even the FPDF_InitLibrary call works. I'll have to investigate this. My guess is that I need to apply more patches from pdfium-binaries.

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024

Yeah, I concur. Being dependent on external binaries is a big limitation, that's why I started working on this...

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024

@adam-huganir I've pushed a commit incorporating more patches (5319f40). The generated binary now works and our tests pass. (Some of the patches apparently can't be applied, but I guess that's an upstream issue. Update: fixed now - I just used the wrong command to apply the patches.)

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024

@adam-huganir I believe that the source build script should be pretty solid now. In case you haven't done yet, could you maybe try it on your device, to confirm that PDFium builds correctly just by running the script, to make sure I haven't missed any external dependencies?

from pypdfium2.

adam-huganir avatar adam-huganir commented on June 20, 2024

Ok, so fresh clone of main, in a fresh python 3.8.12 environment:

  1. Source build works with no issues, though I have a bunch of dev dependencies in general on my computer, so this should probably be tested in a vm at some point
  2. because sourcebuild generates libpdfium.so library instead of one named pdfium I had to change the load line in pypdfium2/_pypdfium.py
   806 # Begin libraries
>> 807 _libs["pdfium"] = load_library("libpdfium.so") # from 'pdfium'

so you will need to change wherever that is generated (I guess cytpesgen call time?)

After changing that and installing Pillow everything worked as expected 👍

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024

Thanks for testing!

because sourcebuild generates libpdfium.so library instead of one named pdfium I had to change the load line in pypdfium2/_pypdfium.py

I already thought about that when writing the script, and had implemented the option --destname to allow for renaming the binary, e. g. to pdfium. However, on my machine it was also possible to load libpdfium.so, but that might be because I'm using a newer version of ctypesgen that I installed from its current git repository.
From looking at the library loader in the generated bindings file, this naming pattern should be detected:

class PosixLibraryLoader(LibraryLoader):
    """Library loader for POSIX-like systems (including Linux)"""
    _ld_so_cache = None
    _include = re.compile(r"^\s*include\s+(?P<pattern>.*)")
    name_formats = ["lib%s.so", "%s.so", "%s"]

from pypdfium2.

mara004 avatar mara004 commented on June 20, 2024

After changing that and installing Pillow

Oh, that's a good catch - I totally forgot to list Pillow as installation requirement in setup.cfg! I'll fix that soon.

from pypdfium2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.