FS#13412 - PKGBUILD dependency updates

Attached to Project: Arch Linux
Opened by Justin Davis (juster) - Sunday, 22 February 2009, 05:30 GMT
Last edited by Eric Belanger (Snowman) - Sunday, 22 March 2009, 05:49 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

heimdal is listed as a dependency but is not required by imagemagick, but instead by ghostscript. This was probably added because ghostscript failed to add it to their list of dependencies. I have submitted a bug report for the ghostscript package re: heimdal.

openexr is a dependency of imagemagick. The version of openexr I had, at 1.4.1, was too old and did not work. At least openxr>1.4.1 should be listed as a dependency to prevent this from happening.

Additional info:
* package version: 6.4.2

Steps to reproduce:
namcap will confirm that heimdal is not required.
This task depends upon

Closed by  Eric Belanger (Snowman)
Sunday, 22 March 2009, 05:49 GMT
Reason for closing:  Not a bug
Comment by Eric Belanger (Snowman) - Sunday, 22 February 2009, 07:20 GMT
Heimdal is required. Running ldd on imagemagick binaries/libs will list heimdal libraries.

As for openexr, I'll change it in the PKGBUILD. However, it is usually assumed that users keep their system up-to-date. That would present problems like this one.
Comment by Justin Davis (juster) - Sunday, 22 February 2009, 20:39 GMT
The heimdal libraries are not direct library dependencies of ImageMagick but instead dependencies of ghostscript and libcups libraries. You can see the direct dependencies of the libraries by using the readelf command, for example 'readelf --dynamic /usr/lib/libMagickWand.so'. This is why 'namcap' will show that heimdal is not necessary as a requirement, because it is already covered by libcups, a dependency of pacman.

'ldd' will show you a binary's dependencies as well as it's dependencies' dependencies, etc, until all required libraries are found.

The reason I had this problem is heimdal was upgraded, but ghostscript and cups (the libraries directly using heimdal) were still using the old version. But the old version of the heimdal library file was removed when upgrading. Thus imagemagick, ghostscript, and libcups all stopped working.

I forgot to mention the most important thing! I'm sorry. ghostscript needs to be >= 8.64. This will in effect upgrade heimdal automatically for folks like me who aren't completely up to date and will match the build.
Comment by Jan de Groot (JGC) - Monday, 23 February 2009, 08:06 GMT
Versioned dependencies using >= don't make real sense for these packages. Yes, this will cause a working package for the one you're installing, but it will break all the others on your system. That's why it's so important to pacman -Syu before you report problems about dependency issues.
Comment by Justin Davis (juster) - Monday, 23 February 2009, 16:45 GMT
Re:Jan De Groot

Please re-read my comment from Sunday. I am only posting this because it _did_ break my system. Not only did imagemagick not work, but it broke ghostscript and libcups. This broke any app that depended on these three libraries.

How? It bypassed the dependency chain and updated a dependency of a dependency.

If people want to use imagemagick, they don't have a choice. They have to use the versions I mentioned, why not specify them? Will this possibly break older versions of packages who depend on ghostscript, libcups, and openexr. Possibly. But right now it is 100% certainty the imagemagick package will break the system of anyone using ghostscript 8.63 in a much less predictable way. This includes old packages depending on ghostscript, libcups, etc that you are apparently concerned about breaking.

I have upgraded ghostscript and openexr to the latest versions and my system still works.
Comment by Jan de Groot (JGC) - Monday, 23 February 2009, 17:44 GMT
As I said, no matter what you do with versioned dependencies, you will end up with some broken packages on your system. Either the one you just installed because it didn't pull in the new heimdal, or otherwise all the other packages that are already on your system before your imagemagick installation pulled in the versioned dependency that is no longer backwards compatible to the packages on your system.

The only way to fix these issues is to make packages themselves versioned. Heimdal for example would provide libkrb5=25 and some other libraries. Packages that have been built against this version of heimdal shouldn't depend on heimdal, but on the versioned provide they link to. This has two nasty downsides though: our distribution won't be KISS anymore, and even worse, people will run into dependency hell when they run pacman -Syu because some unofficial package on their system breaks these rules or hasn't been updated yet. They will end up filing bugreports for bugs in unofficial packages, or just pacman -Sd things and still get a broken system.

Loading...