Hi Jonas,
On Wed, Jul 20, 2016 at 01:58:18PM +0200, Jonas Smedegaard wrote:
> Quoting Andreas Tille (2016-07-20 13:06:05)
> > when trying to build ncbi-vdb[1] which has an admittedly hard to
> > understand self-made build system I end up with
> >
> > d-shlibmove --commit \
> > --multiarch \
> > --devunversioned \
> > --exclude-la \
> > --movedev debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/*.a
> > usr/lib/x86_64-linux-gnu \
> > --movedev interfaces/ngs/ncbi/NGS.hpp usr/include/ncbi-vdb \
> > debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-vdb.so
> > Library package automatic movement utility
> > /usr/bin/d-shlibmove:
> > [debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-vdb.a] is not a
> > valid shared library file name
> > debian/rules:43: recipe for target 'override_dh_auto_install' failed
> >
> >
> > I agree that *.a is no valid shared library file name - but why does
> > d-shlibmove assume this is regarded as a shared lib?
> >
> > Jonas suggested to discuss this in BTS and so here is the according
> > bug.
>
> Thanks!
>
> I honestly don't know if d-shlibs has spotted an issue with how the
> library linkage is done, or you've revealed a bug in d-shlibs.
I think I found the cause of the issue (I intentionally do not write
bug). The thing is that wildcards seem to confuse d-shlibmove. If
I specify all single *.a libs that are needed to be moved d-shlibmove
works fine (see commit 66ce4e9a7404cee9e06f24cbf97c45db48c707d5).
Since I learned afterwards that libncbi-vdb.a should not be moved by
--movedev since it is correctly moved automatically to verify the thesis
that wildcards are not accepted I invented a wildcard expression finding
all the others. So if I build using
$ git diff
diff --git a/debian/rules b/debian/rules
index ae6663d..1a219c5 100755
--- a/debian/rules
+++ b/debian/rules
@@ -51,8 +51,6 @@ override_dh_auto_install:
--multiarch \
--devunversioned \
--exclude-la \
- --movedev
debian/tmp/usr/$(DEBPKGNAME)/$(OS)/gcc/$(CPU)/dbg/lib/libkdf5.a
usr/lib/$(BUILDTYPE) \
- --movedev
debian/tmp/usr/$(DEBPKGNAME)/$(OS)/gcc/$(CPU)/dbg/lib/libncbi-ngs-c++.a
usr/lib/$(BUILDTYPE) \
- --movedev
debian/tmp/usr/$(DEBPKGNAME)/$(OS)/gcc/$(CPU)/dbg/lib/libncbi-wvdb.a
usr/lib/$(BUILDTYPE) \
+ --movedev
debian/tmp/usr/$(DEBPKGNAME)/$(OS)/gcc/$(CPU)/dbg/lib/lib*[+wkf]*.a
usr/lib/$(BUILDTYPE) \
--movedev interfaces/ngs/ncbi/NGS.hpp
usr/include/$(DEBPKGNAME) \
debian/tmp/usr/$(DEBPKGNAME)/$(OS)/gcc/$(CPU)/dbg/lib/libncbi-vdb.so
a call using `bash -x` leads to the log:
+ echo 'Library package automatic movement utility'
Library package automatic movement utility
+ CONTROL=debian/control
++ tempfile
+ execscript=/tmp/fileLDyARH
++ tempfile
+ INSTALLFILE_SHLPKG=/tmp/fileCuGwLH
++ tempfile
+ INSTALLFILE_DEVPKG=/tmp/fileFJ7LyI
+ cat
+ EXTRALIBS=()
+ SUFFIX=
+ DEVSUFFIX=
+ TRANSITIONSUFFIX=
+ DOIT=no
+ DEVUNVERSIONED=no
+ IGNORELIBDEP=no
+ INCLUDEA=yes
+ INCLUDELA=yes
+ MULTIARCH=no
+ '[' -n --commit ']'
+ case "$1" in
+ DOIT=yes
+ shift
+ '[' -n --multiarch ']'
+ case "$1" in
+ MULTIARCH=yes
+ shift
+ '[' -n --devunversioned ']'
+ case "$1" in
+ DEVUNVERSIONED=yes
+ shift
+ '[' -n --exclude-la ']'
+ case "$1" in
+ INCLUDELA=no
+ shift
+ '[' -n --movedev ']'
+ case "$1" in
+ echo 'debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libkdf5.a
debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-ngs-c++.a'
+ shift
+ shift
+ shift
+ '[' -n debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a ']'
+ case "$1" in
+ break
+ DEVLIB_TO_CHECK=()
+ DEVLIB_TO_CHECK+=("$1")
+ readlibnameinfo
debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a
+ LIBNAME=debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a
+ '[' -z debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a ']'
+ echo debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a
+ grep '.so$'
+ echo 'd-shlibmove:
[debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a] is not a
valid shared library file name'
d-shlibmove: [debian/tmp/usr/ncbi-vdb/linux/gcc/x86_64/dbg/lib/libncbi-wvdb.a]
is not a valid shared library file name
+ exit 1
debian/rules:43: die Regel für Ziel „override_dh_auto_install“ scheiterte
make[1]: *** [override_dh_auto_install] Fehler 1
So d-shlibmove interprets the last match of the wildcard expression as
shared library name (which is obviosly not in this case). Since I found
a solution for this package and I'm not really sure I'll leave it to your
decision whether this should be considered a bug and should be closed or
whether you close the bug report.
> Will you have the honour?
It was a pleasure. ;-)
Kind regards
Andreas.
--
http://fam-tille.de