download.lst                                     |    4 +-
 external/boost/include/boost/convert.hpp         |   28 +++++++++++++++++
 external/boost/include/boost/convert/stream.hpp  |   28 +++++++++++++++++
 external/poppler/StaticLibrary_poppler.mk        |    1 
 external/poppler/UnpackedTarball_poppler.mk      |    1 
 external/poppler/disable-nss-and-gpgmepp.patch.1 |   36 ++++++++++++-----------
 external/poppler/std_charconv.patch.1            |   30 +++++++++++++++++++
 7 files changed, 109 insertions(+), 19 deletions(-)

New commits:
commit 878aefc916e04cb96cbba2bc4304573d818b0d9c
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Mar 25 20:59:08 2024 +0100
Commit:     Michael Stahl <[email protected]>
CommitDate: Thu Jan 9 17:35:36 2025 +0100

    poppler: upgrade to release 24.03.0
    
    Change-Id: Icd063dcc9a034e88283ddf16be64091a32f3453f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165292
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173037
    Reviewed-by: Caolán McNamara <[email protected]>
    (cherry picked from commit 00b2beb5427f53d90efcadefe50c1320c0501535)
    (cherry picked from commit 3d282731feae4056f3158a3650a1e1406a4dba22)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180007
    Tested-by: Michael Stahl <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 0a4f40662e19..9fc8e5d16fdf 100644
--- a/download.lst
+++ b/download.lst
@@ -470,8 +470,8 @@ LIBPNG_TARBALL := libpng-1.6.44.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-POPPLER_SHA256SUM := 
80d1d44dd8bdf4ac1a47d56c5065075eb9991790974b1ed7d14b972acde88e55
-POPPLER_TARBALL := poppler-23.09.0.tar.xz
+POPPLER_SHA256SUM := 
bafbf0db5713dec25b5d16eb2cd87e4a62351cdc40f050c3937cd8dd6882d446
+POPPLER_TARBALL := poppler-24.03.0.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/boost/include/boost/convert.hpp 
b/external/boost/include/boost/convert.hpp
new file mode 100644
index 000000000000..537ae130b53d
--- /dev/null
+++ b/external/boost/include/boost/convert.hpp
@@ -0,0 +1,28 @@
+/* generated by bin/gen-boost-headers, do not edit! */
+#pragma once
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpragmas"  /* first! for GCC */
+#pragma GCC diagnostic ignored "-Wunknown-warning-option" // second! for Clang 
5
+#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor"
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#pragma GCC diagnostic ignored "-Wdeprecated-copy"
+#pragma GCC diagnostic ignored "-Wextra"
+#pragma GCC diagnostic ignored "-Wignored-qualifiers"
+#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+#pragma GCC diagnostic ignored "-Winvalid-constexpr"
+#pragma GCC diagnostic ignored "-Wmicrosoft-unqualified-friend"
+#pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
+#pragma GCC diagnostic ignored "-Wparentheses"
+#pragma GCC diagnostic ignored "-Wplacement-new"
+#pragma GCC diagnostic ignored "-Wreturn-type"
+#pragma GCC diagnostic ignored "-Wshadow"
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare"
+#pragma GCC diagnostic ignored "-Wtype-limits"
+#pragma GCC diagnostic ignored "-Wundef"
+#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
+#pragma GCC diagnostic ignored "-Wunused-macros"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#include_next <boost/convert.hpp>
+#pragma GCC diagnostic pop
diff --git a/external/boost/include/boost/convert/stream.hpp 
b/external/boost/include/boost/convert/stream.hpp
new file mode 100644
index 000000000000..cf5a709fc45b
--- /dev/null
+++ b/external/boost/include/boost/convert/stream.hpp
@@ -0,0 +1,28 @@
+/* generated by bin/gen-boost-headers, do not edit! */
+#pragma once
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpragmas"  /* first! for GCC */
+#pragma GCC diagnostic ignored "-Wunknown-warning-option" // second! for Clang 
5
+#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor"
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#pragma GCC diagnostic ignored "-Wdeprecated-copy"
+#pragma GCC diagnostic ignored "-Wextra"
+#pragma GCC diagnostic ignored "-Wignored-qualifiers"
+#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+#pragma GCC diagnostic ignored "-Winvalid-constexpr"
+#pragma GCC diagnostic ignored "-Wmicrosoft-unqualified-friend"
+#pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
+#pragma GCC diagnostic ignored "-Wparentheses"
+#pragma GCC diagnostic ignored "-Wplacement-new"
+#pragma GCC diagnostic ignored "-Wreturn-type"
+#pragma GCC diagnostic ignored "-Wshadow"
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare"
+#pragma GCC diagnostic ignored "-Wtype-limits"
+#pragma GCC diagnostic ignored "-Wundef"
+#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
+#pragma GCC diagnostic ignored "-Wunused-macros"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#include_next <boost/convert/stream.hpp>
+#pragma GCC diagnostic pop
diff --git a/external/poppler/StaticLibrary_poppler.mk 
b/external/poppler/StaticLibrary_poppler.mk
index 62877a0f0059..20cb4001d196 100644
--- a/external/poppler/StaticLibrary_poppler.mk
+++ b/external/poppler/StaticLibrary_poppler.mk
@@ -12,6 +12,7 @@ $(eval $(call gb_StaticLibrary_StaticLibrary,poppler))
 $(eval $(call gb_StaticLibrary_use_unpacked,poppler,poppler))
 
 $(eval $(call gb_StaticLibrary_use_externals,poppler,\
+       boost_headers \
        libjpeg \
        zlib \
 ))
diff --git a/external/poppler/UnpackedTarball_poppler.mk 
b/external/poppler/UnpackedTarball_poppler.mk
index cc4f67754a03..a8f9af27fe60 100644
--- a/external/poppler/UnpackedTarball_poppler.mk
+++ b/external/poppler/UnpackedTarball_poppler.mk
@@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\
        external/poppler/disable-nss-and-gpgmepp.patch.1 \
        external/poppler/gcc7-EntityInfo.patch.1 \
        external/poppler/gcc7-GfxFont.patch.1 \
+       external/poppler/std_charconv.patch.1 \
        external/poppler/poppler-config.patch.1 \
 ))
 
diff --git a/external/poppler/disable-nss-and-gpgmepp.patch.1 
b/external/poppler/disable-nss-and-gpgmepp.patch.1
index 01b442f53a1c..1d7f7f933433 100644
--- a/external/poppler/disable-nss-and-gpgmepp.patch.1
+++ b/external/poppler/disable-nss-and-gpgmepp.patch.1
@@ -11,7 +11,7 @@ disable NSS/GPGMEPP dependent code.
  #include "SignatureInfo.h"
  #include "CertificateInfo.h"
  #include "XRef.h"
-@@ -577,7 +577,7 @@
+@@ -578,7 +578,7 @@
  {
      return static_cast<FormFieldSignature 
*>(field)->validateSignature(doVerifyCert, forceRevalidation, validationTime, 
ocspRevocationCheck, enableAIA);
  }
@@ -20,12 +20,12 @@ disable NSS/GPGMEPP dependent code.
  // update hash with the specified range of data from the file
  static bool hashFileRange(FILE *f, CryptoSign::SigningInterface *handler, 
Goffset start, Goffset end)
  {
-@@ -607,10 +607,12 @@
+@@ -608,10 +608,12 @@
      delete[] buf;
      return true;
  }
 +#endif
