* [Buildroot] [PATCH/next v4 1/2] package/qpdf: bump to version 12.3.2
@ 2026-03-01 15:30 Bernd Kuhls
2026-03-01 15:30 ` [Buildroot] [PATCH 2/2] package/cups-filters: fix build against qpdf 12 Bernd Kuhls
0 siblings, 1 reply; 2+ messages in thread
From: Bernd Kuhls @ 2026-03-01 15:30 UTC (permalink / raw)
To: buildroot; +Cc: Angelo Compagnucci, Olivier Schonken
From: Angelo Compagnucci <angelo.compagnucci@gmail.com>
Changelog:
https://qpdf.readthedocs.io/en/stable/release-notes.html
Quoting the release notes for version 12.3.0:
"A C++20 compiler is now required to build or test qpdf."
Updated Config.in accordingly.
Updating source URL (Github) and updating build system to cmake.
Build-tested using this defconfig
BR2_PACKAGE_QPDF=y
BR2_PACKAGE_GNUTLS=y
BR2_PACKAGE_OPENSSL=y
arm-aarch64 [ 1/32]: OK
bootlin-aarch64-glibc [ 2/32]: OK
bootlin-aarch64-glibc-old [ 3/32]: SKIPPED
bootlin-arcle-hs38-uclibc [ 4/32]: OK
bootlin-armv5-uclibc [ 5/32]: OK
bootlin-armv7-glibc [ 6/32]: OK
bootlin-armv7m-uclibc [ 7/32]: SKIPPED
bootlin-armv7-musl [ 8/32]: OK
bootlin-m68k-5208-uclibc [ 9/32]: SKIPPED
bootlin-m68k-68040-uclibc [10/32]: OK
bootlin-microblazeel-uclibc [11/32]: OK
bootlin-mips64el-glibc [12/32]: OK
bootlin-mipsel32r6-glibc [13/32]: OK
bootlin-mipsel-uclibc [14/32]: OK
bootlin-openrisc-uclibc [15/32]: OK
bootlin-powerpc64le-power8-glibc [16/32]: OK
bootlin-powerpc-e500mc-uclibc [17/32]: OK
bootlin-riscv32-glibc [18/32]: OK
bootlin-riscv64-glibc [19/32]: OK
bootlin-riscv64-musl [20/32]: OK
bootlin-s390x-z13-glibc [21/32]: OK
bootlin-sh4-uclibc [22/32]: OK
bootlin-sparc64-glibc [23/32]: OK
bootlin-sparc-uclibc [24/32]: OK
bootlin-x86-64-glibc [25/32]: OK
bootlin-x86-64-musl [26/32]: OK
bootlin-x86-64-uclibc [27/32]: OK
bootlin-x86-i686-musl [28/32]: OK
bootlin-xtensa-uclibc [29/32]: OK
br-arm-basic [30/32]: SKIPPED
br-arm-full-nothread [31/32]: SKIPPED
br-arm-full-static [32/32]: SKIPPED
32 builds, 6 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed
Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
[Bernd:
- bumped to 12.3.2
- raised gcc version to 10
- removed configure option -DSKIP_OS_SECURE_RANDOM=ON as suggested
by Angelo: https://lists.buildroot.org/pipermail/buildroot/2025-August/784962.html
- added build test results]
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
v4: unchanged, added cups-filter patch to series to avoid a version bump
v3: various updates after last feedback from Thomas:
https://lists.buildroot.org/pipermail/buildroot/2025-August/784962.html
DEVELOPERS | 1 +
package/cups-filters/Config.in | 6 +++---
package/qpdf/Config.in | 6 +++---
package/qpdf/qpdf.hash | 4 ++--
package/qpdf/qpdf.mk | 27 +++++++++++----------------
5 files changed, 20 insertions(+), 24 deletions(-)
diff --git a/DEVELOPERS b/DEVELOPERS
index 9e983ae113..5b07fea884 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -243,6 +243,7 @@ F: package/python-pillow/
F: package/python-pydal/
F: package/python-spidev/
F: package/python-web2py/
+F: package/qpdf/
F: package/qt5/qt5coap/
F: package/qt5/qt5knx/
F: package/qt5/qt5mqtt/
diff --git a/package/cups-filters/Config.in b/package/cups-filters/Config.in
index ded99a4774..b5b9e04a28 100644
--- a/package/cups-filters/Config.in
+++ b/package/cups-filters/Config.in
@@ -7,7 +7,7 @@ config BR2_PACKAGE_CUPS_FILTERS
depends on BR2_USE_WCHAR # libglib2
depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
depends on BR2_PACKAGE_CUPS
- depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # qpdf
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # qpdf
depends on BR2_TOOLCHAIN_HAS_ATOMIC # qpdf
select BR2_PACKAGE_JPEG
select BR2_PACKAGE_FONTCONFIG
@@ -32,9 +32,9 @@ config BR2_PACKAGE_CUPS_FILTERS
http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters
-comment "cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 5"
+comment "cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 10"
depends on BR2_USE_MMU
depends on BR2_TOOLCHAIN_HAS_ATOMIC
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
!BR2_USE_WCHAR || BR2_STATIC_LIBS || \
- !BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_10
diff --git a/package/qpdf/Config.in b/package/qpdf/Config.in
index accf2b5f34..ccb6715110 100644
--- a/package/qpdf/Config.in
+++ b/package/qpdf/Config.in
@@ -1,7 +1,7 @@
config BR2_PACKAGE_QPDF
bool "qpdf"
depends on BR2_INSTALL_LIBSTDCPP
- depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # C++20
depends on BR2_TOOLCHAIN_HAS_ATOMIC
select BR2_PACKAGE_ZLIB
select BR2_PACKAGE_JPEG
@@ -16,7 +16,7 @@ config BR2_PACKAGE_QPDF
http://qpdf.sourceforge.net/
-comment "qpdf needs a toolchain w/ C++, gcc >= 5"
+comment "qpdf needs a toolchain w/ C++, gcc >= 10"
depends on BR2_TOOLCHAIN_HAS_ATOMIC
depends on !BR2_INSTALL_LIBSTDCPP || \
- !BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_10
diff --git a/package/qpdf/qpdf.hash b/package/qpdf/qpdf.hash
index 08a048f2ed..81bee9e58c 100644
--- a/package/qpdf/qpdf.hash
+++ b/package/qpdf/qpdf.hash
@@ -1,5 +1,5 @@
-# From https://sourceforge.net/projects/qpdf/files/qpdf/10.5.0/qpdf-10.5.0.sha256/download
-sha256 88257d36a44fd5c50b2879488324dd9cafc11686ae49d8c4922a4872203ce006 qpdf-10.5.0.tar.gz
+# From https://github.com/qpdf/qpdf/releases/download/v12.3.2/qpdf-12.3.2.sha256
+sha256 6cba2f9f2cd887d905faeb99e0e51a307b217920d1bbf3e9cfbb2e8178a2deda qpdf-12.3.2.tar.gz
# Locally computed:
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt
sha256 fb929ac30decb4dc3a2eea2bec6c43296a797c5d2d602deb3784ee39430583d5 Artistic-2.0
diff --git a/package/qpdf/qpdf.mk b/package/qpdf/qpdf.mk
index d479515789..c11b42f60c 100644
--- a/package/qpdf/qpdf.mk
+++ b/package/qpdf/qpdf.mk
@@ -4,36 +4,31 @@
#
################################################################################
-QPDF_VERSION = 10.5.0
-QPDF_SITE = http://downloads.sourceforge.net/project/qpdf/qpdf/$(QPDF_VERSION)
+QPDF_VERSION = 12.3.2
+QPDF_SITE = https://github.com/qpdf/qpdf/releases/download/v$(QPDF_VERSION)
QPDF_INSTALL_STAGING = YES
QPDF_LICENSE = Apache-2.0 or Artistic-2.0
QPDF_LICENSE_FILES = LICENSE.txt Artistic-2.0
QPDF_CPE_ID_VALID = YES
QPDF_DEPENDENCIES = host-pkgconf zlib jpeg
+QPDF_SUPPORTS_IN_SOURCE_BUILD = NO
-QPDF_CONF_OPTS = --with-random=/dev/urandom
-
-ifeq ($(BR2_USE_WCHAR),)
-QPDF_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -DQPDF_NO_WCHAR_T"
-endif
+QPDF_CONF_OPTS = \
+ -DUSE_IMPLICIT_CRYPTO=OFF \
+ -DREQUIRE_CRYPTO_NATIVE=ON
ifeq ($(BR2_PACKAGE_GNUTLS),y)
-QPDF_CONF_OPTS += --enable-crypto-gnutls
+QPDF_CONF_OPTS += -DREQUIRE_CRYPTO_GNUTLS=ON
QPDF_DEPENDENCIES += gnutls
else
-QPDF_CONF_OPTS += --disable-crypto-gnutls
+QPDF_CONF_OPTS += -DREQUIRE_CRYPTO_GNUTLS=OFF
endif
ifeq ($(BR2_PACKAGE_OPENSSL),y)
-QPDF_CONF_OPTS += --enable-crypto-openssl
+QPDF_CONF_OPTS += -DREQUIRE_CRYPTO_OPENSSL=ON
QPDF_DEPENDENCIES += openssl
else
-QPDF_CONF_OPTS += --disable-crypto-openssl
-endif
-
-ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
-QPDF_CONF_ENV += LIBS=-latomic
+QPDF_CONF_OPTS += -DREQUIRE_CRYPTO_OPENSSL=OFF
endif
-$(eval $(autotools-package))
+$(eval $(cmake-package))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Buildroot] [PATCH 2/2] package/cups-filters: fix build against qpdf 12
2026-03-01 15:30 [Buildroot] [PATCH/next v4 1/2] package/qpdf: bump to version 12.3.2 Bernd Kuhls
@ 2026-03-01 15:30 ` Bernd Kuhls
0 siblings, 0 replies; 2+ messages in thread
From: Bernd Kuhls @ 2026-03-01 15:30 UTC (permalink / raw)
To: buildroot; +Cc: Angelo Compagnucci, Olivier Schonken
This patch adds fixes for cups-filters so it can be build with newer
versions of qpdf that made changes to PointerHolder:
https://github.com/qpdf/qpdf/blob/v12.3.2/manual/design.rst#smart-pointers
Build-tested using this defconfig:
BR2_PACKAGE_CUPS=y
BR2_PACKAGE_CUPS_FILTERS=y
arm-aarch64 [ 1/32]: OK
bootlin-aarch64-glibc [ 2/32]: OK
bootlin-aarch64-glibc-old [ 3/32]: SKIPPED
bootlin-arcle-hs38-uclibc [ 4/32]: OK
bootlin-armv5-uclibc [ 5/32]: OK
bootlin-armv7-glibc [ 6/32]: OK
bootlin-armv7m-uclibc [ 7/32]: SKIPPED
bootlin-armv7-musl [ 8/32]: OK
bootlin-m68k-5208-uclibc [ 9/32]: SKIPPED
bootlin-m68k-68040-uclibc [10/32]: OK
bootlin-microblazeel-uclibc [11/32]: OK
bootlin-mips64el-glibc [12/32]: OK
bootlin-mipsel32r6-glibc [13/32]: OK
bootlin-mipsel-uclibc [14/32]: OK
bootlin-openrisc-uclibc [15/32]: OK
bootlin-powerpc64le-power8-glibc [16/32]: OK
bootlin-powerpc-e500mc-uclibc [17/32]: OK
bootlin-riscv32-glibc [18/32]: OK
bootlin-riscv64-glibc [19/32]: OK
bootlin-riscv64-musl [20/32]: OK
bootlin-s390x-z13-glibc [21/32]: OK
bootlin-sh4-uclibc [22/32]: OK
bootlin-sparc64-glibc [23/32]: OK
bootlin-sparc-uclibc [24/32]: OK
bootlin-x86-64-glibc [25/32]: OK
bootlin-x86-64-musl [26/32]: OK
bootlin-x86-64-uclibc [27/32]: OK
bootlin-x86-i686-musl [28/32]: OK
bootlin-xtensa-uclibc [29/32]: OK
br-arm-basic [30/32]: SKIPPED
br-arm-full-nothread [31/32]: SKIPPED
br-arm-full-static [32/32]: SKIPPED
32 builds, 6 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
This solution avoids[1] a version bump of this package while keeping
compatibility with the newest version of qpdf. The bump of qpdf is
needed to fix build errors with gcc 16-snapshot versions.
[1] https://lists.buildroot.org/pipermail/buildroot/2025-August/784931.html
Thomas: "which means duplicating all the crazy dependencies of
libcupsfilters yes :/"
package/cups-filters/0002-qpdf-12.patch | 117 ++++++++++++++++++++++++
1 file changed, 117 insertions(+)
create mode 100644 package/cups-filters/0002-qpdf-12.patch
diff --git a/package/cups-filters/0002-qpdf-12.patch b/package/cups-filters/0002-qpdf-12.patch
new file mode 100644
index 0000000000..336c353672
--- /dev/null
+++ b/package/cups-filters/0002-qpdf-12.patch
@@ -0,0 +1,117 @@
+From: Sébastien Noel <sebastien@twolife.be>
+Subject: fix build against qpdf 12
+
+Downloaded from Debian:
+https://sources.debian.org/src/cups-filters/1.28.17-7/debian/patches/0006-qpdf-12.patch
+
+Alpine Linux uses the same patch:
+https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/cups-filters/0006-qpdf-12.patch
+
+Upstream: not applicable, upstream moved to 2.0.x
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+--- a/filter/pdf.cxx
++++ b/filter/pdf.cxx
+@@ -21,6 +21,8 @@
+ #include <vector>
+ #include <string>
+ #include <cstring>
++#define POINTERHOLDER_TRANSITION 3
++#include <qpdf/PointerHolder.hh>
+ #include <qpdf/QPDF.hh>
+ #include <qpdf/QPDFObjectHandle.hh>
+ #include <qpdf/QPDFWriter.hh>
+--- a/filter/pdftopdf/qpdf_xobject.cc
++++ b/filter/pdftopdf/qpdf_xobject.cc
+@@ -1,5 +1,7 @@
+ #include "qpdf_xobject.h"
+ //#include <qpdf/Types.h>
++#define POINTERHOLDER_TRANSITION 3
++#include <qpdf/PointerHolder.hh>
+ #include <qpdf/QPDF.hh>
+ #include <qpdf/Pl_Discard.hh>
+ #include <qpdf/Pl_Count.hh>
+--- a/filter/rastertopdf.cpp
++++ b/filter/rastertopdf.cpp
+@@ -39,6 +39,8 @@
+ #include <arpa/inet.h> // ntohl
+
+ #include <vector>
++#define POINTERHOLDER_TRANSITION 3
++#include <qpdf/PointerHolder.hh>
+ #include <qpdf/QPDF.hh>
+ #include <qpdf/QPDFWriter.hh>
+ #include <qpdf/QUtil.hh>
+@@ -481,7 +483,7 @@ QPDFObjectHandle embedIccProfile(QPDF &p
+ cmsSaveProfileToMem(colorProfile, buff, &profile_size);
+
+ // Write ICC profile buffer into PDF
+- ph = new Buffer(buff, profile_size);
++ ph = (PointerHolder<Buffer>) new Buffer(buff, profile_size);
+ iccstream = QPDFObjectHandle::newStream(&pdf, ph);
+ iccstream.replaceDict(QPDFObjectHandle::newDictionary(streamdict));
+
+--- a/filter/pdftopdf/qpdf_pdftopdf_processor.cc
++++ b/filter/pdftopdf/qpdf_pdftopdf_processor.cc
+@@ -83,10 +83,10 @@
+ page.getKey("/Resources").replaceKey("/XObject",QPDFObjectHandle::newDictionary(xobjs));
+ content.append("Q\n");
+ page.getKey("/Contents").replaceStreamData(content,QPDFObjectHandle::newNull(),QPDFObjectHandle::newNull());
+- page.replaceOrRemoveKey("/Rotate",makeRotate(rotation));
++ page.replaceKey("/Rotate",makeRotate(rotation));
+ } else {
+ Rotation rot=getRotate(page)+rotation;
+- page.replaceOrRemoveKey("/Rotate",makeRotate(rot));
++ page.replaceKey("/Rotate",makeRotate(rot));
+ }
+ page=QPDFObjectHandle(); // i.e. uninitialized
+ return ret;
+@@ -181,9 +181,9 @@
+ page.assertInitialized();
+ Rotation save_rotate = getRotate(page);
+ if(orientation==ROT_0||orientation==ROT_180)
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_90));
++ page.replaceKey("/Rotate",makeRotate(ROT_90));
+ else
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_0));
++ page.replaceKey("/Rotate",makeRotate(ROT_0));
+
+ PageRect currpage= getBoxAsRect(getTrimBox(page));
+ double width = currpage.right-currpage.left;
+@@ -242,7 +242,7 @@
+ //Cropping.
+ // TODO: Borders are covered by the image. buffer space?
+ page.replaceKey("/TrimBox",makeBox(currpage.left,currpage.bottom,currpage.right,currpage.top));
+- page.replaceOrRemoveKey("/Rotate",makeRotate(save_rotate));
++ page.replaceKey("/Rotate",makeRotate(save_rotate));
+ return getRotate(page);
+ }
+
+@@ -251,14 +251,14 @@
+ page.assertInitialized();
+ Rotation save_rotate = getRotate(page);
+ if(orientation==ROT_0||orientation==ROT_180)
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_90));
++ page.replaceKey("/Rotate",makeRotate(ROT_90));
+ else
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_0));
++ page.replaceKey("/Rotate",makeRotate(ROT_0));
+
+ PageRect currpage= getBoxAsRect(getTrimBox(page));
+ double width = currpage.right-currpage.left;
+ double height = currpage.top-currpage.bottom;
+- page.replaceOrRemoveKey("/Rotate",makeRotate(save_rotate));
++ page.replaceKey("/Rotate",makeRotate(save_rotate));
+ if(width>height)
+ return true;
+ return false;
+@@ -662,7 +662,7 @@
+ // TODO? other rotation direction, e.g. if (src_rot==ROT_0)&&(param.orientation==ROT_270) ... etc.
+ // rotation=ROT_270;
+
+- page.replaceOrRemoveKey("/Rotate",makeRotate(src_rot+rotation));
++ page.replaceKey("/Rotate",makeRotate(src_rot+rotation));
+ }
+ }
+ }
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-03-01 15:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-01 15:30 [Buildroot] [PATCH/next v4 1/2] package/qpdf: bump to version 12.3.2 Bernd Kuhls
2026-03-01 15:30 ` [Buildroot] [PATCH 2/2] package/cups-filters: fix build against qpdf 12 Bernd Kuhls
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox