Gentoo Archives: gentoo-dev

From: Alexandre Rostovtsev <tetromino@g.o>
To: Mike Frysinger <vapier@g.o>
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] autotools.eclass:eautoreconf now runs autopoint for you
Date: Mon, 21 May 2012 16:09:35
Message-Id: 1337616501.23944.21.camel@rook
In Reply to: Re: [gentoo-dev] autotools.eclass:eautoreconf now runs autopoint for you by Mike Frysinger
1 On Mon, 2012-05-21 at 11:36 -0400, Mike Frysinger wrote:
2 > On Monday 21 May 2012 02:41:18 Alexandre Rostovtsev wrote:
3 > > On Sun, 2012-05-20 at 06:32 -0400, Mike Frysinger wrote:
4 > > > i've extended eautoreconf to automatically call autopoint when the
5 > > > package uses gettext. the configure check might seem naïve, but this is
6 > > > how autoreconf itself does it. this hopefully shouldn't break any
7 > > > packages (at least, none that weren't already broken), but if you guys
8 > > > start seeing eautoreconf failures where there were none before, feel
9 > > > free to cc base-system. -mike
10 > > >
11 > > > --- autotools.eclass
12 > > > +++ autotools.eclass
13 > > > @@ -162,6 +162,9 @@ eautoreconf() {
14 > > >
15 > > > einfo "Running eautoreconf in '${PWD}' ..."
16 > > > [[ -n ${auxdir}${macdir} ]] && mkdir -p ${auxdir} ${macdir}
17 > > > eaclocal
18 > > >
19 > > > + if grep -q '^AM_GNU_GETTEXT_VERSION' configure.?? ; then
20 > > > + eautopoint --force
21 > > > + fi
22 > > >
23 > > > [[ ${CHOST} == *-darwin* ]] && g=g
24 > > > if ${LIBTOOLIZE:-${g}libtoolize} -n --install >& /dev/null ; then
25 > > >
26 > > > _elibtoolize --copy --force --install
27 > >
28 > > This change broke many gnome-related packages, see bug #416789. You
29 > > cannot assume that every package that uses AM_GNU_GETTEXT_VERSION wants
30 > > (just) autopoint;
31 >
32 > two things:
33 > - eautoreconf acts like autoreconf which means it can assume that use of
34 > AM_GNU_GETTEXT_VERSION implies use of `autopoint`
35 > - it doesn't assume *just* autopoint -- nothing is stopping you from running
36 > any other random tools you like (such as intltool)
37
38 Changing eautoreconf's behavior to exactly match vanilla autoconf may
39 make sense from your point of view as an autotools maintainer, but it
40 breaks ebuilds that do not want vanilla autoconf semantics and that are
41 relying on eautoreconf's old, intltool-friendly behavior.
42
43 > > there are also packages that use intltool (to be run
44 > > after autopoint) or glib-gettext (in which case autopoint should not be
45 > > used at all).
46 >
47 > so attempting to run `autoreconf` in those packages fails ?
48
49 It results in configure failure. E.g.
50
51 >>> Emerging (1 of 1) gnome-extra/evolution-data-server-3.2.3-r2
52 [...]
53 * Running eautoreconf in '/var/tmp/portage/gnome-extra/evolution-data-server-3.2.3-r2/work/evolution-data-server-3.2.3' ...
54 * Running aclocal -I m4 ... [ ok ]
55 * Running autopoint --force ... [ ok ]
56 * Running libtoolize --install --copy --force --automake ... [ ok ]
57 * Running aclocal -I m4 ... [ ok ]
58 * Running autoconf ... [ ok ]
59 * Running autoheader ... [ ok ]
60 * Running automake --add-missing --copy --foreign ... [ ok ]
61 * Running elibtoolize in: evolution-data-server-3.2.3/
62 * Applying portage/1.2.0 patch ...
63 * Applying sed/1.5.6 patch ...
64 * Fixing OMF Makefiles ... [ ok ]
65 >>> Source prepared.
66 >>> Configuring source in /var/tmp/portage/gnome-extra/evolution-data-server-3.2.3-r2/work/evolution-data-server-3.2.3 ...
67 [...]
68 config.status: executing po-directories commands
69 config.status: creating po/POTFILES
70 config.status: creating po/Makefile
71 config.status: executing libtool commands
72 config.status: executing po/stamp-it commands
73 config.status: error: po/Makefile.in.in was not created by intltoolize.
74
75 !!! Please attach the following file when seeking support:
76 !!! /var/tmp/portage/gnome-extra/evolution-data-server-3.2.3-r2/work/evolution-data-server-3.2.3/config.log
77 * ERROR: gnome-extra/evolution-data-server-3.2.3-r2 failed (configure phase):
78 * econf failed
79
80 > > +# @ECLASS-VARIABLE: WANT_INTLTOOL
81 > > +# @DESCRIPTION:
82 > > +# Do you want intltool? Valid values here are "latest" and "none".
83 > > +: ${WANT_INTLTOOL:=latest}
84 > > ...
85 > > +_intltool_atom="dev-util/intltool"
86 > > +if [[ -n ${WANT_INTLTOOL} ]] ; then
87 > > + case ${WANT_INTLTOOL} in
88 > > + none) _intltool_atom="" ;;
89 > > + latest) ;;
90 > > + *) die "Invalid WANT_INTLTOOL value '${WANT_INTLTOOL}'" ;;
91 > > + esac
92 > > + export WANT_LIBTOOL
93 > > +fi
94 > > ...
95 > > -AUTOTOOLS_DEPEND="${_automake_atom} ${_autoconf_atom} ${_libtool_atom}"
96 > > +AUTOTOOLS_DEPEND="${_automake_atom} ${_autoconf_atom} ${_intltool_atom}
97 >
98 > no. this adds intltool as a dependency to every package inherting this
99 > eclass.
100
101 Why is that unacceptable? Realistically, every Gentoo machine, with the
102 exception of pure deployment installations that don't build any packages
103 (and therefore don't care about autotools.eclass anyway), already has
104 intltool installed.
105
106 -Alexandre.

Replies