From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.haj.ipfire.org (localhost [IPv6:::1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4f1KyN5Xyfz2yBj for ; Wed, 28 Jan 2026 11:37:48 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (Client CN "mail01.haj.ipfire.org", Issuer "R12" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4f1KyN1nXfz2xLt for ; Wed, 28 Jan 2026 11:37:48 +0000 (UTC) Received: from people01.haj.ipfire.org (people01.haj.ipfire.org [172.28.1.161]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature ECDSA (secp384r1) client-digest SHA384) (Client CN "people01.haj.ipfire.org", Issuer "E7" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4f1KyM1NNXz5ZP for ; Wed, 28 Jan 2026 11:37:47 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1769600267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc; bh=ykQAz5Vpqvm0Ln55O/Osz7NlN0CszsQWokg0xGugwgg=; b=5M2h4ohvorqUcHd06Ewf1PvimsiHF1fVi1dR+1ls3lTZeQQAJ4igybfhB9CItox09KaB5w MTHm6YaOVZyotUBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1769600267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc; bh=ykQAz5Vpqvm0Ln55O/Osz7NlN0CszsQWokg0xGugwgg=; b=MfHC5D8MXp9X9cM0MvPWdrZMyMHcxva0QnY3Fy+/aCTCSq0chN7NUQ44jk2NtUyp9PoR0d 1HmppukG9lsG7UuvP85TYGWiWqqcIqol0V4hjWTJqyMVBlEwDnEvpn+FqA3IiSp5g6573X ADgPszFNdjFqIQdSfmVCY/UOd3UCyqXrUv2LLcxn9LBTwVJUCUIr17vf7J0BRx3DY7QFw7 MHLnuUVKfhDAGNubE3WAmHyiMM7kTeWGHOF/sfEskyh71iNxPdbLVMmQ2q21HLwMAhPVX5 bnmnAZxtZUrlWVgkCgGlBJ3tP9nFFf1Qrs0tBI1gCPzjdLviF4xdppsks/cdxg== Received: by people01.haj.ipfire.org (Postfix, from userid 1000) id 4f1KyL5cJ6z2xWV; Wed, 28 Jan 2026 11:37:46 +0000 (UTC) To: ipfire-scm@lists.ipfire.org Subject: [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 17f2e792aa0aa2271d121cd4590c042805862dcf X-Git-Refname: refs/heads/next X-Git-Reftype: branch X-Git-Oldrev: 643427acc6bf4f87003a5639e242abe80684d953 X-Git-Newrev: 17f2e792aa0aa2271d121cd4590c042805862dcf Message-Id: <4f1KyL5cJ6z2xWV@people01.haj.ipfire.org> Date: Wed, 28 Jan 2026 11:37:46 +0000 (UTC) From: Michael Tremer Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 2.x development tree". The branch, next has been updated via 17f2e792aa0aa2271d121cd4590c042805862dcf (commit) via 37e09a052707ac60f9267a5635aacfb556433816 (commit) via 35a37d4459cde7003204cf5501c407e3be3d1985 (commit) via 664489f7729ec06e5344144917bb340aa1c484b5 (commit) via 4242903bc61b5587dcccd10b63d3e2d7dbd92068 (commit) via 2e24021dabc7f9884e5a034263836f4bd6800b88 (commit) via 2ac8da749dbbcb6cd2ae6b84ead4fac68b090b24 (commit) via ab514d410ef223c58d83d92e47860e6d655081ef (commit) via 9a64e079e26d46c191a11a2753a626ba4439b878 (commit) via 4f796249bd7c82b1266486b0a1e771ce3b8e30e5 (commit) via d358d10c0788bf8eb09f0afba711c4e5cb4ed224 (commit) via 2b1aed32fa23e94f34c514d9e78a56386ae82d86 (commit) via a7454ce9383b139282326fd3e28e2d89c895281f (commit) via ebbf705e257cd51e8d45075f483bab3cfc2eddf0 (commit) via 0a28da94e0d91440b74858f06ae6359182a9a776 (commit) via e775c34b62fb2a90750634217a8bf47b9cfa5f83 (commit) via 4510441e47ec8fb728ce945e25d1309c7f7582eb (commit) via 7d2f78674585653a4171cdac20d34cd1a64e08f8 (commit) via b0c6dc6bc879c7d56310a99077631677c0bff008 (commit) via 42204886e0a10528d33a04337dddee4665406349 (commit) via 7a8f3d602b0add100b06adaf2ceb264a92e9bb05 (commit) via d8bb4039f2d42ea50214cac969ad38e287a6a804 (commit) via 6f164e7aeaaf4fd4c0d3d6cac18cded292eea7e8 (commit) via 2a68708020ca23630527567ad9771d1385d91d32 (commit) via ed3faee67cff796eec3e4d9cc0aff16d05d826bb (commit) from 643427acc6bf4f87003a5639e242abe80684d953 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 17f2e792aa0aa2271d121cd4590c042805862dcf Author: Michael Tremer Date: Wed Jan 28 11:36:51 2026 +0000 core201: Ship krb Signed-off-by: Michael Tremer commit 37e09a052707ac60f9267a5635aacfb556433816 Author: Michael Tremer Date: Wed Jan 28 11:36:08 2026 +0000 core201: Ship binutils Signed-off-by: Michael Tremer commit 35a37d4459cde7003204cf5501c407e3be3d1985 Author: Michael Tremer Date: Wed Jan 28 11:34:38 2026 +0000 core201: Ship glibc Signed-off-by: Michael Tremer commit 664489f7729ec06e5344144917bb340aa1c484b5 Author: Michael Tremer Date: Wed Jan 28 11:33:07 2026 +0000 Start Core Update 201 Signed-off-by: Michael Tremer commit 4242903bc61b5587dcccd10b63d3e2d7dbd92068 Author: Michael Tremer Date: Tue Jan 27 17:02:51 2026 +0000 oath-toolkit: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 2e24021dabc7f9884e5a034263836f4bd6800b88 Author: Michael Tremer Date: Tue Jan 27 16:45:07 2026 +0000 flashrom: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 2ac8da749dbbcb6cd2ae6b84ead4fac68b090b24 Author: Michael Tremer Date: Tue Jan 27 16:20:05 2026 +0000 libtpms: Fix build agsinst glibc >= 2.43 Signed-off-by: Michael Tremer commit ab514d410ef223c58d83d92e47860e6d655081ef Author: Michael Tremer Date: Tue Jan 27 16:19:44 2026 +0000 socat: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 9a64e079e26d46c191a11a2753a626ba4439b878 Author: Michael Tremer Date: Tue Jan 27 16:19:21 2026 +0000 tor: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 4f796249bd7c82b1266486b0a1e771ce3b8e30e5 Author: Michael Tremer Date: Tue Jan 27 11:10:57 2026 +0000 openvmtools: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit d358d10c0788bf8eb09f0afba711c4e5cb4ed224 Author: Michael Tremer Date: Mon Jan 26 17:49:46 2026 +0000 mpd: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 2b1aed32fa23e94f34c514d9e78a56386ae82d86 Author: Michael Tremer Date: Mon Jan 26 16:46:26 2026 +0000 krb5: Update to 1.22.1 This also fixes a build against glibc >= 2.43. Signed-off-by: Michael Tremer commit a7454ce9383b139282326fd3e28e2d89c895281f Author: Michael Tremer Date: Mon Jan 26 15:55:27 2026 +0000 ntp: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit ebbf705e257cd51e8d45075f483bab3cfc2eddf0 Author: Michael Tremer Date: Mon Jan 26 11:44:41 2026 +0000 nano: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 0a28da94e0d91440b74858f06ae6359182a9a776 Author: Michael Tremer Date: Sun Jan 25 15:06:36 2026 +0000 systemd: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit e775c34b62fb2a90750634217a8bf47b9cfa5f83 Author: Michael Tremer Date: Sun Jan 25 14:31:35 2026 +0000 elfutils: Fix build with glibc >= 2.43 Signed-off-by: Michael Tremer commit 4510441e47ec8fb728ce945e25d1309c7f7582eb Author: Michael Tremer Date: Sat Jan 24 15:46:42 2026 +0000 util-linux: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit 7d2f78674585653a4171cdac20d34cd1a64e08f8 Author: Michael Tremer Date: Sat Jan 24 15:03:40 2026 +0000 gettext: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit b0c6dc6bc879c7d56310a99077631677c0bff008 Author: Michael Tremer Date: Sat Jan 24 14:41:45 2026 +0000 glibc: Update to 2.43 Signed-off-by: Michael Tremer commit 42204886e0a10528d33a04337dddee4665406349 Author: Michael Tremer Date: Sat Jan 24 14:38:22 2026 +0000 m4: Fix build with glibc >= 2.43 Signed-off-by: Michael Tremer commit 7a8f3d602b0add100b06adaf2ceb264a92e9bb05 Author: Michael Tremer Date: Sat Jan 24 14:28:13 2026 +0000 coreutils: Fix build against glibc >= 2.43 Signed-off-by: Michael Tremer commit d8bb4039f2d42ea50214cac969ad38e287a6a804 Author: Michael Tremer Date: Sat Jan 24 14:08:33 2026 +0000 gcc: Fix FTBS with glibc >= 2.43 Signed-off-by: Michael Tremer commit 6f164e7aeaaf4fd4c0d3d6cac18cded292eea7e8 Author: Michael Tremer Date: Sat Jan 24 13:12:38 2026 +0000 libxcrypt: Fix FTBFS with glibc >= 2.43 Signed-off-by: Michael Tremer commit 2a68708020ca23630527567ad9771d1385d91d32 Author: Michael Tremer Date: Sat Jan 24 13:09:06 2026 +0000 binutils: Update to 2.45.1 Signed-off-by: Michael Tremer ----------------------------------------------------------------------- Summary of changes: config/rootfiles/common/aarch64/binutils | 4 +- config/rootfiles/common/aarch64/glibc | 20 +- config/rootfiles/common/riscv64/binutils | 4 +- config/rootfiles/common/riscv64/glibc | 18 + config/rootfiles/common/suricata-reporter | 3 +- config/rootfiles/common/x86_64/binutils | 4 +- config/rootfiles/common/x86_64/glibc | 20 +- config/rootfiles/core/{200 => 201}/exclude | 0 .../133 => core/201}/filelists/aarch64/binutils | 0 .../core/{200 => 201}/filelists/aarch64/glibc | 0 .../core/{200 => 201}/filelists/core-files | 0 .../{oldcore/163 => core/201/filelists}/files | 0 .../{oldcore/169 => core/201}/filelists/krb5 | 0 .../180 => core/201}/filelists/riscv64/binutils | 0 .../core/{200 => 201}/filelists/riscv64/glibc | 0 .../100 => core/201}/filelists/x86_64/binutils | 0 .../core/{200 => 201}/filelists/x86_64/glibc | 0 .../rootfiles/{oldcore/152 => core/201}/update.sh | 14 +- config/rootfiles/{core => oldcore}/200/exclude | 0 .../{core => oldcore}/200/filelists/aarch64/glibc | 0 .../{core => oldcore}/200/filelists/aarch64/linux | 0 .../{core => oldcore}/200/filelists/apache2 | 0 .../rootfiles/{core => oldcore}/200/filelists/bash | 0 .../rootfiles/{core => oldcore}/200/filelists/bind | 0 .../{core => oldcore}/200/filelists/core-files | 0 .../{core => oldcore}/200/filelists/coreutils | 0 .../rootfiles/{core => oldcore}/200/filelists/curl | 0 .../{core => oldcore}/200/filelists/dhcpcd | 0 .../{core => oldcore}/200/filelists/dracut-ng | 0 .../{core => oldcore}/200/filelists/elinks | 0 .../{core => oldcore}/200/filelists/files | 0 .../rootfiles/{core => oldcore}/200/filelists/fuse | 0 .../rootfiles/{core => oldcore}/200/filelists/gdb | 0 .../rootfiles/{core => oldcore}/200/filelists/glib | 0 .../{core => oldcore}/200/filelists/gnupg | 0 .../{core => oldcore}/200/filelists/gnutls | 0 .../{core => oldcore}/200/filelists/harfbuzz | 0 .../{core => oldcore}/200/filelists/hwdata | 0 .../{core => oldcore}/200/filelists/iana-etc | 0 .../200/filelists/ids-ruleset-sources | 0 .../{core => oldcore}/200/filelists/iptables | 0 .../{core => oldcore}/200/filelists/libarchive | 0 .../{core => oldcore}/200/filelists/libassuan | 0 .../{core => oldcore}/200/filelists/libcap-ng | 0 .../{core => oldcore}/200/filelists/libgpg-error | 0 .../{core => oldcore}/200/filelists/libidn2 | 0 .../{core => oldcore}/200/filelists/libjpeg | 0 .../{core => oldcore}/200/filelists/libksba | 0 .../{core => oldcore}/200/filelists/libpcap | 0 .../{core => oldcore}/200/filelists/libpng | 0 .../{core => oldcore}/200/filelists/libtasn1 | 0 .../{core => oldcore}/200/filelists/liburcu | 0 .../{core => oldcore}/200/filelists/libxcrypt | 0 .../rootfiles/{core => oldcore}/200/filelists/lvm2 | 0 .../{core => oldcore}/200/filelists/mdadm | 0 .../{core => oldcore}/200/filelists/meson | 0 .../rootfiles/{core => oldcore}/200/filelists/newt | 0 .../{core => oldcore}/200/filelists/ninja | 0 .../rootfiles/{core => oldcore}/200/filelists/npth | 0 .../{core => oldcore}/200/filelists/oath-toolkit | 0 .../{core => oldcore}/200/filelists/openvpn | 0 .../{core => oldcore}/200/filelists/readline | 0 .../{core => oldcore}/200/filelists/riscv64/glibc | 0 .../{core => oldcore}/200/filelists/riscv64/linux | 0 .../{core => oldcore}/200/filelists/sqlite | 0 .../{core => oldcore}/200/filelists/strongswan | 0 .../{core => oldcore}/200/filelists/suricata | 0 .../200/filelists/suricata-reporter | 0 .../{core => oldcore}/200/filelists/tzdata | 0 .../{core => oldcore}/200/filelists/unbound | 0 .../rootfiles/{core => oldcore}/200/filelists/vim | 0 .../{core => oldcore}/200/filelists/wireless-regdb | 0 .../{core => oldcore}/200/filelists/x86_64/glibc | 0 .../200/filelists/x86_64/intel-microcode | 0 .../{core => oldcore}/200/filelists/x86_64/linux | 0 .../rootfiles/{core => oldcore}/200/filelists/xz | 0 config/rootfiles/{core => oldcore}/200/update.sh | 0 lfs/binutils | 6 +- lfs/coreutils | 4 +- lfs/elfutils | 1 + lfs/flashrom | 1 + lfs/gcc | 2 + lfs/gettext | 4 + lfs/glibc | 7 +- lfs/krb5 | 8 +- lfs/libtpms | 1 + lfs/libxcrypt | 1 + lfs/m4 | 3 + lfs/mpd | 3 +- lfs/nano | 2 + lfs/ntp | 2 + lfs/oath-toolkit | 2 + lfs/openvmtools | 7 +- lfs/socat | 1 + lfs/systemd | 2 + lfs/tor | 2 + lfs/util-linux | 1 + make.sh | 2 +- src/patches/binutils-2.45.1-gprofng-FTBFS.patch | 31 + src/patches/elfutils-0.194-FTBFS.patch | 301 +++++++++ ...-9c9d3aef2f66625d9cb03ef4baee10ed6648e681.patch | 73 ++ src/patches/glibc-2.42-CVE-2025-15281.patch | 175 ----- src/patches/glibc-2.42-CVE-2026-0861.patch | 88 --- src/patches/glibc-2.42-CVE-2026-0915.patch | 77 --- src/patches/krb5-1.12.3-FTBFS.patch | 188 ++++++ src/patches/libtmps-0.10.2-FTBFS.patch | 33 + ...-174c24d6e87aeae631bc0a7bb1ba983cf8def4de.patch | 38 ++ src/patches/mpd-0.24.5-openat2.patch | 60 ++ src/patches/socat-1.8.1.0-printtime.patch | 13 + src/patches/systemd-258-FTBFS.patch | 744 +++++++++++++++++++++ src/patches/util-linux-2.41.2-FTBFS-bsearch.patch | 40 ++ 111 files changed, 1638 insertions(+), 372 deletions(-) copy config/rootfiles/core/{200 => 201}/exclude (100%) copy config/rootfiles/{oldcore/133 => core/201}/filelists/aarch64/binutils (100%) copy config/rootfiles/core/{200 => 201}/filelists/aarch64/glibc (100%) copy config/rootfiles/core/{200 => 201}/filelists/core-files (100%) copy config/rootfiles/{oldcore/163 => core/201/filelists}/files (100%) copy config/rootfiles/{oldcore/169 => core/201}/filelists/krb5 (100%) copy config/rootfiles/{oldcore/180 => core/201}/filelists/riscv64/binutils (100%) copy config/rootfiles/core/{200 => 201}/filelists/riscv64/glibc (100%) copy config/rootfiles/{oldcore/100 => core/201}/filelists/x86_64/binutils (100%) copy config/rootfiles/core/{200 => 201}/filelists/x86_64/glibc (100%) copy config/rootfiles/{oldcore/152 => core/201}/update.sh (93%) rename config/rootfiles/{core => oldcore}/200/exclude (100%) rename config/rootfiles/{core => oldcore}/200/filelists/aarch64/glibc (100%) rename config/rootfiles/{core => oldcore}/200/filelists/aarch64/linux (100%) rename config/rootfiles/{core => oldcore}/200/filelists/apache2 (100%) rename config/rootfiles/{core => oldcore}/200/filelists/bash (100%) rename config/rootfiles/{core => oldcore}/200/filelists/bind (100%) rename config/rootfiles/{core => oldcore}/200/filelists/core-files (100%) rename config/rootfiles/{core => oldcore}/200/filelists/coreutils (100%) rename config/rootfiles/{core => oldcore}/200/filelists/curl (100%) rename config/rootfiles/{core => oldcore}/200/filelists/dhcpcd (100%) rename config/rootfiles/{core => oldcore}/200/filelists/dracut-ng (100%) rename config/rootfiles/{core => oldcore}/200/filelists/elinks (100%) rename config/rootfiles/{core => oldcore}/200/filelists/files (100%) rename config/rootfiles/{core => oldcore}/200/filelists/fuse (100%) rename config/rootfiles/{core => oldcore}/200/filelists/gdb (100%) rename config/rootfiles/{core => oldcore}/200/filelists/glib (100%) rename config/rootfiles/{core => oldcore}/200/filelists/gnupg (100%) rename config/rootfiles/{core => oldcore}/200/filelists/gnutls (100%) rename config/rootfiles/{core => oldcore}/200/filelists/harfbuzz (100%) rename config/rootfiles/{core => oldcore}/200/filelists/hwdata (100%) rename config/rootfiles/{core => oldcore}/200/filelists/iana-etc (100%) rename config/rootfiles/{core => oldcore}/200/filelists/ids-ruleset-sources (100%) rename config/rootfiles/{core => oldcore}/200/filelists/iptables (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libarchive (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libassuan (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libcap-ng (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libgpg-error (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libidn2 (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libjpeg (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libksba (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libpcap (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libpng (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libtasn1 (100%) rename config/rootfiles/{core => oldcore}/200/filelists/liburcu (100%) rename config/rootfiles/{core => oldcore}/200/filelists/libxcrypt (100%) rename config/rootfiles/{core => oldcore}/200/filelists/lvm2 (100%) rename config/rootfiles/{core => oldcore}/200/filelists/mdadm (100%) rename config/rootfiles/{core => oldcore}/200/filelists/meson (100%) rename config/rootfiles/{core => oldcore}/200/filelists/newt (100%) rename config/rootfiles/{core => oldcore}/200/filelists/ninja (100%) rename config/rootfiles/{core => oldcore}/200/filelists/npth (100%) rename config/rootfiles/{core => oldcore}/200/filelists/oath-toolkit (100%) rename config/rootfiles/{core => oldcore}/200/filelists/openvpn (100%) rename config/rootfiles/{core => oldcore}/200/filelists/readline (100%) rename config/rootfiles/{core => oldcore}/200/filelists/riscv64/glibc (100%) rename config/rootfiles/{core => oldcore}/200/filelists/riscv64/linux (100%) rename config/rootfiles/{core => oldcore}/200/filelists/sqlite (100%) rename config/rootfiles/{core => oldcore}/200/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/200/filelists/suricata (100%) rename config/rootfiles/{core => oldcore}/200/filelists/suricata-reporter (100%) rename config/rootfiles/{core => oldcore}/200/filelists/tzdata (100%) rename config/rootfiles/{core => oldcore}/200/filelists/unbound (100%) rename config/rootfiles/{core => oldcore}/200/filelists/vim (100%) rename config/rootfiles/{core => oldcore}/200/filelists/wireless-regdb (100%) rename config/rootfiles/{core => oldcore}/200/filelists/x86_64/glibc (100%) rename config/rootfiles/{core => oldcore}/200/filelists/x86_64/intel-microcode (100%) rename config/rootfiles/{core => oldcore}/200/filelists/x86_64/linux (100%) rename config/rootfiles/{core => oldcore}/200/filelists/xz (100%) rename config/rootfiles/{core => oldcore}/200/update.sh (100%) create mode 100644 src/patches/binutils-2.45.1-gprofng-FTBFS.patch create mode 100644 src/patches/elfutils-0.194-FTBFS.patch create mode 100644 src/patches/gcc-15.2.0-9c9d3aef2f66625d9cb03ef4baee10ed6648e681.patch delete mode 100644 src/patches/glibc-2.42-CVE-2025-15281.patch delete mode 100644 src/patches/glibc-2.42-CVE-2026-0861.patch delete mode 100644 src/patches/glibc-2.42-CVE-2026-0915.patch create mode 100644 src/patches/krb5-1.12.3-FTBFS.patch create mode 100644 src/patches/libtmps-0.10.2-FTBFS.patch create mode 100644 src/patches/libxcrypt-4.5.1-174c24d6e87aeae631bc0a7bb1ba983cf8def4de.patch create mode 100644 src/patches/mpd-0.24.5-openat2.patch create mode 100644 src/patches/socat-1.8.1.0-printtime.patch create mode 100644 src/patches/systemd-258-FTBFS.patch create mode 100644 src/patches/util-linux-2.41.2-FTBFS-bsearch.patch Difference in files: diff --git a/config/rootfiles/common/aarch64/binutils b/config/rootfiles/common/aarch64/binutils index e961f8a887..2e8fcdefea 100644 --- a/config/rootfiles/common/aarch64/binutils +++ b/config/rootfiles/common/aarch64/binutils @@ -426,7 +426,7 @@ usr/lib/bfd-plugins/libdep.so #usr/lib/ldscripts/armelfb_linux_eabi.xwe #usr/lib/ldscripts/armelfb_linux_eabi.xwer #usr/lib/ldscripts/stamp -usr/lib/libbfd-2.45.so +usr/lib/libbfd-2.45.1.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so @@ -445,7 +445,7 @@ usr/lib/libctf.so.0.0.0 #usr/lib/libgprofng.so usr/lib/libgprofng.so.0 usr/lib/libgprofng.so.0.0.0 -usr/lib/libopcodes-2.45.so +usr/lib/libopcodes-2.45.1.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so diff --git a/config/rootfiles/common/aarch64/glibc b/config/rootfiles/common/aarch64/glibc index e3493dd956..b474a0e40d 100644 --- a/config/rootfiles/common/aarch64/glibc +++ b/config/rootfiles/common/aarch64/glibc @@ -77,6 +77,7 @@ usr/bin/locale #usr/include/bits/error-ldbl.h #usr/include/bits/error.h #usr/include/bits/eventfd.h +#usr/include/bits/fcntl-linux-fortify.h #usr/include/bits/fcntl-linux.h #usr/include/bits/fcntl.h #usr/include/bits/fcntl2.h @@ -125,6 +126,7 @@ usr/bin/locale #usr/include/bits/mqueue2.h #usr/include/bits/msq.h #usr/include/bits/netdb.h +#usr/include/bits/openat2.h #usr/include/bits/param.h #usr/include/bits/poll.h #usr/include/bits/poll2.h @@ -237,6 +239,7 @@ usr/bin/locale #usr/include/bits/types/idtype_t.h #usr/include/bits/types/locale_t.h #usr/include/bits/types/mbstate_t.h +#usr/include/bits/types/once_flag.h #usr/include/bits/types/res_state.h #usr/include/bits/types/sig_atomic_t.h #usr/include/bits/types/sigevent_t.h @@ -814,7 +817,7 @@ usr/lib/gconv #usr/lib/libc_nonshared.a #usr/lib/libdl.a #usr/lib/libg.a -#usr/lib/libm-2.42.a +#usr/lib/libm-2.43.a #usr/lib/libm.a #usr/lib/libm.so #usr/lib/libmcheck.a @@ -2958,6 +2961,20 @@ usr/lib/locale #usr/lib/locale/en_SC.utf8/LC_PAPER #usr/lib/locale/en_SC.utf8/LC_TELEPHONE #usr/lib/locale/en_SC.utf8/LC_TIME +#usr/lib/locale/en_SE.utf8 +#usr/lib/locale/en_SE.utf8/LC_ADDRESS +#usr/lib/locale/en_SE.utf8/LC_COLLATE +#usr/lib/locale/en_SE.utf8/LC_CTYPE +#usr/lib/locale/en_SE.utf8/LC_IDENTIFICATION +#usr/lib/locale/en_SE.utf8/LC_MEASUREMENT +#usr/lib/locale/en_SE.utf8/LC_MESSAGES +#usr/lib/locale/en_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES +#usr/lib/locale/en_SE.utf8/LC_MONETARY +#usr/lib/locale/en_SE.utf8/LC_NAME +#usr/lib/locale/en_SE.utf8/LC_NUMERIC +#usr/lib/locale/en_SE.utf8/LC_PAPER +#usr/lib/locale/en_SE.utf8/LC_TELEPHONE +#usr/lib/locale/en_SE.utf8/LC_TIME #usr/lib/locale/en_SG #usr/lib/locale/en_SG.utf8 #usr/lib/locale/en_SG.utf8/LC_ADDRESS @@ -8175,6 +8192,7 @@ usr/lib/locale #usr/share/i18n/locales/en_NZ #usr/share/i18n/locales/en_PH #usr/share/i18n/locales/en_SC +#usr/share/i18n/locales/en_SE #usr/share/i18n/locales/en_SG #usr/share/i18n/locales/en_US #usr/share/i18n/locales/en_ZA diff --git a/config/rootfiles/common/riscv64/binutils b/config/rootfiles/common/riscv64/binutils index 06025b088f..aeadbaca9b 100644 --- a/config/rootfiles/common/riscv64/binutils +++ b/config/rootfiles/common/riscv64/binutils @@ -426,7 +426,7 @@ usr/bin/strings #usr/lib/ldscripts/elf64lriscv_lp64f.xwe #usr/lib/ldscripts/elf64lriscv_lp64f.xwer #usr/lib/ldscripts/stamp -usr/lib/libbfd-2.45.so +usr/lib/libbfd-2.45.1.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so @@ -445,7 +445,7 @@ usr/lib/libctf.so.0.0.0 #usr/lib/libgprofng.so #usr/lib/libgprofng.so.0 #usr/lib/libgprofng.so.0.0.0 -usr/lib/libopcodes-2.45.so +usr/lib/libopcodes-2.45.1.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so diff --git a/config/rootfiles/common/riscv64/glibc b/config/rootfiles/common/riscv64/glibc index 1dbc835fc0..be7a29829d 100644 --- a/config/rootfiles/common/riscv64/glibc +++ b/config/rootfiles/common/riscv64/glibc @@ -76,6 +76,7 @@ usr/bin/locale #usr/include/bits/error-ldbl.h #usr/include/bits/error.h #usr/include/bits/eventfd.h +#usr/include/bits/fcntl-linux-fortify.h #usr/include/bits/fcntl-linux.h #usr/include/bits/fcntl.h #usr/include/bits/fcntl2.h @@ -124,6 +125,7 @@ usr/bin/locale #usr/include/bits/mqueue2.h #usr/include/bits/msq.h #usr/include/bits/netdb.h +#usr/include/bits/openat2.h #usr/include/bits/param.h #usr/include/bits/poll.h #usr/include/bits/poll2.h @@ -236,6 +238,7 @@ usr/bin/locale #usr/include/bits/types/idtype_t.h #usr/include/bits/types/locale_t.h #usr/include/bits/types/mbstate_t.h +#usr/include/bits/types/once_flag.h #usr/include/bits/types/res_state.h #usr/include/bits/types/sig_atomic_t.h #usr/include/bits/types/sigevent_t.h @@ -2955,6 +2958,20 @@ usr/lib/locale #usr/lib/locale/en_SC.utf8/LC_PAPER #usr/lib/locale/en_SC.utf8/LC_TELEPHONE #usr/lib/locale/en_SC.utf8/LC_TIME +#usr/lib/locale/en_SE.utf8 +#usr/lib/locale/en_SE.utf8/LC_ADDRESS +#usr/lib/locale/en_SE.utf8/LC_COLLATE +#usr/lib/locale/en_SE.utf8/LC_CTYPE +#usr/lib/locale/en_SE.utf8/LC_IDENTIFICATION +#usr/lib/locale/en_SE.utf8/LC_MEASUREMENT +#usr/lib/locale/en_SE.utf8/LC_MESSAGES +#usr/lib/locale/en_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES +#usr/lib/locale/en_SE.utf8/LC_MONETARY +#usr/lib/locale/en_SE.utf8/LC_NAME +#usr/lib/locale/en_SE.utf8/LC_NUMERIC +#usr/lib/locale/en_SE.utf8/LC_PAPER +#usr/lib/locale/en_SE.utf8/LC_TELEPHONE +#usr/lib/locale/en_SE.utf8/LC_TIME #usr/lib/locale/en_SG #usr/lib/locale/en_SG.utf8 #usr/lib/locale/en_SG.utf8/LC_ADDRESS @@ -8172,6 +8189,7 @@ usr/lib/locale #usr/share/i18n/locales/en_NZ #usr/share/i18n/locales/en_PH #usr/share/i18n/locales/en_SC +#usr/share/i18n/locales/en_SE #usr/share/i18n/locales/en_SG #usr/share/i18n/locales/en_US #usr/share/i18n/locales/en_ZA diff --git a/config/rootfiles/common/suricata-reporter b/config/rootfiles/common/suricata-reporter index b2416625f9..cff9a1c569 100644 --- a/config/rootfiles/common/suricata-reporter +++ b/config/rootfiles/common/suricata-reporter @@ -1,11 +1,12 @@ etc/suricata/reporter.conf -usr/bin/suricata-reporter usr/bin/suricata-report-cron usr/bin/suricata-report-generator +usr/bin/suricata-reporter #usr/share/doc/suricata-reporter #usr/share/doc/suricata-reporter/COPYING #usr/share/doc/suricata-reporter/README.md usr/share/locale/de_DE usr/share/locale/de_DE/LC_MESSAGES usr/share/locale/de_DE/LC_MESSAGES/suricata-reporter.mo +usr/share/locale/es/LC_MESSAGES/suricata-reporter.mo var/ipfire/suricata/reporter.conf diff --git a/config/rootfiles/common/x86_64/binutils b/config/rootfiles/common/x86_64/binutils index 08f4bea04c..838d1e588d 100644 --- a/config/rootfiles/common/x86_64/binutils +++ b/config/rootfiles/common/x86_64/binutils @@ -178,7 +178,7 @@ usr/bin/strings #usr/lib/ldscripts/elf_x86_64.xwe #usr/lib/ldscripts/elf_x86_64.xwer #usr/lib/ldscripts/stamp -usr/lib/libbfd-2.45.so +usr/lib/libbfd-2.45.1.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so @@ -197,7 +197,7 @@ usr/lib/libctf.so.0.0.0 #usr/lib/libgprofng.so usr/lib/libgprofng.so.0 usr/lib/libgprofng.so.0.0.0 -usr/lib/libopcodes-2.45.so +usr/lib/libopcodes-2.45.1.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so diff --git a/config/rootfiles/common/x86_64/glibc b/config/rootfiles/common/x86_64/glibc index a4bdd8a8e7..1ea042e20d 100644 --- a/config/rootfiles/common/x86_64/glibc +++ b/config/rootfiles/common/x86_64/glibc @@ -77,6 +77,7 @@ usr/bin/locale #usr/include/bits/error-ldbl.h #usr/include/bits/error.h #usr/include/bits/eventfd.h +#usr/include/bits/fcntl-linux-fortify.h #usr/include/bits/fcntl-linux.h #usr/include/bits/fcntl.h #usr/include/bits/fcntl2.h @@ -125,6 +126,7 @@ usr/bin/locale #usr/include/bits/mqueue2.h #usr/include/bits/msq.h #usr/include/bits/netdb.h +#usr/include/bits/openat2.h #usr/include/bits/param.h #usr/include/bits/platform #usr/include/bits/platform/features.h @@ -240,6 +242,7 @@ usr/bin/locale #usr/include/bits/types/idtype_t.h #usr/include/bits/types/locale_t.h #usr/include/bits/types/mbstate_t.h +#usr/include/bits/types/once_flag.h #usr/include/bits/types/res_state.h #usr/include/bits/types/sig_atomic_t.h #usr/include/bits/types/sigevent_t.h @@ -823,7 +826,7 @@ usr/lib/gconv #usr/lib/libc_nonshared.a #usr/lib/libdl.a #usr/lib/libg.a -#usr/lib/libm-2.42.a +#usr/lib/libm-2.43.a #usr/lib/libm.a #usr/lib/libm.so #usr/lib/libmcheck.a @@ -2967,6 +2970,20 @@ usr/lib/locale #usr/lib/locale/en_SC.utf8/LC_PAPER #usr/lib/locale/en_SC.utf8/LC_TELEPHONE #usr/lib/locale/en_SC.utf8/LC_TIME +#usr/lib/locale/en_SE.utf8 +#usr/lib/locale/en_SE.utf8/LC_ADDRESS +#usr/lib/locale/en_SE.utf8/LC_COLLATE +#usr/lib/locale/en_SE.utf8/LC_CTYPE +#usr/lib/locale/en_SE.utf8/LC_IDENTIFICATION +#usr/lib/locale/en_SE.utf8/LC_MEASUREMENT +#usr/lib/locale/en_SE.utf8/LC_MESSAGES +#usr/lib/locale/en_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES +#usr/lib/locale/en_SE.utf8/LC_MONETARY +#usr/lib/locale/en_SE.utf8/LC_NAME +#usr/lib/locale/en_SE.utf8/LC_NUMERIC +#usr/lib/locale/en_SE.utf8/LC_PAPER +#usr/lib/locale/en_SE.utf8/LC_TELEPHONE +#usr/lib/locale/en_SE.utf8/LC_TIME #usr/lib/locale/en_SG #usr/lib/locale/en_SG.utf8 #usr/lib/locale/en_SG.utf8/LC_ADDRESS @@ -8184,6 +8201,7 @@ usr/lib/locale #usr/share/i18n/locales/en_NZ #usr/share/i18n/locales/en_PH #usr/share/i18n/locales/en_SC +#usr/share/i18n/locales/en_SE #usr/share/i18n/locales/en_SG #usr/share/i18n/locales/en_US #usr/share/i18n/locales/en_ZA diff --git a/config/rootfiles/core/200/exclude b/config/rootfiles/core/201/exclude similarity index 100% rename from config/rootfiles/core/200/exclude rename to config/rootfiles/core/201/exclude diff --git a/config/rootfiles/core/201/filelists/aarch64/binutils b/config/rootfiles/core/201/filelists/aarch64/binutils new file mode 120000 index 0000000000..6da9d39e5e --- /dev/null +++ b/config/rootfiles/core/201/filelists/aarch64/binutils @@ -0,0 +1 @@ +../../../../common/aarch64/binutils \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/aarch64/glibc b/config/rootfiles/core/201/filelists/aarch64/glibc similarity index 100% rename from config/rootfiles/core/200/filelists/aarch64/glibc rename to config/rootfiles/core/201/filelists/aarch64/glibc diff --git a/config/rootfiles/core/200/filelists/core-files b/config/rootfiles/core/201/filelists/core-files similarity index 100% rename from config/rootfiles/core/200/filelists/core-files rename to config/rootfiles/core/201/filelists/core-files diff --git a/config/rootfiles/core/201/filelists/files b/config/rootfiles/core/201/filelists/files new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/rootfiles/core/201/filelists/krb5 b/config/rootfiles/core/201/filelists/krb5 new file mode 120000 index 0000000000..082c3cbcdb --- /dev/null +++ b/config/rootfiles/core/201/filelists/krb5 @@ -0,0 +1 @@ +../../../common/krb5 \ No newline at end of file diff --git a/config/rootfiles/core/201/filelists/riscv64/binutils b/config/rootfiles/core/201/filelists/riscv64/binutils new file mode 120000 index 0000000000..c5f3990b61 --- /dev/null +++ b/config/rootfiles/core/201/filelists/riscv64/binutils @@ -0,0 +1 @@ +../../../../common/riscv64/binutils \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/riscv64/glibc b/config/rootfiles/core/201/filelists/riscv64/glibc similarity index 100% rename from config/rootfiles/core/200/filelists/riscv64/glibc rename to config/rootfiles/core/201/filelists/riscv64/glibc diff --git a/config/rootfiles/core/201/filelists/x86_64/binutils b/config/rootfiles/core/201/filelists/x86_64/binutils new file mode 120000 index 0000000000..7d0fda554d --- /dev/null +++ b/config/rootfiles/core/201/filelists/x86_64/binutils @@ -0,0 +1 @@ +../../../../common/x86_64/binutils \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/x86_64/glibc b/config/rootfiles/core/201/filelists/x86_64/glibc similarity index 100% rename from config/rootfiles/core/200/filelists/x86_64/glibc rename to config/rootfiles/core/201/filelists/x86_64/glibc diff --git a/config/rootfiles/core/201/update.sh b/config/rootfiles/core/201/update.sh new file mode 100644 index 0000000000..542f18afac --- /dev/null +++ b/config/rootfiles/core/201/update.sh @@ -0,0 +1,71 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2026 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +core=201 + +# Remove old core updates from pakfire cache to save space... +for (( i=1; i<=$core; i++ )); do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# Remove files + +# Extract files +extract_files + +# update linker config +ldconfig + +# Restart init +telinit u + +# Update Language cache +/usr/local/bin/update-lang-cache + +# Filesytem cleanup +/usr/local/bin/filesystem-cleanup + +# Apply SSH configuration +/usr/local/bin/sshctrl + +# Start services + +# This update needs a reboot... +#touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Update grub config to display new core version +if [ -e /boot/grub/grub.cfg ]; then + grub-mkconfig -o /boot/grub/grub.cfg +fi + +sync + +# Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/200/exclude b/config/rootfiles/oldcore/200/exclude new file mode 100644 index 0000000000..8ee1c3c2f5 --- /dev/null +++ b/config/rootfiles/oldcore/200/exclude @@ -0,0 +1,35 @@ +boot/config.txt +boot/grub/grub.cfg +boot/grub/grubenv +boot/uEnv.txt +etc/alternatives +etc/collectd.custom +etc/default/grub +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/snort/snort.conf +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/dma +var/ipfire/time +var/ipfire/firewall/locationblock +var/ipfire/fwhosts/customlocationgrp +var/ipfire/ovpn +var/ipfire/urlfilter/blacklist +var/ipfire/urlfilter/settings +var/lib/alternatives +var/lib/location/database.db +var/lib/location/ipset +var/log/cache +var/log/dhcpcd.log +var/log/messages +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/oldcore/200/filelists/aarch64/glibc b/config/rootfiles/oldcore/200/filelists/aarch64/glibc new file mode 120000 index 0000000000..d13849ff91 --- /dev/null +++ b/config/rootfiles/oldcore/200/filelists/aarch64/glibc @@ -0,0 +1 @@ +../../../../common/aarch64/glibc \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/aarch64/linux b/config/rootfiles/oldcore/200/filelists/aarch64/linux similarity index 100% rename from config/rootfiles/core/200/filelists/aarch64/linux rename to config/rootfiles/oldcore/200/filelists/aarch64/linux diff --git a/config/rootfiles/core/200/filelists/apache2 b/config/rootfiles/oldcore/200/filelists/apache2 similarity index 100% rename from config/rootfiles/core/200/filelists/apache2 rename to config/rootfiles/oldcore/200/filelists/apache2 diff --git a/config/rootfiles/core/200/filelists/bash b/config/rootfiles/oldcore/200/filelists/bash similarity index 100% rename from config/rootfiles/core/200/filelists/bash rename to config/rootfiles/oldcore/200/filelists/bash diff --git a/config/rootfiles/core/200/filelists/bind b/config/rootfiles/oldcore/200/filelists/bind similarity index 100% rename from config/rootfiles/core/200/filelists/bind rename to config/rootfiles/oldcore/200/filelists/bind diff --git a/config/rootfiles/oldcore/200/filelists/core-files b/config/rootfiles/oldcore/200/filelists/core-files new file mode 100644 index 0000000000..0dec37e538 --- /dev/null +++ b/config/rootfiles/oldcore/200/filelists/core-files @@ -0,0 +1,5 @@ +etc/system-release +etc/issue +etc/os-release +srv/web/ipfire/cgi-bin/credits.cgi +var/ipfire/langs diff --git a/config/rootfiles/core/200/filelists/coreutils b/config/rootfiles/oldcore/200/filelists/coreutils similarity index 100% rename from config/rootfiles/core/200/filelists/coreutils rename to config/rootfiles/oldcore/200/filelists/coreutils diff --git a/config/rootfiles/core/200/filelists/curl b/config/rootfiles/oldcore/200/filelists/curl similarity index 100% rename from config/rootfiles/core/200/filelists/curl rename to config/rootfiles/oldcore/200/filelists/curl diff --git a/config/rootfiles/core/200/filelists/dhcpcd b/config/rootfiles/oldcore/200/filelists/dhcpcd similarity index 100% rename from config/rootfiles/core/200/filelists/dhcpcd rename to config/rootfiles/oldcore/200/filelists/dhcpcd diff --git a/config/rootfiles/core/200/filelists/dracut-ng b/config/rootfiles/oldcore/200/filelists/dracut-ng similarity index 100% rename from config/rootfiles/core/200/filelists/dracut-ng rename to config/rootfiles/oldcore/200/filelists/dracut-ng diff --git a/config/rootfiles/core/200/filelists/elinks b/config/rootfiles/oldcore/200/filelists/elinks similarity index 100% rename from config/rootfiles/core/200/filelists/elinks rename to config/rootfiles/oldcore/200/filelists/elinks diff --git a/config/rootfiles/core/200/filelists/files b/config/rootfiles/oldcore/200/filelists/files similarity index 100% rename from config/rootfiles/core/200/filelists/files rename to config/rootfiles/oldcore/200/filelists/files diff --git a/config/rootfiles/core/200/filelists/fuse b/config/rootfiles/oldcore/200/filelists/fuse similarity index 100% rename from config/rootfiles/core/200/filelists/fuse rename to config/rootfiles/oldcore/200/filelists/fuse diff --git a/config/rootfiles/core/200/filelists/gdb b/config/rootfiles/oldcore/200/filelists/gdb similarity index 100% rename from config/rootfiles/core/200/filelists/gdb rename to config/rootfiles/oldcore/200/filelists/gdb diff --git a/config/rootfiles/core/200/filelists/glib b/config/rootfiles/oldcore/200/filelists/glib similarity index 100% rename from config/rootfiles/core/200/filelists/glib rename to config/rootfiles/oldcore/200/filelists/glib diff --git a/config/rootfiles/core/200/filelists/gnupg b/config/rootfiles/oldcore/200/filelists/gnupg similarity index 100% rename from config/rootfiles/core/200/filelists/gnupg rename to config/rootfiles/oldcore/200/filelists/gnupg diff --git a/config/rootfiles/core/200/filelists/gnutls b/config/rootfiles/oldcore/200/filelists/gnutls similarity index 100% rename from config/rootfiles/core/200/filelists/gnutls rename to config/rootfiles/oldcore/200/filelists/gnutls diff --git a/config/rootfiles/core/200/filelists/harfbuzz b/config/rootfiles/oldcore/200/filelists/harfbuzz similarity index 100% rename from config/rootfiles/core/200/filelists/harfbuzz rename to config/rootfiles/oldcore/200/filelists/harfbuzz diff --git a/config/rootfiles/core/200/filelists/hwdata b/config/rootfiles/oldcore/200/filelists/hwdata similarity index 100% rename from config/rootfiles/core/200/filelists/hwdata rename to config/rootfiles/oldcore/200/filelists/hwdata diff --git a/config/rootfiles/core/200/filelists/iana-etc b/config/rootfiles/oldcore/200/filelists/iana-etc similarity index 100% rename from config/rootfiles/core/200/filelists/iana-etc rename to config/rootfiles/oldcore/200/filelists/iana-etc diff --git a/config/rootfiles/core/200/filelists/ids-ruleset-sources b/config/rootfiles/oldcore/200/filelists/ids-ruleset-sources similarity index 100% rename from config/rootfiles/core/200/filelists/ids-ruleset-sources rename to config/rootfiles/oldcore/200/filelists/ids-ruleset-sources diff --git a/config/rootfiles/core/200/filelists/iptables b/config/rootfiles/oldcore/200/filelists/iptables similarity index 100% rename from config/rootfiles/core/200/filelists/iptables rename to config/rootfiles/oldcore/200/filelists/iptables diff --git a/config/rootfiles/core/200/filelists/libarchive b/config/rootfiles/oldcore/200/filelists/libarchive similarity index 100% rename from config/rootfiles/core/200/filelists/libarchive rename to config/rootfiles/oldcore/200/filelists/libarchive diff --git a/config/rootfiles/core/200/filelists/libassuan b/config/rootfiles/oldcore/200/filelists/libassuan similarity index 100% rename from config/rootfiles/core/200/filelists/libassuan rename to config/rootfiles/oldcore/200/filelists/libassuan diff --git a/config/rootfiles/core/200/filelists/libcap-ng b/config/rootfiles/oldcore/200/filelists/libcap-ng similarity index 100% rename from config/rootfiles/core/200/filelists/libcap-ng rename to config/rootfiles/oldcore/200/filelists/libcap-ng diff --git a/config/rootfiles/core/200/filelists/libgpg-error b/config/rootfiles/oldcore/200/filelists/libgpg-error similarity index 100% rename from config/rootfiles/core/200/filelists/libgpg-error rename to config/rootfiles/oldcore/200/filelists/libgpg-error diff --git a/config/rootfiles/core/200/filelists/libidn2 b/config/rootfiles/oldcore/200/filelists/libidn2 similarity index 100% rename from config/rootfiles/core/200/filelists/libidn2 rename to config/rootfiles/oldcore/200/filelists/libidn2 diff --git a/config/rootfiles/core/200/filelists/libjpeg b/config/rootfiles/oldcore/200/filelists/libjpeg similarity index 100% rename from config/rootfiles/core/200/filelists/libjpeg rename to config/rootfiles/oldcore/200/filelists/libjpeg diff --git a/config/rootfiles/core/200/filelists/libksba b/config/rootfiles/oldcore/200/filelists/libksba similarity index 100% rename from config/rootfiles/core/200/filelists/libksba rename to config/rootfiles/oldcore/200/filelists/libksba diff --git a/config/rootfiles/core/200/filelists/libpcap b/config/rootfiles/oldcore/200/filelists/libpcap similarity index 100% rename from config/rootfiles/core/200/filelists/libpcap rename to config/rootfiles/oldcore/200/filelists/libpcap diff --git a/config/rootfiles/core/200/filelists/libpng b/config/rootfiles/oldcore/200/filelists/libpng similarity index 100% rename from config/rootfiles/core/200/filelists/libpng rename to config/rootfiles/oldcore/200/filelists/libpng diff --git a/config/rootfiles/core/200/filelists/libtasn1 b/config/rootfiles/oldcore/200/filelists/libtasn1 similarity index 100% rename from config/rootfiles/core/200/filelists/libtasn1 rename to config/rootfiles/oldcore/200/filelists/libtasn1 diff --git a/config/rootfiles/core/200/filelists/liburcu b/config/rootfiles/oldcore/200/filelists/liburcu similarity index 100% rename from config/rootfiles/core/200/filelists/liburcu rename to config/rootfiles/oldcore/200/filelists/liburcu diff --git a/config/rootfiles/core/200/filelists/libxcrypt b/config/rootfiles/oldcore/200/filelists/libxcrypt similarity index 100% rename from config/rootfiles/core/200/filelists/libxcrypt rename to config/rootfiles/oldcore/200/filelists/libxcrypt diff --git a/config/rootfiles/core/200/filelists/lvm2 b/config/rootfiles/oldcore/200/filelists/lvm2 similarity index 100% rename from config/rootfiles/core/200/filelists/lvm2 rename to config/rootfiles/oldcore/200/filelists/lvm2 diff --git a/config/rootfiles/core/200/filelists/mdadm b/config/rootfiles/oldcore/200/filelists/mdadm similarity index 100% rename from config/rootfiles/core/200/filelists/mdadm rename to config/rootfiles/oldcore/200/filelists/mdadm diff --git a/config/rootfiles/core/200/filelists/meson b/config/rootfiles/oldcore/200/filelists/meson similarity index 100% rename from config/rootfiles/core/200/filelists/meson rename to config/rootfiles/oldcore/200/filelists/meson diff --git a/config/rootfiles/core/200/filelists/newt b/config/rootfiles/oldcore/200/filelists/newt similarity index 100% rename from config/rootfiles/core/200/filelists/newt rename to config/rootfiles/oldcore/200/filelists/newt diff --git a/config/rootfiles/core/200/filelists/ninja b/config/rootfiles/oldcore/200/filelists/ninja similarity index 100% rename from config/rootfiles/core/200/filelists/ninja rename to config/rootfiles/oldcore/200/filelists/ninja diff --git a/config/rootfiles/core/200/filelists/npth b/config/rootfiles/oldcore/200/filelists/npth similarity index 100% rename from config/rootfiles/core/200/filelists/npth rename to config/rootfiles/oldcore/200/filelists/npth diff --git a/config/rootfiles/core/200/filelists/oath-toolkit b/config/rootfiles/oldcore/200/filelists/oath-toolkit similarity index 100% rename from config/rootfiles/core/200/filelists/oath-toolkit rename to config/rootfiles/oldcore/200/filelists/oath-toolkit diff --git a/config/rootfiles/core/200/filelists/openvpn b/config/rootfiles/oldcore/200/filelists/openvpn similarity index 100% rename from config/rootfiles/core/200/filelists/openvpn rename to config/rootfiles/oldcore/200/filelists/openvpn diff --git a/config/rootfiles/core/200/filelists/readline b/config/rootfiles/oldcore/200/filelists/readline similarity index 100% rename from config/rootfiles/core/200/filelists/readline rename to config/rootfiles/oldcore/200/filelists/readline diff --git a/config/rootfiles/oldcore/200/filelists/riscv64/glibc b/config/rootfiles/oldcore/200/filelists/riscv64/glibc new file mode 120000 index 0000000000..36b731f7dd --- /dev/null +++ b/config/rootfiles/oldcore/200/filelists/riscv64/glibc @@ -0,0 +1 @@ +../../../../common/riscv64/glibc \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/riscv64/linux b/config/rootfiles/oldcore/200/filelists/riscv64/linux similarity index 100% rename from config/rootfiles/core/200/filelists/riscv64/linux rename to config/rootfiles/oldcore/200/filelists/riscv64/linux diff --git a/config/rootfiles/core/200/filelists/sqlite b/config/rootfiles/oldcore/200/filelists/sqlite similarity index 100% rename from config/rootfiles/core/200/filelists/sqlite rename to config/rootfiles/oldcore/200/filelists/sqlite diff --git a/config/rootfiles/core/200/filelists/strongswan b/config/rootfiles/oldcore/200/filelists/strongswan similarity index 100% rename from config/rootfiles/core/200/filelists/strongswan rename to config/rootfiles/oldcore/200/filelists/strongswan diff --git a/config/rootfiles/core/200/filelists/suricata b/config/rootfiles/oldcore/200/filelists/suricata similarity index 100% rename from config/rootfiles/core/200/filelists/suricata rename to config/rootfiles/oldcore/200/filelists/suricata diff --git a/config/rootfiles/core/200/filelists/suricata-reporter b/config/rootfiles/oldcore/200/filelists/suricata-reporter similarity index 100% rename from config/rootfiles/core/200/filelists/suricata-reporter rename to config/rootfiles/oldcore/200/filelists/suricata-reporter diff --git a/config/rootfiles/core/200/filelists/tzdata b/config/rootfiles/oldcore/200/filelists/tzdata similarity index 100% rename from config/rootfiles/core/200/filelists/tzdata rename to config/rootfiles/oldcore/200/filelists/tzdata diff --git a/config/rootfiles/core/200/filelists/unbound b/config/rootfiles/oldcore/200/filelists/unbound similarity index 100% rename from config/rootfiles/core/200/filelists/unbound rename to config/rootfiles/oldcore/200/filelists/unbound diff --git a/config/rootfiles/core/200/filelists/vim b/config/rootfiles/oldcore/200/filelists/vim similarity index 100% rename from config/rootfiles/core/200/filelists/vim rename to config/rootfiles/oldcore/200/filelists/vim diff --git a/config/rootfiles/core/200/filelists/wireless-regdb b/config/rootfiles/oldcore/200/filelists/wireless-regdb similarity index 100% rename from config/rootfiles/core/200/filelists/wireless-regdb rename to config/rootfiles/oldcore/200/filelists/wireless-regdb diff --git a/config/rootfiles/oldcore/200/filelists/x86_64/glibc b/config/rootfiles/oldcore/200/filelists/x86_64/glibc new file mode 120000 index 0000000000..1119099669 --- /dev/null +++ b/config/rootfiles/oldcore/200/filelists/x86_64/glibc @@ -0,0 +1 @@ +../../../../common/x86_64/glibc \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/x86_64/intel-microcode b/config/rootfiles/oldcore/200/filelists/x86_64/intel-microcode similarity index 100% rename from config/rootfiles/core/200/filelists/x86_64/intel-microcode rename to config/rootfiles/oldcore/200/filelists/x86_64/intel-microcode diff --git a/config/rootfiles/core/200/filelists/x86_64/linux b/config/rootfiles/oldcore/200/filelists/x86_64/linux similarity index 100% rename from config/rootfiles/core/200/filelists/x86_64/linux rename to config/rootfiles/oldcore/200/filelists/x86_64/linux diff --git a/config/rootfiles/core/200/filelists/xz b/config/rootfiles/oldcore/200/filelists/xz similarity index 100% rename from config/rootfiles/core/200/filelists/xz rename to config/rootfiles/oldcore/200/filelists/xz diff --git a/config/rootfiles/core/200/update.sh b/config/rootfiles/oldcore/200/update.sh similarity index 100% rename from config/rootfiles/core/200/update.sh rename to config/rootfiles/oldcore/200/update.sh diff --git a/lfs/binutils b/lfs/binutils index 1b2b5f3b3f..efa1ea8558 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -24,7 +24,7 @@ include Config -VER = 2.45 +VER = 2.45.1 THISAPP = binutils-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -96,7 +96,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_BLAKE2 = 1ce72346b1f531c89feb86b407e2c649151b506ffbd1a02d413411d36f7ede98fa9a1adf75dd941c01df5fe7e6bf151828b269eeb7c278315ca8004bff22eb7f +$(DL_FILE)_BLAKE2 = 1ccab38659ec47f9100b61322627345fe79ebd04ed0b1e872c988edded4d292d7c9ac33d9f6ea47bf265ec823dfba60da0e84374900c15ec89e3aa9280ac020c install : $(TARGET) @@ -128,6 +128,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/binutils-build + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.45.1-gprofng-FTBFS.patch + # Prevent installing libiberty to lib64. cd $(DIR_APP) && sed -i 's%\(^MULTIOSDIR = \).*%\1 ../lib%' libiberty/Makefile.in diff --git a/lfs/coreutils b/lfs/coreutils index 3ab75ac57f..6bedd56c0d 100644 --- a/lfs/coreutils +++ b/lfs/coreutils @@ -48,8 +48,6 @@ CONFIGURE_OPTIONS += \ --with-tty-group \ gl_cv_func_mknod_works=yes -CFLAGS += -fno-strict-aliasing - ############################################################################### # Top-level Rules ############################################################################### @@ -88,6 +86,8 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C wchar_t \*\)wmemchr (/\1(wmemchr) (/' lib/wchar.in.h + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C void \*\)bsearch (/\1(bsearch) (/' lib/stdlib.in.h cd $(DIR_APP) && ./configure $(CONFIGURE_OPTIONS) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/elfutils b/lfs/elfutils index 02fe5b2bdd..c3af32a69c 100644 --- a/lfs/elfutils +++ b/lfs/elfutils @@ -72,6 +72,7 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/elfutils-0.194-FTBFS.patch cd $(DIR_APP) && ./configure \ --prefix=/usr \ --disable-debuginfod \ diff --git a/lfs/flashrom b/lfs/flashrom index 6f1aa731f6..f87c42bf9c 100644 --- a/lfs/flashrom +++ b/lfs/flashrom @@ -82,6 +82,7 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i 's/param_pos = strstr/param_pos = (char *)strstr/' flashrom.c cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install PREFIX=/usr @rm -rf $(DIR_APP) diff --git a/lfs/gcc b/lfs/gcc index 199adae52d..0d8c75e876 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -216,6 +216,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/gcc-build + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gcc-15.2.0-9c9d3aef2f66625d9cb03ef4baee10ed6648e681.patch + cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in cd $(DIR_APP) && sed -i gcc/Makefile.in \ -e 's@\./fixinc\.sh@-c true@' \ diff --git a/lfs/gettext b/lfs/gettext index 7260af9a03..71c1183f07 100644 --- a/lfs/gettext +++ b/lfs/gettext @@ -88,6 +88,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) $(UPDATE_AUTOMAKE) + cd $(DIR_APP) && find . -name string.in.h | xargs sed -i 's/^\(_GL_EXTERN_C void \*\)memchr (/\1(memchr) (/' + cd $(DIR_APP) && find . -name wchar.in.h | xargs sed -i 's/^\(_GL_EXTERN_C wchar_t \*\)wmemchr (/\1(wmemchr) (/' + cd $(DIR_APP) && find . -name stdlib.in.h | xargs sed -i 's/^\(_GL_EXTERN_C void \*\)bsearch (/\1(bsearch) (/' + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/glibc b/lfs/glibc index 49cce7282e..3dd1cefa2d 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -24,7 +24,7 @@ include Config -VER = 2.42 +VER = 2.43 THISAPP = glibc-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -87,7 +87,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_BLAKE2 = 6ffabfe7942034a5a4fb5097679cb47bc3431eb2a3864af07cea0cb6aa5db63fbaf6f026b3c9299e00268058a6762eb21e92499f012d552ed87d65c7ffbd0bbe +$(DL_FILE)_BLAKE2 = a764edf3d0d52809aa94cf1a8f73341159d226ecc2a595aa3c9e1d1fd4b2d4eb9a599d70bda8812b73d8ef58b39746efdd34026772e38c0f091fe071d461ea98 install : $(TARGET) @@ -120,9 +120,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @mkdir $(DIR_SRC)/glibc-build cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-localedef-no-archive.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-2.42-CVE-2026-0861.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-2.42-CVE-2026-0915.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-2.42-CVE-2025-15281.patch ifneq "$(TOOLCHAIN)" "1" ifeq "$(BUILD_ARCH)" "x86_64" diff --git a/lfs/krb5 b/lfs/krb5 index 7ca5acd568..cdf2d80d61 100644 --- a/lfs/krb5 +++ b/lfs/krb5 @@ -26,7 +26,7 @@ include Config SUMMARY = Kerberos -VER = 1.21.3 +VER = 1.22.1 THISAPP = krb5-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -34,9 +34,6 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)/src TARGET = $(DIR_INFO)/$(THISAPP) -# Fix build with GCC 15 -CFLAGS += -std=gnu17 - ############################################################################### # Top-level Rules ############################################################################### @@ -45,7 +42,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_BLAKE2 = e909a55eaedab68e5c829bb7bbd26cec5db2d7b8d97f3b034de94d8f957003f16977ac619afee3b862f288e59f05c5e44f41e65b8883961c8b22a26e2f4733bc +$(DL_FILE)_BLAKE2 = aed6a7f511ae7085a81fa6dc553881ea478bb8bb8aa43ab13e1312ead392fb93173998bfdfc730dca4d715b2ed52da6a12f2417f95525d9ff5c4629e8ca5fedc install : $(TARGET) @@ -79,6 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_SRC)/$(THISAPP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np2 -i $(DIR_SRC)/src/patches/krb5-1.18.3_remove_known_failed_test.patch + cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/krb5-1.12.3-FTBFS.patch cd $(DIR_APP) && ./configure \ --prefix=/usr \ --sysconfdir=/etc \ diff --git a/lfs/libtpms b/lfs/libtpms index 61cecc20e5..71028b44d0 100644 --- a/lfs/libtpms +++ b/lfs/libtpms @@ -82,6 +82,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) -mkdir -pv $(DIR_APP) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libtmps-0.10.2-FTBFS.patch cd $(DIR_APP) && autoreconf -vfi cd $(DIR_APP) && ./configure \ --prefix=/usr \ diff --git a/lfs/libxcrypt b/lfs/libxcrypt index 6fdf996bf8..e8f144d28a 100644 --- a/lfs/libxcrypt +++ b/lfs/libxcrypt @@ -77,6 +77,7 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libxcrypt-4.5.1-174c24d6e87aeae631bc0a7bb1ba983cf8def4de.patch cd $(DIR_APP) && autoreconf -vfi cd $(DIR_APP) && \ ./configure \ diff --git a/lfs/m4 b/lfs/m4 index a6d45cae86..74db5b64ac 100644 --- a/lfs/m4 +++ b/lfs/m4 @@ -80,6 +80,9 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C void \*\)memchr (/\1(memchr) (/' lib/string.in.h + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C wchar_t \*\)wmemchr (/\1(wmemchr) (/' lib/wchar.in.h + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C void \*\)bsearch (/\1(bsearch) (/' lib/stdlib.in.h cd $(DIR_APP) && ./configure --prefix=$(PREFIX) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/mpd b/lfs/mpd index f78152623b..a5a3cd3577 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/${THISAPP} TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpd -PAK_VER = 48 +PAK_VER = 49 # SUP_ARCH = aarch64 x86_64 DEPS = alsa avahi faad2 ffmpeg flac lame libmad libshout libogg libid3tag libvorbis opus soxr fmt @@ -82,6 +82,7 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mpd-0.24.5-openat2.patch $(UPDATE_AUTOMAKE) cd $(DIR_APP) && meson setup \ --prefix=/usr \ diff --git a/lfs/nano b/lfs/nano index 9d670e589d..d6556f4b82 100644 --- a/lfs/nano +++ b/lfs/nano @@ -73,6 +73,8 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C wchar_t \*\)wmemchr (/\1(wmemchr) (/' lib/wchar.in.h + cd $(DIR_APP) && sed -i 's/^\(_GL_EXTERN_C void \*\)bsearch (/\1(bsearch) (/' lib/stdlib.in.h cd $(DIR_APP) && ./configure \ --prefix=/usr \ --sysconfdir=/etc/nano \ diff --git a/lfs/ntp b/lfs/ntp index 9f45d5564b..9d12a76801 100644 --- a/lfs/ntp +++ b/lfs/ntp @@ -72,6 +72,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) $(UPDATE_AUTOMAKE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ntp-4.2.8_p15-configure-clang16.patch + cd $(DIR_APP) && sed -i 's/^extern void \*memchr(/extern void *(memchr)(/' include/l_stdlib.h + cd $(DIR_APP) && sed -i 's/^extern char \*strchr(/extern char *(strchr)(/' include/l_stdlib.h cd $(DIR_APP) && autoreconf -vfi cd $(DIR_APP) && \ ./configure \ diff --git a/lfs/oath-toolkit b/lfs/oath-toolkit index 4465b9f66d..70aa202563 100644 --- a/lfs/oath-toolkit +++ b/lfs/oath-toolkit @@ -70,6 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && find . -name wchar.in.h | xargs sed -i 's/^\(_GL_EXTERN_C wchar_t \*\)wmemchr (/\1(wmemchr) (/' + cd $(DIR_APP) && find . -name stdlib.in.h | xargs sed -i 's/^\(_GL_EXTERN_C void \*\)bsearch (/\1(bsearch) (/' cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/lfs/openvmtools b/lfs/openvmtools index 57acb11480..6134cb4d41 100644 --- a/lfs/openvmtools +++ b/lfs/openvmtools @@ -42,7 +42,7 @@ DEPS = SERVICES = openvmtools # Fix build with GCC 15 -CFLAGS += -std=gnu17 -Wno-error=array-bounds +CFLAGS += -std=gnu17 -Wno-error=array-bounds -Wno-error=discarded-qualifiers ############################################################################### # Top-level Rules @@ -84,6 +84,11 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i '/^void g_free(/i #undef g_free' lib/rpcChannel/glib_stubs.c + cd $(DIR_APP) && sed -i '/^void \*g_malloc(/i #undef g_malloc' lib/rpcChannel/glib_stubs.c + cd $(DIR_APP) && sed -i '/^void \*g_malloc0(/i #undef g_malloc0' lib/rpcChannel/glib_stubs.c + cd $(DIR_APP) && sed -i '/^void \*g_realloc(/i #undef g_realloc' lib/rpcChannel/glib_stubs.c + cd $(DIR_APP) && sed -i '/^char \*g_strdup(/i #undef g_strdup' lib/rpcChannel/glib_stubs.c cd $(DIR_APP) && autoreconf -vfi cd $(DIR_APP) && ./configure \ --prefix=/usr \ diff --git a/lfs/socat b/lfs/socat index 66dc2472b3..89a315e380 100644 --- a/lfs/socat +++ b/lfs/socat @@ -82,6 +82,7 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xzf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/socat-1.8.1.0-printtime.patch cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/lfs/systemd b/lfs/systemd index 1e53a4f03a..df2b5346c6 100644 --- a/lfs/systemd +++ b/lfs/systemd @@ -95,6 +95,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && \ sed -i "/udev_dependencies,/a \ 'link_with': udev_link_with," src/udev/meson.build + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/systemd-258-FTBFS.patch + # Prepare udev for build. cd $(DIR_APP) && mkdir -pv build cd $(DIR_APP)/build &&meson setup \ diff --git a/lfs/tor b/lfs/tor index f77e25bd71..50e469507f 100644 --- a/lfs/tor +++ b/lfs/tor @@ -81,6 +81,8 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i 's/\(slash = \)strchr/\1(char *)strchr/' src/lib/fs/path.c + cd $(DIR_APP) && sed -i '/#define SYS_SECCOMP/d' src/lib/sandbox/sandbox.h cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/lfs/util-linux b/lfs/util-linux index 8c2dc26486..ce00f1a391 100644 --- a/lfs/util-linux +++ b/lfs/util-linux @@ -74,6 +74,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) $(UPDATE_AUTOMAKE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/util-linux-2.41.2-FTBFS-bsearch.patch cd $(DIR_APP) && ./configure \ --docdir=/usr/share/doc/util-linux \ --disable-chfn-chsh \ diff --git a/make.sh b/make.sh index 205aba0570..ace14c5ead 100755 --- a/make.sh +++ b/make.sh @@ -23,7 +23,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name # If you update the version don't forget to update backupiso and add it to core update VERSION="2.29" # Version number -CORE="200" # Core Level (Filename) +CORE="201" # Core Level (Filename) SLOGAN="www.ipfire.org" # Software slogan CONFIG_ROOT=/var/ipfire # Configuration rootdir diff --git a/src/patches/binutils-2.45.1-gprofng-FTBFS.patch b/src/patches/binutils-2.45.1-gprofng-FTBFS.patch new file mode 100644 index 0000000000..0a89c5c1c9 --- /dev/null +++ b/src/patches/binutils-2.45.1-gprofng-FTBFS.patch @@ -0,0 +1,31 @@ +From 5f66aee7f4bec7a2d8378034116f5e5c3dc50f41 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Sat, 22 Nov 2025 11:29:43 +0100 +Subject: [PATCH] gprofng: protect against standard library macros + +The CALL_UTIL macro can expand to an unparsable expression of the argument +is a macro, like with the new const-preserving standard library macros in +C23. + + * gprofng/src/collector_module.h (CALL_UTIL): Add parens to not + expand its argument if it is a function-like macro. +--- + gprofng/src/collector_module.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gprofng/src/collector_module.h b/gprofng/src/collector_module.h +index b64d69c45ab..859a6dd1f7d 100644 +--- a/gprofng/src/collector_module.h ++++ b/gprofng/src/collector_module.h +@@ -119,7 +119,7 @@ typedef struct CollectorUtilFuncs + extern CollectorUtilFuncs __collector_util_funcs; + extern int __collector_dlsym_guard; + +-#define CALL_UTIL(x) __collector_util_funcs.x ++#define CALL_UTIL(x) (__collector_util_funcs.x) + + /* The following constants define the meaning of the "void *arg" + * argument of getFrameInfo(). +-- +2.47.3 + diff --git a/src/patches/elfutils-0.194-FTBFS.patch b/src/patches/elfutils-0.194-FTBFS.patch new file mode 100644 index 0000000000..bcb102f2b4 --- /dev/null +++ b/src/patches/elfutils-0.194-FTBFS.patch @@ -0,0 +1,301 @@ +From 4a5cf8be906d5991e7527e69e3f2ceaa74811301 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Mon, 24 Nov 2025 13:46:16 +0100 +Subject: [PATCH] Fix const-correctness issues + +These were uncovered by the C23 const-preserving library macros. +--- + debuginfod/debuginfod-client.c | 2 +- + libcpu/riscv_disasm.c | 52 +++++++++++++++++----------------- + libdw/dwarf_getsrclines.c | 6 ++-- + src/readelf.c | 8 +++--- + 4 files changed, 34 insertions(+), 34 deletions(-) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index c0ff5967..c5bc8a4f 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -3104,7 +3104,7 @@ int debuginfod_add_http_header (debuginfod_client *client, const char* header) + /* Sanity check header value is of the form Header: Value. + It should contain at least one colon that isn't the first or + last character. */ +- char *colon = strchr (header, ':'); /* first colon */ ++ const char *colon = strchr (header, ':'); /* first colon */ + if (colon == NULL /* present */ + || colon == header /* not at beginning - i.e., have a header name */ + || *(colon + 1) == '\0') /* not at end - i.e., have a value */ +diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c +index 0dee842a..749d4567 100644 +--- a/libcpu/riscv_disasm.c ++++ b/libcpu/riscv_disasm.c +@@ -77,7 +77,7 @@ static const char *regnames[32] = + "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7", + "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6" + }; +-#define REG(nr) ((char *) regnames[nr]) ++#define REG(nr) regnames[nr] + #define REGP(nr) REG (8 + (nr)) + + +@@ -88,7 +88,7 @@ static const char *fregnames[32] = + "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7", + "fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11" + }; +-#define FREG(nr) ((char *) fregnames[nr]) ++#define FREG(nr) fregnames[nr] + #define FREGP(nr) FREG (8 + (nr)) + + +@@ -163,12 +163,12 @@ riscv_disasm (Ebl *ebl, + break; + } + +- char *mne = NULL; ++ const char *mne = NULL; + /* Max length is 24, which is "illegal", so we print it as + "0x<48 hex chars>" + See: No instruction encodings defined for these sizes yet, below */ + char mnebuf[50]; +- char *op[5] = { NULL, NULL, NULL, NULL, NULL }; ++ const char *op[5] = { NULL, NULL, NULL, NULL, NULL }; + char immbuf[32]; + size_t len; + char *strp = NULL; +@@ -400,7 +400,7 @@ riscv_disasm (Ebl *ebl, + { + "sub", "xor", "or", "and", "subw", "addw", NULL, NULL + }; +- mne = (char *) arithmne[((first >> 10) & 0x4) | ((first >> 5) & 0x3)]; ++ mne = arithmne[((first >> 10) & 0x4) | ((first >> 5) & 0x3)]; + } + op[0] = op[1] = REGP ((first >> 7) & 0x7); + break; +@@ -572,7 +572,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, NULL, "flw", "fld", "flq", NULL, NULL, NULL + }; +- mne = (char *) (idx == 0x00 ? loadmne[func] : floadmne[func]); ++ mne = idx == 0x00 ? loadmne[func] : floadmne[func]; + break; + case 0x03: + // MISC-MEM +@@ -595,8 +595,8 @@ riscv_disasm (Ebl *ebl, + uint32_t succ = (word >> 24) & 0xf; + if (pred != 0xf || succ != 0xf) + { +- op[0] = (char *) order[succ]; +- op[1] = (char *) order[pred]; ++ op[0] = order[succ]; ++ op[1] = order[pred]; + } + mne = "fence"; + } +@@ -614,7 +614,7 @@ riscv_disasm (Ebl *ebl, + "addi", NULL, "slti", "sltiu", "xori", NULL, "ori", "andi" + }; + func = (word >> 12) & 0x7; +- mne = (char *) opimmmne[func]; ++ mne = opimmmne[func]; + if (mne == NULL) + { + const uint64_t shiftmask = ebl->class == ELFCLASS32 ? 0x1f : 0x3f; +@@ -697,7 +697,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, NULL, "fsw", "fsd", "fsq", NULL, NULL, NULL + }; +- mne = (char *) (idx == 0x08 ? storemne[func] : fstoremne[func]); ++ mne = idx == 0x08 ? storemne[func] : fstoremne[func]; + break; + case 0x0b: + // AMO +@@ -778,7 +778,7 @@ riscv_disasm (Ebl *ebl, + } + else + { +- mne = (char *) (idx == 0x0c ? arithmne2[func] : arithmne3[func]); ++ mne = idx == 0x0c ? arithmne2[func] : arithmne3[func]; + op[1] = REG (rs1); + op[2] = REG (rs2); + } +@@ -811,7 +811,7 @@ riscv_disasm (Ebl *ebl, + op[2] = FREG (rs2); + op[3] = FREG (rs3); + if (rm != 0x7) +- op[4] = (char *) rndmode[rm]; ++ op[4] = rndmode[rm]; + } + break; + case 0x14: +@@ -839,7 +839,7 @@ riscv_disasm (Ebl *ebl, + op[1] = FREG (rs1); + op[2] = FREG (rs2); + if (rm != 0x7) +- op[3] = (char *) rndmode[rm]; ++ op[3] = rndmode[rm]; + } + else if (func == 0x1c && width != 2 && rs2 == 0 && rm <= 1) + { +@@ -950,7 +950,7 @@ riscv_disasm (Ebl *ebl, + } + mne = mnebuf; + if (rm != 0x7 && (func == 0x18 || width == 0 || rs2 >= 2)) +- op[2] = (char *) rndmode[rm]; ++ op[2] = rndmode[rm]; + } + else if (func == 0x0b && rs2 == 0) + { +@@ -961,7 +961,7 @@ riscv_disasm (Ebl *ebl, + *cp = '\0'; + mne = mnebuf; + if (rm != 0x7) +- op[2] = (char *) rndmode[rm]; ++ op[2] = rndmode[rm]; + } + else if (func == 0x05 && rm < 2) + { +@@ -1007,7 +1007,7 @@ riscv_disasm (Ebl *ebl, + "beq", "bne", NULL, NULL, "blt", "bge", "bltu", "bgeu" + }; + func = (word >> 12) & 0x7; +- mne = (char *) branchmne[func]; ++ mne = branchmne[func]; + if (rs1 == 0 && func == 5) + { + op[0] = op[1]; +@@ -1035,7 +1035,7 @@ riscv_disasm (Ebl *ebl, + else if (func == 5 || func == 7) + { + // binutils use these opcodes and the reverse parameter order +- char *tmp = op[0]; ++ const char *tmp = op[0]; + op[0] = op[1]; + op[1] = tmp; + mne = func == 5 ? "ble" : "bleu"; +@@ -1103,7 +1103,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, "frflags", "frrm", "frsr", + }; +- mne = (char *) unprivrw[csr - 0x000]; ++ mne = unprivrw[csr - 0x000]; + } + else if (csr >= 0xc00 && csr <= 0xc03) + { +@@ -1111,7 +1111,7 @@ riscv_disasm (Ebl *ebl, + { + "rdcycle", "rdtime", "rdinstret" + }; +- mne = (char *) unprivrolow[csr - 0xc00]; ++ mne = unprivrolow[csr - 0xc00]; + } + op[0] = REG ((word >> 7) & 0x1f); + } +@@ -1128,7 +1128,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, "fsflagsi", "fsrmi", NULL + }; +- mne = (char *) ((word & 0x4000) == 0 ? unprivrs : unprivrsi)[csr - 0x000]; ++ mne = ((word & 0x4000) == 0 ? unprivrs : unprivrsi)[csr - 0x000]; + + if ((word & 0x4000) == 0) + op[0] = REG ((word >> 15) & 0x1f); +@@ -1259,12 +1259,12 @@ riscv_disasm (Ebl *ebl, + if (rd != 0) + op[last++] = REG (rd); + struct known_csrs key = { csr, NULL }; +- struct known_csrs *found = bsearch (&key, known, +- sizeof (known) / sizeof (known[0]), +- sizeof (known[0]), +- compare_csr); ++ const struct known_csrs *found = bsearch (&key, known, ++ sizeof (known) / sizeof (known[0]), ++ sizeof (known[0]), ++ compare_csr); + if (found) +- op[last] = (char *) found->name; ++ op[last] = found->name; + else + { + snprintf (addrbuf, sizeof (addrbuf), "0x%" PRIx32, csr); +@@ -1289,7 +1289,7 @@ riscv_disasm (Ebl *ebl, + else if (instr == 3 && rd == 0) + mne = "csrc"; + else +- mne = (char *) mnecsr[instr]; ++ mne = mnecsr[instr]; + } + break; + default: +diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c +index be10cdee..76db2929 100644 +--- a/libdw/dwarf_getsrclines.c ++++ b/libdw/dwarf_getsrclines.c +@@ -364,7 +364,7 @@ read_srcfiles (Dwarf *dbg, + const unsigned char *dirp = linep; + while (dirp < lineendp && *dirp != 0) + { +- uint8_t *endp = memchr (dirp, '\0', lineendp - dirp); ++ const uint8_t *endp = memchr (dirp, '\0', lineendp - dirp); + if (endp == NULL) + goto invalid_data; + ++ndirs; +@@ -440,7 +440,7 @@ read_srcfiles (Dwarf *dbg, + for (unsigned int n = 1; n < ndirlist; n++) + { + dirarray[n].dir = (char *) linep; +- uint8_t *endp = memchr (linep, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (linep, '\0', lineendp - linep); + assert (endp != NULL); // Checked above when calculating ndirlist. + dirarray[n].len = endp - linep; + linep = endp + 1; +@@ -927,7 +927,7 @@ read_srclines (Dwarf *dbg, + case DW_LNE_define_file: + { + char *fname = (char *) linep; +- uint8_t *endp = memchr (linep, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (linep, '\0', lineendp - linep); + if (endp == NULL) + goto invalid_data; + size_t fnamelen = endp - linep; +diff --git a/src/readelf.c b/src/readelf.c +index a2d17358..fbdf8c71 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -8269,7 +8269,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) + valuestr = dwarf_filesrc (files, num, NULL, NULL); + if (valuestr != NULL) + { +- char *filename = strrchr (valuestr, '/'); ++ const char *filename = strrchr (valuestr, '/'); + if (filename != NULL) + valuestr = filename + 1; + } +@@ -9033,7 +9033,7 @@ print_form_data (Dwarf *dbg, int form, const unsigned char *readp, + Dwarf_Off str_offsets_base, FILE *out) + { + Dwarf_Word val; +- unsigned char *endp; ++ const unsigned char *endp; + Elf_Data *data; + char *str; + switch (form) +@@ -9530,7 +9530,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + { + while (linep < lineendp && *linep != 0) + { +- unsigned char *endp = memchr (linep, '\0', lineendp - linep); ++ const unsigned char *endp = memchr (linep, '\0', lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; + +@@ -9764,7 +9764,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + case DW_LNE_define_file: + { + char *fname = (char *) linep; +- unsigned char *endp = memchr (linep, '\0', ++ const unsigned char *endp = memchr (linep, '\0', + lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; +-- +2.47.3 + diff --git a/src/patches/gcc-15.2.0-9c9d3aef2f66625d9cb03ef4baee10ed6648e681.patch b/src/patches/gcc-15.2.0-9c9d3aef2f66625d9cb03ef4baee10ed6648e681.patch new file mode 100644 index 0000000000..4049c559d5 --- /dev/null +++ b/src/patches/gcc-15.2.0-9c9d3aef2f66625d9cb03ef4baee10ed6648e681.patch @@ -0,0 +1,73 @@ +From 9c9d3aef2f66625d9cb03ef4baee10ed6648e681 Mon Sep 17 00:00:00 2001 +From: Frank Scheiner +Date: Tue, 25 Nov 2025 16:58:23 -0700 +Subject: [PATCH] [PATCH] libgomp: Fix GCC build after glibc@cd748a6 + +The toolchain autobuilds for ia64 failed ([1]) yesterday with: + +``` +libtool: compile: /usr/src/t2-src/src.gcc.ia64-toolchain.251121.040147.278918/gcc-16-20251116/objs/gcc/xgcc-wrapper /usr/src/t2-src/src.gcc.ia64-toolchain.251121.040147.278918/gcc-16-20251116/objs/./gcc/xgcc -B/usr/src/t2-src/src.gcc.ia64-toolchain.251121.040147.278918/gcc-16-20251116/objs/./gcc/ -B/usr/src/t2-src/build/ia64-toolchain-24-svn-generic-ia64-itanium2-cross-linux/TOOLCHAIN/cross/usr/ia64-t2-linux-gnu/bin/ -B/usr/src/t2-src/build/ia64-toolchain-24-svn-generic-ia64-itanium2-cross-linux/TOOLCHAIN/cross/usr/ia64-t2-linux-gnu/lib/ -isystem /usr/src/t2-src/build/ia64-toolchain-24-svn-generic-ia64-itanium2-cross-linux/TOOLCHAIN/cross/usr/ia64-t2-linux-gnu/include -isystem /usr/src/t2-src/build/ia64-toolchain-24-svn-generic-ia64-itanium2-cross-linux/TOOLCHAIN/cross/usr/ia64-t2-linux-gnu/sys-include --sysroot=/usr/src/t2-src/build/ia64-toolchain-24-svn-generic-ia64-itanium2-cross-linux -DHAVE_CONFIG_H -I. -I../../../libgomp -I../../../libgomp/config/linux/ia64 -I../../../libgomp /config/linux -I../../../libgomp/config/posix -I../../../libgomp -I../../../libgomp/../include -Wall -Werror -ftls-model=initial-exec -pthread -DUSING_INITIAL_EXEC_TLS -g -O2 -MT oacc-cuda.lo -MD -MP -MF .deps/oacc-cuda.Tpo -c ../../../libgomp/oacc-cuda.c -o oacc-cuda.o >/dev/null 2>&1 +../../../libgomp/affinity-fmt.c: In function 'gomp_display_affinity': +../../../libgomp/affinity-fmt.c:330:25: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers] + 330 | char *q = strchr (p + 1, '}'); + | ^~~~~~ +``` + +[1]: https://github.com/johnny-mnemonic/toolchain-autobuilds/actions/runs/19559235881 + +This is not ia64-specific but due to the changes in the recent glibc +commit "Implement C23 const-preserving standard library macros" (i.e. +[2]) now requiring "char *q" to be a pointer to a const char to compile +w/o error because of the return value of strchr() . + +[2]: https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 + +Also see the related discussion at [3] for details. + +[3]: https://sourceware.org/pipermail/libc-alpha/2025-November/172809.html + +The GCC build is fixed by the attached patch, see [4] for a successful +build with the then latest snapshots of binutils, glibc and GCC. + +[4]: https://github.com/johnny-mnemonic/toolchain-autobuilds/actions/runs/19585045571 + +Idea from Tomas, attached patch from me. + +Cheers, +Frank + +0001-libgomp-Fix-GCC-build-after-glibc-cd748a6.patch + +From 80af9c233c694904174b54a59404d311378f41f8 Mon Sep 17 00:00:00 2001 +From: Frank Scheiner +Date: Sat, 22 Nov 2025 14:58:10 +0100 +Subject: [PATCH] libgomp: Fix GCC build after glibc@cd748a6 + +char *q needs to be a pointer to a const char for the return value of +strchr() with glibc after "Implement C23 const-preserving standard library +macros". + +[glibc@cd748a6]: https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 + +libgomp/ChangeLog: + * affinity-fmt.c: Make char *q a pointer to a const char. +--- + libgomp/affinity-fmt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgomp/affinity-fmt.c b/libgomp/affinity-fmt.c +index 1fae893cbaca..8d3df5f1cd55 100644 +--- a/libgomp/affinity-fmt.c ++++ b/libgomp/affinity-fmt.c +@@ -327,7 +327,7 @@ gomp_display_affinity (char *buffer, size_t size, + } + if (c == '{') + { +- char *q = strchr (p + 1, '}'); ++ const char *q = strchr (p + 1, '}'); + if (q) + gomp_fatal ("unsupported long type name '%.*s' in affinity " + "format", (int) (q - (p + 1)), p + 1); +-- +2.47.3 + diff --git a/src/patches/glibc-2.42-CVE-2025-15281.patch b/src/patches/glibc-2.42-CVE-2025-15281.patch deleted file mode 100644 index 89322f80d6..0000000000 --- a/src/patches/glibc-2.42-CVE-2025-15281.patch +++ /dev/null @@ -1,175 +0,0 @@ -From cbf39c26b25801e9bc88499b4fd361ac172d4125 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Thu, 15 Jan 2026 10:32:19 -0300 -Subject: [PATCH] posix: Reset wordexp_t fields with WRDE_REUSE (CVE-2025-15281 - / BZ 33814) - -The wordexp fails to properly initialize the input wordexp_t when -WRDE_REUSE is used. The wordexp_t struct is properly freed, but -reuses the old wc_wordc value and updates the we_wordv in the -wrong position. A later wordfree will then call free with an -invalid pointer. - -Checked on x86_64-linux-gnu and i686-linux-gnu. - -Reviewed-by: Carlos O'Donell -(cherry picked from commit 80cc58ea2de214f85b0a1d902a3b668ad2ecb302) ---- - posix/Makefile | 11 +++++ - posix/tst-wordexp-reuse.c | 89 +++++++++++++++++++++++++++++++++++++++ - posix/wordexp.c | 2 + - 3 files changed, 102 insertions(+) - create mode 100644 posix/tst-wordexp-reuse.c - -diff --git a/posix/Makefile b/posix/Makefile -index a36e5decd3..1ea86efcc1 100644 ---- a/posix/Makefile -+++ b/posix/Makefile -@@ -327,6 +327,7 @@ tests := \ - tst-wait4 \ - tst-waitid \ - tst-wordexp-nocmd \ -+ tst-wordexp-reuse \ - tstgetopt \ - # tests - -@@ -457,6 +458,8 @@ generated += \ - tst-rxspencer-no-utf8.mtrace \ - tst-vfork3-mem.out \ - tst-vfork3.mtrace \ -+ tst-wordexp-reuse-mem.out \ -+ tst-wordexp-reuse.mtrace \ - # generated - endif - endif -@@ -492,6 +495,7 @@ tests-special += \ - $(objpfx)tst-pcre-mem.out \ - $(objpfx)tst-rxspencer-no-utf8-mem.out \ - $(objpfx)tst-vfork3-mem.out \ -+ $(objpfx)tst-wordexp-reuse.out \ - # tests-special - endif - endif -@@ -775,3 +779,10 @@ $(objpfx)posix-conf-vars-def.h: $(..)scripts/gen-posix-conf-vars.awk \ - $(make-target-directory) - $(AWK) -f $(filter-out Makefile, $^) > $@.tmp - mv -f $@.tmp $@ -+ -+tst-wordexp-reuse-ENV += MALLOC_TRACE=$(objpfx)tst-wordexp-reuse.mtrace \ -+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so -+ -+$(objpfx)tst-wordexp-reuse-mem.out: $(objpfx)tst-wordexp-reuse.out -+ $(common-objpfx)malloc/mtrace $(objpfx)tst-wordexp-reuse.mtrace > $@; \ -+ $(evaluate-test) -diff --git a/posix/tst-wordexp-reuse.c b/posix/tst-wordexp-reuse.c -new file mode 100644 -index 0000000000..3926b9f557 ---- /dev/null -+++ b/posix/tst-wordexp-reuse.c -@@ -0,0 +1,89 @@ -+/* Test for wordexp with WRDE_REUSE flag. -+ Copyright (C) 2026 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+ -+#include -+ -+static int -+do_test (void) -+{ -+ mtrace (); -+ -+ { -+ wordexp_t p = { 0 }; -+ TEST_COMPARE (wordexp ("one", &p, 0), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[0], "one"); -+ TEST_COMPARE (wordexp ("two", &p, WRDE_REUSE), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[0], "two"); -+ wordfree (&p); -+ } -+ -+ { -+ wordexp_t p = { .we_offs = 2 }; -+ TEST_COMPARE (wordexp ("one", &p, 0), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[0], "one"); -+ TEST_COMPARE (wordexp ("two", &p, WRDE_REUSE | WRDE_DOOFFS), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[p.we_offs + 0], "two"); -+ wordfree (&p); -+ } -+ -+ { -+ wordexp_t p = { 0 }; -+ TEST_COMPARE (wordexp ("one", &p, 0), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[0], "one"); -+ TEST_COMPARE (wordexp ("two", &p, WRDE_REUSE | WRDE_APPEND), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[0], "two"); -+ wordfree (&p); -+ } -+ -+ { -+ wordexp_t p = { .we_offs = 2 }; -+ TEST_COMPARE (wordexp ("one", &p, WRDE_DOOFFS), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[p.we_offs + 0], "one"); -+ TEST_COMPARE (wordexp ("two", &p, WRDE_REUSE -+ | WRDE_DOOFFS), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[p.we_offs + 0], "two"); -+ wordfree (&p); -+ } -+ -+ { -+ wordexp_t p = { .we_offs = 2 }; -+ TEST_COMPARE (wordexp ("one", &p, WRDE_DOOFFS), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[p.we_offs + 0], "one"); -+ TEST_COMPARE (wordexp ("two", &p, WRDE_REUSE -+ | WRDE_DOOFFS | WRDE_APPEND), 0); -+ TEST_COMPARE (p.we_wordc, 1); -+ TEST_COMPARE_STRING (p.we_wordv[p.we_offs + 0], "two"); -+ wordfree (&p); -+ } -+ -+ return 0; -+} -+ -+#include -diff --git a/posix/wordexp.c b/posix/wordexp.c -index a69b732801..9df4bb7424 100644 ---- a/posix/wordexp.c -+++ b/posix/wordexp.c -@@ -2216,7 +2216,9 @@ wordexp (const char *words, wordexp_t *pwordexp, int flags) - { - /* Minimal implementation of WRDE_REUSE for now */ - wordfree (pwordexp); -+ old_word.we_wordc = 0; - old_word.we_wordv = NULL; -+ pwordexp->we_wordc = 0; - } - - if ((flags & WRDE_APPEND) == 0) --- -2.43.7 - diff --git a/src/patches/glibc-2.42-CVE-2026-0861.patch b/src/patches/glibc-2.42-CVE-2026-0861.patch deleted file mode 100644 index 5126d2e256..0000000000 --- a/src/patches/glibc-2.42-CVE-2026-0861.patch +++ /dev/null @@ -1,88 +0,0 @@ -From b0ec8fb689df862171f0f78994a3bdeb51313545 Mon Sep 17 00:00:00 2001 -From: Siddhesh Poyarekar -Date: Thu, 15 Jan 2026 06:06:40 -0500 -Subject: [PATCH] memalign: reinstate alignment overflow check (CVE-2026-0861) - -The change to cap valid sizes to PTRDIFF_MAX inadvertently dropped the -overflow check for alignment in memalign functions, _mid_memalign and -_int_memalign. Reinstate the overflow check in _int_memalign, aligned -with the PTRDIFF_MAX change since that is directly responsible for the -CVE. The missing _mid_memalign check is not relevant (and does not have -a security impact) and may need a different approach to fully resolve, -so it has been omitted. - -CVE-Id: CVE-2026-0861 -Vulnerable-Commit: 9bf8e29ca136094f73f69f725f15c51facc97206 -Reported-by: Igor Morgenstern, Aisle Research -Fixes: BZ #33796 -Reviewed-by: Wilco Dijkstra -Signed-off-by: Siddhesh Poyarekar -(cherry picked from commit c9188d333717d3ceb7e3020011651f424f749f93) ---- - malloc/malloc.c | 7 +++++-- - malloc/tst-malloc-too-large.c | 10 ++-------- - 2 files changed, 7 insertions(+), 10 deletions(-) - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 5f3e701fd1..1d5aa304d3 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -5167,7 +5167,7 @@ _int_memalign (mstate av, size_t alignment, size_t bytes) - INTERNAL_SIZE_T size; - - nb = checked_request2size (bytes); -- if (nb == 0) -+ if (nb == 0 || alignment > PTRDIFF_MAX) - { - __set_errno (ENOMEM); - return NULL; -@@ -5183,7 +5183,10 @@ _int_memalign (mstate av, size_t alignment, size_t bytes) - we don't find anything in those bins, the common malloc code will - scan starting at 2x. */ - -- /* Call malloc with worst case padding to hit alignment. */ -+ /* Call malloc with worst case padding to hit alignment. ALIGNMENT is a -+ power of 2, so it tops out at (PTRDIFF_MAX >> 1) + 1, leaving plenty of -+ space to add MINSIZE and whatever checked_request2size adds to BYTES to -+ get NB. Consequently, total below also does not overflow. */ - m = (char *) (_int_malloc (av, nb + alignment + MINSIZE)); - - if (m == NULL) -diff --git a/malloc/tst-malloc-too-large.c b/malloc/tst-malloc-too-large.c -index a548a37b46..a1bda673a3 100644 ---- a/malloc/tst-malloc-too-large.c -+++ b/malloc/tst-malloc-too-large.c -@@ -152,7 +152,6 @@ test_large_allocations (size_t size) - } - - --static long pagesize; - - /* This function tests the following aligned memory allocation functions - using several valid alignments and precedes each allocation test with a -@@ -171,8 +170,8 @@ test_large_aligned_allocations (size_t size) - - /* All aligned memory allocation functions expect an alignment that is a - power of 2. Given this, we test each of them with every valid -- alignment from 1 thru PAGESIZE. */ -- for (align = 1; align <= pagesize; align *= 2) -+ alignment for the type of ALIGN, i.e. until it wraps to 0. */ -+ for (align = 1; align > 0; align <<= 1) - { - test_setup (); - #if __GNUC_PREREQ (7, 0) -@@ -265,11 +264,6 @@ do_test (void) - DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than="); - #endif - -- /* Aligned memory allocation functions need to be tested up to alignment -- size equivalent to page size, which should be a power of 2. */ -- pagesize = sysconf (_SC_PAGESIZE); -- TEST_VERIFY_EXIT (powerof2 (pagesize)); -- - /* Loop 1: Ensure that all allocations with SIZE close to SIZE_MAX, i.e. - in the range (SIZE_MAX - 2^14, SIZE_MAX], fail. - --- -2.47.3 - diff --git a/src/patches/glibc-2.42-CVE-2026-0915.patch b/src/patches/glibc-2.42-CVE-2026-0915.patch deleted file mode 100644 index 078dc451fa..0000000000 --- a/src/patches/glibc-2.42-CVE-2026-0915.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 453e6b8dbab935257eb0802b0c97bca6b67ba30e Mon Sep 17 00:00:00 2001 -From: Carlos O'Donell -Date: Thu, 15 Jan 2026 15:09:38 -0500 -Subject: [PATCH] resolv: Fix NSS DNS backend for getnetbyaddr (CVE-2026-0915) - -The default network value of zero for net was never tested for and -results in a DNS query constructed from uninitialized stack bytes. -The solution is to provide a default query for the case where net -is zero. - -Adding a test case for this was straight forward given the existence of -tst-resolv-network and if the test is added without the fix you observe -this failure: - -FAIL: resolv/tst-resolv-network -original exit status 1 -error: tst-resolv-network.c:174: invalid QNAME: \146\218\129\128 -error: 1 test failures - -With a random QNAME resulting from the use of uninitialized stack bytes. - -After the fix the test passes. - -Additionally verified using wireshark before and after to ensure -on-the-wire bytes for the DNS query were as expected. - -No regressions on x86_64. - -Reviewed-by: Florian Weimer -(cherry picked from commit e56ff82d5034ec66c6a78f517af6faa427f65b0b) ---- - resolv/nss_dns/dns-network.c | 4 ++++ - resolv/tst-resolv-network.c | 6 ++++++ - 2 files changed, 10 insertions(+) - -diff --git a/resolv/nss_dns/dns-network.c b/resolv/nss_dns/dns-network.c -index 519f8422ca..e14e959d7c 100644 ---- a/resolv/nss_dns/dns-network.c -+++ b/resolv/nss_dns/dns-network.c -@@ -207,6 +207,10 @@ _nss_dns_getnetbyaddr_r (uint32_t net, int type, struct netent *result, - sprintf (qbuf, "%u.%u.%u.%u.in-addr.arpa", net_bytes[3], net_bytes[2], - net_bytes[1], net_bytes[0]); - break; -+ default: -+ /* Default network (net is originally zero). */ -+ strcpy (qbuf, "0.0.0.0.in-addr.arpa"); -+ break; - } - - net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024); -diff --git a/resolv/tst-resolv-network.c b/resolv/tst-resolv-network.c -index d9f69649d0..181be80835 100644 ---- a/resolv/tst-resolv-network.c -+++ b/resolv/tst-resolv-network.c -@@ -46,6 +46,9 @@ handle_code (const struct resolv_response_context *ctx, - { - switch (code) - { -+ case 0: -+ send_ptr (b, qname, qclass, qtype, "0.in-addr.arpa"); -+ break; - case 1: - send_ptr (b, qname, qclass, qtype, "1.in-addr.arpa"); - break; -@@ -265,6 +268,9 @@ do_test (void) - "error: TRY_AGAIN\n"); - - /* Lookup by address, success cases. */ -+ check_reverse (0, -+ "name: 0.in-addr.arpa\n" -+ "net: 0x00000000\n"); - check_reverse (1, - "name: 1.in-addr.arpa\n" - "net: 0x00000001\n"); --- -2.47.3 - diff --git a/src/patches/krb5-1.12.3-FTBFS.patch b/src/patches/krb5-1.12.3-FTBFS.patch new file mode 100644 index 0000000000..938df05565 --- /dev/null +++ b/src/patches/krb5-1.12.3-FTBFS.patch @@ -0,0 +1,188 @@ +From ad4dcf1856dadc4b352b5c8ff08e51c7290fb41f Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy +Date: Wed, 10 Dec 2025 10:42:02 +0200 +Subject: [PATCH] Fix strchr() conformance to C23 + +C23 7.28.5.1 specifies search functions such as strchr() as generic, +returning const char * if the first argument is of type const char *. +Fix uses of strchr() to conform to this change. + +[jrische@redhat.com: altered changes to avoid casts; fixed an +additional case] +[ghudson@mit.edu: condensed some declarations; rewrote commit message] + +ticket: 9191 (new) +--- + src/lib/krb5/ccache/ccbase.c | 4 ++-- + src/lib/krb5/os/expand_path.c | 3 ++- + src/lib/krb5/os/locate_kdc.c | 15 +++++++-------- + src/plugins/preauth/pkinit/pkinit_crypto.h | 2 +- + .../preauth/pkinit/pkinit_crypto_openssl.c | 6 +++--- + src/plugins/preauth/pkinit/pkinit_identity.c | 2 +- + src/plugins/preauth/pkinit/pkinit_matching.c | 2 +- + src/tests/responder.c | 3 +-- + 8 files changed, 18 insertions(+), 19 deletions(-) + +diff --git a/src/lib/krb5/ccache/ccbase.c b/src/lib/krb5/ccache/ccbase.c +index 696b681812..30a0a410c5 100644 +--- a/src/lib/krb5/ccache/ccbase.c ++++ b/src/lib/krb5/ccache/ccbase.c +@@ -201,8 +201,8 @@ krb5_cc_register(krb5_context context, const krb5_cc_ops *ops, + krb5_error_code KRB5_CALLCONV + krb5_cc_resolve (krb5_context context, const char *name, krb5_ccache *cache) + { +- char *pfx, *cp; +- const char *resid; ++ char *pfx; ++ const char *cp, *resid; + unsigned int pfxlen; + krb5_error_code err; + const krb5_cc_ops *ops; +diff --git a/src/lib/krb5/os/expand_path.c b/src/lib/krb5/os/expand_path.c +index 5cbccf08c8..6569b8820b 100644 +--- a/src/lib/krb5/os/expand_path.c ++++ b/src/lib/krb5/os/expand_path.c +@@ -454,7 +454,8 @@ k5_expand_path_tokens_extra(krb5_context context, const char *path_in, + { + krb5_error_code ret; + struct k5buf buf; +- char *tok_begin, *tok_end, *tok_val, **extra_tokens = NULL, *path; ++ const char *tok_begin, *tok_end; ++ char *tok_val, **extra_tokens = NULL, *path; + const char *path_left; + size_t nargs = 0, i; + va_list ap; +diff --git a/src/lib/krb5/os/locate_kdc.c b/src/lib/krb5/os/locate_kdc.c +index c186bce51c..0cceff8000 100644 +--- a/src/lib/krb5/os/locate_kdc.c ++++ b/src/lib/krb5/os/locate_kdc.c +@@ -214,8 +214,8 @@ oom: + } + + static void +-parse_uri_if_https(const char *host_or_uri, k5_transport *transport, +- const char **host, const char **uri_path) ++parse_uri_if_https(char *host_or_uri, k5_transport *transport, ++ char **host, const char **uri_path) + { + char *cp; + +@@ -257,8 +257,7 @@ locate_srv_conf_1(krb5_context context, const krb5_data *realm, + k5_transport transport, int udpport) + { + const char *realm_srv_names[4]; +- char **hostlist = NULL, *realmstr = NULL, *host = NULL; +- const char *hostspec; ++ char **hostlist = NULL, *realmstr = NULL, *host = NULL, *hostspec; + krb5_error_code code; + size_t i; + int default_port; +@@ -587,8 +586,8 @@ prof_locate_server(krb5_context context, const krb5_data *realm, + * Return a NULL *host_out if there are any problems parsing the URI. + */ + static void +-parse_uri_fields(const char *uri, k5_transport *transport_out, +- const char **host_out, int *primary_out) ++parse_uri_fields(char *uri, k5_transport *transport_out, ++ char **host_out, int *primary_out) + + { + k5_transport transport; +@@ -656,8 +655,8 @@ locate_uri(krb5_context context, const krb5_data *realm, + krb5_error_code ret; + k5_transport transport, host_trans; + struct srv_dns_entry *answers, *entry; +- char *host, *sitename; +- const char *host_field, *path; ++ char *host, *sitename, *host_field; ++ const char *path; + int port, def_port, primary; + + ret = get_sitename(context, realm, &sitename); +diff --git a/src/plugins/preauth/pkinit/pkinit_crypto.h b/src/plugins/preauth/pkinit/pkinit_crypto.h +index 57bb3cb840..be2d02c227 100644 +--- a/src/plugins/preauth/pkinit/pkinit_crypto.h ++++ b/src/plugins/preauth/pkinit/pkinit_crypto.h +@@ -440,7 +440,7 @@ krb5_error_code crypto_load_cas_and_crls + defines the storage type (file, directory, etc) */ + int catype, /* IN + defines the ca type (anchor, intermediate, crls) */ +- char *id); /* IN ++ const char *id); /* IN + defines the location (filename, directory name, etc) */ + + /* +diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +index bd25bae478..d1fe18e5ab 100644 +--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c ++++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +@@ -4999,7 +4999,7 @@ load_cas_and_crls(krb5_context context, + pkinit_req_crypto_context req_cryptoctx, + pkinit_identity_crypto_context id_cryptoctx, + int catype, +- char *filename) ++ const char *filename) + { + STACK_OF(X509_INFO) *sk = NULL; + STACK_OF(X509) *ca_certs = NULL; +@@ -5157,7 +5157,7 @@ load_cas_and_crls_dir(krb5_context context, + pkinit_req_crypto_context req_cryptoctx, + pkinit_identity_crypto_context id_cryptoctx, + int catype, +- char *dirname) ++ const char *dirname) + { + krb5_error_code retval = EINVAL; + char **fnames = NULL, *filename; +@@ -5201,7 +5201,7 @@ crypto_load_cas_and_crls(krb5_context context, + pkinit_identity_crypto_context id_cryptoctx, + int idtype, + int catype, +- char *id) ++ const char *id) + { + switch (idtype) { + case IDTYPE_FILE: +diff --git a/src/plugins/preauth/pkinit/pkinit_identity.c b/src/plugins/preauth/pkinit/pkinit_identity.c +index 0dcfcfc46a..ad65f237b0 100644 +--- a/src/plugins/preauth/pkinit/pkinit_identity.c ++++ b/src/plugins/preauth/pkinit/pkinit_identity.c +@@ -473,7 +473,7 @@ process_option_ca_crl(krb5_context context, + const char *value, + int catype) + { +- char *residual; ++ const char *residual; + unsigned int typelen; + int idtype; + +diff --git a/src/plugins/preauth/pkinit/pkinit_matching.c b/src/plugins/preauth/pkinit/pkinit_matching.c +index 0ea072c887..b3c8df1610 100644 +--- a/src/plugins/preauth/pkinit/pkinit_matching.c ++++ b/src/plugins/preauth/pkinit/pkinit_matching.c +@@ -262,7 +262,7 @@ parse_rule_component(krb5_context context, + char err_buf[128]; + int ret; + struct keyword_desc *kw, *nextkw; +- char *nk; ++ const char *nk; + int found_next_kw = 0; + char *value = NULL; + size_t len; +diff --git a/src/tests/responder.c b/src/tests/responder.c +index 82f870ea5d..4221a20283 100644 +--- a/src/tests/responder.c ++++ b/src/tests/responder.c +@@ -282,8 +282,7 @@ responder(krb5_context ctx, void *rawdata, krb5_responder_context rctx) + /* Provide a particular response for an OTP challenge. */ + if (data->otp_answer != NULL) { + if (krb5_responder_otp_get_challenge(ctx, rctx, &ochl) == 0) { +- key = strchr(data->otp_answer, '='); +- if (key != NULL) { ++ if (strchr(data->otp_answer, '=') != NULL) { + /* Make a copy of the answer that we can chop up. */ + key = strdup(data->otp_answer); + if (key == NULL) +-- +2.47.3 + diff --git a/src/patches/libtmps-0.10.2-FTBFS.patch b/src/patches/libtmps-0.10.2-FTBFS.patch new file mode 100644 index 0000000000..dba78b59ea --- /dev/null +++ b/src/patches/libtmps-0.10.2-FTBFS.patch @@ -0,0 +1,33 @@ +From fc8820cfaa8b5e17328f731df93911f6ab92443b Mon Sep 17 00:00:00 2001 +From: Stefan Berger +Date: Fri, 2 Jan 2026 11:37:31 -0500 +Subject: [PATCH] Fix a compilation error in TPMLIB_GetPlaintext + +Fix a compilation error that newer gcc versions may complain about: + +tpm_library.c: In function 'TPMLIB_GetPlaintext': +tpm_library.c:441:11: error: assignment discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers] + 441 | start = strstr(stream, starttag); + | ^ +At top level: +cc1: note: unrecognized command-line option '-Wno-self-assign' may have been intended to silence earlier diagnostics +cc1: all warnings being treated as errors + +Signed-off-by: Stefan Berger +--- + src/tpm_library.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/tpm_library.c b/src/tpm_library.c +index f48f4fd38..7b2ea687e 100644 +--- a/src/tpm_library.c ++++ b/src/tpm_library.c +@@ -435,7 +435,7 @@ static unsigned char *TPMLIB_GetPlaintext(const char *stream, + const char *endtag, + size_t *length) + { +- char *start, *end; ++ const char *start, *end; + unsigned char *plaintext = NULL; + + start = strstr(stream, starttag); diff --git a/src/patches/libxcrypt-4.5.1-174c24d6e87aeae631bc0a7bb1ba983cf8def4de.patch b/src/patches/libxcrypt-4.5.1-174c24d6e87aeae631bc0a7bb1ba983cf8def4de.patch new file mode 100644 index 0000000000..15cb405b41 --- /dev/null +++ b/src/patches/libxcrypt-4.5.1-174c24d6e87aeae631bc0a7bb1ba983cf8def4de.patch @@ -0,0 +1,38 @@ +From 174c24d6e87aeae631bc0a7bb1ba983cf8def4de Mon Sep 17 00:00:00 2001 +From: Stanislav Zidek +Date: Wed, 10 Dec 2025 14:03:54 +0100 +Subject: [PATCH] fix -Werror=discarded-qualifiers + +On Fedora rawhide (to be Fedora 44), gcc became more strict +wrt. const-ness. +--- + lib/crypt-gost-yescrypt.c | 2 +- + lib/crypt-sm3-yescrypt.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/crypt-gost-yescrypt.c b/lib/crypt-gost-yescrypt.c +index 190ae94b..e9dc7e80 100644 +--- a/lib/crypt-gost-yescrypt.c ++++ b/lib/crypt-gost-yescrypt.c +@@ -131,7 +131,7 @@ crypt_gost_yescrypt_rn (const char *phrase, size_t phr_size, + intbuf->outbuf[1] = 'g'; + + /* extract yescrypt output from "$y$param$salt$output" */ +- char *hptr = strchr ((const char *) intbuf->retval + 3, '$'); ++ char *hptr = strchr ((char *) intbuf->retval + 3, '$'); + if (!hptr) + { + errno = EINVAL; +diff --git a/lib/crypt-sm3-yescrypt.c b/lib/crypt-sm3-yescrypt.c +index 4f42aa66..17da83e1 100644 +--- a/lib/crypt-sm3-yescrypt.c ++++ b/lib/crypt-sm3-yescrypt.c +@@ -136,7 +136,7 @@ crypt_sm3_yescrypt_rn (const char *phrase, size_t phr_size, + intbuf->outbuf[3] = '3'; + + /* extract yescrypt output from "$y$param$salt$output" */ +- char *hptr = strchr ((const char *) intbuf->retval + 3, '$'); ++ char *hptr = strchr ((char *) intbuf->retval + 3, '$'); + if (!hptr) + { + errno = EINVAL; diff --git a/src/patches/mpd-0.24.5-openat2.patch b/src/patches/mpd-0.24.5-openat2.patch new file mode 100644 index 0000000000..2963d7d6ae --- /dev/null +++ b/src/patches/mpd-0.24.5-openat2.patch @@ -0,0 +1,60 @@ +From 8caeedac3ed17491cd77240211ed13be80072a15 Mon Sep 17 00:00:00 2001 +From: Max Kellermann +Date: Mon, 26 Jan 2026 14:18:53 +0100 +Subject: [PATCH] system/linux: detect native openat2() support at configure + time + +The Linux man-pages notes about openat2(): "glibc provides no wrapper +for openat2(), necessitating the use of syscall(2)" + +.. but glibc 2.43 finally added a wrapper which caused a conflict with +our existing definition. + +Closes https://github.com/MusicPlayerDaemon/MPD/issues/2417 +--- + src/system/linux/meson.build | 6 +++++- + src/system/linux/openat2.h | 11 ++++++++++- + +diff --git a/src/system/linux/meson.build b/src/system/linux/meson.build +index 36a98f2127..4a0d6267ad 100644 +--- a/src/system/linux/meson.build ++++ b/src/system/linux/meson.build +@@ -1,7 +1,11 @@ + system_linux_features = configuration_data() + + if host_machine.system() == 'linux' +- system_linux_features.set('HAVE_OPENAT2', compiler.has_header('linux/openat2.h')) ++ have_native_openat2 = compiler.has_header_symbol('fcntl.h', 'openat2') ++ # openat2() support was added to glibc 2.43 ++ system_linux_features.set('HAVE_NATIVE_OPENAT2', have_native_openat2) ++ # if not provided by the C library, we roll our own using syscall() ++ system_linux_features.set('HAVE_OPENAT2', have_native_openat2 or compiler.has_header('linux/openat2.h')) + endif + + configure_file(output: 'Features.h', configuration: system_linux_features) +diff --git a/src/system/linux/openat2.h b/src/system/linux/openat2.h +index fdf3820983..807df97cb3 100644 +--- a/src/system/linux/openat2.h ++++ b/src/system/linux/openat2.h +@@ -4,7 +4,14 @@ + + #pragma once + +-#include // for O_* ++#include "system/linux/Features.h" // for HAVE_NATIVE_OPENAT2 ++ ++#include ++ ++#ifndef HAVE_NATIVE_OPENAT2 ++/* if the C library does not provide an openat2() wrappper, we roll ++ our own */ ++ + #include // for RESOLVE_* + #include + #include +@@ -15,3 +22,5 @@ openat2(int dirfd, const char *pathname, + { + return syscall(__NR_openat2, dirfd, pathname, how, size); + } ++ ++#endif // !HAVE_NATIVE_OPENAT2 diff --git a/src/patches/socat-1.8.1.0-printtime.patch b/src/patches/socat-1.8.1.0-printtime.patch new file mode 100644 index 0000000000..f1e2a43b70 --- /dev/null +++ b/src/patches/socat-1.8.1.0-printtime.patch @@ -0,0 +1,13 @@ +diff --git a/filan.c b/filan.c +index 101940a..85db9b4 100644 +--- a/filan.c ++++ b/filan.c +@@ -1105,7 +1105,7 @@ const char *getfiletypestring(int st_mode) { + } + + static int printtime(FILE *outfile, time_t time) { +- const char *s; ++ char *s; + + if (filan_rawoutput) { + fprintf(outfile, "\t"F_time, time); diff --git a/src/patches/systemd-258-FTBFS.patch b/src/patches/systemd-258-FTBFS.patch new file mode 100644 index 0000000000..4c82f7adf3 --- /dev/null +++ b/src/patches/systemd-258-FTBFS.patch @@ -0,0 +1,744 @@ +From 0bac1ed2422f15308414dd1e9d09812a966b0348 Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Tue, 25 Nov 2025 16:46:04 +0100 +Subject: [PATCH] tree-wide: Fix constness issues with newer glibc + +Latest glibc uses _Generic to have strstr() and other functions return +const char* or char* based on whether the input is a const char* or a +char*. This causes build failures as we previously always expected a char*. + +Let's fix the compilation failures and add our own macros similar to glibc's +to have string functions that return a mutable or const pointer depending on +the input. +--- + src/analyze/analyze-chid.c | 2 +- + src/basic/proc-cmdline.c | 6 ++--- + src/basic/socket-util.c | 2 +- + src/basic/sort-util.c | 4 +-- + src/basic/sort-util.h | 4 ++- + src/basic/string-util.c | 22 ++++++---------- + src/basic/string-util.h | 32 ++++++++++++++++------- + src/basic/strv.c | 8 +++--- + src/basic/strv.h | 6 +++-- + src/basic/time-util.c | 8 ++---- + src/basic/unit-name.c | 8 +++--- + src/cryptsetup/cryptsetup-generator.c | 3 +-- + src/fundamental/macro-fundamental.h | 7 +++++ + src/fundamental/string-util-fundamental.c | 8 +++--- + src/fundamental/string-util-fundamental.h | 15 ++++++++--- + src/home/homed-manager.c | 2 +- + src/journal/journalctl-util.c | 3 +-- + src/libsystemd/sd-bus/sd-bus.c | 17 ++++++------ + src/libsystemd/sd-hwdb/sd-hwdb.c | 2 +- + src/libsystemd/sd-journal/catalog.c | 11 ++++---- + src/network/networkd-dhcp-server.c | 3 +-- + src/shared/bus-unit-util.c | 4 +-- + src/shared/pager.c | 2 +- + src/shared/seccomp-util.c | 2 +- + src/shared/vpick.c | 2 +- + src/udev/udev-builtin-net_id.c | 14 +++++----- + 26 files changed, 108 insertions(+), 89 deletions(-) + +diff --git a/src/analyze/analyze-chid.c b/src/analyze/analyze-chid.c +index cf9f0daae52..612465095f8 100644 +--- a/src/analyze/analyze-chid.c ++++ b/src/analyze/analyze-chid.c +@@ -23,7 +23,7 @@ + #include "virt.h" + + static int parse_chid_type(const char *s, size_t *ret) { +- char *e; ++ const char *e; + unsigned u; + int r; + +diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c +index fd9cfbae283..e5a8928cc90 100644 +--- a/src/basic/proc-cmdline.c ++++ b/src/basic/proc-cmdline.c +@@ -163,9 +163,7 @@ int proc_cmdline_strv(char ***ret) { + } + + static char *mangle_word(const char *word, ProcCmdlineFlags flags) { +- char *c; +- +- c = startswith(word, "rd."); ++ char *c = (char*) startswith(word, "rd."); + if (c) { + /* Filter out arguments that are intended only for the initrd */ + +@@ -182,6 +180,8 @@ static char *mangle_word(const char *word, ProcCmdlineFlags flags) { + return (char*) word; + } + ++#define mangle_word(word, flags) const_generic(word, mangle_word(word, flags)) ++ + static int proc_cmdline_parse_strv(char **args, proc_cmdline_parse_t parse_item, void *data, ProcCmdlineFlags flags) { + int r; + +diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c +index c98cd35d542..cd0bc4fd13f 100644 +--- a/src/basic/socket-util.c ++++ b/src/basic/socket-util.c +@@ -1849,7 +1849,7 @@ int vsock_parse_cid(const char *s, unsigned *ret) { + int socket_address_parse_vsock(SocketAddress *ret_address, const char *s) { + /* AF_VSOCK socket in vsock:cid:port notation */ + _cleanup_free_ char *n = NULL; +- char *e, *cid_start; ++ const char *e, *cid_start; + unsigned port, cid; + int type, r; + +diff --git a/src/basic/sort-util.c b/src/basic/sort-util.c +index 1adbba8fcf4..d848745677d 100644 +--- a/src/basic/sort-util.c ++++ b/src/basic/sort-util.c +@@ -30,7 +30,7 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, + return NULL; + } + +-void* bsearch_safe(const void *key, const void *base, size_t nmemb, size_t size, comparison_fn_t compar) { ++void* bsearch_safe_internal(const void *key, const void *base, size_t nmemb, size_t size, comparison_fn_t compar) { + /** + * Normal bsearch requires base to be nonnull. Here were require + * that only if nmemb > 0. +@@ -40,7 +40,7 @@ void* bsearch_safe(const void *key, const void *base, size_t nmemb, size_t size, + return NULL; + + assert(base); +- return bsearch(key, base, nmemb, size, compar); ++ return (void*) bsearch(key, base, nmemb, size, compar); + } + + void qsort_safe(void *base, size_t nmemb, size_t size, comparison_fn_t compar) { +diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h +index 2b558d6fd84..8e7a1991bb6 100644 +--- a/src/basic/sort-util.h ++++ b/src/basic/sort-util.h +@@ -13,7 +13,9 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, + (typeof((b)[0])*) xbsearch_r((const void*) _k, (b), (n), sizeof((b)[0]), (comparison_userdata_fn_t) _func_, userdata); \ + }) + +-void* bsearch_safe(const void *key, const void *base, size_t nmemb, size_t size, comparison_fn_t compar); ++void* bsearch_safe_internal(const void *key, const void *base, size_t nmemb, size_t size, comparison_fn_t compar); ++#define bsearch_safe(key, base, nmemb, size, compar) \ ++ const_generic((base), bsearch_safe_internal(key, base, nmemb, size, compar)) + + #define typesafe_bsearch(k, b, n, func) \ + ({ \ +diff --git a/src/basic/string-util.c b/src/basic/string-util.c +index 0fe72342c7f..6e7da6f0bd6 100644 +--- a/src/basic/string-util.c ++++ b/src/basic/string-util.c +@@ -1348,16 +1348,14 @@ char* strdupcspn(const char *a, const char *reject) { + return strndup(a, strcspn(a, reject)); + } + +-char* find_line_startswith(const char *haystack, const char *needle) { +- char *p; +- ++char* find_line_startswith_internal(const char *haystack, const char *needle) { + assert(haystack); + assert(needle); + + /* Finds the first line in 'haystack' that starts with the specified string. Returns a pointer to the + * first character after it */ + +- p = strstr(haystack, needle); ++ char *p = (char*) strstr(haystack, needle); + if (!p) + return NULL; + +@@ -1371,16 +1369,14 @@ char* find_line_startswith(const char *haystack, const char *needle) { + return p + strlen(needle); + } + +-char* find_line(const char *haystack, const char *needle) { +- char *p; +- ++char* find_line_internal(const char *haystack, const char *needle) { + assert(haystack); + assert(needle); + + /* Finds the first line in 'haystack' that match the specified string. Returns a pointer to the + * beginning of the line */ + +- p = find_line_startswith(haystack, needle); ++ char *p = (char*) find_line_startswith(haystack, needle); + if (!p) + return NULL; + +@@ -1390,16 +1386,14 @@ char* find_line(const char *haystack, const char *needle) { + return NULL; + } + +-char* find_line_after(const char *haystack, const char *needle) { +- char *p; +- ++char* find_line_after_internal(const char *haystack, const char *needle) { + assert(haystack); + assert(needle); + + /* Finds the first line in 'haystack' that match the specified string. Returns a pointer to the + * next line after it */ + +- p = find_line_startswith(haystack, needle); ++ char *p = (char*) find_line_startswith(haystack, needle); + if (!p) + return NULL; + +@@ -1499,7 +1493,7 @@ ssize_t strlevenshtein(const char *x, const char *y) { + return t1[yl]; + } + +-char* strrstr(const char *haystack, const char *needle) { ++char* strrstr_internal(const char *haystack, const char *needle) { + /* Like strstr() but returns the last rather than the first occurrence of "needle" in "haystack". */ + + if (!haystack || !needle) +@@ -1508,7 +1502,7 @@ char* strrstr(const char *haystack, const char *needle) { + /* Special case: for the empty string we return the very last possible occurrence, i.e. *after* the + * last char, not before. */ + if (*needle == 0) +- return strchr(haystack, 0); ++ return (char*) strchr(haystack, 0); + + for (const char *p = strstr(haystack, needle), *q; p; p = q) { + q = strstr(p + 1, needle); +diff --git a/src/basic/string-util.h b/src/basic/string-util.h +index c90134e5cd7..0143c37a656 100644 +--- a/src/basic/string-util.h ++++ b/src/basic/string-util.h +@@ -7,24 +7,28 @@ + #include "basic-forward.h" + #include "string-util-fundamental.h" /* IWYU pragma: export */ + +-static inline char* strstr_ptr(const char *haystack, const char *needle) { ++static inline char* strstr_ptr_internal(const char *haystack, const char *needle) { + if (!haystack || !needle) + return NULL; +- return strstr(haystack, needle); ++ return (char*) strstr(haystack, needle); + } + +-static inline char* strstrafter(const char *haystack, const char *needle) { +- char *p; ++#define strstr_ptr(haystack, needle) \ ++ const_generic(haystack, strstr_ptr_internal(haystack, needle)) + ++static inline char* strstrafter_internal(const char *haystack, const char *needle) { + /* Returns NULL if not found, or pointer to first character after needle if found */ + +- p = strstr_ptr(haystack, needle); ++ char *p = (char*) strstr_ptr(haystack, needle); + if (!p) + return NULL; + + return p + strlen(needle); + } + ++#define strstrafter(haystack, needle) \ ++ const_generic(haystack, strstrafter_internal(haystack, needle)) ++ + static inline const char* strnull(const char *s) { + return s ?: "(null)"; + } +@@ -287,15 +291,25 @@ char* strdupcspn(const char *a, const char *reject); + (char*) memdupa_suffix0(_t, strnlen(_t, n)); \ + }) + +-char* find_line_startswith(const char *haystack, const char *needle); +-char* find_line(const char *haystack, const char *needle); +-char* find_line_after(const char *haystack, const char *needle); ++char* find_line_startswith_internal(const char *haystack, const char *needle); ++#define find_line_startswith(haystack, needle) \ ++ const_generic(haystack, find_line_startswith_internal(haystack, needle)) ++ ++char* find_line_internal(const char *haystack, const char *needle); ++#define find_line(haystack, needle) \ ++ const_generic(haystack, find_line_internal(haystack, needle)) ++ ++char* find_line_after_internal(const char *haystack, const char *needle); ++#define find_line_after(haystack, needle) \ ++ const_generic(haystack, find_line_after_internal(haystack, needle)) + + bool version_is_valid(const char *s) _pure_; + bool version_is_valid_versionspec(const char *s) _pure_; + + ssize_t strlevenshtein(const char *x, const char *y); + +-char* strrstr(const char *haystack, const char *needle) _pure_; ++char* strrstr_internal(const char *haystack, const char *needle) _pure_; ++#define strrstr(haystack, needle) \ ++ const_generic(haystack, strrstr_internal(haystack, needle)) + + size_t str_common_prefix(const char *a, const char *b) _pure_; +diff --git a/src/basic/strv.c b/src/basic/strv.c +index a19e05edc3d..5e0fabc3c5e 100644 +--- a/src/basic/strv.c ++++ b/src/basic/strv.c +@@ -933,9 +933,9 @@ int strv_extend_joined_with_size_sentinel(char ***l, size_t *n, ...) { + return strv_consume_with_size(l, n, x); + } + +-char* startswith_strv(const char *s, char * const *l) { ++char* startswith_strv_internal(const char *s, char * const *l) { + STRV_FOREACH(i, l) { +- char *found = startswith(s, *i); ++ char *found = (char*) startswith(s, *i); + if (found) + return found; + } +@@ -943,9 +943,9 @@ char* startswith_strv(const char *s, char * const *l) { + return NULL; + } + +-char* endswith_strv(const char *s, char * const *l) { ++char* endswith_strv_internal(const char *s, char * const *l) { + STRV_FOREACH(i, l) { +- char *found = endswith(s, *i); ++ char *found = (char*) endswith(s, *i); + if (found) + return found; + } +diff --git a/src/basic/strv.h b/src/basic/strv.h +index 7b0923a6983..4f7d5a82a4d 100644 +--- a/src/basic/strv.h ++++ b/src/basic/strv.h +@@ -155,12 +155,14 @@ static inline void strv_print(char * const *l) { + strv_print_full(l, NULL); + } + +-char* startswith_strv(const char *s, char * const *l); ++char* startswith_strv_internal(const char *s, char * const *l); ++#define startswith_strv(s, l) const_generic(s, startswith_strv_internal(s, l)) + + #define STARTSWITH_SET(p, ...) \ + startswith_strv(p, STRV_MAKE(__VA_ARGS__)) + +-char* endswith_strv(const char *s, char * const *l); ++char* endswith_strv_internal(const char *s, char * const *l); ++#define endswith_strv(s, l) const_generic(s, endswith_strv_internal(s, l)) + + #define ENDSWITH_SET(p, ...) \ + endswith_strv(p, STRV_MAKE(__VA_ARGS__)) +diff --git a/src/basic/time-util.c b/src/basic/time-util.c +index 62f1fcaed83..a596afa84d1 100644 +--- a/src/basic/time-util.c ++++ b/src/basic/time-util.c +@@ -1156,9 +1156,7 @@ static const char* extract_multiplier(const char *p, usec_t *ret) { + assert(ret); + + FOREACH_ELEMENT(i, table) { +- char *e; +- +- e = startswith(p, i->suffix); ++ const char *e = startswith(p, i->suffix); + if (e) { + *ret = i->usec; + return e; +@@ -1334,9 +1332,7 @@ static const char* extract_nsec_multiplier(const char *p, nsec_t *ret) { + assert(ret); + + FOREACH_ELEMENT(i, table) { +- char *e; +- +- e = startswith(p, i->suffix); ++ const char *e = startswith(p, i->suffix); + if (e) { + *ret = i->nsec; + return e; +diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c +index 6a42ece0b3e..43b3f683122 100644 +--- a/src/basic/unit-name.c ++++ b/src/basic/unit-name.c +@@ -213,7 +213,7 @@ UnitType unit_name_to_type(const char *n) { + int unit_name_change_suffix(const char *n, const char *suffix, char **ret) { + _cleanup_free_ char *s = NULL; + size_t a, b; +- char *e; ++ const char *e; + + assert(n); + assert(suffix); +@@ -521,7 +521,7 @@ int unit_name_template(const char *f, char **ret) { + } + + bool unit_name_is_hashed(const char *name) { +- char *s; ++ const char *s; + + if (!unit_name_is_valid(name, UNIT_NAME_PLAIN)) + return false; +@@ -544,7 +544,7 @@ bool unit_name_is_hashed(const char *name) { + + int unit_name_hash_long(const char *name, char **ret) { + _cleanup_free_ char *n = NULL, *hash = NULL; +- char *suffix; ++ const char *suffix; + le64_t h; + size_t len; + +@@ -834,7 +834,7 @@ int slice_build_subslice(const char *slice, const char *name, char **ret) { + if (streq(slice, SPECIAL_ROOT_SLICE)) + subslice = strjoin(name, ".slice"); + else { +- char *e; ++ const char *e; + + assert_se(e = endswith(slice, ".slice")); + +diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c +index d4b72dcf31e..e7d71779226 100644 +--- a/src/cryptsetup/cryptsetup-generator.c ++++ b/src/cryptsetup/cryptsetup-generator.c +@@ -798,10 +798,9 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat + static int add_crypttab_device(const char *name, const char *device, const char *keyspec, const char *options) { + _cleanup_free_ char *keyfile = NULL, *keydev = NULL, *headerdev = NULL, *filtered_header = NULL; + crypto_device *d = NULL; +- char *uuid; + int r; + +- uuid = startswith(device, "UUID="); ++ const char *uuid = startswith(device, "UUID="); + if (!uuid) + uuid = path_startswith(device, "/dev/disk/by-uuid/"); + if (!uuid) +diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h +index 8fc23c5e6a1..92b6de6cdce 100644 +--- a/src/fundamental/macro-fundamental.h ++++ b/src/fundamental/macro-fundamental.h +@@ -483,3 +483,10 @@ assert_cc(STRLEN(__FILE__) > STRLEN(RELATIVE_SOURCE_PATH) + 1); + #else + # define ENUM_TYPE_S64(id) id + #endif ++ ++/* This macro is used to have a const-returning and non-const returning version of a function based on ++ * whether its first argument is const or not (e.g. strstr()). */ ++#define const_generic(ptr, call) \ ++ _Generic(0 ? (ptr) : (void*) 1, \ ++ const void*: (const typeof(*call)*) (call), \ ++ void*: (call)) +diff --git a/src/fundamental/string-util-fundamental.c b/src/fundamental/string-util-fundamental.c +index 0141b42e397..6877dd439a4 100644 +--- a/src/fundamental/string-util-fundamental.c ++++ b/src/fundamental/string-util-fundamental.c +@@ -3,7 +3,7 @@ + #include "macro-fundamental.h" + #include "string-util-fundamental.h" + +-sd_char *startswith(const sd_char *s, const sd_char *prefix) { ++sd_char *startswith_internal(const sd_char *s, const sd_char *prefix) { + size_t l; + + assert(s); +@@ -16,7 +16,7 @@ sd_char *startswith(const sd_char *s, const sd_char *prefix) { + return (sd_char*) s + l; + } + +-sd_char *startswith_no_case(const sd_char *s, const sd_char *prefix) { ++sd_char *startswith_no_case_internal(const sd_char *s, const sd_char *prefix) { + size_t l; + + assert(s); +@@ -29,7 +29,7 @@ sd_char *startswith_no_case(const sd_char *s, const sd_char *prefix) { + return (sd_char*) s + l; + } + +-sd_char* endswith(const sd_char *s, const sd_char *suffix) { ++sd_char* endswith_internal(const sd_char *s, const sd_char *suffix) { + size_t sl, pl; + + assert(s); +@@ -50,7 +50,7 @@ sd_char* endswith(const sd_char *s, const sd_char *suffix) { + return (sd_char*) s + sl - pl; + } + +-sd_char* endswith_no_case(const sd_char *s, const sd_char *suffix) { ++sd_char* endswith_no_case_internal(const sd_char *s, const sd_char *suffix) { + size_t sl, pl; + + assert(s); +diff --git a/src/fundamental/string-util-fundamental.h b/src/fundamental/string-util-fundamental.h +index 2aa8d43bf93..e2eb73a4a9d 100644 +--- a/src/fundamental/string-util-fundamental.h ++++ b/src/fundamental/string-util-fundamental.h +@@ -88,10 +88,17 @@ static inline size_t strlen_ptr(const sd_char *s) { + return strlen(s); + } + +-sd_char *startswith(const sd_char *s, const sd_char *prefix) _pure_; +-sd_char *startswith_no_case(const sd_char *s, const sd_char *prefix) _pure_; +-sd_char *endswith(const sd_char *s, const sd_char *suffix) _pure_; +-sd_char *endswith_no_case(const sd_char *s, const sd_char *suffix) _pure_; ++sd_char *startswith_internal(const sd_char *s, const sd_char *prefix) _pure_; ++#define startswith(s, prefix) const_generic(s, startswith_internal(s, prefix)) ++ ++sd_char *startswith_no_case_internal(const sd_char *s, const sd_char *prefix) _pure_; ++#define startswith_no_case(s, prefix) const_generic(s, startswith_no_case_internal(s, prefix)) ++ ++sd_char *endswith_internal(const sd_char *s, const sd_char *suffix) _pure_; ++#define endswith(s, suffix) const_generic(s, endswith_internal(s, suffix)) ++ ++sd_char *endswith_no_case_internal(const sd_char *s, const sd_char *suffix) _pure_; ++#define endswith_no_case(s, suffix) const_generic(s, endswith_no_case_internal(s, suffix)) + + static inline bool isempty(const sd_char *a) { + return !a || a[0] == '\0'; +diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c +index a2ac04f2774..3185cd6feca 100644 +--- a/src/home/homed-manager.c ++++ b/src/home/homed-manager.c +@@ -861,7 +861,7 @@ static int manager_assess_image( + const char *dir_path, + const char *dentry_name) { + +- char *luks_suffix, *directory_suffix; ++ const char *luks_suffix, *directory_suffix; + _cleanup_free_ char *path = NULL; + struct stat st; + int r; +diff --git a/src/journal/journalctl-util.c b/src/journal/journalctl-util.c +index 586f702bb4d..aedb2da20dc 100644 +--- a/src/journal/journalctl-util.c ++++ b/src/journal/journalctl-util.c +@@ -151,9 +151,8 @@ int get_possible_units( + + SD_JOURNAL_FOREACH_UNIQUE(j, data, size) { + _cleanup_free_ char *u = NULL; +- char *eq; + +- eq = memchr(data, '=', size); ++ const char *eq = memchr(data, '=', size); + if (eq) { + size -= eq - (char*) data + 1; + data = ++eq; +diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c +index 5644263fb55..050cfac55ea 100644 +--- a/src/libsystemd/sd-bus/sd-bus.c ++++ b/src/libsystemd/sd-bus/sd-bus.c +@@ -1438,7 +1438,7 @@ _public_ int sd_bus_open_user(sd_bus **ret) { + + int bus_set_address_system_remote(sd_bus *b, const char *host) { + _cleanup_free_ char *e = NULL; +- char *m = NULL, *c = NULL, *a, *rbracket = NULL, *p = NULL; ++ const char *m = NULL, *c = NULL, *a, *rbracket = NULL, *p = NULL; + + assert(b); + assert(host); +@@ -1476,7 +1476,7 @@ int bus_set_address_system_remote(sd_bus *b, const char *host) { + /* Let's see if a port was given */ + m = strchr(rbracket ? rbracket + 1 : host, ':'); + if (m) { +- char *t; ++ const char *t; + bool got_forward_slash = false; + + p = m + 1; +@@ -1522,14 +1522,15 @@ interpret_port_as_machine_old_syntax: + if (!ssh_escaped) + return -ENOMEM; + +- a = strjoin("unixexec:path=", ssh_escaped, ",argv1=-xT", +- p ? ",argv2=-p,argv3=" : "", strempty(p), +- ",argv", p ? "4" : "2", "=--,argv", p ? "5" : "3", "=", e, +- ",argv", p ? "6" : "4", "=systemd-stdio-bridge", c); +- if (!a) ++ char *address = strjoin( ++ "unixexec:path=", ssh_escaped, ",argv1=-xT", ++ p ? ",argv2=-p,argv3=" : "", strempty(p), ++ ",argv", p ? "4" : "2", "=--,argv", p ? "5" : "3", "=", e, ++ ",argv", p ? "6" : "4", "=systemd-stdio-bridge", c); ++ if (!address) + return -ENOMEM; + +- return free_and_replace(b->address, a); ++ return free_and_replace(b->address, address); + } + + _public_ int sd_bus_open_system_remote(sd_bus **ret, const char *host) { +diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c +index bc96e409074..1197c4f954c 100644 +--- a/src/libsystemd/sd-hwdb/sd-hwdb.c ++++ b/src/libsystemd/sd-hwdb/sd-hwdb.c +@@ -95,7 +95,7 @@ static int trie_children_cmp_f(const void *v1, const void *v2) { + } + + static const struct trie_node_f *node_lookup_f(sd_hwdb *hwdb, const struct trie_node_f *node, uint8_t c) { +- struct trie_child_entry_f *child; ++ const struct trie_child_entry_f *child; + struct trie_child_entry_f search; + + search.c = c; +diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c +index ec0445f1227..0751480fe5b 100644 +--- a/src/libsystemd/sd-journal/catalog.c ++++ b/src/libsystemd/sd-journal/catalog.c +@@ -210,23 +210,21 @@ static int finish_item( + } + + int catalog_file_lang(const char *filename, char **ret) { +- char *beg, *end, *lang; +- + assert(filename); + assert(ret); + +- end = endswith(filename, ".catalog"); ++ const char *end = endswith(filename, ".catalog"); + if (!end) + return 0; + +- beg = end - 1; ++ const char *beg = end - 1; + while (beg > filename && !IN_SET(*beg, '.', '/') && end - beg < 32) + beg--; + + if (*beg != '.' || end <= beg + 1) + return 0; + +- lang = strndup(beg + 1, end - beg - 1); ++ char *lang = strndup(beg + 1, end - beg - 1); + if (!lang) + return -ENOMEM; + +@@ -553,7 +551,8 @@ static int open_mmap(const char *database, int *ret_fd, struct stat *ret_st, voi + } + + static const char* find_id(const void *p, sd_id128_t id) { +- CatalogItem *f = NULL, key = { .id = id }; ++ CatalogItem key = { .id = id }; ++ const CatalogItem *f = NULL; + const CatalogHeader *h = ASSERT_PTR(p); + const char *loc; + +diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c +index 75ecfdca91a..7ab11332543 100644 +--- a/src/network/networkd-dhcp-server.c ++++ b/src/network/networkd-dhcp-server.c +@@ -832,7 +832,6 @@ int config_parse_dhcp_server_relay_agent_suboption( + void *userdata) { + + char **suboption_value = data; +- char* p; + + assert(filename); + assert(lvalue); +@@ -843,7 +842,7 @@ int config_parse_dhcp_server_relay_agent_suboption( + return 0; + } + +- p = startswith(rvalue, "string:"); ++ const char *p = startswith(rvalue, "string:"); + if (!p) { + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Failed to parse %s=%s'. Invalid format, ignoring.", lvalue, rvalue); +diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c +index 3d49cf5415b..74f22297a23 100644 +--- a/src/shared/bus-unit-util.c ++++ b/src/shared/bus-unit-util.c +@@ -1639,7 +1639,6 @@ static int bus_append_root_hash(sd_bus_message *m, const char *field, const char + } + + static int bus_append_root_hash_signature(sd_bus_message *m, const char *field, const char *eq) { +- char *value; + _cleanup_free_ void *roothash_sig_decoded = NULL; + size_t roothash_sig_decoded_size = 0; + int r; +@@ -1648,7 +1647,8 @@ static int bus_append_root_hash_signature(sd_bus_message *m, const char *field, + if (path_is_absolute(eq)) + return bus_append_string(m, "RootHashSignaturePath", eq); + +- if (!(value = startswith(eq, "base64:"))) ++ const char *value = startswith(eq, "base64:"); ++ if (!value) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), + "Failed to decode %s value '%s': neither a path nor starts with 'base64:'.", + field, eq); +diff --git a/src/shared/pager.c b/src/shared/pager.c +index 3797adbb7cc..2b66dc91d20 100644 +--- a/src/shared/pager.c ++++ b/src/shared/pager.c +@@ -298,7 +298,7 @@ bool pager_have(void) { + + int show_man_page(const char *desc, bool null_stdio) { + const char *args[4] = { "man", NULL, NULL, NULL }; +- char *e = NULL; ++ const char *e = NULL; + pid_t pid; + size_t k; + int r; +diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c +index 0f4c692613c..c3eb9049e8d 100644 +--- a/src/shared/seccomp-util.c ++++ b/src/shared/seccomp-util.c +@@ -2505,7 +2505,7 @@ uint32_t scmp_act_kill_process(void) { + + int parse_syscall_and_errno(const char *in, char **name, int *error) { + _cleanup_free_ char *n = NULL; +- char *p; ++ const char *p; + int e = -1; + + assert(in); +diff --git a/src/shared/vpick.c b/src/shared/vpick.c +index b1b2d930543..07d9d9ffd8c 100644 +--- a/src/shared/vpick.c ++++ b/src/shared/vpick.c +@@ -343,7 +343,7 @@ static int make_choice( + unsigned found_tries_done = UINT_MAX, found_tries_left = UINT_MAX; + _cleanup_free_ char *dname = NULL; + size_t found_architecture_index = SIZE_MAX; +- const char *e; ++ char *e; + + dname = strdup((*entry)->d_name); + if (!dname) +diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c +index 0724de8241a..339c73ed3a8 100644 +--- a/src/udev/udev-builtin-net_id.c ++++ b/src/udev/udev-builtin-net_id.c +@@ -950,7 +950,7 @@ static int names_pci(UdevEvent *event, const char *prefix) { + } + + static int get_usb_specifier(sd_device *dev, char **ret) { +- char *ports, *config, *interf, *s, *buf; ++ char *ports, *config, *interf, *buf; + const char *sysname; + int r; + +@@ -962,26 +962,26 @@ static int get_usb_specifier(sd_device *dev, char **ret) { + return log_device_debug_errno(dev, r, "Failed to get sysname: %m"); + + /* get USB port number chain, configuration, interface */ +- s = strchr(sysname, '-'); ++ const char *s = strchr(sysname, '-'); + if (!s) + return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), + "sysname \"%s\" does not have '-' in the expected place.", sysname); + + ports = strdupa_safe(s + 1); +- s = strchr(ports, ':'); ++ char *t = strchr(ports, ':'); + if (!s) + return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), + "sysname \"%s\" does not have ':' in the expected place.", sysname); + +- *s = '\0'; +- config = s + 1; ++ *t = '\0'; ++ config = t + 1; + s = strchr(config, '.'); + if (!s) + return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), + "sysname \"%s\" does not have '.' in the expected place.", sysname); + +- *s = '\0'; +- interf = s + 1; ++ *t = '\0'; ++ interf = t + 1; + + /* prefix every port number in the chain with "u" */ + string_replace_char(ports, '.', 'u'); +-- +2.47.3 + diff --git a/src/patches/util-linux-2.41.2-FTBFS-bsearch.patch b/src/patches/util-linux-2.41.2-FTBFS-bsearch.patch new file mode 100644 index 0000000000..979cbf16aa --- /dev/null +++ b/src/patches/util-linux-2.41.2-FTBFS-bsearch.patch @@ -0,0 +1,40 @@ +From 711bda1441561bfd2eb6d45fe0bc789535c1f1a8 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Cristian=20Rodr=C3=ADguez?= +Date: Sat, 22 Nov 2025 10:41:08 -0300 +Subject: [PATCH] lsfd: fix bsearch macro usage with glibc C23 +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf8 +Content-Transfer-Encoding: 8bit + +C23 requires bsearch to be a const preserving macro, build now fails +with + +../lsfd-cmd/lsfd.c:1879:75: error: macro ‘bsearch’ passed 6 arguments, but takes just 5 + 1879 | nfds, sizeof(struct pollfd), pollfdcmp)) + | ^ +In file included from ../include/c.h:17, + from ../lsfd-cmd/lsfd.c:48: +/usr/include/stdlib.h:987:10: note: macro ‘bsearch’ defined here + 987 | # define bsearch(KEY, BASE, NMEMB, SIZE, COMPAR) \ + + add parenthesis around expression to fix it. +--- + lsfd-cmd/lsfd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lsfd-cmd/lsfd.c b/lsfd-cmd/lsfd.c +index 335594144..4da86c602 100644 +--- a/lsfd-cmd/lsfd.c ++++ b/lsfd-cmd/lsfd.c +@@ -1875,7 +1875,7 @@ static void mark_poll_fds_as_multiplexed(char *buf, + struct file *file = list_entry(f, struct file, files); + if (is_opened_file(file) && !file->multiplexed) { + int fd = file->association; +- if (bsearch(&(struct pollfd){.fd = fd,}, local.iov_base, ++ if (bsearch((&(struct pollfd){.fd = fd,}), local.iov_base, + nfds, sizeof(struct pollfd), pollfdcmp)) + file->multiplexed = 1; + } +-- +2.47.3 + hooks/post-receive -- IPFire 2.x development tree