Re: [vserver] util-vserver debian build warnings util-vserver 0.30.216-pre3004

From: Corey Wright <undefined_at_pobox.com>
Date: Thu 29 Dec 2011 - 04:51:19 GMT
Message-Id: <20111228225119.7760c693.undefined@pobox.com>

On Wed, 28 Dec 2011 19:02:21 +0100
Ghislain <gadnet@aqueos.com> wrote:

> i just built packages for debian on : util-vserver 0.30.216-pre3004
>
> I got some warning so i thinked perhaps it could be interesting for
> you to know:
>
> dpkg-shlibdeps: warning:
> debian/util-vserver-python/usr/lib/pyshared/python2.6/_libvserver.so
> contains an unresolvable reference to symbol Py_BuildValue: it's
> probably a plugin.
> dpkg-shlibdeps: warning: 12 other similar warnings have been skipped
> (use -v to see them all).

that's expected as _libvserver.so is a python module ("plugin"). for
example, see the below transcript where i demonstrate how the same "issue"
exists for _snackmodule.so (from the python-newt package) and the undefined
symbol is located in the python interpreter (which loads _snackmodule.so and
_libvserver.so) which is rather difficult for dpkg-shlibdeps to
programmatically discern.

$ cat /etc/issue.net
Ubuntu 10.04.3 LTS
$ ls /usr/lib/python2.6/dist-packages/_*.so
/usr/lib/python2.6/dist-packages/_snackmodule.so
/usr/lib/python2.6/dist-packages/_xapian.so
$ nm -D /usr/lib/python2.6/dist-packages/_snackmodule.so | grep Py_BuildValue
                 U Py_BuildValue
$ ldd /usr/lib/python2.6/dist-packages/_*.so
/usr/lib/python2.6/dist-packages/_snackmodule.so:
        linux-vdso.so.1 => (0x00007fffacdff000)
        libnewt.so.0.52 => /usr/lib/libnewt.so.0.52 (0x00007fd61e63f000)
        libc.so.6 => /lib/libc.so.6 (0x00007fd61e2bc000)
        libslang.so.2 => /lib/libslang.so.2 (0x00007fd61df57000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd61ea7d000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007fd61dd53000)
        libm.so.6 => /lib/libm.so.6 (0x00007fd61dad0000)
$ nm -D $(which python) | grep Py_BuildValue
00000000004c4b30 T Py_BuildValue
00000000004c4a90 T _Py_BuildValue_SizeT

yes, that was on ubuntu lucid, not debian squeeze, as that's what the desktop
i'm current on runs, but as ubuntu is a debian derivative and lucid is not
that far removed from squeeze, it should be representative enough.

> dpkg-gencontrol: warning: Depends field of package util-vserver: unknown
> substitution variable ${shlibs:Depends}
> dpkg-gencontrol: warning: Depends field of package util-vserver-core:
> unknown substitution variable ${shlibs:Depends}
> dpkg-gencontrol: warning: Depends field of package util-vserver-sysv:
> unknown substitution variable ${shlibs:Depends}
> dpkg-gencontrol: warning: Depends field of package libvserver0-dev:
> unknown substitution variable ${shlibs:Depends}

these warnings are because dh_shlibdeps is not adding any associated lines
(eg "shlibs:Depends=libc6 (>= 2.3)") to the associated binary packages'
substvars files (eg
util-vserver-0.30.216-pre3004/debian/util-vserver.substvars) and that's
because those binary packages (ie util-vserver{,-core,-sysv} &
libvserver0-dev) don't depend on any shared libraries (ie they don't contain
any dynamically linked executables/libraries).

> dpkg-gencontrol: warning: package util-vserver-python: unused
> substitution variable ${python:Versions}

i believe this is because dh_python2 is not getting called and providing the
substitution for that variable. the util-vserver-python binary package
should depend on a version of python, but it doesn't (something that i just
noticed) because this substitution variable is going unused. i think the
debian/control file is either the default or too generic and therefore not
calling dh_python2 which would figure out which version of python the binary
package was built against and provide the necessary substitution.

do not interpret any of the above as a proficiency in building debian
packages. i merely understand the associated concepts enough to reverse
engineer the process when necessary, but i don't know enough specifics to
improve/correct the source package (except removing extraneous
"${shlibs:Depends}" from debian/control and somehow modifying debian/rules to
call dh_python2 for util-vserver-python).

> created them on debian squeeze 64bits with:
>
> aptitude install build-essential debhelper gawk dietlibc-dev
> libnss3-dev po-debconf e2fslibs-dev pkg-config python-dev ctags;
> dpkg-buildpackage -rfakeroot;

i build the util-vserver source package on debian squeeze amd64 (server) and
ubuntu lucid amd64 (desktop/backup) as follows:

# apt-get install debhelper gawk dietlibc-dev net-tools vlan iptables procps module-init-tools libnss3-dev po-debconf e2fslibs-dev pkg-config python-dev ctags
# dpkg-buildpackage -D -us -uc

of course i'm doing it in a minimal pbuilder chroot so i don't have to
install some packages (eg build-essential) but have to install others (eg
net-tools, vlan, iptables).

my build log for pre3004 is attached for comparison and the resulting binary
packages (ie libvserver0 and util-vserver{,-build,-core,-sysv}) appear to
install and execute properly.

> Regards,
> Ghislain.

corey

--
undefined@pobox.com

Received on Thu Dec 29 04:51:53 2011
[Next/Previous Months] [Main vserver Project Homepage] [Howto Subscribe/Unsubscribe] [Paul Sladen's vserver stuff]
Generated on Thu 29 Dec 2011 - 04:51:54 GMT by hypermail 2.1.8