From 1257185ca79c6772863f08fd588a2914f0699bdc Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Mon, 20 Jul 2026 23:02:33 +0200 Subject: [PATCH 01/20] libreoffice: Update version from 7.6.2.1-1 to 26.2.5.1-0 --- libreoffice.be0 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libreoffice.be0 b/libreoffice.be0 index 4a140efea..f958fac21 100755 --- a/libreoffice.be0 +++ b/libreoffice.be0 @@ -2,16 +2,16 @@ #export BEE_TMP_TMPDIR=/scratch/local2 BEE_TMP_BUILDROOT=/scratch/local2/bee-root BEE_MAKEFLAGS='-j80' -# BEE_VERSION libreoffice-7.6.2.1-1 +# BEE_VERSION libreoffice-26.2.5.1-0 #SRCURL[0]="https://download.documentfoundation.org/libreoffice/src/${PKGVERSION[3]}/libreoffice-${PKGVERSION}.tar.xz" -#SRCURL[0]="https://beehive.molgen.mpg.de/17a8cc75753475b6e8ed7eda4ae66e43/libreoffice-7.5.7.1.tar.xz" -SRCURL[0]="https://beehive.molgen.mpg.de/13fca0b5df68b445340d7c5f8373e99c/libreoffice-7.6.2.1.tar.xz" +#SRCURL[0]="https://beehive.molgen.mpg.de/13fca0b5df68b445340d7c5f8373e99c/libreoffice-7.6.2.1.tar.xz" +SRCURL[0]="https://beehive.molgen.mpg.de/69dd4f5b0c757397a3b43813dfa3777f/libreoffice-26.2.5.1.tar.xz" # from download Makefile.fetch tar -cf tarballs-${PKGVERSION}.tar source/external/tarballs -#SRCURL[1]="https://beehive.molgen.mpg.de/af267a5a83ef17e843a0a71f35e37f59/tarballs-7.5.7.1.tar" -SRCURL[1]="https://beehive.molgen.mpg.de/1958345c1501c9e8cd648fa4a16c33b1/tarballs-7.6.2.1.tar" +#SRCURL[1]="https://beehive.molgen.mpg.de/1958345c1501c9e8cd648fa4a16c33b1/tarballs-7.6.2.1.tar" +SRCURL[1]="https://beehive.molgen.mpg.de/754c947a2a86069dfbce6b6f6ccb8180/tarballs-26.2.5.1.tar" PATCHURL+=("https://beehive.molgen.mpg.de/7d4b97aa2077236456a837fc4c36ca7a/libassuan_autoheader.patch") #PATCHURL+=("https://beehive.molgen.mpg.de/40fa10212ec76ad2fa19b144e7621cc6/fix_install_error.patch") From 57c7c42eb5bf0d10218749f5926e7720b8d377f4 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:15:53 +0200 Subject: [PATCH 02/20] libxml2: Update version from 2.9.12-0 to 2.15.3-0 LibreOffice 26.2.5.1's bundled xmlsec1 requires libxml2 >= 2.9.13; the system package was 2.9.12. Bump to the latest upstream release (2.15.3). ABI break: libxml2 2.14.0 bumped the ELF soname from libxml2.so.2 to libxml2.so.16 and restricts binary compatibility to 2.14+ (configure.ac sets LIBXML_MINOR_COMPAT=14). Upstream NEWS (v2.14.0): "Binary compatibility is restricted to versions 2.14 or newer. On ELF systems, the soname was bumped from libxml2.so.2 to libxml2.so.16." So anything still linked against libxml2.so.2 will not resolve against 2.15.3; the old soname is preserved by the new libxml2_compat package. Co-Authored-By: Claude Opus 4.8 --- libxml2.be0 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libxml2.be0 b/libxml2.be0 index 632020ce3..5a52b0a30 100755 --- a/libxml2.be0 +++ b/libxml2.be0 @@ -1,6 +1,6 @@ #!/usr/bin/env beesh -# BEE_VERSION libxml2-2.9.12-0 +# BEE_VERSION libxml2-2.15.3-0 BEE_BUILDTYPE=autotools @@ -11,8 +11,8 @@ BEE_BUILDTYPE=autotools ## The source URL(s) define the location of the sources that will be ## downloaded. Version variables may be used to simplify reuse of this bee-file. -# http://xmlsoft.org/sources/libxml2-${PKGVERSION}.tar.gz -SRCURL[0]=https://beehive.molgen.mpg.de/f433a39be087a9f0b197eb2307ad9f75/libxml2-2.9.12.tar.gz +# https://download.gnome.org/sources/libxml2/2.15/libxml2-${PKGVERSION}.tar.xz +SRCURL[0]="https://beehive.molgen.mpg.de/b7b0123654f86ebf630a5cbedaafdece/libxml2-2.15.3.tar.xz" ############################################################################### ## Add URLs/pathes to patch files to the PATCHURL array. From 8bf71ad03b43af029c217e72d7bf39b69cee37bf Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:15:53 +0200 Subject: [PATCH 03/20] libxml2_compat: Add compat package for old libxml2.so.2 soname libxml2 2.14.0 bumped the soname libxml2.so.2 -> libxml2.so.16, so the updated libxml2-2.15.3 no longer provides libxml2.so.2. Ship the old shared library (extracted from the libxml2-2.9.12-0 package) so existing binaries linked against libxml2.so.2 keep working, following the same pattern as the other *_compat packages (e.g. nettle_compat, poppler_compat). Co-Authored-By: Claude Opus 4.8 --- libxml2_compat.be0 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 libxml2_compat.be0 diff --git a/libxml2_compat.be0 b/libxml2_compat.be0 new file mode 100755 index 000000000..8a5329259 --- /dev/null +++ b/libxml2_compat.be0 @@ -0,0 +1,18 @@ +#!/usr/bin/env beesh + +# BEE_VERSION libxml2_compat-2.9.12-0 +# compatibility package for libxml2 +# +# libxml2 2.14.0 bumped the soname libxml2.so.2 -> libxml2.so.16, so binaries +# built against the old 2.9.x are not ABI-compatible with the current package. +# Ship the old shared library (soname libxml2.so.2) so those keep working, +# while the main libxml2 package owns the headers, .so dev symlink and .pc. + +SRCURL[0]= + +mee_install() { + cd ${D} + tar xpf /src/mariux/beeroot/packages/libxml2-2.9.12-0.x86_64.bee.tar.bz2 \ + /usr/lib/libxml2.so.2 \ + /usr/lib/libxml2.so.2.9.12 +} From 9187596ac81b3246a97f8c8cd6f8ef1408f9aadb Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:15:53 +0200 Subject: [PATCH 04/20] libreoffice: Fix 26.2.5.1 build (meson wrapper, obsolete patch) - Point MESON at a real meson (1.6.1); /bin/meson is a prun bash wrapper that configure fails to run as a Python script, aborting at the meson check. - Drop the obsolete libassuan_autoheader.patch: the Linux libassuan build no longer runs autoreconf in 26.2.5.1, and the only remaining hunk touched the Windows/MSC path we never build. Co-Authored-By: Claude Opus 4.8 --- libreoffice.be0 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libreoffice.be0 b/libreoffice.be0 index f958fac21..e12e141b6 100755 --- a/libreoffice.be0 +++ b/libreoffice.be0 @@ -13,7 +13,9 @@ SRCURL[0]="https://beehive.molgen.mpg.de/69dd4f5b0c757397a3b43813dfa3777f/libreo #SRCURL[1]="https://beehive.molgen.mpg.de/1958345c1501c9e8cd648fa4a16c33b1/tarballs-7.6.2.1.tar" SRCURL[1]="https://beehive.molgen.mpg.de/754c947a2a86069dfbce6b6f6ccb8180/tarballs-26.2.5.1.tar" -PATCHURL+=("https://beehive.molgen.mpg.de/7d4b97aa2077236456a837fc4c36ca7a/libassuan_autoheader.patch") +# Obsolete for 26.2.5.1: the Linux libassuan build no longer runs autoreconf +# (upstream dropped it), and hunk #1 only touched the Windows/MSC path we never build. +#PATCHURL+=("https://beehive.molgen.mpg.de/7d4b97aa2077236456a837fc4c36ca7a/libassuan_autoheader.patch") #PATCHURL+=("https://beehive.molgen.mpg.de/40fa10212ec76ad2fa19b144e7621cc6/fix_install_error.patch") # build_in_sourcedir @@ -37,6 +39,10 @@ mee_configure() { p=/pkg/openjdk-17.0.2.8-0/profile; [ -e $p ] && . $p p=/pkg/apache-ant-1.10.12-0/profile; [ -e $p ] && . $p + # /bin/meson is a `prun` bash wrapper; LibreOffice's configure tries to run + # meson as a python script and chokes on it. Point at a real meson (1.6.1). + export MESON=/pkg/python-3.12.8-0/bin/meson + #checking for number of processors to use... ./configure: line 44675: test: -j80: integer expression expected if [[ ${BEE_MAKEFLAGS:: 2} == "-j" ]]; then LALA=${BEE_MAKEFLAGS: 2} From 60796211d5e7b96f5647504eed5bd91258283abd Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:42:34 +0200 Subject: [PATCH 05/20] poppler: Update version from 21.10.0-1 to 26.07.0-0 LibreOffice 26.2.5.1's sdext/xpdfwrapper uses poppler's errEncrypted, which is not declared in the old 21.10.0 (2021) system poppler, so the --with-system-poppler build fails at wrapper_gpl.cxx:246. Update the system poppler to the latest release. poppler 26.07.0 requires C++23; the default gcc (12.5.0) only has partial support, so build with gcc 14.1.0 (CC=gcc14 CXX=g++14). ABI break (backward incompatible): the soname of libpoppler (.so.114 -> .so.162) and libpoppler-cpp (.so.0 -> .so.3) changed, so binaries built against 21.10.0 need rebuilding. A matching poppler_compat package ships the old shared libraries. libpoppler-glib (.so.8) and libpoppler-qt5 (.so.1) kept their sonames. Co-Authored-By: Claude Opus 4.8 --- poppler.be0 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/poppler.be0 b/poppler.be0 index 213ba7f3b..d66a7ccad 100755 --- a/poppler.be0 +++ b/poppler.be0 @@ -1,8 +1,8 @@ #!/usr/bin/env beesh -# BEE_VERSION poppler-21.10.0-1 +# BEE_VERSION poppler-26.07.0-0 # SRCURL[0]="https://poppler.freedesktop.org/poppler-${PKGVERSION}.tar.xz" -SRCURL[0]="https://beehive.molgen.mpg.de/1153a0b1aa8a894c6ce61f042622441c/poppler-21.10.0.tar.xz" +SRCURL[0]="https://beehive.molgen.mpg.de/d82e73dd42f525b042a9860e95948e2e/poppler-26.07.0.tar.xz" # PATCHURL+=() @@ -20,8 +20,14 @@ SRCURL[0]="https://beehive.molgen.mpg.de/1153a0b1aa8a894c6ce61f042622441c/popple #} mee_configure() { + # poppler 26.07.0 requires C++23; the default gcc (12.5.0) only has partial + # support, so build with gcc 14.1.0. + export CC=gcc14 CXX=g++14 + + # Point CMake at both the Qt5 and Qt6 installs so the qt5 and qt6 + # bindings are found (poppler 26 builds both by default). bee_configure \ - -DCMAKE_PREFIX_PATH=/usr/local/qt5 \ + -DCMAKE_PREFIX_PATH='/usr/local/qt5;/usr/local/qt6' \ -DCMAKE_BUILD_TYPE=Release \ -DENABLE_UNSTABLE_API_ABI_HEADERS=ON } From e9a22dc5ae90c1cf8e1d5d6ddd0a7628f38c5b02 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:42:34 +0200 Subject: [PATCH 06/20] poppler_compat: Preserve 21.10.0 sonames for the 26.07.0 update poppler 26.07.0 bumped libpoppler.so.114 -> .so.162 and libpoppler-cpp.so.0 -> .so.3. Ship the old shared libraries extracted from the poppler-21.10.0-1 package so binaries linked against them keep working. glib (.so.8) and qt5 (.so.1) kept their sonames and need no compat entry. Bump the compat version to 21.10.0-0 to reflect the newest preserved soname source. Co-Authored-By: Claude Opus 4.8 --- poppler_compat.be0 | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/poppler_compat.be0 b/poppler_compat.be0 index 1fc8c519b..5eb1c6359 100755 --- a/poppler_compat.be0 +++ b/poppler_compat.be0 @@ -1,7 +1,13 @@ #!/usr/bin/env beesh -# BEE_VERSION poppler_compat-0.54.0-0 +# BEE_VERSION poppler_compat-21.10.0-0 # compatibility package for poppler # /project/admin/tools/beediff.pl `bee list poppler|grep -v data` 2>&1 | less +# +# poppler 26.07.0 bumped sonames libpoppler.so.114 -> .so.162 and +# libpoppler-cpp.so.0 -> .so.3, so binaries built against 21.10.0 are not +# ABI-compatible. Ship the old shared libraries so those keep working. +# (libpoppler-glib.so.8 and libpoppler-qt5.so.1 kept their sonames in 26.07.0, +# so they need no compat entry.) SRCURL=() @@ -35,4 +41,10 @@ mee_install() { /usr/lib/libpoppler-qt5.so.1.4.0 \ /usr/lib/libpoppler.so.54 \ /usr/lib/libpoppler.so.54.0.0 + + tar xpf /src/mariux/beeroot/packages/poppler-21.10.0-1.x86_64.bee.tar.bz2 \ + /usr/lib/libpoppler-cpp.so.0 \ + /usr/lib/libpoppler-cpp.so.0.9.0 \ + /usr/lib/libpoppler.so.114 \ + /usr/lib/libpoppler.so.114.0.0 } From 21663f4609de758f94881d0021dda4e4e1f8fe7b Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:48:33 +0200 Subject: [PATCH 07/20] freetype: Update version from 2.10.4-1 to 2.14.3-0 poppler 26.07.0 requires Freetype >= 2.13; the system freetype is 2.10.4 (2020), so poppler's CMake configure fails with "Found unsuitable version 2.10.4, but required is at least 2.13". Update the system freetype to the latest release. No ABI break: version_info 26:6:20 -> soname libfreetype.so.6 is unchanged, so no compat package is needed. The mee_patch seds still apply (SUBPIXEL_HINTING is now enabled upstream by default, so that branch simply no-ops while SUBPIXEL_RENDERING is still enabled). Co-Authored-By: Claude Opus 4.8 --- freetype.be0 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freetype.be0 b/freetype.be0 index 1fe78c0d3..94d3f6440 100755 --- a/freetype.be0 +++ b/freetype.be0 @@ -1,11 +1,11 @@ #!/bin/env beesh -# BEE_VERSION freetype-2.10.4-1 +# BEE_VERSION freetype-2.14.3-0 BEE_BUILDTYPE=autotools # SRCURL[0]="https://download.savannah.gnu.org/releases/freetype/freetype-${PKGVERSION}.tar.xz" -SRCURL[0]="https://beehive.molgen.mpg.de/0e6c0e9b218be3ba3e26e1d23b1c80dd/freetype-2.10.4.tar.xz" +SRCURL[0]="https://beehive.molgen.mpg.de/5e78e6fdce5a61d3075e4c25e9852f84/freetype-2.14.3.tar.xz" # PATCHURL+=() From a89414933670841e71d38c21c3a8442839381342 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:55:53 +0200 Subject: [PATCH 08/20] nspr: Update version from 4.32-0 to 4.39-0 NSPR is NSS's mandatory runtime dependency; NSS 3.126 requires NSPR >= 4.37. Update NSPR to the latest release (4.39). The two mee_patch seds still apply (RELEASE_BINS in pr/src/misc/Makefile.in and the $(LIBRARY) entries in config/rules.mk are unchanged). No ABI break: NSPR ships unversioned shared libraries (libnspr4.so, libplc4.so, libplds4.so), so no compat package is needed. Co-Authored-By: Claude Opus 4.8 --- nspr.be0 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nspr.be0 b/nspr.be0 index f7abe8ab0..5df254e7d 100755 --- a/nspr.be0 +++ b/nspr.be0 @@ -1,9 +1,9 @@ #!/usr/bin/env beesh -# BEE_VERSION nspr-4.32-0 +# BEE_VERSION nspr-4.39-0 -# https://archive.mozilla.org/pub/nspr/releases/v4.32/src/nspr-4.32.tar.gz -SRCURL[0]="https://beehive.molgen.mpg.de/493d0e2284f873681c089cd503b99bf0/nspr-4.32.tar.gz" +# https://archive.mozilla.org/pub/nspr/releases/v4.39/src/nspr-4.39.tar.gz +SRCURL[0]="https://beehive.molgen.mpg.de/a1062dbc7d0fa524f0db6f254b747e45/nspr-4.39.tar.gz" # PATCHURL+=() From 621c0fbdb54c67ee4198b4c6c591eecf4bc36aed Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 15:55:53 +0200 Subject: [PATCH 09/20] nss: Update version from 3.73-0 to 3.126-0 poppler 26.07.0 requires NSS >= 3.98 for PDF digital-signature support (ENABLE_NSS3, on by default), and libreoffice.be0 builds --with-system-nss; the system NSS is 3.73 (2021). Update to the latest release (3.126, needs NSPR >= 4.37 -> see the NSPR 4.39 update). The BLFS "standalone" patch is now version-agnostic and byte-identical to the old nss-3.73-standalone-1.patch (same md5 f8a7ce47...), so the existing beehive upload still applies and it patches 3.126 (one hunk with harmless fuzz). Beehive keys on md5 AND filename, so keep the old nss-3.73-standalone-1.patch filename in the URL. Drop libcrmf.a from mee_install: NSS 3.126 removed crmf from the default library build (no longer listed in lib/Makefile NSS_SRCDIRS), so the static libcrmf.a is no longer produced. The .chk files are still built and installed. Nothing downstream links libcrmf. No ABI break: NSS ships unversioned shared libraries (libnss3.so, libssl3.so, libsmime3.so, libnssutil3.so, ...) and keeps ABI additively compatible across 3.x, so no compat package is needed. Co-Authored-By: Claude Opus 4.8 --- nss.be0 | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/nss.be0 b/nss.be0 index 5f56e0fc1..114a7b0e2 100755 --- a/nss.be0 +++ b/nss.be0 @@ -1,13 +1,16 @@ #!/usr/bin/env beesh -# BEE_VERSION nss-3.73-0 +# BEE_VERSION nss-3.126-0 # see also http://linuxfromscratch.org/blfs/view/svn/postlfs/nss.html -# https://archive.mozilla.org/pub/security/nss/releases/NSS_3_73_RTM/src/nss-3.73.tar.gz -SRCURL[0]="https://beehive.molgen.mpg.de/b4540bf98f6583b3fcf8101f846cf3bb/nss-3.73.tar.gz" +# https://archive.mozilla.org/pub/security/nss/releases/NSS_3_126_RTM/src/nss-3.126.tar.gz +SRCURL[0]="https://beehive.molgen.mpg.de/0ca322cec564a53ac5a59ce130d96f46/nss-3.126.tar.gz" -# "https://www.linuxfromscratch.org/patches/blfs/svn/nss-3.73-standalone-1.patch" +# The BLFS "standalone" patch is version-agnostic; its content is byte-identical +# to the old nss-3.73-standalone-1.patch (same md5), so the existing beehive +# upload still applies (beehive keys on md5 AND filename, so keep the old name). +# "https://www.linuxfromscratch.org/patches/blfs/12.4/nss-standalone-1.patch" PATCHURL[0]="https://beehive.molgen.mpg.de/f8a7ce473bd61792ef182cf0fb2d359a/nss-3.73-standalone-1.patch" build_in_sourcedir @@ -44,7 +47,9 @@ mee_install() { cd $B/dist mkdir -vp $D/usr/lib $D/usr/include/nss $D/usr/bin $D/usr/lib/pkgconfig install -v -m755 Linux*/lib/*.so $D/usr/lib - install -v -m644 Linux*/lib/{*.chk,libcrmf.a} $D/usr/lib + # NSS 3.126 dropped crmf from the default lib build (no longer in + # lib/Makefile NSS_SRCDIRS), so libcrmf.a is no longer produced. + install -v -m644 Linux*/lib/*.chk $D/usr/lib install -v -m755 -d $D/usr/include/nss cp -v -RL {public,private}/nss/* $D/usr/include/nss chmod -v 644 $D/usr/include/nss/* From fde72e4af860d8b33de7f889aebb78238547b075 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 17:04:36 +0200 Subject: [PATCH 10/20] libgpg-error: Update version from 1.42-0 to 1.61-0 gpgme 1.24.3 requires libgpg-error >= 1.47; the system is 1.42. Update to the latest release (1.61). No ABI break: libtool version-info 42:1:42 -> soname libgpg-error.so.0 is unchanged, so no compat package is needed. Co-Authored-By: Claude Opus 4.8 --- libgpg-error.be0 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libgpg-error.be0 b/libgpg-error.be0 index 76aa9c485..e23dc1312 100755 --- a/libgpg-error.be0 +++ b/libgpg-error.be0 @@ -1,9 +1,9 @@ #!/usr/bin/env beesh -# BEE_VERSION libgpg-error-1.42-0 +# BEE_VERSION libgpg-error-1.61-0 # SRCURL[0]="https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${PKGVERSION}.tar.bz2" -SRCURL[0]="https://beehive.molgen.mpg.de/133fed221ba8f63f5842858a1ff67cb3/libgpg-error-1.42.tar.bz2" +SRCURL[0]="https://beehive.molgen.mpg.de/c89a8c6825cb64c527d5c1c0fb36f245/libgpg-error-1.61.tar.bz2" # PATCHURL+=() From 5233c7cc25f6c19236a2f96b7548b9b6dc7c6ce5 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 17:04:36 +0200 Subject: [PATCH 11/20] gpgme: Update version from 1.16.0-0 to 1.24.3-0 poppler 26.07.0 needs Gpgmepp >= 1.19 (PDF GPG-signature support), and the system gpgme is 1.16.0. gpgme 2.x split the C++ (Gpgmepp), Qt and Python bindings into separate releases, so stay on the latest 1.x that still bundles Gpgmepp; GpgmeppConfig then reports 1.24.3 (>= 1.19). Requires libgpg-error >= 1.47 (see the libgpg-error 1.61 update); libassuan 2.5.3 already satisfies the >= 2.4.2 requirement, so no libassuan change is needed. Build only the cl + cpp bindings via --enable-languages=cl,cpp (replaces the old gpgme-nopython.patch, which edited the generated configure and no longer applies). This drops the Qt binding that the old package shipped: poppler and LibreOffice use Gpgmepp, not QGpgme, and sousage.pl reports libqgpgme.so as unused; building qt5 would also require Qt5's moc/qmake on PATH and PKG_CONFIG_PATH, which are not set up in this environment. Sonames: libgpgme.so.11 and libgpgmepp.so.6 are unchanged, so poppler/LO need no rebuild for the C++ binding. No compat package is needed (libqgpgme is no longer built, and it was unused). Co-Authored-By: Claude Opus 4.8 --- gpgme.be0 | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/gpgme.be0 b/gpgme.be0 index 9ca02a881..e285f245e 100755 --- a/gpgme.be0 +++ b/gpgme.be0 @@ -1,12 +1,13 @@ #!/usr/bin/env beesh -# BEE_VERSION gpgme-1.16.0-0 +# BEE_VERSION gpgme-1.24.3-0 -# SRCURL[0]="https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-${PKGVERSION}.tar.bz2" -SRCURL[0]="https://beehive.molgen.mpg.de/e31b9e0efc5a2e1ec1bbed22e7a082a4/gpgme-1.16.0.tar.bz2" +# poppler 26.07.0 needs Gpgmepp >= 1.19 (PDF GPG signatures). gpgme 2.x split +# the C++/Qt bindings into separate releases, so this stays on the latest 1.x +# that still bundles Gpgmepp (reports version 1.24.3 to poppler's find_package). -# disable python bindongs by brute force method -PATCHURL+=("https://beehive.molgen.mpg.de/4076c5e53f081c5793783f08fb2ef48c/gpgme-nopython.patch") +# SRCURL[0]="https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-${PKGVERSION}.tar.bz2" +SRCURL[0]="https://beehive.molgen.mpg.de/c6f85ce24ad46c9469596df0301f32eb/gpgme-1.24.3.tar.bz2" # build_in_sourcedir @@ -21,8 +22,15 @@ PATCHURL+=("https://beehive.molgen.mpg.de/4076c5e53f081c5793783f08fb2ef48c/gpgme #} mee_configure() { + # Build only the C (cl) and C++ (Gpgmepp) bindings. Poppler and + # LibreOffice use Gpgmepp; the Qt binding (QGpgme) is unused + # (sousage.pl reports libqgpgme.so as unknown) and building it would + # need Qt5's moc/qmake on PATH + PKG_CONFIG_PATH, which are not set up + # here. Dropping it also drops python (replaces the old + # gpgme-nopython.patch, which no longer applies to 1.24.3). bee_configure \ - --disable-gpg-test + --disable-gpg-test \ + --enable-languages=cl,cpp } #mee_build() { From fa6240c6896315cb4d447cdcaabc2f3f5e3a4934 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 17:38:24 +0200 Subject: [PATCH 12/20] boost: Update version from 1.72.0-1 to 1.91.0-0 poppler 26.07.0 configure hard-requires Boost >= 1.83 via find_package(Boost 1.83 CONFIG); the system package was 1.72.0. Boost is used header-only in poppler's Splash rasterizer for boost::container::small_vector. The headers-only recipe is unchanged and verified against 1.91.0: the install populates boost/container/small_vector.hpp and the CMake CONFIG files (Boost-1.91.0, boost_headers-1.91.0) report 1.91.0, so poppler's CONFIG-mode lookup succeeds. Header-only, so no soname/ABI change. The old bintray SRCURL is dead; the commented upstream URL now points at archives.boost.io. Co-Authored-By: Claude Opus 4.8 --- boost.be0 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/boost.be0 b/boost.be0 index 8310b7b91..470cb1bcd 100755 --- a/boost.be0 +++ b/boost.be0 @@ -1,9 +1,9 @@ #!/bin/env beesh -# BEE_VERSION boost-1.72.0-1 +# BEE_VERSION boost-1.91.0-0 -# SRCURL[0]="https://dl.bintray.com/boostorg/release/${PKGVERSION}/source/boost_${PKGVERSION//./_}.tar.gz" -SRCURL[0]="https://beehive.molgen.mpg.de/e2b0b1eac302880461bcbef097171758/boost_1_72_0.tar.gz" +# SRCURL[0]="https://archives.boost.io/release/${PKGVERSION}/source/boost_${PKGVERSION//./_}.tar.gz" +SRCURL[0]="https://beehive.molgen.mpg.de/e799ed3e5af9708739fb2e088c670ae1/boost_1_91_0.tar.gz" # build_in_sourcedir From d2cb633b2e8f116b6b8a502aff2440f62319a110 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 19:03:21 +0200 Subject: [PATCH 13/20] poppler: Build with clang instead of gcc 14 Switch CC/CXX from gcc14/g++14 to clang/clang++. clang 22 has full C++23 support and links against the system libstdc++, avoiding a dependency on the out-of-tree /pkg/gcc-14 libstdc++. That dependency also broke the g-ir-scanner introspection link with GLIBCXX_3.4.3x undefined references, since the scanner links its temporary binary with the C driver and could not resolve the gcc-14-only symbols against the default libstdc++. Co-Authored-By: Claude Opus 4.8 --- poppler.be0 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/poppler.be0 b/poppler.be0 index d66a7ccad..95323f51d 100755 --- a/poppler.be0 +++ b/poppler.be0 @@ -21,8 +21,11 @@ SRCURL[0]="https://beehive.molgen.mpg.de/d82e73dd42f525b042a9860e95948e2e/popple mee_configure() { # poppler 26.07.0 requires C++23; the default gcc (12.5.0) only has partial - # support, so build with gcc 14.1.0. - export CC=gcc14 CXX=g++14 + # support. Build with clang 22, which has full C++23 support and links + # against the system libstdc++ (avoids depending on an out-of-tree + # /pkg/gcc-14 libstdc++, which also broke the g-ir-scanner introspection + # link with GLIBCXX_3.4.3x undefined references). + export CC=clang CXX=clang++ # Point CMake at both the Qt5 and Qt6 installs so the qt5 and qt6 # bindings are found (poppler 26 builds both by default). From 23b8e74a1628d9e81d73733ed89c9d01b11cde9c Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 19:53:43 +0200 Subject: [PATCH 14/20] Add CLAUDE.md documenting how to work with bee files Capture the anatomy of a bee file (BEE_VERSION header, SRCURL beehive mirror, magic comment directives, mee_/bee_ hooks, S/B/D dirs), the local build invocation and flags, the clang-vs-gcc-14 compiler guidance and g-ir-scanner libstdc++ gotcha, compat packages, and the commit convention. Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..9530e5d32 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,128 @@ +# Working with bee files + +This repo holds **bee** package build files (`bee` = the MPIMG build/packaging +tool; `beesh v1.2.30`). Each `*.be0` / `*.be1` / … file is an executable +`beesh` script that fetches, builds and packages one piece of software. The +numeric suffix (`.be0`, `.be1`, …) is just a per-package revision counter — the +highest number is the current one. + +## Anatomy of a bee file + +```sh +#!/usr/bin/env beesh +# BEE_VERSION poppler-26.07.0-0 # -- + +SRCURL[0]="https://…/foo-${PKGVERSION}.tar.xz" +# PATCHURL+=("…") # optional patches, applied in order + +mee_configure() { … } # override hooks (see below) +``` + +- **`BEE_VERSION` header** sets the package name/version/revision. `PKGVERSION` + (and `PKGNAME`, `PKGEXTRAVERSION`) are derived from it and usable in the script. +- **`SRCURL[…]`** — source tarball URLs. House convention: keep the real + upstream URL as a comment and point `SRCURL[0]` at the hashed **beehive + mirror** (`https://beehive.molgen.mpg.de//`), which is the cache + the build actually downloads from. Update both when bumping a version. +- **`PATCHURL+=(…)`** — patches applied during `bee_patch`. + +### Magic comment directives + +These are read from comment lines (leading `# `) and change build layout: + +- `# build_in_sourcedir` — build in the source tree (`B=S`) instead of a + separate build dir. Common for autotools packages that don't support + out-of-tree builds. +- `# sourcesubdir_append ` — descend into `` after extract (e.g. the + tarball unpacks to `foo/` but the buildable tree is `foo/src`). + +## Hooks: `mee_*` override `bee_*` + +Each phase has a default `bee_` implementation; define `mee_()` to +override it, and optionally `mee__pre` / `_post` to run around the +default. Phases, in order: + +`extract → patch → configure → build → install` (plus optional `check`). + +```sh +mee_configure() { + export CC=clang CXX=clang++ + bee_configure -DCMAKE_BUILD_TYPE=Release # calls the default with extra args +} +``` + +- `bee_configure` auto-detects the build system (CMake/autotools/meson) and + passes standard prefix/dir flags; append project-specific flags to it rather + than reinventing the invocation. +- To *replace* rather than *extend*, define the `mee_*` body without calling the + `bee_*` default (see `mee_install` in `poppler_compat.be0`). + +## Directory variables (set by beesh) + +| Var | Meaning | +|------|-------------------------------------------| +| `$S` | source dir (`$BEEWORKDIR/source`) | +| `$B` | build dir (`$BEEWORKDIR/build`; `=$S` with `build_in_sourcedir`) | +| `$D` | install/image dir — the `DESTDIR` you `cd`/install into | + +`$BEEWORKDIR = $BEEPKGROOT/`. `$D` is what ends up in the package, +so `mee_install` overrides typically `cd ${D}` and lay files under it. + +## Building locally + +```sh +BEE_TMP_TMPDIR=/dev/shm \ +BEE_TMP_BUILDROOT=/dev/shm/bee-pmenzel \ +BEE_MAKEFLAGS='-j300' \ +fakeroot ./poppler.be0 -c +``` + +- `fakeroot` — needed so `mee_install` can set root-owned file ownership. +- `-c` / `--cleanup` — wipe the package's work tree before building. **Omit it + on a retry** if you want to keep the failed build dir for inspection; a + failing build otherwise leaves `$BEEWORKDIR` in place only if you didn't pass + `-c`. +- `-i` install after build, `--check` run `mee_check`. +- `BEE_TMP_BUILDROOT` puts the (large) work tree on fast tmpfs; the build dir is + then `.../bee-pmenzel//--/build`. +- For long builds, submit to MXQ: + `mxqsub -m 956G -t 90m --processors=256 -o ~/…/build.log ./submit.sh`. + +## Compiler selection — hard-won gotchas + +- Set the compiler with `export CC=… CXX=…` in `mee_configure`. +- **Prefer the system-path `clang`/`clang++` (currently clang 22 at + `/usr/bin/clang`) over the `/pkg/gcc-14…` toolchain.** clang 22 has full C++23 + *language* support and links the **system** libstdc++ (`/lib/libstdc++.so.6`, + gcc-12.5.0, symbols up to `GLIBCXX_3.4.30`). +- Building with `g++14` pulls in the out-of-tree `/pkg/gcc-14.1.0-0/lib64` + libstdc++, which is fragile (RPATH into `/pkg`) and emits newer + `GLIBCXX_3.4.31/.32` symbols that other tools can't resolve against the + default libstdc++. + - Concretely this broke **`g-ir-scanner`** (GObject introspection): it links + its temporary probe binary with the **C** driver (`$CC`), which doesn't pull + in libstdc++, so a `g++14`-built `libpoppler.so` gave + `undefined reference to std::ios_base_library_init()@GLIBCXX_3.4.32`. + `g-ir-scanner` appends `$LDFLAGS` (`giscanner/ccompiler.py`) if you ever + must feed it an explicit libstdc++ path — but switching to clang avoids the + problem entirely. +- **Residual risk with clang + system libstdc++:** clang gives C++23 *language* + support, but the *standard library* is gcc-12.5.0's, which is only partial + C++23. If a package needs newer library features (`std::format`, + ``, `std::print`), expect **compile** (not link) errors; `libc++` + is not installed here, so there's no clean fallback short of a newer + libstdc++. + +## Compatibility (`*_compat`) packages + +When a version bump changes an soname (ABI break), a `_compat.be0` ships +the *old* shared libraries (extracted from archived `.bee.tar.bz2` packages) so +already-built consumers keep working. See `poppler_compat.be0`. + +## Commit convention + +`: ` as the subject, matching git history, e.g. +`poppler: Build with clang instead of gcc 14` or +`boost: Update version from 1.72.0-1 to 1.91.0-0`. Commit only the `*.be?` file +you changed — the repo working tree is full of untracked build artifacts and +downloaded tarballs; never `git add -A`. From fe45cc2f2486df57bafd577e20b6aa8c10295c19 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 19:56:37 +0200 Subject: [PATCH 15/20] lcms2: Update version from 2.9-2 to 2.19.1-0 poppler 26.07.0 (LibreOffice 26 dependency cascade) requires lcms2 >= 2.14; MarIuX has 2.9. Latest upstream is 2.19.1 (now hosted on GitHub, not SourceForge). lcms2 2.19.x switched its primary build system to CMake (the tarball still ships autotools + meson, but bee_configure auto-detects CMake), so the autotools `--disable-static` flag no longer applies. Replace it with '-DLCMS2_BUILD_STATIC=OFF`. liblcms2.so.2 (SONAME unchanged, so no compat package needed), lcms2.pc reports Version 2.19 (>= 2.14), headers and CLI tools. Co-Authored-By: Claude Opus 4.8 --- lcms2.be0 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lcms2.be0 b/lcms2.be0 index e29239041..06791c2e8 100755 --- a/lcms2.be0 +++ b/lcms2.be0 @@ -1,9 +1,9 @@ #!/usr/bin/env beesh -# BEE_VERSION lcms2-2.9-2 +# BEE_VERSION lcms2-2.19.1-0 -# SRCURL[0]="https://downloads.sourceforge.net/project/lcms/lcms/${PKGVERSION}/lcms2-${PKGVERSION}.tar.gz" -SRCURL[0]="https://beehive.molgen.mpg.de/8de1b7724f578d2995c8fdfa35c3ad0e/lcms2-2.9.tar.gz" +# SRCURL[0]="https://github.com/mm2/Little-CMS/releases/download/lcms2.${PKGVERSION}/lcms2-${PKGVERSION}.tar.gz" +SRCURL[0]="https://beehive.molgen.mpg.de/541978f73749499e9e0277bfe5a3c868/lcms2-2.19.1.tar.gz" PATCHURL[0]="" @@ -18,7 +18,7 @@ PATCHURL[0]="" #} mee_configure() { - bee_configure --disable-static + bee_configure -DLCMS2_BUILD_STATIC=OFF } #mee_build() { From ba01113f8f4bda3a4f4d3553dc7d8a2a8902e1c2 Mon Sep 17 00:00:00 2001 From: Peter Marquardt Date: Thu, 5 May 2022 14:10:57 +0200 Subject: [PATCH 16/20] guile2: add version 2.2.7 - parallel install to guile 3.0.8 since a lot of stuff depends on 2.x --- guile2.be0 | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 guile2.be0 diff --git a/guile2.be0 b/guile2.be0 new file mode 100755 index 000000000..ed4ea9bdc --- /dev/null +++ b/guile2.be0 @@ -0,0 +1,43 @@ +#!/usr/bin/env beesh + +# BEE_VERSION guile2-2.2.7-0 + +# SRCURL[0]="https://ftp.gnu.org/gnu/guile/guile-2.2.7.tar.xz" +SRCURL[0]="https://beehive.molgen.mpg.de/7a7e8def41678c567148c26a8a0a0873/guile-2.2.7.tar.xz" + +# PATCHURL+=() + +# build_in_sourcedir + +# sourcesubdir_append src + +#mee_extract() { +# bee_extract "${@}" +#} + +#mee_patch() { +# bee_patch "${@}" +#} + +mee_configure() { + bee_configure \ + --disable-error-on-warning \ + --enable-static \ + --disable-shared \ + --disable-nls \ + --with-modules \ + --with-threads \ + --program-suffix=2 +} + +#mee_build() { +# bee_build +#} + +mee_install() { + bee_install + cd ${D} && ( + rm -rf usr/share/aclocal + rm -rf usr/share/info + ) +} From 1ba1ecbdcc182bba8454d75f9f2e4305dff34c3f Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 20:59:14 +0200 Subject: [PATCH 17/20] guile2: Also build shared version of library Increment revision to 1. --- guile2.be0 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guile2.be0 b/guile2.be0 index ed4ea9bdc..4fbabbc59 100755 --- a/guile2.be0 +++ b/guile2.be0 @@ -1,6 +1,6 @@ #!/usr/bin/env beesh -# BEE_VERSION guile2-2.2.7-0 +# BEE_VERSION guile2-2.2.7-1 # SRCURL[0]="https://ftp.gnu.org/gnu/guile/guile-2.2.7.tar.xz" SRCURL[0]="https://beehive.molgen.mpg.de/7a7e8def41678c567148c26a8a0a0873/guile-2.2.7.tar.xz" @@ -23,7 +23,7 @@ mee_configure() { bee_configure \ --disable-error-on-warning \ --enable-static \ - --disable-shared \ + --enable-shared \ --disable-nls \ --with-modules \ --with-threads \ From c36d31896cdb52b28b7cd5dcb638becd2543d34a Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 22:23:12 +0200 Subject: [PATCH 18/20] autogen: be0ify Rename autogen-5.11.1-0.bee to the versionless autogen.be0 layout and move the version into a BEE_VERSION header, as done for other packages (e.g. libtool, tiff). Co-Authored-By: Claude Opus 4.8 --- autogen-5.11.1-0.bee => autogen.be0 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename autogen-5.11.1-0.bee => autogen.be0 (84%) diff --git a/autogen-5.11.1-0.bee b/autogen.be0 similarity index 84% rename from autogen-5.11.1-0.bee rename to autogen.be0 index 7dcb5305a..d41b4a7b6 100755 --- a/autogen-5.11.1-0.bee +++ b/autogen.be0 @@ -1,4 +1,6 @@ -#!/bin/env beesh +#!/usr/bin/env beesh + +# BEE_VERSION autogen-5.11.1-0 SRCURL[0]="http://ftp.gnu.org/gnu/autogen/autogen-${PKGVERSION}.tar.bz2" From e4a9e1e2ef38f2859589405d1f441aa1c8ba39d7 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 22:23:34 +0200 Subject: [PATCH 19/20] autogen: Update version from 5.11.1-0 to 5.18.16-0 5.11.1 (2010) built against the system Guile 1.8.7; the new configure requires Guile >= 2.0, so build against the parallel-installed guile2 (2.2.7) via GUILE/GUILD. The old package also leaked gnulib's extensions.m4 into /usr/share/aclocal, where the stale serial-9 macro shadowed autoconf 2.71's AC_USE_SYSTEM_EXTENSIONS and broke autoreconf for other packages (e.g. LibreOffice's bundled libassuan). 5.18.16 installs only autoopts.m4. Co-Authored-By: Claude Opus 4.8 --- autogen.be0 | 50 ++++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/autogen.be0 b/autogen.be0 index d41b4a7b6..b5f7c900d 100755 --- a/autogen.be0 +++ b/autogen.be0 @@ -1,32 +1,26 @@ #!/usr/bin/env beesh -# BEE_VERSION autogen-5.11.1-0 - -SRCURL[0]="http://ftp.gnu.org/gnu/autogen/autogen-${PKGVERSION}.tar.bz2" - -PATCHURL[0]="" - -PGRP=( uncategorized ) - - - -# BEE_CONFIGURE=compat - -# EXCLUDE="" - -mee_patch() { - bee_patch -} - +# BEE_VERSION autogen-5.18.16-0 + +# Update from 5.11.1-0. The old package leaked gnulib's extensions.m4 (and +# unlocked-io.m4 / snprintfv.m4) into /usr/share/aclocal, where the stale +# (serial 9, 2010) extensions.m4 shadowed autoconf 2.71's built-in +# AC_USE_SYSTEM_EXTENSIONS and broke autoreconf/autoheader for other packages +# (e.g. LibreOffice's bundled libassuan). 5.18.16 installs only its own +# autoopts.m4 into /usr/share/aclocal, so the shadowing is gone. + +# https://ftp.gnu.org/gnu/autogen/rel5.18.16/autogen-5.18.16.tar.xz +SRCURL[0]="https://beehive.molgen.mpg.de/27c28df902a9fdb2b64f008a0a49fd05/autogen-5.18.16.tar.xz" + +# PATCHURL+=() + +# autogen 5.18.x requires Guile >= 2.0 (configure rejects the system Guile +# 1.8.7). Build against the parallel-installed guile2 (2.2.7) package: its +# guile-2.2.pc is found via the default PKG_CONFIG_PATH, and configure detects +# it with `pkg-config --exists guile-2.2`. Point GUILE/GUILD at the +# program-suffixed binaries so nothing falls back to /usr/bin/guile (1.8.7). +# NOTE: guile2-2.2.7-0 must be installed on the build host first. mee_configure() { - bee_configure -} - -mee_build() { - bee_build + export GUILE=/usr/bin/guile2 GUILD=/usr/bin/guild2 + bee_configure } - -mee_install() { - bee_install -} - From 8074fbeac1ceb9d3b680b719bd52098598bcb323 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 23 Jul 2026 22:47:11 +0200 Subject: [PATCH 20/20] autogen: Build against Guile 2.2 headers, not stale guile-config 1.8 The ag.c compile fails with SCM_INTERNAL/SCM_API undefined throughout the Guile headers. autoopts' mk-tpl-config.sh patches the Guile headers it will compile against (rewriting the bare `noreturn` keyword) and locates them via find_libguiledir, which trusts the stale system `guile-config` (1.8.7) first. Guile 1.8's headers sit directly in /usr/include with a top-level libguile.h, defeating the script's version-subdir detection, so it copies Guile 1.8's libguile.h and libguile/__scm.h into the build tree. The actual compile, though, uses Guile 2.2's headers (GUILE_CFLAGS from pkg-config, -I/usr/include/guile/2.2). Mixing 1.8's __scm.h with 2.2's alist.h/gc.h leaves SCM_INTERNAL/SCM_API undefined. The Makefile already passes the correct location as LGCFLAGS (= GUILE_CFLAGS), but find_libguiledir only consults it as a last-resort fallback. Patch it in mee_patch to honour that -I dir first when it contains libguile/__scm.h, so header patching matches the Guile the sources compile against. With Guile 2.2 (no bare `noreturn`) fix_guile then correctly no-ops and the pure 2.2 headers are used. Co-Authored-By: Claude Opus 4.8 --- autogen.be0 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/autogen.be0 b/autogen.be0 index b5f7c900d..cf3795eca 100755 --- a/autogen.be0 +++ b/autogen.be0 @@ -14,6 +14,36 @@ SRCURL[0]="https://beehive.molgen.mpg.de/27c28df902a9fdb2b64f008a0a49fd05/autoge # PATCHURL+=() +# autoopts' mk-tpl-config.sh patches the Guile headers it will compile against +# (rewriting the bare `noreturn` keyword) and locates them via the stale system +# `guile-config` (Guile 1.8.7), whose headers live directly in /usr/include and +# shadow the parallel-installed Guile 2.2 (/usr/include/guile/2.2). That made it +# copy Guile 1.8's libguile.h + libguile/__scm.h into the build tree while the +# actual compile used Guile 2.2's headers (GUILE_CFLAGS from pkg-config) — the +# resulting __scm.h/alist.h mismatch left SCM_INTERNAL/SCM_API undefined and the +# ag.c build failed. Make find_libguiledir honour the -I dir the Makefile already +# passes as LGCFLAGS (= GUILE_CFLAGS) when it actually contains libguile/__scm.h, +# so header patching matches the Guile the sources compile against. With Guile +# 2.2 (no bare `noreturn`) fix_guile then correctly no-ops. +mee_patch() { + bee_patch "${@}" + sed -i '/libguiledir=`exec 2>\/dev\/null ; guile-config info includedir`/i\ + # A GUILE_CFLAGS -I (pkg-config, passed in as LGCFLAGS) is\ + # authoritative: honour it so the guile header patching matches the guile\ + # the sources compile against, not the stale system guile-config (1.8)\ + # whose /usr/include headers shadow the parallel-installed guile 2.2.\ + for _lgc_arg; do\ + case ${_lgc_arg} in\ + -I?*) test -f "${_lgc_arg#-I}/libguile/__scm.h" \&\& {\ + libguiledir=${_lgc_arg#-I}\ + guile_scm_h=${libguiledir}/libguile/__scm.h\ + return 0\ + } ;;\ + esac\ + done\ +' autoopts/mk-tpl-config.sh +} + # autogen 5.18.x requires Guile >= 2.0 (configure rejects the system Guile # 1.8.7). Build against the parallel-installed guile2 (2.2.7) package: its # guile-2.2.pc is found via the default PKG_CONFIG_PATH, and configure detects