Package: dante
Version: 1.2.2+dfsg-3
Severity: normal

debian/patches/03-configure.patch patches configure without patching the
files it's generated from.  This is very bad form indeed; it makes it
difficult for others to modify your package in the obvious ways, because
it can explode in confusing ways when you try.  Essentially, it's a
time-bomb left for future developers.  I just spent some time helping
out one of my colleagues who was trying to fix this package for
multiarch (https://bugs.launchpad.net/ubuntu/+source/dante/+bug/816153),
and eventually had to concede that the path of least resistance was
probably to apply another patch solely to configure; but this was really
much more effort than it should have been given a more
safely-constructed source package.

My advice would be as follows (and if you want I can try to put together
a patch that implements this):

 * Drop the CFLAGS mangling.  Proper use of dpkg-buildflags should set
   CFLAGS to something involving "-g -O0" when calling configure if
   DEB_BUILD_OPTIONS=noopt, which will cause configure not to set it to
   "-g -O2".

 * Drop the use of /usr/bin/libtool.  This is problematic (see e.g.
   #682045) and it is better to regenerate your autotools build setup so
   that the in-tree copy of libtool is guaranteed to be up to date.

 * If the patch to LIBRARY_DLOPEN is still needed, change it in
   configure.ac instead.  (But note that this patch is now incorrect,
   because multiarch means that libdl no longer lives in the location
   you've hardcoded, loosely related to the bug above.)

 * Convert to dh-autoreconf, so that your patches only ever need to
   touch the true source files.  This is an excellent system that makes
   this kind of thing a great deal easier (I didn't write it, but I've
   converted all my applicable Debian packages to it and never looked
   back), and it avoids all the problems with Automake's maintainer-mode
   that you can otherwise get when trying to patch the true source
   files.

 * When regenerated with a current version of Autoconf, dante fails to
   build, at least on Ubuntu: AC_AIX is now an alias for
   AC_USE_SYSTEM_EXTENSIONS, and so this defines _GNU_SOURCE; when
   _GNU_SOURCE is in effect, the sockaddr argument type is more complex;
   for some reason the very strange code in acincludes.m4 that tries to
   parse sockaddr argument types falls over on this and
   dlib/interposition.c fails to compile with type mismatch errors.  You
   can probably work around this by commenting out AC_AIX, but it would
   be better to look into why the type detection code fails and fix
   that.

 * You may wish to patch out the "sleep 10" in configure.ac so that
   configure isn't quite so annoying when given options it doesn't
   recognise by dh_auto_configure.

Thanks,

-- 
Colin Watson                                       [cjwat...@ubuntu.com]


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to