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

Reply via email to