Opened 2 years ago
Closed 2 years 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: | medium | 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 , 2 years ago
comment:2 by , 2 years 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 , 2 years 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 , 2 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

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...