Opened 2 weeks ago

Closed 2 weeks ago

#19794 closed defect (fixed)

Fix building Inkscape with poppler-24.05.0

Reported by: Douglas R. Reno Owned by: blfs-book
Priority: normal Milestone: 12.2
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

When building Inkscape, I got the following error:

usr/include/poppler/goo/GooString.h:241:24: error: ‘starts_with’ has not been declared in ‘std::string’
  241 |     using std::string::starts_with;
      |                        ^~~~~~~~~~~
/usr/include/poppler/goo/GooString.h:244:24: error: ‘ends_with’ has not been declared in ‘std::string’
  244 |     using std::string::ends_with;
      |                        ^~~~~~~~~

Looking upstream, this seems to be due to poppler-24.05.0. I'm going to try applying https://gitlab.com/inkscape/inkscape/-/commit/bac106db943d1e8c7cfbcece28f7c613513f1c37

Change History (4)

comment:1 by Douglas R. Reno, 2 weeks ago

This is a two-part problem. The first one is that I forgot the sed that's for C++20 in Poppler, but after that is fixed (oops!) I get:

/sources/inkscape-1.3.2/inkscape-1.3.2_2023-11-25_091e20ef0f/src/extension/internal/pdfinput/poppler-utils.cpp: In function ‘std::string getString(const GooString*)’:
/sources/inkscape-1.3.2/inkscape-1.3.2_2023-11-25_091e20ef0f/src/extension/internal/pdfinput/poppler-utils.cpp:566:16: error: ‘const class GooString’ has no member named ‘hasUnicodeMarker’
  566 |     if (value->hasUnicodeMarker()) {
      |                ^~~~~~~~~~~~~~~~
/sources/inkscape-1.3.2/inkscape-1.3.2_2023-11-25_091e20ef0f/src/extension/internal/pdfinput/poppler-utils.cpp:569:23: error: ‘const class GooString’ has no member named ‘hasUnicodeMarkerLE’
  569 |     } else if (value->hasUnicodeMarkerLE()) {
      |                       ^~~~~~~~~~~~~~~~~~

Notably this includes

/sources/inkscape-1.3.2/inkscape-1.3.2_2023-11-25_091e20ef0f/src/extension/internal/pdfinput/poppler-utils.cpp:566:16: error: ‘const class GooString’ has no member named ‘hasUnicodeMarker’

/sources/inkscape-1.3.2/inkscape-1.3.2_2023-11-25_091e20ef0f/src/extension/internal/pdfinput/poppler-utils.cpp:569:23: error: ‘const class GooString’ has no member named ‘hasUnicodeMarkerLE’

Trying the patch now...

comment:2 by Douglas R. Reno, 2 weeks ago

Now I get the following error:

/usr/include/poppler/UTF.h: In function ‘bool hasUnicodeByteOrderMark(const std::string&)’:

/usr/include/poppler/UTF.h:57:14: error: ‘const std::string’ {aka ‘const class std::cxx11::basic_string<char>’} has no member named ‘starts_with’

57 | return s.starts_with(unicodeByteOrderMark);

|


/usr/include/poppler/UTF.h: In function ‘bool hasUnicodeByteOrderMarkLE(const std::string&)’: /usr/include/poppler/UTF.h:63:14: error: ‘const std::string’ {aka ‘const class std::cxx11::basic_string<char>’} has no member named ‘starts_with’

63 | return s.starts_with(unicodeByteOrderMarkLE);

|

This looks similar to the sed in poppler, so I'll try updating that next.

comment:3 by Douglas R. Reno, 2 weeks ago

The correct approach here will be to apply https://gitlab.com/inkscape/inkscape/-/commit/1798e9c13b786f3d077ba0132592c4d5c1d1fb9b, which upgrades Inkscape to C++20.

comment:4 by Douglas R. Reno, 2 weeks ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.