> if it _really_ needs 2.7,
>
> MODULES = lang/python
> MODPY_BUILDDEP = No
> MODPY_VERSION = ${MODPY_DEFAULT_VERSION_2}
It actually wants Python 2.7 as a BDEP, so remove 'MODPY_BUILDDEP = No'.
If 2.7 is not installed, xorn's configure script errors out:
configure: error: Package requirements (python2 >= 2.7) were not met:
Package python2 was not found in the pkg-config search path
A comment on one of your patches:
> Index: cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c
> ===================================================================
> RCS file: cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c
> diff -N cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c 20 Mar 2023
> 12:32:59 -0000
> @@ -0,0 +1,22 @@
> +g_strfreev expects its argument to be a NULL-terminated array of pointers.
> +
> +Index: libgeda/src/scheme_config.c
> +--- libgeda/src/scheme_config.c.orig
> ++++ libgeda/src/scheme_config.c
> +@@ -961,7 +961,7 @@ SCM_DEFINE (set_config_x, "%set-config!", 4, 0, 0,
> + int i = 0;
> +
> + if (scm_is_string (first_s)) {
> +- gchar **value = g_new0 (gchar *, len);
> ++ gchar **value = g_new0 (gchar *, len + 1);
Nice find.
> + scm_dynwind_unwind_handler ((void (*)(void *)) g_strfreev, value,
> + SCM_F_WIND_EXPLICITLY);
> + for (curr_s = value_s; !scm_is_null (curr_s); curr_s = scm_cdr
> (curr_s)) {
> +@@ -969,6 +969,7 @@ SCM_DEFINE (set_config_x, "%set-config!", 4, 0, 0,
> + value [i++] = g_strdup (tmp);
> + free (tmp);
> + }
> ++ value [i] = NULL; /* null-terminate for
> g_strfreev */
This hunk is unnecessary. The 0 in g_new0() means the allocation is
zeroed (as in calloc(3): https://docs.gtk.org/glib/func.new0.html
> + eda_config_set_string_list (cfg, group, key,
> + (const gchar * const *) value, len);
> +
>