- 
+
  bool FormWidgetSignature::signDocument(const std::string &saveFilename, const 
std::string &certNickname, const std::string &password, const GooString 
*reason, const GooString *location, const std::optional<GooString> 
&ownerPassword,
                                         const std::optional<GooString> 
&userPassword)
  {
@@ -33,44 +33,46 @@ disable NSS/GPGMEPP dependent code.
      auto backend = CryptoSign::Factory::createActive();
      if (!backend) {
          return false;
-@@ -698,6 +700,8 @@
+@@ -697,8 +699,8 @@
+     signatureField->setSignature(*signature);
+
      fclose(file);
- 
-     return true;
+-
+-    return true;
 +#endif
 +    return false;
  }
- 
- bool FormWidgetSignature::signDocumentWithAppearance(const std::string 
&saveFilename, const std::string &certNickname, const std::string &password, 
const GooString *reason, const GooString *location,
-@@ -2316,6 +2320,7 @@
- 
+
+ static std::tuple<double, double> calculateDxDy(int rot, const PDFRectangle 
*rect)
+@@ -2355,6 +2357,7 @@
+
  void 
FormFieldSignature::hashSignedDataBlock(CryptoSign::VerificationInterface 
*handler, Goffset block_len)
  {
 +#if 0
      if (!handler) {
          return;
      }
-@@ -2335,6 +2340,7 @@
+@@ -2374,6 +2377,7 @@
              i += BLOCK_SIZE;
          }
      }
 +#endif
  }
- 
+
  FormSignatureType FormWidgetSignature::signatureType() const
-@@ -2349,6 +2355,7 @@
- 
+@@ -2388,6 +2392,7 @@
+
  SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool 
forceRevalidation, time_t validationTime, bool ocspRevocationCheck, bool 
enableAIA)
  {
 +#if 0
      auto backend = CryptoSign::Factory::createActive();
      if (!backend) {
          return signature_info;
-@@ -2425,6 +2432,7 @@
+@@ -2464,6 +2469,7 @@
      const CertificateValidationStatus cert_val_state = 
signature_handler->validateCertificate(std::chrono::system_clock::from_time_t(validationTime),
 ocspRevocationCheck, enableAIA);
      signature_info->setCertificateValStatus(cert_val_state);
- 
+
 +#endif
      return signature_info;
  }
- 
+
diff --git a/external/poppler/std_charconv.patch.1 
b/external/poppler/std_charconv.patch.1
new file mode 100644
index 000000000000..c1377fec013d
--- /dev/null
+++ b/external/poppler/std_charconv.patch.1
@@ -0,0 +1,30 @@
+no <charconv> in baseline GCC 7
+
+--- poppler/fofi/FoFiType1.cc.orig     2025-01-09 14:07:47.367442683 +0100
++++ poppler/fofi/FoFiType1.cc  2025-01-09 14:15:26.553919121 +0100
+@@ -28,7 +28,8 @@
+ 
+ #include <config.h>
+ 
+-#include <charconv>
++#include <boost/convert.hpp>
++#include <boost/convert/stream.hpp>
+ #include <optional>
+ 
+ #include <cstdlib>
+@@ -281,9 +282,13 @@
+ 
+                         int code = 0;
+                         if (codeToken->length() > 2 && codeToken->at(0) == 
'8' && codeToken->at(1) == '#') {
+-                            std::from_chars(codeToken->data() + 2, 
codeToken->data() + codeToken->length(), code, 8);
++                            boost::cnv::cstream ccnv;
++                            std::string_view temp(codeToken->data() + 2, 
codeToken->length() - 2);
++                            code = boost::convert<int>(temp, 
ccnv(std::oct)).value_or(-1);
+                         } else {
+-                            std::from_chars(codeToken->data(), 
codeToken->data() + codeToken->length(), code);
++                            boost::cnv::cstream ccnv;
++                            std::string_view temp(codeToken->data(), 
codeToken->length());
++                            code = boost::convert<int>(temp, 
ccnv(std::dec)).value_or(-1);
+                         }
+ 
+                         if (code >= 0 && code < 256 && nameToken->length() > 
1) {

Reply via email to