Red Hat Bugzilla – Bug 1076793
InsightToolkit bundles multiple system libraries
Last modified: 2017-08-15 03:35:21 EDT
InsightToolkit seems to bundle multiple system libraries, see Modules/ThirdParty in InsightToolkit-debuginfo and Modules/ThirdParty/GDCM/src/gdcm/PACKAGER in its sources.
More specifically, at least these libs exist as separate system ones: expat, gdcm, nifticlib, openjpeg
thanks for reporting. We really tried to unbundle as much libraries as we could at review time. Please see https://bugzilla.redhat.com/show_bug.cgi?id=539387
The package does bundle copies of system libraries in the directory Modules/ThirdParty but it doesn't use them durign build stage if systemd-wide copies are available (see -DITK_USE_SYSTEM_SOMETHING switches in the spec-file)
We used this approach because upstream ships a very carefully crafted cmake build systems which needed to be patched if we removed the original libraries. I will check again if this is the case with the last version.
I'm reviewing the installed files from the binary package and it seems to me that at least gdcm is correctly linked not bundled.
I'll run a more extensive analysis for expat, nifticlib and openjpeg.
Thanks and best regards,
(In reply to Mario Ceresa from comment #1)
> The package does bundle copies of system libraries in the directory
> Modules/ThirdParty but it doesn't use them durign build stage if
> systemd-wide copies are available (see -DITK_USE_SYSTEM_SOMETHING switches
> in the spec-file)
That's not quite enough, the 3rd party sources should be removed in %prep to ensure they don't get accidentally used. See links in the initial comment, specifically https://fedoraproject.org/wiki/Packaging:Treatment_Of_Bundled_Libraries#Packages_with_Bundled_Libraries
> I'll run a more extensive analysis for expat, nifticlib and openjpeg.
Presence of their sources in -debuginfo is a strong indicator that the bundled copies are being used.
$ rpm -qlp http://kojipkgs.fedoraproject.org//packages/InsightToolkit/4.5.1/1.fc21/x86_64/InsightToolkit-debuginfo-4.5.1-1.fc21.x86_64.rpm | grep 'ThirdParty/\(Expat\|NIFTI\|OpenJPEG\)'
With current 4.7.0, the actual source files I see in the debuginfo package is:
and a bunch in
which appears to be itk modified code or wrapper.
Would be nice to package nrrd separately, but I'm a bit less worried about it as it is just a header file.
I believe you may be looking only at files in /usr/src/debug/InsightToolkit-4.7.0/x86_64-redhat-linux-gnu/Modules/ThirdParty, there's a lot more in /usr/src/debug/InsightToolkit-4.7.0/Modules/ThirdParty: DICOMParser, DoubleConversion, GDCM, GIFTI, KWSys, MetaIO, NIFTI, Netlib, NrrdIO, OpenJPEG, VNLInstantiation
rpm -qlp https://kojipkgs.fedoraproject.org//packages/InsightToolkit/4.7.0/3.fc22/x86_64/InsightToolkit-debuginfo-4.7.0-3.fc22.x86_64.rpm | grep ThirdParty
Ah, you are correct.
Started looking at unbundling DoubleConversion, looks like we need to build it with cmake.
Using system nifti requires upstream support: https://issues.itk.org/jira/browse/ITK-3349
OpenJPEG - https://issues.itk.org/jira/browse/ITK-3350
Not yet in Fedora: DICOMParser, GIFTI, KWSys, MetaIO, NrrdIO, Netlib(slatec), VNLInstantiation
# remove source files of external dependencies that itk gets linked against
# DICOMParser, GIFTI, KWSys, MetaIO, NrrdIO, Netlib, VNLInstantiation are not
# yet in Fedora
# DoubleConversion still seems to need the source present
# NIFTI needs support - https://issues.itk.org/jira/browse/ITK-3349
# OpenJPEG - https://issues.itk.org/jira/browse/ITK-3350
find Modules/ThirdParty/* \( -name DICOMParser -o -name DoubleConversion -o -name GIFTI -o -name KWSys -o -name MetaIO -o -name NIFTI -o -name NrrdIO -o -name Netlib -o -name OpenJPEG -o name VNLInstantiation \) -prune -o -regextype posix-extended -type f \
-regex ".*\.(h|hxx|hpp|c|cc|cpp|cxx|txx)$" -not -iname "itk*" -print0 | xargs -0 rm -fr
has the advantage of removing any new items that might appear and explicitly listing what is still bundled.
This bug appears to have been reported against 'rawhide' during the Fedora 22 development cycle.
Changing version to '22'.
More information and reason for this action is here:
Another one is kwsys (http://public.kitware.com/gitweb?p=KWSys.git) bundled in Modules/ThirdParty/KWSys. It's declared a copylib by upstream (kitware.com, same as InsightToolkit), but it should be a proper shared library, as it's much too large (though partial bundling is possible) and it seems to be bundled by all projects from kitware.
This came up during the discussion of FPC ticket #555 (https://fedorahosted.org/fpc/ticket/555).
MetaIO can be unbundled, according to: http://www.itk.org/Wiki/MetaIO/Documentation .
This bug appears to have been reported against 'rawhide' during the Fedora 24 development cycle.
Changing version to '24'.
More information and reason for this action is here:
This package has changed ownership in the Fedora Package Database. Reassigning to the new owner of this component.
This message is a reminder that Fedora 24 is nearing its end of life.
Approximately 2 (two) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 24. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora 'version'
Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version'
to a later Fedora version.
Thank you for reporting this issue and we are sorry that we were not
able to fix it before Fedora 24 is end of life. If you would still like
to see this bug fixed and are able to reproduce it against a later version
of Fedora, you are encouraged change the 'version' to a later Fedora
version prior this bug is closed as described in the policy above.
Although we aim to fix as many bugs as possible during every release's
lifetime, sometimes those efforts are overtaken by events. Often a
more recent Fedora release includes newer upstream software that fixes
bugs or makes them obsolete.
Not much progress here, bumping to rawhide to avoid auto closure. Could you at least add the missing Provides: bundled(foo) in the meantime?
This bug appears to have been reported against 'rawhide' during the Fedora 27 development cycle.
Changing version to '27'.