diff --git a/CMakeLists.txt b/CMakeLists.txt index a92af3c..1dfb234 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.16) # also find the version number here. generate_auto_job also reads the # version from here. project(qpdf - VERSION 12.2.1 + VERSION 12.3.0 LANGUAGES C CXX) # Honor CMAKE_REQUIRED_LIBRARIES when checking for include files. This @@ -167,9 +167,9 @@ Please remove CMakeCache.txt and the CMakeFiles directories.") endif() if(CXX_NEXT) - set(CMAKE_CXX_STANDARD 20) + set(CMAKE_CXX_STANDARD 23) else() - set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD 20) endif() set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/appimage/Dockerfile b/appimage/Dockerfile index 24c9c67..7947f24 100644 --- a/appimage/Dockerfile +++ b/appimage/Dockerfile @@ -1,19 +1,15 @@ -FROM ubuntu:18.04 +# This should be based on as old of an Ubuntu LTS as possible while +# supporting the minimum C++ or other requirements. +FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update RUN apt-get -y install screen git sudo \ - build-essential pkg-config \ + build-essential pkg-config cmake \ zlib1g-dev libjpeg-dev libgnutls28-dev \ - python3-pip texlive-latex-extra latexmk \ - inkscape imagemagick busybox-static wget fuse && \ + python3-sphinx python3-sphinx-rtd-theme \ + libjs-sphinxdoc texlive texlive-latex-extra \ + latexmk tex-gyre imagemagick busybox-static \ + wget fuse && \ apt-get clean && rm -rf /var/lib/apt/lists/* -# Get cmake from pypi. We need to keep Ubuntu 18.04 for a while longer -# since the glibc in Ubuntu 20.04 is too new (as of late 2023) for -# Amazon Linux 2 in Lambda and for some supported CentOS versions. -# When we are ready to update to 20.04 or newer, remove the version -# constraint on sphinx, and install the OS package for cmake. -RUN pip3 install --upgrade pip -RUN pip3 install sphinx==4 sphinx_rtd_theme cmake -COPY entrypoint /entrypoint -RUN chmod +x /entrypoint +COPY --chmod=0755 entrypoint /entrypoint ENTRYPOINT [ "/entrypoint" ] diff --git a/appimage/build-appimage b/appimage/build-appimage index 693773d..dbd97de 100755 --- a/appimage/build-appimage +++ b/appimage/build-appimage @@ -47,14 +47,14 @@ fi _osversion=$(cat /etc/os-release | grep PRETTY_NAME | awk -F'=' '{print $2}' | sed 's#"##g') # Warn users building the AppImage locally: -if [[ ! $_osversion =~ Ubuntu\ 18.04.*\ LTS ]]; then +if [[ ! $_osversion =~ Ubuntu\ 22.04.*\ LTS ]]; then set +x echo "" # 0 1 2 3 4 5 6 7 # 01234567890123456789012345678901234567890123456789012345678901234567890123456789 echo "+===========================================================================+" echo "|| WARNING: You are about to build a QPDF AppImage on a system which is ||" - echo "|| NOT Ubuntu 18.04 LTS. ||" + echo "|| NOT Ubuntu 22.04 LTS. ||" echo "|| ||" echo "|| It is recommended that you use a distribution that is at least a ||" echo "|| few years old to maximize the number of Linux distributions the ||" @@ -67,7 +67,6 @@ set +x set -x fi - # From where do we run this script? here="$(dirname $(readlink -f "$0"))" top=$(dirname $here) @@ -116,9 +115,7 @@ cd $here/build for width in 64 128 256 512; do dir=appdir/usr/share/icons/hicolor/${width}x${width}/apps mkdir -p $dir - inkscape -z -e qpdf-tmp.png -w $width -b white $top/logo/qpdf.svg - convert qpdf-tmp.png -gravity center -background white -extent ${width}x${width} $dir/qpdf.png - rm qpdf-tmp.png + convert $top/logo/qpdf.svg -gravity center -background white -extent ${width}x${width} $dir/qpdf.png done # Copy .desktop and .appdata.xml metadata for desktop integration into place: @@ -173,21 +170,7 @@ export LD_LIBRARY_PATH=$(dirname $(find $appdir -type l -name 'libqpdf.so.*')) # Replace symlink with custom script rm appdir/AppRun; cp $top/appimage/AppRun appdir; chmod a+x appdir/AppRun -# If we are not on Ubuntu Trusty, we need to disable 'appstreamcli' validation: -if [[ $_osversion =~ Ubuntu\ 14.04.*\ LTS ]]; then - appimagetool_param="" -else - appimagetool_param="-n" - set +x - echo "" - echo " Running 'appimagetool' with '-n' parameter..." - echo " Reason: this does not seem to be a build running on" - echo " Ubuntu Trusty 14.04." - echo " '-n' disables checking of AppStream data by the 'appstreamcli'" - echo " utility since post-Trusty versions have incompatible changes." - echo "" - set -x -fi +appimagetool_param="-n" # Set up a version string to include in the AppImage name MAJOR_QPDF_VERSION=$( ./appdir/usr/bin/qpdf --version | grep "qpdf version" | awk '{print $3}' ) diff --git a/include/qpdf/DLL.h b/include/qpdf/DLL.h index 20528a5..db7e8b6 100644 --- a/include/qpdf/DLL.h +++ b/include/qpdf/DLL.h @@ -26,13 +26,13 @@ /* The first version of qpdf to include the version constants is 10.6.0. */ #define QPDF_MAJOR_VERSION 12 -#define QPDF_MINOR_VERSION 2 -#define QPDF_PATCH_VERSION 1 +#define QPDF_MINOR_VERSION 3 +#define QPDF_PATCH_VERSION 0 #ifdef QPDF_FUTURE -# define QPDF_VERSION "12.2.1+future" +# define QPDF_VERSION "12.3.0+future" #else -# define QPDF_VERSION "12.2.1" +# define QPDF_VERSION "12.3.0" #endif /* diff --git a/job.sums b/job.sums index e23b630..85931ae 100644 --- a/job.sums +++ b/job.sums @@ -1,5 +1,5 @@ # Generated by generate_auto_job -CMakeLists.txt 6d1c286b464c50843f2cfbd5808adc2de3cf5850f934471093cfdac63f9918e7 +CMakeLists.txt 18214e276670dc8beb2ab83f789c6d94941bc92b199b353f3943024cfd41d3bc generate_auto_job f64733b79dcee5a0e3e8ccc6976448e8ddf0e8b6529987a66a7d3ab2ebc10a86 include/qpdf/auto_job_c_att.hh 4c2b171ea00531db54720bf49a43f8b34481586ae7fb6cbf225099ee42bc5bb4 include/qpdf/auto_job_c_copy_att.hh 50609012bff14fd82f0649185940d617d05d530cdc522185c7f3920a561ccb42 @@ -16,5 +16,5 @@ libqpdf/qpdf/auto_job_json_init.hh b49378f00d521a9f3e0ce9086e30b082bc6ef8e43c845 libqpdf/qpdf/auto_job_schema.hh f6a3e8b663714bba50b594f5e31437bbcb96ca4609d2c150c3bbc172e3b000fa manual/_ext/qpdf.py 6add6321666031d55ed4aedf7c00e5662bba856dfcd66ccb526563bffefbb580 manual/cli.rst 6fae28c9589bfde5b55260c95a7c64ad48688875f14f195129606405b32a04c6 -manual/qpdf.1 76b02da5aed70b605e01bf26a856dbd7617d086acfb96d240063cfcc226e9817 +manual/qpdf.1 358dfe1bbeb49366d6dd17f74d883295344725b985183b8ca5e23226461654b3 manual/qpdf.1.in 436ecc85d45c4c9e2dbd1725fb7f0177fb627179469f114561adf3cb6cbb677b diff --git a/manual/installation.rst b/manual/installation.rst index 01e0808..867c71d 100644 --- a/manual/installation.rst +++ b/manual/installation.rst @@ -16,7 +16,7 @@ need to build qpdf in various circumstances. Basic Dependencies ~~~~~~~~~~~~~~~~~~ -- A C++ compiler that supports C++-17 +- A C++ compiler that supports C++-20 - `CMake `__ version 3.16 or later diff --git a/manual/qpdf.1 b/manual/qpdf.1 index 6de7cfb..16e8cb4 100644 --- a/manual/qpdf.1 +++ b/manual/qpdf.1 @@ -3,7 +3,7 @@ .\" Edits will be automatically overwritten if the build is .\" run in maintainer mode. .\" -.TH QPDF "1" "" "qpdf version 12.2.1" "User Commands" +.TH QPDF "1" "" "qpdf version 12.3.0" "User Commands" .SH NAME qpdf \- PDF transformation software .SH SYNOPSIS diff --git a/manual/release-notes.rst b/manual/release-notes.rst index 55f53cf..e8b802b 100644 --- a/manual/release-notes.rst +++ b/manual/release-notes.rst @@ -13,6 +13,16 @@ more detail. .. x.y.z: not yet released +12.3.0: not yet released + - Build changes + + - A C++-20 compiler is now required. + + - The AppImage and Linux standalone binary distributions are now + built with Ubuntu 22.04 to support C++-20, which means they will + not work on some older Linux distributions. If you need support + for an older distribution, please use version 12.2.0 or below. + 12.2.0: May 4, 2025 - Upcoming C++ Version Change