Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wheels for Linux #128

Open
bbayles opened this issue Apr 25, 2023 · 6 comments
Open

Wheels for Linux #128

bbayles opened this issue Apr 25, 2023 · 6 comments

Comments

@bbayles
Copy link

bbayles commented Apr 25, 2023

Wheels for Mac and Windows were introduced with issue #59. This issue is a request for manylinux wheels.

The basic steps should be to:

  • Get the setup script to include the libmediainfo binary
  • Run auditwheel repair on the wheel that's produced

This may be a bit more involved given the way the Windows and Mac builds are currently set up - it looks like they copy the library binary to the code directory - auditwheel may not like that.

Thanks for this library!

@Tohrusky
Copy link

for debian/ubuntu , just apt install libmediainfo-dev
I think in other system/pkg manager, it will work

a manylinux wheel may not well, in official site, diff Linux distribution has diff built lib

@bbayles
Copy link
Author

bbayles commented Apr 25, 2023

My goal is to be able to install all dependencies for my application as binary wheels from PyPI, rather than having to have some of them sourced from somewhere else.

@sbraz
Copy link
Owner

sbraz commented Apr 25, 2023

Hi @bbayles, I'll look into it. From what I understand, I'd just pick the .so files for libmediainfo and libzen from upstream's builds and let auditwheel repair include these files inside the wheel?
I checked and libmediainfo.so.0.0.0 seems to require libz.so, will I have to include that in my wheel? It seems a bit out of scope.
Also, what build should I use? The Ubuntu 20.04 builds like I do now?

@bbayles
Copy link
Author

bbayles commented Apr 25, 2023

I think that's the basic idea, but auditwheel is finicky about where the binaries go - it always takes me several tries to satisfy it.

libz.so being included: I think it won't be, since it's more or less universally available.

I think Ubuntu 20.04 will work with auditwheel.

@bbayles
Copy link
Author

bbayles commented Apr 26, 2023

I looked into this a bit, and I was able to get wheels that worked properly on Linux and Mac using this branch. I wasn't able to check Windows, but I expect things would work there too.

On Linux, I used the binary from MediaInfo that they build for AWS Lambda here. Basically:

  • Copy lib/libmediainfo.so.0.0.0 from that archive to pymediainfo/libmediainfo.so.0
  • Copy LICENSE from that archive to docs/LICENSE
  • Build the wheel: python setup.py bdist_wheel
  • auditwheel show dist/whatever.whl - note the compatibility version
  • auditwheel repair --plat manylinux_2_17_x86_64 dist/whatever.whl
  • That produces wheelhouse/whatever-updated.whl

(FWIW, this method did not need libzen or libz binaries to be copied in)

@sbraz
Copy link
Owner

sbraz commented Apr 29, 2023

Thanks, I'll check that branch as soon as I have a little time.

sbraz pushed a commit that referenced this issue Nov 17, 2024
Build wheel with bundled libmediainfo for MacOS arm64 and for Linux
(x886_64 and arm64).

Fixes: #127
Fixes: #128
Fixes: #140
sbraz pushed a commit that referenced this issue Nov 17, 2024
Build wheel with bundled libmediainfo for MacOS arm64 and for Linux
(x86_64 and arm64).
Instead of installing MediaInfo via apt to run tests, use the AWS Lambda
library file that we bundle into Linux wheels, this simplifies the CI
code.

Fixes: #127
Fixes: #128
Fixes: #140
sbraz pushed a commit that referenced this issue Nov 17, 2024
Build wheel with bundled libmediainfo for MacOS arm64 and for Linux
(x86_64 and arm64).
Instead of installing MediaInfo via apt to run tests, use the AWS Lambda
library file that we bundle into Linux wheels, this simplifies the CI
code.

Fixes: #127
Fixes: #128
Fixes: #140
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants