pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/print/qpdf
Module Name: pkgsrc
Committed By: ryoon
Date: Sat Aug 16 00:57:04 UTC 2025
Modified Files:
pkgsrc/print/qpdf: Makefile PLIST buildlink3.mk distinfo
Log Message:
print/qpdf: Update to 12.2.0
Changelog:
12.2.0: May 4, 2025
+ Upcoming C++ Version Change
o This is expected to be the last minor release of qpdf to work with
C++-17. We will be switching to C++-20 for 12.3.0.
+ Bug fixes
o In QPDF::getAllPages detect shared /Kids arrays to avoid stack
overflows in (specially constructed) damaged input files.
o Fix severe performance issues in QPDFFormFieldObjectHelper with
some (specially constructed) damaged input files.
o Add missing QPDFFormFieldObjectHelper::isChecked implementation.
o Fix bug in QPDFNameTreeObjectHelper / QPDFNumberTreeObjectHelper.
Under certain conditions tree insertions resulted in a /Range entry
being written to the tree root node, which is not permitted. One of
the possible consequences is that some readers would not recognize
embedded / attached files.
o In QPDFFormFieldObjectHelper::getChoices return the display string
if an /Opt entry is a pair of export value and display string
rather than a single string representing both values. Previously no
value was returned if the entry was not a single string.
+ Build fixes
o Improve experience for local development on Windows. Perl is no
longer required to build when using MinGW. qpdf should build ??out
of the box?? on Windows with an IDE such as JetBrains CLion that
bundles mingw or that uses an installation of Visual Studio. Perl
and a POSIX-like environment such as msys2 is still required to run
tests.
o Fix Android build issues.
o Fix incorrect use of jpeg library introduced with the
--jpeg-quality feature introduced in 12.1.0. This was causing build
failures on some platforms.
+ Other enhancements
o More sanity checks have been added when files with damaged xref
tables are recovered in order to avoid long runtimes and large
memory use. Objects with with very large arrays or dictionaries
(more than 5000 elements) and duplicate pages are ignored as they
are almost certainly invalid.
12.1.0: April 6, 2025
+ Bug fixes
o In QPDF::isLinearized return false if the first object in the file
is not a linearization parameter dictionary or its /L entry is not
an integer object. Previously the method returned false if the
first dictionary object was not a linearization parameter
dictionary.
o Fix parsing of object streams containing objects not separated by
white-space. Pre-2020 editions of the PDF specification incorrectly
stated that white-space was required between objects. qpdf relied
on this when parsing object streams.
o Fix two object stream error/warning messages that reported the
wrong object id.
o Accept an array for rotate in qpdf job JSON since it is a
repeatable option.
o When reading an encrypted PDF with cleartext metadata, only expect
top-level /Metadata to be clear-text. When writing an encrypted PDF
with cleartext metadata, only leave top-level unencrypted. qpdf has
always incorrectly handled all /Metadata streams as special with
cleartext metadata.
+ Library Enhancements
o Add function Pl_DCT::make_compress_config to return a
Pl_DCT::CompressConfig unique pointer to a CompressConfig from a
std::function for a more modern configuration option.
+ CLI Enhancements
o New --remove-structure option to exclude the document structure
tree from the output PDF.
o New --jpeg-quality option to set jpeg quality used with
--optimize-images.
+ Other enhancements
o There have been further enhancements to how files with damaged xref
tables are recovered.
+ Build changes
o The file .idea/cmake.xml has been removed. Instead of shipping with
some CMake profiles in the CLion-specific configuration, we now
include a CMakePresets.json. There is information about using it in
README-maintainer.md. For most users, running cmake in the normal
way is fine. Suggestions are welcome. None of the official builds
use cmake presets at the time of initial introduction.
+ Other changes
o The QPDF::optimize method is believed to be not in use and has been
deprecated. If you are relying on it please open a ticket.
o The parsing of object streams including the creation of error/
warning messages and object descriptions has been refactored with
some improvement both in runtime and memory usage.
o There has been some refactoring of QPDFWriter including how object
streams are written with some performance improvement.
12.0.0: March 9, 2025
+ API breaking changes
o The header file qpdf/QPDFObject.hh now generates an error if
included. This is to prevent code that includes it from
accidentally working because an old version is installed somewhere
on the system. Instead of including that header, include <qpdf/
Constants.h>, and replace QPDFObject::ot_ with ::ot_ in your code.
o The deprecated QPDFObjectHandle::replaceOrRemoveKey method has been
removed since it was identical to QPDFObjectHandle::replaceKey.
o The deprecated JSON::checkDictionaryKeySeen function has been
removed. If JSON::parse encounters duplicate keys the last value is
silently accepted instead of throwing a runtime error. This is
consistent with the JSON specification.
o The deprecated versionless overload of QPDFObjectHandle::getJSON
has been removed.
o The deprecated Buffer copy constructor and assignment operator have
been removed. Buffer copy operations are expensive as they always
involve copying the buffer content. Use buffer2 = buffer1.copy();
or Buffer buffer2{buffer1.copy()}; to make it explicit that copying
is intended.
o QIntC.hh contained the typo substract in function names, which has
been fixed to subtract.
o The protected QPDFObjectHelper::oh data member has been replaced
with the new accessor method QPDFObjectHelper::oh().
o Except for abstract classes and the exceptions listed below,
sub-classing of qpdf classes is not supported. These classes were
never designed to be used as a base class and will be made final in
version 13. If you have a use case for extending one of these
classes, please open a ticket.
Exceptions:
# QPDFDocumentHelper
# QPDFObjectHelper
o Upcasting to QPDFObjectHelper and QPDFDocumentHelper is not
supported. Their destructors will be made protected in version 13.
o Catching of logic errors thrown as the result of using an
uninitialized QPDFObjectHandle is not supported. In version 13
uninitialized object handles will be treated as immutable shared
null objects. Using them will no longer throw any logic errors, but
may where appropriate generate type warnings or exceptions.
o The following are believed to be not in use and have been
deprecated. If you are relying on them please open a ticket.
# All QPDFTokenizer push-mode methods.
# QPDFObjectHandle::parse overload taking a QPDFTokenizer
parameter.
+ CLI breaking Changes
o To support the future introduction of sub-commands, the use of
filenames without extension and path element as the first argument
is no longer supported, and the result may change in the future.
For example, qpdf check out.pdf currently copies the file check to
out.pdf but may in future check out.pdf. Use qpdf ./check out.pdf
or qpdf -- check out.pdf instead.
+ Bug fixes
o In object streams, ignore objects with invalid offset. Report
objects with invalid id or offset.
+ Library Enhancements
o QPDFObjectHandle supports move construction/assignment. This change
is invisible to most developers but may break your code if you rely
on specific behavior around how many references to a
QPDFObjectHandle??s underlying object exist. You would have to
write code specifically to do that, so if you??re not sure, then
you shouldn??t have to worry.
o Most QPDFObjectHandle accessor methods are now const qualified.
o QPDFObjectHandle and all object helper classes are now explicitly
convertible to QPDFObjGen, and therefore can be passed as parameter
where a QPDFObjGen is required. Redundant overloaded methods have
been removed.
o All object helper classes are now explicitly convertible to
QPDFObjectHandle.
+ Build Changes
o If POINTERHOLDER_TRANSITION is not defined, it is now automatically
defined to 4, which completely removes PointerHolder from the API.
It is no longer included by any qpdf headers. This means code that
hasn??t completed its PointerHolder transition will get errors
unless it defines POINTERHOLDER_TRANSITION, and any file that uses
PointerHolder will have to explicitly include it rather than
relying on other headers to bring it along.
+ Other Changes
o The internal implementation of objects has been extensively
refactored, using std::variant to eliminate one level of
indirection. This has saved one shared pointer per object with some
improvement both in runtime and memory usage. A new class
BaseHandle has been added as common base class of both
QPDFObjectHandle and QPDFObjectHelper to provide common
functionality appropriate for all object-handle-like classes such
as the operator to convert to QPDFObjGen. BaseHandle is an
implementation detail and not directly usable by library users.
o There has been significant refactoring of how qpdf internally
iterates over arrays and dictionaries.
o The internal mechanism used to check object sizes for binary
compatibility between releases has been changed. As such, the
CHECK_SIZES maintainer-only build option has been removed.
To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 pkgsrc/print/qpdf/Makefile
cvs rdiff -u -r1.22 -r1.23 pkgsrc/print/qpdf/PLIST
cvs rdiff -u -r1.8 -r1.9 pkgsrc/print/qpdf/buildlink3.mk
cvs rdiff -u -r1.48 -r1.49 pkgsrc/print/qpdf/distinfo
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/print/qpdf/Makefile
diff -u pkgsrc/print/qpdf/Makefile:1.64 pkgsrc/print/qpdf/Makefile:1.65
--- pkgsrc/print/qpdf/Makefile:1.64 Thu Apr 24 14:15:36 2025
+++ pkgsrc/print/qpdf/Makefile Sat Aug 16 00:57:04 2025
@@ -1,7 +1,6 @@
-# $NetBSD: Makefile,v 1.64 2025/04/24 14:15:36 wiz Exp $
+# $NetBSD: Makefile,v 1.65 2025/08/16 00:57:04 ryoon Exp $
-DISTNAME= qpdf-11.10.1
-PKGREVISION= 1
+DISTNAME= qpdf-12.2.0
CATEGORIES= print
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=qpdf/}
Index: pkgsrc/print/qpdf/PLIST
diff -u pkgsrc/print/qpdf/PLIST:1.22 pkgsrc/print/qpdf/PLIST:1.23
--- pkgsrc/print/qpdf/PLIST:1.22 Wed Feb 26 16:32:39 2025
+++ pkgsrc/print/qpdf/PLIST Sat Aug 16 00:57:04 2025
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.22 2025/02/26 16:32:39 ryoon Exp $
+@comment $NetBSD: PLIST,v 1.23 2025/08/16 00:57:04 ryoon Exp $
bin/fix-qdf
bin/qpdf
bin/zlib-flate
@@ -10,6 +10,7 @@ include/qpdf/DLL.h
include/qpdf/FileInputSource.hh
include/qpdf/InputSource.hh
include/qpdf/JSON.hh
+include/qpdf/ObjectHandle.hh
include/qpdf/PDFVersion.hh
include/qpdf/Pipeline.hh
include/qpdf/Pl_Buffer.hh
@@ -45,7 +46,6 @@ include/qpdf/QPDFNumberTreeObjectHelper.
include/qpdf/QPDFObjGen.hh
include/qpdf/QPDFObject.hh
include/qpdf/QPDFObjectHandle.hh
-include/qpdf/QPDFObjectHandle_future.hh
include/qpdf/QPDFObjectHelper.hh
include/qpdf/QPDFOutlineDocumentHelper.hh
include/qpdf/QPDFOutlineObjectHelper.hh
@@ -78,8 +78,8 @@ lib/cmake/qpdf/qpdfConfig.cmake
lib/cmake/qpdf/qpdfConfigVersion.cmake
lib/libqpdf.a
lib/libqpdf.so
-lib/libqpdf.so.29
-lib/libqpdf.so.29.10.1
+lib/libqpdf.so.30
+lib/libqpdf.so.30.2.0
lib/pkgconfig/libqpdf.pc
man/man1/fix-qdf.1
man/man1/qpdf.1
Index: pkgsrc/print/qpdf/buildlink3.mk
diff -u pkgsrc/print/qpdf/buildlink3.mk:1.8 pkgsrc/print/qpdf/buildlink3.mk:1.9
--- pkgsrc/print/qpdf/buildlink3.mk:1.8 Tue Jun 11 08:48:59 2024
+++ pkgsrc/print/qpdf/buildlink3.mk Sat Aug 16 00:57:04 2025
@@ -1,12 +1,12 @@
-# $NetBSD: buildlink3.mk,v 1.8 2024/06/11 08:48:59 adam Exp $
+# $NetBSD: buildlink3.mk,v 1.9 2025/08/16 00:57:04 ryoon Exp $
BUILDLINK_TREE+= qpdf
.if !defined(QPDF_BUILDLINK3_MK)
QPDF_BUILDLINK3_MK:=
-BUILDLINK_API_DEPENDS.qpdf+= qpdf>=10.0.0
-BUILDLINK_ABI_DEPENDS.qpdf+= qpdf>=10.6.2nb1
+BUILDLINK_API_DEPENDS.qpdf+= qpdf>=12.0.0
+BUILDLINK_ABI_DEPENDS.qpdf+= qpdf>=12.0.0
BUILDLINK_PKGSRCDIR.qpdf?= ../../print/qpdf
.endif # QPDF_BUILDLINK3_MK
Index: pkgsrc/print/qpdf/distinfo
diff -u pkgsrc/print/qpdf/distinfo:1.48 pkgsrc/print/qpdf/distinfo:1.49
--- pkgsrc/print/qpdf/distinfo:1.48 Wed Feb 26 16:32:39 2025
+++ pkgsrc/print/qpdf/distinfo Sat Aug 16 00:57:04 2025
@@ -1,6 +1,6 @@
-$NetBSD: distinfo,v 1.48 2025/02/26 16:32:39 ryoon Exp $
+$NetBSD: distinfo,v 1.49 2025/08/16 00:57:04 ryoon Exp $
-BLAKE2s (qpdf-11.10.1.tar.gz) = 633915cbfceb2ca77f85fe51a82544c7934fa04cb49e86978edb85879af3cd6a
-SHA512 (qpdf-11.10.1.tar.gz) = 2229d9feee4189770ec7c0a6a2fa39664af8f29b0410bacf40f53fa83a047ee282de7324c028f70eda69cd7da78e65589240c95dcfbf3718741428ffe403ac19
-Size (qpdf-11.10.1.tar.gz) = 19497326 bytes
+BLAKE2s (qpdf-12.2.0.tar.gz) = dceb3937eb5ed6f598360c932eb12b9832831819d9f4c341983c3adfc09a7d2c
+SHA512 (qpdf-12.2.0.tar.gz) = 96a783730ada6cbb7a571d396f7acd1b17ae298c7a83570f8f1f9d16116e6c1d39201068e6c93401fecd058e1db77c6d83f3c744d01a374062cd8773cb329101
+Size (qpdf-12.2.0.tar.gz) = 19537905 bytes
SHA1 (patch-libqpdf.pc.in) = 594c009942d3d0ae54388aed669e07fec030c0bc
Home |
Main Index |
Thread Index |
Old Index