I've gone down a rabbit hole trying to build the latest verison of librsvg. My local Fedora 33 system has librsvg2-2.50.3-1 and produces good images, but the production server Centos 7.9 has 2.40.20-1 and doesn't fill curved paths using a bitmap pattern properly. Anyway, I'm trying to build newer versions of these packages on a Centos 7.9 production server, first working on a freshly installed Centos 7.9 on a local VM to get the basics working. Environment:
- gcc 4.8.5-44
- meson 0.57.1
- ninja 1.10.0
- Installed yum group "Development Tools" and set up EPEL repo for cargo & rust.
I've got to the point that I need a newer version of pango, so have grabbed pango-1.48.2 src from https://download.gnome.org/sources/pango/1.48/ and am attempting to build it. I've not used meson or ninja before but I have rusty old Unix build skills from 10 years ago that I'm trying to apply to these new tools.
It seems pango will autodetect missing libraries, or where the installed version is not high enough, and will download and build them. One of these is harfbuzz
, and this is failing:
# /usr/local/bin/meson setup builddir
# /usr/local/bin/meson configure builddir/ -Dprefix=/usr/local
# ninja -C builddir/
../subprojects/harfbuzz/src/hb.hh:450:1: warning: identifier 'static_assert' is a keyword in C++11 [-Wc++0x-compat]
And later:
./subprojects/harfbuss/src/hb.hh:450:15: error: expected constructor, destructor, or type conversion before '(' token
static_assert ((sizeof (int8_t) == 1), "");
It looks like I need to specify c++11 as the language, however in subprojects/harfbuzz/meson.build
it looks like it's enabled:
default_options: [
... skip ...
'cpp_std=c++11'
(see https://github.com/harfbuzz/harfbuzz/blob/master/meson.build)
I've put some more complete output in gists (too long for stackoverflow, it rejects my post), first from the meson setup
in which it detects my harfbuzz library is not at sufficient version, so it downloads (I think it's github master from the look of subprojects/harfbuzz.wrap
):
https://gist.github.com/neekfenwick/836682eaff7f9e3dbbe62664a8e44ef6
And the output from the build step.. the c++11 stuff starts pretty early on, e.g. warning: identifier ‘static_assert’ is a keyword in C++11
:
https://gist.github.com/neekfenwick/4581c5f83d4319bf1f011da0012a7dfd
I thought I could cd subprojects/harfbuzz
and retry the build command to test building that one part of the overall pango build, but there is no Makefile or configure script, as if autogen.sh
was not run. However, if I charge in there and run a build as best I know, it works:
$ cd subprojects/harfbuzz
$ ./autogen.sh
$ ./configure --prefix=/usr/local
$ make
Succeeds. Something about how ninja is building it using the pango configuration is broken.
That configure command for harfbuzz does output these interesting lines:
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=gnu++11... yes
However, simply running make
succeeds, so harfbuzz seems to have the required c++11 flags turned on in a local build, why would it fail when built from the enclosing pango build process?
Where should I be poking around next to move this forward?
Aucun commentaire:
Enregistrer un commentaire