stevenlovegrove / Pangolin

Pangolin is a lightweight portable rapid development library for managing OpenGL display / interaction and abstracting video input.
MIT License
2.39k stars 855 forks source link

SONAME Versioning #927

Closed damaestro closed 6 months ago

damaestro commented 6 months ago

We need to configure proper soname's and versioning for downstream packaging policy compliance. The goal is to provide an ABI guarantee for any given soname. This can be accomplished by soname versioning or library symbol versioning. The simpler solution is likely the right one. Soname bumps are usually more involved and will require rebuilding all linked packages.

Fedora: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/

Debian: https://www.debian.org/doc/manuals/maint-guide/advanced.en.html#library

Based on the fedora-review tool, there are 15 sonames that need addressing:

# E: invalid-soname /usr/lib64/libpango_core.so libpango_core.so
# E: invalid-soname /usr/lib64/libpango_display.so libpango_display.so
# E: invalid-soname /usr/lib64/libpango_geometry.so libpango_geometry.so
# E: invalid-soname /usr/lib64/libpango_glgeometry.so libpango_glgeometry.so
# E: invalid-soname /usr/lib64/libpango_image.so libpango_image.so
# E: invalid-soname /usr/lib64/libpango_opengl.so libpango_opengl.so
# E: invalid-soname /usr/lib64/libpango_packetstream.so libpango_packetstream.so
# E: invalid-soname /usr/lib64/libpango_plot.so libpango_plot.so
# E: invalid-soname /usr/lib64/libpango_python.so libpango_python.so
# E: invalid-soname /usr/lib64/libpango_scene.so libpango_scene.so
# E: invalid-soname /usr/lib64/libpango_tools.so libpango_tools.so
# E: invalid-soname /usr/lib64/libpango_vars.so libpango_vars.so
# E: invalid-soname /usr/lib64/libpango_video.so libpango_video.so
# E: invalid-soname /usr/lib64/libpango_windowing.so libpango_windowing.so
# E: invalid-soname /usr/lib64/libtinyobj.so libtinyobj.so
christian-rauch commented 6 months ago

Can you send a PR for this?

damaestro commented 6 months ago

https://github.com/stevenlovegrove/Pangolin/pull/930 is the start of what needs to change. I haven't figured out the pybind11 one yet. Any thoughts?

damaestro commented 6 months ago

@christian-rauch okay, the PR is passing testing and all of the Fedora SONAME checks are passing. This should be ready for review.

christian-rauch commented 6 months ago

Fixed by https://github.com/stevenlovegrove/Pangolin/pull/930.