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`. diff --git a/autogen-5.11.1-0.bee b/autogen-5.11.1-0.bee deleted file mode 100755 index 7dcb5305a..000000000 --- a/autogen-5.11.1-0.bee +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/env beesh - -SRCURL[0]="http://ftp.gnu.org/gnu/autogen/autogen-${PKGVERSION}.tar.bz2" - -PATCHURL[0]="" - -PGRP=( uncategorized ) - - - -# BEE_CONFIGURE=compat - -# EXCLUDE="" - -mee_patch() { - bee_patch -} - -mee_configure() { - bee_configure -} - -mee_build() { - bee_build -} - -mee_install() { - bee_install -} - diff --git a/autogen.be0 b/autogen.be0 new file mode 100755 index 000000000..cf3795eca --- /dev/null +++ b/autogen.be0 @@ -0,0 +1,56 @@ +#!/usr/bin/env beesh + +# 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+=() + +# 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 +# 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() { + export GUILE=/usr/bin/guile2 GUILD=/usr/bin/guild2 + bee_configure +} 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 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+=() 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() { diff --git a/guile2.be0 b/guile2.be0 new file mode 100755 index 000000000..4fbabbc59 --- /dev/null +++ b/guile2.be0 @@ -0,0 +1,43 @@ +#!/usr/bin/env beesh + +# 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" + +# 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 \ + --enable-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 + ) +} 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() { 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+=() diff --git a/libreoffice.be0 b/libreoffice.be0 index 4a140efea..e12e141b6 100755 --- a/libreoffice.be0 +++ b/libreoffice.be0 @@ -2,18 +2,20 @@ #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") +# 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} 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. 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 +} 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+=() 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/* diff --git a/poppler.be0 b/poppler.be0 index 213ba7f3b..95323f51d 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,17 @@ 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. 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). 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 } 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 }