rockboxdev: fix glib compile error on hosts with Python 3.12 (FS#13471)

On hosts running Python 3.12, building the hosted MIPS toolchain fails
on glib with the error

    Traceback (most recent call last):
      File "<string>", line 2, in <module>
    ModuleNotFoundError: No module named 'imp'
    gmake[6]: *** [Makefile:982: install-codegenPYTHON] Error 1
    gmake[6]: Leaving directory '/tmp/rbdev-build/build-glib-2.46.2/gio/gdbus-2.0/codegen'

due to 'imp' being removed from Python 3.12 after a long deprecation
period. The module is imported by automake's py-compile script, but
in newer versions of automake this has been updated to use 'importlib'
instead, so running autoreconf fixes this.

We need to patch m4macros/glib-gettext.m4 to avoid an error running
autoreconf (see: https://gitlab.gnome.org/GNOME/glib/-/issues/1159):

    ac-wrapper: autoreconf: warning: auto-detected versions not found ( 2.69 2.69); falling back to latest available
    autoreconf-2.71: export WARNINGS=
    autoreconf-2.71: Entering directory '.'
    autoreconf-2.71: configure.ac: not using Gettext
    autoreconf-2.71: running: aclocal --force -I m4macros ${ACLOCAL_FLAGS}
    am-wrapper: aclocal: warning: auto-detected versions not found (1.15); falling back to latest available
    m4macros/glib-gettext.m4:39: error: m4_copy: won't overwrite defined macro: glib_DEFUN
    m4macros/glib-gettext.m4:39: the top level
    autom4te-2.71: error: /usr/bin/m4 failed with exit status: 1
    aclocal-1.16: error: /usr/bin/autom4te-2.71 failed with exit status: 1
    autoreconf-2.71: error: aclocal failed with exit status: 1

This problem goes away in glib 2.47.5 when they switched to using
upstream gettext.

Change-Id: I878a9d7086d17c6de43470b6e5f14917f0ae1bb9
This commit is contained in:
Aidan MacDonald 2024-08-26 15:03:21 +01:00
parent eca00638ae
commit ec8fb871f0

View file

@ -378,8 +378,14 @@ buildtool() {
$config_opt
elif [ "$config_opt" != "NO_CONFIGURE" ]; then
echo "ROCKBOXDEV: $toolname/configure"
cflags='-U_FORTIFY_SOURCE -fgnu89-inline -O2'
if [ "$tool" == "glib" ]; then
run_cmd "$logfile" sed -i -e 's/m4_copy/m4_copy_force/g' "$cfg_dir/m4macros/glib-gettext.m4"
run_cmd "$logfile" autoreconf -fiv "$cfg_dir"
cflags="$cflags -Wno-format-nonliteral -Wno-format-overflow"
fi
# NOTE glibc requires to be compiled with optimization
CFLAGS='-U_FORTIFY_SOURCE -fgnu89-inline -O2' CXXFLAGS="$CXXFLAGS" run_cmd "$logfile" \
CFLAGS="$cflags" CXXFLAGS="$CXXFLAGS" run_cmd "$logfile" \
"$cfg_dir/configure" "--prefix=$prefix" \
--disable-docs $config_opt
fi