The recently added gnome2_disable_deprecation_warning() unfortunately
triggered maintainer mode and undesirable autoreconf for some packages
like file-roller, leading to build failure (see bug #439602); the
problem had been caused by configure.ac having a higher mtime than
aclocal.m4 and config.h.in.
To prevent the bug, gnome2_disable_deprecation_warning() currently no
longer modifies configure.ac, but it would be desirable to bring back
that functionality. The patch below does so.
People who are well-versed in autotools internals, please review whether
this approach is sane and sufficient.
--- gnome2-utils.eclass 27 Oct 2012 22:24:10 -0000 1.31
+++ gnome2-utils.eclass 27 Oct 2012 22:29:20 -0000
@@ -435,13 +435,22 @@
local makefile
ebegin "Disabling deprecation warnings"
- # The sort is important to ensure .am is listed before the respective
.in for
- # maintainer mode regeneration not kicking in due to .am being newer
than .in
+ # The sort is important to ensure .am is listed before the respective
.in,
+ # and configure.{ac,in} before Makefile.in, to prevent maintainer mode
+ # regeneration from kicking in due to .am being newer than .in
while read makefile ; do
- if ! grep -qE "(DISABLE_DEPRECATED|GSEAL_ENABLE)"
"${makefile}"; then
- continue
- fi
+ if [[ ${makefile%%aclocal.m4} != ${makefile} ||
+ ${makefile%%config.h.in} != ${makefile} ]]; then
+ # To avoid maintainer mode, aclocal.m4/config.h.in need
to have
+ # mtime after configure.ac and Makefile.am, but before
configure
+ # and Makefile.in
+ debug-print "Touching ${makefile}"
+ touch "${makefile}" && continue
+ elif ! grep -qE "(DISABLE_DEPRECATED|GSEAL_ENABLE)"
"${makefile}"; then
+ continue
+ fi
+ debug-print "Disabling deprecation warnings in ${makefile}"
LC_ALL=C sed -r -i \
-e 's:-D[A-Z_]+_DISABLE_DEPRECATED:$(NULL):g' \
-e 's:-DGSEAL_ENABLE:$(NULL):g' \
@@ -452,12 +461,10 @@
fails+=( "${makefile}" )
retval=2
fi
- done < <(find "${S}" -name "Makefile.in" \
- -o -name "Makefile.am" -o -name "Makefile.decl" \
- | sort; echo configure)
-# TODO: sedding configure.ac can trigger maintainer mode; bug #439602
-# -o -name "configure.ac" -o -name "configure.in" \
-# | sort; echo configure)
+ done < <(find "${S}" -name "Makefile.am" -o -name "Makefile.decl" \
+ -o -name "configure.ac" -o -name "configure.in"; \
+ find "${S}" -name "aclocal.m4" -o -name "config.h.in"; \
+ find "${S}" -name "configure" -o -name "Makefile.in")
eend ${retval}
for makefile in "${fails[@]}" ; do