Bug#753362: libjpeg6b: build with dh-autoreconf

2014-07-07 Thread Mauricio Faria de Oliveira

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

2014-07-05 Thread Bill Allombert
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

2014-07-01 Thread Mauricio Faria de Oliveira

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

2014-07-01 Thread Bill Allombert
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

2014-07-01 Thread Mauricio Faria de Oliveira

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

2014-07-01 Thread Bill Allombert
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

2014-06-30 Thread Mauricio Faria de Oliveira

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: