build dependency to boost version >= 1.35

Asked by b3nn0

I created a PPA and tried to upload my source package (for Jaunty), what worked great. However, building fails because of build dependency errors. It depends on boost-thread version 1.35 or higher. So my build-dependency line looks like this:
libboost-thread-dev (>=1.35.0) | libboost-thread1.37-dev | libboost-thread1.35-dev
Jaunty offers a libboost-thread-dev metapackage which will install version 1.34.0. However, there are libboost-thread1.37-dev and libboost-thread1.35-dev in the repository as well.
The first part is just so I don't need to change the build dependencies when building for karmic (the meta package there points to a newer version). Also, 1.37 is more recomended than 1.35. Therefore, it's first in the line. However, if 1.35 is already installed, that's fine with me.
The problem is, that when your servers try to build this package, they always fail. The first option (libboost-thread-dev (>=1.35.0)) can not be satisfied, that's ok. But the build log tells me that it can't find any package called libboost-thread1.37-dev or libboost-thread1.35-dev. But they should exist (at least i can apt-get install them on my computer).
log output: libboost-thread-dev(inst 1.34.1-15ubuntu3 ! >= wanted 1.35.0)|libboost-thread1.37-dev(missing)|libboost-thread1.35-dev(missing)

I now want to know how to make my package correctly depend on either of 1.37 or 1.35.
Thanks in advance.

Question information

English Edit question
Launchpad itself Edit question
LaMont Jones Edit question
Solved by:
Last query:
Last reply:
Revision history for this message
Jonathan Lange (jml) said :

Hello Adrian,

Apparently this was an issue with our internal build system, and this issue has been fixed.

Could you please try again and see if the problem still occurs?


Revision history for this message
b3nn0 (agib) said :

Still the same problem :(
"The following NEW packages will be installed:
[...] libboost-dev libboost-serialization-dev libboost-serialization1.34.1 libboost-thread-dev libboost-thread1.34.1[...]"

"After installing, the following source dependencies are still unsatisfied:
libboost-thread-dev(inst 1.34.1-15ubuntu3 ! >= wanted 1.35.0)|libboost-thread1.37-dev(missing)|libboost-thread1.35-dev(missing)
Source-dependencies not satisfied; skipping downloaddaemon"

Home you can fix the problem or give me a hint what I am doing wrong.
Thanks for the fast answer anyway, hope we can get that done.

Revision history for this message
b3nn0 (agib) said :

Okay, I just fixed the problem now by using different build dependency lines for Jaunty and karmic.
if I put the libboost-thread1.37-dev package in front, it will install that. However, I think the described problem could be seen as a bug (no correct evaluation of version dependencies of build packages. The wrong version will be installed and the | dependencies are not checked when this mistake is detected).
Thanks anyway.

Revision history for this message
LaMont Jones (lamont) said :

The rules for dependency handling are, um, complicated.

If there is a real package, it wins
versions are not allowed on virtual packages (Provides:)

The first package that exists in the package list is the one that wins for doing the comparison. Since libboost-thread-dev exists, it gets used.

alternative dependencies are an area of great pain and confiusion/contention. They should, realistically, be avoided whenever possible.

For extra fun, note that pbuilder intentionally starts at the other end, since "[any of the dependencies should work just as well as any other]" - at least last I heard.

The general best solution is to use different Depends lines for the package as you need/want it.