Gentoo Archives: gentoo-dev

From: Samuli Suominen <ssuominen@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] elibtoolize/eautoreconf interactions and lazy eclasses/ebuilds
Date: Sun, 13 Nov 2011 17:47:44
Message-Id: 4EC0024E.2030208@gentoo.org
In Reply to: [gentoo-dev] elibtoolize/eautoreconf interactions and lazy eclasses/ebuilds by Mike Frysinger
1 On 11/13/2011 07:37 PM, Mike Frysinger wrote:
2 > it seems we have some cases where eclasses/ebuilds interact poorly. for
3 > example, if an eclass runs eautoreconf or elibtoolize, and then the ebuild
4 > does some stuff where it ends up running eautoreconf, subsequent elibtoolize
5 > calls are skipped.
6 >
7 > this means that the work done by the earlier elibtoolize call was all for
8 > naught, as eautoreconf blows all of its work away be regenerating the files
9 > elibtoolize patched. and when eautoreconf attempts to run elibtoolize itself,
10 > we don't get all the fun patches since elibtoolize detected it was run
11 > already.
12 >
13 > rather than have this continue to silently ignore the issue, i'm thinking of
14 > making these changes:
15 > - elibtoolize now has a --force flag
16 > - eautoreconf always calls elibtoolize with --force
17 > - if elibtoolize detects a previous run with --force, it warns, but runs
18 > this way we complain, but at least we continue to work
19 >
20 > the prefix guys first brought this up here:
21 > https://bugs.gentoo.org/232820
22 > but i've hit this since with cross-compiling Linux targets:
23 > - pygobject ebuild inherits gnome2 eclass
24 > - pygobject's src_prepare first calls gnome2_src_prepare
25 > - gnome2_src_prepare always calls elibtoolize (which normally is good)
26 > - pygobject's src_prepare applies patches and then calls eautoreconf
27 > - eautoreconf regens all files that where patched earlier
28 > - eautoreconf's call to elibtoolize is skipped
29 > - builds fail which need those elibtoolize patches
30 > -mike
31
32 also a bug in those ebuilds then, since gnome2_src_prepare() should
33 always be the last call/command in src_prepare()

Replies