Bug#753362: libjpeg6b: build with dh-autoreconf
On 07/05/2014 01:36 PM, Bill Allombert wrote: On Tue, Jul 01, 2014 at 02:52:41PM -0300, Mauricio Faria de Oliveira wrote: [...] That's certainly understandable. Nonetheless, I'd think the problem is not tied to future versions only, but old ones too; 1.11.x seems old already (2009/2012). Anything >= 1.11.2 would fail for de-ANSI-fication. It establishes that automake developers are willing to break the API in minor releases. This is a very bad sign. Yes. I think that change is a bit weird for minor releases too. [...] 3) libjpeg6 releases finished [...] 3) is wrong :) Thanks for correcting me :) I admit I may have not read enough about it, just some skimming over ijg.org and libjpeg.sf.net. But anyway, I have applied your patch since it is the best fix all-round. Thanks again for your effort, Glad to contribute. The package now builds properly on ppc64el: Package: libjpeg62 Source: libjpeg6b Version: 6b2-1 [..] -rw-r--r-- root/root170072 2014-07-05 22:09 ./usr/lib/powerpc64le-linux-gnu/libjpeg.so.62.0.0 Thank you. -- Mauricio Faria de Oliveira IBM Linux Technology Center -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#753362: libjpeg6b: build with dh-autoreconf
On Tue, Jul 01, 2014 at 02:52:41PM -0300, Mauricio Faria de Oliveira wrote: > On 07/01/2014 11:38 AM, Bill Allombert wrote: > >On Tue, Jul 01, 2014 at 10:58:17AM -0300, Mauricio Faria de Oliveira wrote: > >>>Clearly, the original files were generated without patching. > >> > >>Agreed. I would think it might have happened when ansi2knr was not > >>yet deprecated, or a local option was used in a Makefile.am, maybe > >>both.. maybe none. :) > > > >According to the embedded comments, the files were generated by 1.11.1. > > Ok, so that matches the first option; de-ANSI-fication was deprecated > slightly afterwards, in automake 1.11.*2*: > > "[...] this change should end up into 1.11.2," [1] > > $ fgrep de-ANSI-fication automake-1.11.*/NEWS > automake-1.11.1/NEWS:* Automatic de-ANSI-fication cleaned up. > automake-1.11.2/NEWS: - The Automake support for automatic > de-ANSI-fication will be removed in > automake-1.11.2/NEWS:* Automatic de-ANSI-fication cleaned up. > > > >>If I got you right, the inconvenience itself seems to be carrying > >>a patch only for that matter, if an env var/cmdline arg could do. > >>So, for that, I wouldn't know another option. > >> > >>Would that be OK with the rationale above? > > > >I am concerned that, if we cannot rebuild the files from the upstream source > >without patching, we cannot trust future versions of autoconf/automake to > >process our patched code correctly. This leads to a huge maintainance cost. > > That's certainly understandable. Nonetheless, I'd think the problem is > not tied to future versions only, but old ones too; 1.11.x seems old > already (2009/2012). Anything >= 1.11.2 would fail for de-ANSI-fication. It establishes that automake developers are willing to break the API in minor releases. This is a very bad sign. > Interestingly, that thread also mentions libjpeg8c was affected, and > then 8*d* (next version) introduced -Wno-obsolete in configure.ac. > > So I'd think they also chose to stick no -Wno-obsolete rather than > removing ansi2knr on libjpeg8; and then libjpeg*9* actually removed it. Indeed, I am aware of that. > Now, well, AFAICT there are not many options, since: > 1) automake 1.11.x releases finished > 2) automake 1.11.2+ only handle de-ANSI-fication with -Wno-obsolete > 2) automake 1.12.x releases don't handle de-ANSI-fication > 3) libjpeg6 releases finished > > So autoreconf on libjpeg6 is tied to 1.11.x, and it would require > -Wno-obsolete (adopted on libjpeg8 from 8c to 8d). > > Sure enough, I would be happy to provide a patch that only updates > the minimum required pieces for building on ppc64el, and not doing > autoreconf at all. (the other way around :) > > What is your take on that? 3) is wrong :) But anyway, I have applied your patch since it is the best fix all-round. Thanks again for your effort, -- Bill. Imagine a large red swirl here. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#753362: libjpeg6b: build with dh-autoreconf
On 07/01/2014 11:38 AM, Bill Allombert wrote: On Tue, Jul 01, 2014 at 10:58:17AM -0300, Mauricio Faria de Oliveira wrote: Clearly, the original files were generated without patching. Agreed. I would think it might have happened when ansi2knr was not yet deprecated, or a local option was used in a Makefile.am, maybe both.. maybe none. :) According to the embedded comments, the files were generated by 1.11.1. Ok, so that matches the first option; de-ANSI-fication was deprecated slightly afterwards, in automake 1.11.*2*: "[...] this change should end up into 1.11.2," [1] $ fgrep de-ANSI-fication automake-1.11.*/NEWS automake-1.11.1/NEWS:* Automatic de-ANSI-fication cleaned up. automake-1.11.2/NEWS: - The Automake support for automatic de-ANSI-fication will be removed in automake-1.11.2/NEWS:* Automatic de-ANSI-fication cleaned up. If I got you right, the inconvenience itself seems to be carrying a patch only for that matter, if an env var/cmdline arg could do. So, for that, I wouldn't know another option. Would that be OK with the rationale above? I am concerned that, if we cannot rebuild the files from the upstream source without patching, we cannot trust future versions of autoconf/automake to process our patched code correctly. This leads to a huge maintainance cost. That's certainly understandable. Nonetheless, I'd think the problem is not tied to future versions only, but old ones too; 1.11.x seems old already (2009/2012). Anything >= 1.11.2 would fail for de-ANSI-fication. Interestingly, that thread also mentions libjpeg8c was affected, and then 8*d* (next version) introduced -Wno-obsolete in configure.ac. So I'd think they also chose to stick no -Wno-obsolete rather than removing ansi2knr on libjpeg8; and then libjpeg*9* actually removed it. Now, well, AFAICT there are not many options, since: 1) automake 1.11.x releases finished 2) automake 1.11.2+ only handle de-ANSI-fication with -Wno-obsolete 2) automake 1.12.x releases don't handle de-ANSI-fication 3) libjpeg6 releases finished So autoreconf on libjpeg6 is tied to 1.11.x, and it would require -Wno-obsolete (adopted on libjpeg8 from 8c to 8d). Sure enough, I would be happy to provide a patch that only updates the minimum required pieces for building on ppc64el, and not doing autoreconf at all. (the other way around :) What is your take on that? Thanks! [1] http://lists.gnu.org/archive/html/automake/2011-06/msg7.html -- Mauricio Faria de Oliveira IBM Linux Technology Center -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#753362: libjpeg6b: build with dh-autoreconf
On Tue, Jul 01, 2014 at 10:58:17AM -0300, Mauricio Faria de Oliveira wrote: > >Clearly, the original files were generated without patching. > > Agreed. I would think it might have happened when ansi2knr was not > yet deprecated, or a local option was used in a Makefile.am, maybe > both.. maybe none. :) According to the embedded comments, the files were generated by 1.11.1. > If I got you right, the inconvenience itself seems to be carrying > a patch only for that matter, if an env var/cmdline arg could do. > So, for that, I wouldn't know another option. > > Would that be OK with the rationale above? I am concerned that, if we cannot rebuild the files from the upstream source without patching, we cannot trust future versions of autoconf/automake to process our patched code correctly. This leads to a huge maintainance cost. Cheers, Bill. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#753362: libjpeg6b: build with dh-autoreconf
On 07/01/2014 10:09 AM, Bill Allombert wrote: Is it possible to pass -Wno-obsolete as an argument to automake instead of patching configure.ac ? It seems not to be possible. Even with -Wno-obsolete (or its variant) specified, automake fails with that error. $ autoreconf -fvi -Wno-obsolete [...] autoreconf: running: automake-1.11 --add-missing --copy --force-missing *--warnings=no-obsolete* [...] configure.ac:24: automatic de-ANSI-fication support is deprecated autoreconf: automake-1.11 failed with exit status: 1 $ $ automake-1.11 *-Wno-obsolete* [...] configure.ac:24: automatic de-ANSI-fication support is deprecated $ I believe the value is re-set when parsing AM_INIT_AUTOMAKE. I looked in some of automake's perl modules, but couldn't find its right spot. from Automake/Options.pm: """ This packages manages Automake's options and strictness settings. Options can be either local or global. Local options are set using an C variable in a F and apply only to this F. Global options are set from the command line or passed as an argument to C, they apply to all Fs. """ So maybe local options override global options. Clearly, the original files were generated without patching. Agreed. I would think it might have happened when ansi2knr was not yet deprecated, or a local option was used in a Makefile.am, maybe both.. maybe none. :) If I got you right, the inconvenience itself seems to be carrying a patch only for that matter, if an env var/cmdline arg could do. So, for that, I wouldn't know another option. On the side of causing no difference compared without -Wno-obsolete, I can confirm the packages generated in ppc64el (with that patch) and powerpc are identical in terms of files -- so the patch/option doesn't affect the expected build output: $ for dir in ppc64el/ powerpc/; do cd $dir && mkdir contents && for deb in *.deb; do dpkg-deb -c $deb | cut -d. -f2- | sort | sed 's,\(powerpc64le\|powerpc\),GNU_ARCH,g' > contents/${deb%%_*}; done && cd .. ; done $ diff -r ppc64el/contents/ powerpc/contents/ $ echo $? 0 Would that be OK with the rationale above? Thank you, -- Mauricio Faria de Oliveira IBM Linux Technology Center -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#753362: libjpeg6b: build with dh-autoreconf
On Mon, Jun 30, 2014 at 06:35:59PM -0300, Mauricio Faria de Oliveira wrote: > Package: src:libjpeg6b > Version: 6b1-4 > Tags: patch > User: debian-powe...@lists.debian.org > Usertags: ppc64el > User: debian-de...@lists.debian.org > Usertags: autoreconf > > Hi Bill, > > This patch runs dh-autoreconf when building libjpeg6b. > > It is required for generating shared libraries on ppc64el and probably > other new ports as well. > > It includes a patch to add -Wno-obsolete in AM_INIT_AUTOMAKE, due to > ansi2knr being deprecated in automake1.11. Thanks! Is it possible to pass -Wno-obsolete as an argument to automake instead of patching configure.ac ? Clearly, the original files were generated without patching. Cheers, -- Bill. Imagine a large red swirl here. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#753362: libjpeg6b: build with dh-autoreconf
Package: src:libjpeg6b Version: 6b1-4 Tags: patch User: debian-powe...@lists.debian.org Usertags: ppc64el User: debian-de...@lists.debian.org Usertags: autoreconf Hi Bill, This patch runs dh-autoreconf when building libjpeg6b. It is required for generating shared libraries on ppc64el and probably other new ports as well. It includes a patch to add -Wno-obsolete in AM_INIT_AUTOMAKE, due to ansi2knr being deprecated in automake1.11. (for the reader: reasoning for automake1.11 documented in #751424) Before: $ dpkg-deb -c libjpeg62_6b1-4_ppc64el.deb | fgrep .so $ After: $ dpkg-deb -c libjpeg62_6b1-4.1_ppc64el.deb | fgrep .so -rw-r--r-- root/root167528 2014-06-30 18:21 ./usr/lib/powerpc64le-linux-gnu/libjpeg.so.62.0.0 lrwxrwxrwx root/root 0 2014-06-30 18:21 ./usr/lib/powerpc64le-linux-gnu/libjpeg.so.62 -> libjpeg.so.62.0.0 Thanks! -- Mauricio Faria de Oliveira IBM Linux Technology Center diff -Nru libjpeg6b-6b1/debian/changelog libjpeg6b-6b1/debian/changelog --- libjpeg6b-6b1/debian/changelog 2013-12-05 20:43:54.0 -0200 +++ libjpeg6b-6b1/debian/changelog 2014-06-30 18:20:38.0 -0300 @@ -1,3 +1,10 @@ +libjpeg6b (6b1-4.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Run dh-autoreconf (requires automake1.11 -Wno-obsolete, see automake-Wno-obsolete.patch). + + -- Mauricio Faria de Oliveira Mon, 30 Jun 2014 18:18:08 -0300 + libjpeg6b (6b1-4) unstable; urgency=high * Apply upstream patch to fix CVE-2013-6629 and CVE-2013-6630. diff -Nru libjpeg6b-6b1/debian/control libjpeg6b-6b1/debian/control --- libjpeg6b-6b1/debian/control2012-06-02 11:18:18.0 -0300 +++ libjpeg6b-6b1/debian/control2014-06-30 18:05:51.0 -0300 @@ -2,7 +2,7 @@ Maintainer: Bill Allombert Section: graphics Priority: optional -Build-Depends: debhelper (>= 5), autotools-dev +Build-Depends: debhelper (>= 5), autotools-dev, dh-autoreconf, automake1.11 Standards-Version: 3.9.3 Package: libjpeg62 diff -Nru libjpeg6b-6b1/debian/patches/automake-Wno-obsolete.patch libjpeg6b-6b1/debian/patches/automake-Wno-obsolete.patch --- libjpeg6b-6b1/debian/patches/automake-Wno-obsolete.patch1969-12-31 21:00:00.0 -0300 +++ libjpeg6b-6b1/debian/patches/automake-Wno-obsolete.patch2014-06-30 18:17:36.0 -0300 @@ -0,0 +1,19 @@ +Description: automake 1.11 needs -Wno-obsolete due to ansi2knr (for autoreconf) + or fails with message 'automatic de-ANSI-fication support is deprecated'. +Forwarded: not-needed +Last-Update: 2014-06-30 +Author: Mauricio Faria de Oliveira + +Index: libjpeg6b-6b1/configure.ac +=== +--- libjpeg6b-6b1.orig/configure.ac2010-05-15 16:28:51.0 -0300 libjpeg6b-6b1/configure.ac 2014-06-30 18:07:36.0 -0300 +@@ -21,7 +21,7 @@ + + # Initialize Automake + # Don't require all the GNU mandated files +-AM_INIT_AUTOMAKE([-Wall -Werror ansi2knr no-dist foreign]) ++AM_INIT_AUTOMAKE([-Wall -Werror -Wno-obsolete ansi2knr no-dist foreign]) + + # Make --enable-silent-rules the default. + # To get verbose build output you may configure diff -Nru libjpeg6b-6b1/debian/patches/series libjpeg6b-6b1/debian/patches/series --- libjpeg6b-6b1/debian/patches/series 2013-12-03 19:54:02.0 -0200 +++ libjpeg6b-6b1/debian/patches/series 2014-06-30 18:06:35.0 -0300 @@ -1,3 +1,4 @@ extern_C-jpeglib.h use-autotools-dev fix-CVE-2013-6629_6630 +automake-Wno-obsolete.patch diff -Nru libjpeg6b-6b1/debian/rules libjpeg6b-6b1/debian/rules --- libjpeg6b-6b1/debian/rules 2013-12-05 08:24:59.0 -0200 +++ libjpeg6b-6b1/debian/rules 2014-06-30 18:05:51.0 -0300 @@ -15,10 +15,14 @@ endif #export DH_VERBOSE=1 +export AUTOMAKE = automake-1.11 +export ACLOCAL = aclocal-1.11 +export AUTOHEADER = true build: build-stamp build-stamp: dh_testdir + dh_autoreconf ./configure --prefix=/usr --mandir=/usr/share/man \ --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \ --enable-static --enable-shared --enable-maxmem=1024 \ @@ -36,6 +40,7 @@ -rm -f build-stamp stamp-h1 if [ -f Makefile ]; then $(MAKE) clean; fi -rm -f Makefile jconfig.h config.log config.status libtool + dh_autoreconf_clean dh_clean binary-indep: