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

debian/rules and wrong run-time library



Hi,  This is follow to a few posts on debian-user.

I'm the maintainer of Swish-e (the source, not the debian maintainer).  I used dh_make and
the Debian New Maintainers' Guide to create my debian directory basically without any 
changes from what dh_make setup.

Swish-e build system uses autotools, and uses libtool to build a (shared on most platforms) 
library called libswish-e.  The swish-e binary is linked against this library.  Libtool 
makes all this magic happen.  

Specifying the prefix works as expected.  For example, building for a new prefix:

   moseley@bumby:~/f$ ../swish-e/configure --prefix=$HOME/f2 >/dev/null \
                && make >/dev/null
                && make install >/dev/null

note that the run-time linkages are correct (they point to the libswish-e I just built):

   moseley@bumby:~/f$ ldd ~/f2/bin/swish-e
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0x4001b000)
   >>>  libswish-e.so.2 => /home/moseley/f2/lib/libswish-e.so.2 (0x400fc000)  <<<<<
        libz.so.1 => /lib/libz.so.1 (0x40118000)
        libm.so.6 => /lib/libm.so.6 (0x40125000)
        libc.so.6 => /lib/libc.so.6 (0x40146000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

So notice that swish-e will use /home/moseley/f2/lib/libswish-e.so.2 as expected.

First problem is that using debian/rules to build ends up swish-e finding the wrong library:

   moseley@bumby:~/f$ ldd /usr/bin/swish-e
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0x4001b000)
  >>>   libswish-e.so.2 => /usr/local/lib/libswish-e.so.2 (0x400fc000)  <<<<<
        libz.so.1 => /lib/libz.so.1 (0x40118000)
        libm.so.6 => /lib/libm.so.6 (0x40125000)
        libc.so.6 => /lib/libc.so.6 (0x40146000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Notice that it built swish-e and is using the library in /usr/local/lib (which is there from 
building swish-e from soucre on my machine).

The configure line in as expected:

  /configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr \
        --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info

I don't see anything unusual in the rules file, so I'm not sure what else could be causing 
that.

Also, I received a few errors during the buiding of the package:

dpkg-shlibdeps: warning: could not find any packages for
/usr/local/lib/libswish-e.so.2 (libswish-e.so.2)

dpkg-shlibdeps: warning: unable to find dependency information for shared
library libswish-e (soname 2, path /usr/local/lib/libswish-e.so.2,
dependency field Depends)

I assume it's thinking that the library is suppose to be installed separately.  What needs 
to be fixed there?

Then there is:

dh_gencontrol
dpkg-gencontrol: warning: unknown substitution variable ${misc:Depends}

Hum, that was added by dh_make.


Thanks,




-- 
Bill Moseley
moseley@hank.org



Reply to: