jxrlib: switch to maintained fork, ship pkgconfig. freeimage: unbundle libraries, fix ftbfs#61191
jxrlib: switch to maintained fork, ship pkgconfig. freeimage: unbundle libraries, fix ftbfs#61191JkktBkkt wants to merge 2 commits into
Conversation
|
These changes are not acceptable for a couple of reasons:
What is the provenance of the libraw patch? Patches that change program behavior should document their origin and acceptance upstream, preferably with a git email header providing commit details. |
|
on jxrlib:
on Freeimage:
on libraw patch in freeimage:
|
|
A library built from a fork of the official upstream just to satisfy a check dependency for calibre is not worth keeping around. Just get calibre to pass tests without jxrlib and remove the unneeded package. I don't care if we all agree that bundling system libraries in freeimage is a poor decision. The author of freeimage has considered this problem and has actively decided against it. We don't override upstream design decisions because we don't like them. We don't override upstream design decisions because other distributions prefer to. As you can see, the change to override this upstream decision is extensive and difficult to maintain. It's not going to happen here. If the design of freeimage is causing problems, we should consider removing freeimage from our package tree, not pruning it to suit our arbitrary tastes. |
|
I don't think it should be called pruning when it's changing stuff like UINT64 to uint64 in the patch, largely one line of difference per snippet. There's over 40 patches >500 lines long, and I fail to grasp what makes this different compared to, i.e. srcpkgs/contour/patches/fmt-11.patch or srcpkgs/fbreader/patches/qt5.patch In the 7, almost 8 years of existing of the unbundling patch under current name, it barely changed at all: Here's when the 3.18 version of it was introduced: https://src.fedoraproject.org/rpms/freeimage/blob/fc41dd11c6506ce4b5372a61c7ac41263e25c5f9/f/FreeImage_unbundle.patch 10 years if we compare against the 3.17 one: https://src.fedoraproject.org/rpms/freeimage/blob/fc41dd11c6506ce4b5372a61c7ac41263e25c5f9/f/FreeImage_unbundle.patch This does not seem difficult to maintain, though, sure, it is harder than bumping a package when new version gets released (though it simply doesn't here)
It is used directly or indirectly in all these: libogre cegui TSC occt dune3d freecad gmsh horizon kicad librepcb python3-occ I'm not suggesting we follow other distributions just for the sake of it, I'm trying to solve a problem and have found a solution that appears to me to be moderate in the changes it requires, good in compatibility, and wide-spread enough that it becomes an acceptable path forward for the users. |
|
Looking further into the possibility of removing freeimage, it appears that occt can have it disabled (and does so by default nowadays) libogre: suggests using a fork, patching or their rust codepaths instead, can be seen here: OGRECave/ogre@1c447e0 I also found python3-imageio (has freeimage in dependencies) and python3-scikit-image (depends on python3-imageio), both of which you maintain and I initially missed. Please advise. |
|
I don't have a problem with the libraw patch or changing typedefs to support modern compilers. The large patch you've added seems to be an omnibus that solves a few problems and should be split into functional units. I have a big problem overriding explicit upstream decision not to use the censored libraries. When upstream makes a decision with which we don't agree, the choice is to accept the difference or refuse to package the software. Other examples, like the qt4 -> qt5 patch you note, were most likely made to accommodate our packaging decision to remove qt4. There is no similar packaging concern with freeimage. Furthermore, if the authors of that package explicitly declared their objection to supporting qt5, I'd make the same argument there. We should
|
On master, both of these packages fail to build.
Testing the changes
I tested the changes in this PR: briefly — successfully built reverse dependencies of both of these packages with enabled testsuites (where available) on: x86_64, x86_64-musl, i686 and cross
Local build testing
Notes
These changes are based on arch and fedora packages, had to edit in the pkgconfig for jxrlib (so it can be found in cross builds).
Proper cmake support for jxrlib is planned by the maintainer of this fork, but hasn't been pushed yet, so this PR uses a third-party written CMakeLists.txt still.
I tried using cmake build style for freeimage from this fork but it appears that freeimageplus wrapper is not being built in that case, and is not maintained.