https://bugs.kde.org/show_bug.cgi?id=489827
            Bug ID: 489827
           Summary: Spurious automatic dependency on Poppler "Core"
                    requires rebuild each time Poppler breaks ABI
    Classification: Frameworks and Libraries
           Product: extra-cmake-modules
           Version: unspecified
          Platform: Compiled Sources
                OS: All
            Status: REPORTED
          Severity: wishlist
          Priority: NOR
         Component: general
          Assignee: ecm-bugs-n...@kde.org
          Reporter: rjvber...@gmail.com
  Target Milestone: ---

***
If you're not sure this is actually a bug, instead post about it at
https://discuss.kde.org

If you're reporting a crash, attach a backtrace with debug symbols; see
https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
***

SUMMARY
Poppler has a habit of breaking ABI in its core library even for minor version
updates like 24.01.0 to 24.04.0 . In my experience code that only uses the Qt4
or Qt5 interface libraries is not affected by such breakage as the interface
API and ABI have proven to be as stable as the `SOVERSION` of libpoppler-qt?
promises.

ECM's FindPoppler module adds a dependency on Poppler's "Core" module however,
which is still unnecessary as of Poppler 24.04.0 but causes binaries to have a
hard dependency on the presence of a specific libpoppler version in addition to
the actually required libpoppler-qt? file. As a result, these binaries often
fail to load after a Poppler upgrade and need to be rebuilt.

This puts an unnecessary burden on package maintainers and users like me who
build everything themselves.

STEPS TO REPRODUCE
1. Build and install the KFileMetadata and/or Okular from source (also tested
with Kile and Tellico)
2. Upgrade Poppler to a version with a different libpoppler.so SOVERSION (e.g.
24.01.0 to 24.04.0)
3. Try to use the KFMD framework or opening a PDF file in Okular

OBSERVED RESULT
Failure at step 3 because of a missing libpoppler.x.so file (with x=133 in the
example above)

EXPECTED RESULT
The dependent software should continue to function.

SOFTWARE/OS VERSIONS
Observed on Mac and Linux with various Qt5 versions (this is not a new
phenomenon for me).

ADDITIONAL INFORMATION
Using `patchelf --remove-needed` to remove the spurious dependency on
libpoppler.133.so fixes the problem. After rebuilding I can still remove the
dependency on libpoppler.136.so without breaking functionality. I tried
modifying the Kile and Tellico build systems to they only link to
libpoppler-qt5.so and this breaks neither the build nor the functionality of
the applications.

I long had comments in my build scripts for some poppler dependents ago that
rebuilding isn't required after a Poppler upgrade because the code only links
to the stable libpoppler-qt5 library.

Submitting this as a wishlist item because the FindPoppler module was
introduced  with this "feature" and dropping the automatic dependency may
require some work for applications that do depend on Poppler's main library.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to