[maemo-developers] extras repository problems

From: Graham Cobb g+770 at cobb.uk.net
Date: Sat Jan 17 15:10:53 EET 2009
On Saturday 17 January 2009 12:25:04 Till Harbaum / Lists wrote:
> > Actually, the autobuilder doesn't check installation dependencies, only
> > build
>
> It creates the dependencies. So everything required to build was definitely
> available during the build process and thus everything to run it was also
> there.

No, the autobuilder doesn't create dependencies -- the package debian/control 
file creates the dependencies and **can** specify anything you like.  

However, it **normally** includes "${shlibs:Depends}" to define dependencies 
on shared libraries.  ${shlibs:Depends} is (effectively) set up from commands 
in the debian/rules file.  If you are using the common debhelper calls your 
debian/rules will probably have a call to dh_shlibdeps which is what sets up 
${shlibs:Depends}.

You can read the man pages for dh_shlibdeps and dpkg-shlibdeps to see what 
that does but the bottom line is that it uses data supplied by the shared 
library itself to set the dependency.  So, if that is what is setting the 
dependency (instead of it being hard coded in debian/control) then it should, 
indeed, be being set correctly automatically during the build.  But this is 
not a function of the autobuilder -- it is a combination of your package 
files (debian/control and debian/rules) and the shared library you are 
depending on (libgoocanvas-common in this case).

> > It is a really bad idea for osm2go to have an exact version dependency
> > (the "=" in the dependency) because it means it will be broken if someone
>
> But that's being added automatically by the build process. The question is:
> How and why does this get added?

Presumably you are using dh_shlibdeps, so it is using data supplied by the 
library.  The library tells it what the condition has to be, so it is 
libgoocanvas which is forcing the "=".  You might want to complain to the 
maintainer of that.  There may be a good reason but it does make life 
difficult for packages which need to depend on libgoocanvas.

For your future information, libgoocanvas is probably using dh_makeshlibs to 
set up the dependency information.  Check out the man page for that (and 
the -V option in particular) if you want to see how that is used.

There you are, more than you ever wanted to know about how debhelper handles 
shared library dependencies!

Graham


More information about the maemo-developers mailing list