Skip to content

Conversation

@PiotrCzapla
Copy link
Contributor

@PiotrCzapla PiotrCzapla commented Nov 6, 2024

The package was failing on unbuntu because of the change I've made to support editable mode, so I've made the change conditional and run only when pip install -e . is executed.

This showed another issue though. On linux our wheels contains the libwhipser.so twice, and one is redundant, we should fix that, I will create a new pull request once I figure out how.

To give you more info setting rpath to $ORIGIN, breaks the wheels after repair step because the dependencies aren't copied to pywhispercpp.libs and rpath is corrected to $ORIGN/pywhipsercpp.libs.

This is how the readelf of _pywhispercpp.cpython-312-aarch64-linux-gnu.so looks like on linux for a working wheel:

  0x000000000000000f (RPATH)              Library rpath: [$ORIGIN/pywhispercpp.libs]
 0x0000000000000001 (NEEDED)             Shared library: [libwhisper-40042964.so.1.7.1]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++-3f0d3c8a.so.6.0.33]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s-1a8c3655.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc-07406008.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-aarch64.so.1]

On a broken wheel the libwhisper is not copied to pywhispercpp.libs, and stays as [libwhisper.so.1] here is the output:

 0x000000000000000f (RPATH)              Library rpath: [$ORIGIN/pywhispercpp.libs]
0x0000000000000001 (NEEDED)             Shared library: [libwhisper.so.1]
0x0000000000000001 (NEEDED)             Shared library: [libstdc++-3f0d3c8a.so.6.0.33]
0x0000000000000001 (NEEDED)             Shared library: [libgcc_s-1a8c3655.so.1]
0x0000000000000001 (NEEDED)             Shared library: [libc-07406008.so.6]
0x0000000000000001 (NEEDED)             Shared library: [ld-linux-aarch64.so.1]

This was build on ubuntu and the libc* where for some reason included in the wheel, I hope it won't happen when build on manylinux image.

Setting rpath to @loader_path / $ORIGIN, breaks the wheels after repair step because the dependencies aren't copied to pywhispercpp.libs and rpath is set to $ORIGN/pywhipsercpp.libs.

This is how the readelf of _pywhispercpp.cpython-312-aarch64-linux-gnu.so looks like on linux for a working wheel:

 0x000000000000000f (RPATH)              Library rpath: [$ORIGIN/pywhispercpp.libs]
 0x0000000000000001 (NEEDED)             Shared library: [libwhisper-40042964.so.1.7.1]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++-3f0d3c8a.so.6.0.33]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s-1a8c3655.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc-07406008.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-aarch64.so.1]

 On a broken wheel the libwhisper is not copied to pywhispercpp.libs.
@absadiki
Copy link
Owner

absadiki commented Nov 7, 2024

Yeah, that makes sense.
The libwhipser.so is included now and all tests have passed. I checked some of the resulting wheels and they do not contain any libc files, which is the good. So I will merge this for now.
But as you said we still need to figure out how to delete the included shared library from the top folder of the wheel.

@absadiki absadiki merged commit e8be374 into absadiki:main Nov 7, 2024
14 checks passed
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

Successfully merging this pull request may close these issues.

2 participants