[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Questions on packaging.



Alexander Koch wrote:
> G'Evening...
> 
> I've several question and problems with a package I'm trying to build.
> Well, here we go.
> 
> 1. In the rules file some directories /var/run/diablo/, /var/spool/news/
>    are 775 and not 755. How evil is that? Honestly I don't know whether
>    755 breaks anything. And it already was like this in the last two
>    Diablo releases.

 I will defer evilness judgements to others...

> 2. lintian also complains about this:
>    W: diablo: missing-depends-line
> 
>    Hmh. Not good. debian/control says this: "Depends: ${shlibs:Depends}"
>    What am I missing here?

 The variable ${shlibs:Depends} is substituted with the the dynamic-linked
 libraries as found by the step in the rules file that calls debstd
 (or dh_shlibdeps, if you use debhelper).

 You are statically linking (see below), so there are no shared libs to find,
 so the variable stays empty, so lintian complains.

 To quell the error you must compile and link this program dynamically.

> 3. Additional lintian warnings:
>    E: diablo: statically-linked-binary usr/sbin/diablo
>    E: diablo: statically-linked-binary usr/lib/news/dbin/dnewslink
> 
>    When debian/rules is called I get this:
>    [..]
>    dpkg-shlibdeps dbin/diablo
>    dpkg-gencontrol
>    no utmp entry available, using value of LOGNAME ("root") at /usr/lib/dpkg/controllib.pl line 16.
>    dpkg-gencontrol: warning: unknown substitution variable ${shlibs:Depends}
>    [..]
>    What am I doing wrong here?

 dpkg-shlibdeps is not finding any dynamic libs.  dpkg-gencontrol is
 wigging out because it didn't get the info it needs from dpkg-shlibdeps.
 
 You should get a file in the debian directory (after running build)
 named 'substvars' that has the string to substitute for ${shlibs:Depends}
 

 If seems the upstream author decided to statically link all the libraries
 rather than worry about dependancies and possibly getting bug reports
 because his users did not have the required libraries.

 Because of the wonderful dpkg, you don't have to worry about that...
 You can explicitly specify which libraries are needed and be assured
 that they exist on the user's machine.

 I suggest you read the gcc documentation about dynamic/static linking.
 (look at the -fPIC option), change the makefile to link dynamically,
 and your lintian problems will disappear!

 Good luck,
 -Mitch

-- 
This .sig space available for lease.  Please contact:
Mitch Blevins | mitch_blevins@mindspring.com

Attachment: pgpLOuQlyH3nT.pgp
Description: PGP signature


Reply to: