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