On Mon, 2012-05-21 at 11:36 -0400, Mike Frysinger wrote:
> On Monday 21 May 2012 02:41:18 Alexandre Rostovtsev wrote:
> > On Sun, 2012-05-20 at 06:32 -0400, Mike Frysinger wrote:
> > > i've extended eautoreconf to automatically call autopoint when the
> > > package uses gettext.  the configure check might seem naïve, but this is
> > > how autoreconf itself does it.  this hopefully shouldn't break any
> > > packages (at least, none that weren't already broken), but if you guys
> > > start seeing eautoreconf failures where there were none before, feel
> > > free to cc base-system. -mike
> > > 
> > > --- autotools.eclass
> > > +++ autotools.eclass
> > > @@ -162,6 +162,9 @@ eautoreconf() {
> > > 
> > >   einfo "Running eautoreconf in '${PWD}' ..."
> > >   [[ -n ${auxdir}${macdir} ]] && mkdir -p ${auxdir} ${macdir}
> > >   eaclocal
> > > 
> > > + if grep -q '^AM_GNU_GETTEXT_VERSION' configure.?? ; then
> > > +         eautopoint --force
> > > + fi
> > > 
> > >   [[ ${CHOST} == *-darwin* ]] && g=g
> > >   if ${LIBTOOLIZE:-${g}libtoolize} -n --install >& /dev/null ; then
> > >   
> > >           _elibtoolize --copy --force --install
> > 
> > This change broke many gnome-related packages, see bug #416789. You
> > cannot assume that every package that uses AM_GNU_GETTEXT_VERSION wants
> > (just) autopoint;
> 
> two things:
>  - eautoreconf acts like autoreconf which means it can assume that use of 
> AM_GNU_GETTEXT_VERSION implies use of `autopoint`
>  - it doesn't assume *just* autopoint -- nothing is stopping you from running 
> any other random tools you like (such as intltool)

Changing eautoreconf's behavior to exactly match vanilla autoconf may
make sense from your point of view as an autotools maintainer, but it
breaks ebuilds that do not want vanilla autoconf semantics and that are
relying on eautoreconf's old, intltool-friendly behavior.

> > there are also packages that use intltool (to be run
> > after autopoint) or glib-gettext (in which case autopoint should not be
> > used at all).
> 
> so attempting to run `autoreconf` in those packages fails ?

It results in configure failure. E.g.

>>> Emerging (1 of 1) gnome-extra/evolution-data-server-3.2.3-r2
[...]
 * Running eautoreconf in 
'/var/tmp/portage/gnome-extra/evolution-data-server-3.2.3-r2/work/evolution-data-server-3.2.3'
 ...
 * Running aclocal -I m4 ...                                            [ ok ]
 * Running autopoint --force ...                                        [ ok ]
 * Running libtoolize --install --copy --force --automake ...           [ ok ]
 * Running aclocal -I m4 ...                                            [ ok ]
 * Running autoconf ...                                                 [ ok ]
 * Running autoheader ...                                               [ ok ]
 * Running automake --add-missing --copy --foreign ...                  [ ok ]
 * Running elibtoolize in: evolution-data-server-3.2.3/
 *   Applying portage/1.2.0 patch ...
 *   Applying sed/1.5.6 patch ...
 * Fixing OMF Makefiles ...                                             [ ok ]
>>> Source prepared.
>>> Configuring source in 
>>> /var/tmp/portage/gnome-extra/evolution-data-server-3.2.3-r2/work/evolution-data-server-3.2.3
>>>  ...
[...]
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing libtool commands
config.status: executing po/stamp-it commands
config.status: error: po/Makefile.in.in was not created by intltoolize.

!!! Please attach the following file when seeking support:
!!! 
/var/tmp/portage/gnome-extra/evolution-data-server-3.2.3-r2/work/evolution-data-server-3.2.3/config.log
 * ERROR: gnome-extra/evolution-data-server-3.2.3-r2 failed (configure phase):
 *   econf failed

> > +# @ECLASS-VARIABLE: WANT_INTLTOOL
> > +# @DESCRIPTION:
> > +# Do you want intltool?  Valid values here are "latest" and "none".
> > +: ${WANT_INTLTOOL:=latest}
> > ...
> > +_intltool_atom="dev-util/intltool"
> > +if [[ -n ${WANT_INTLTOOL} ]] ; then
> > +   case ${WANT_INTLTOOL} in
> > +           none)   _intltool_atom="" ;;
> > +           latest) ;;
> > +           *)      die "Invalid WANT_INTLTOOL value '${WANT_INTLTOOL}'" ;;
> > +   esac
> > +   export WANT_LIBTOOL
> > +fi
> > ...
> > -AUTOTOOLS_DEPEND="${_automake_atom} ${_autoconf_atom} ${_libtool_atom}"
> > +AUTOTOOLS_DEPEND="${_automake_atom} ${_autoconf_atom} ${_intltool_atom}
> 
> no.  this adds intltool as a dependency to every package inherting this 
> eclass.

Why is that unacceptable? Realistically, every Gentoo machine, with the
exception of pure deployment installations that don't build any packages
(and therefore don't care about autotools.eclass anyway), already has
intltool installed.

-Alexandre.


Reply via email to