lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RFC: require librsvg to implement SVG image support


From: Jean Abou Samra
Subject: Re: RFC: require librsvg to implement SVG image support
Date: Sun, 15 Jan 2023 13:40:46 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0

Le 14/01/2023 à 22:09, Jonas Hahnfeld a écrit :
On Sat, 2023-01-14 at 18:11 +0100, Jean Abou Samra wrote:
I would have to test how difficult it actually is to cross-compile
Poppler, but my own assessment is that keeping MinGW cross-compilation
of a C++ project working is potentially more burdensome on the long-term
than with a Rust one, so to me, both aspects speak in favor of librsvg.
I recognize that, having some (but not a lot of) experience with Rust
may make me biased.
I don't really understand this argument: We are cross-compiling some
tens of C++ projects already, whereas adding Rust is a first here. From
my point of view, this is certainly the bigger "burden" here, as long
as we make CMake behave.



Sorry, that was bad wording from my part: change "C++ project"
to "CMake-based C++ project". To be more precise:

- librsvg's build system is an Autotools wrapper around Cargo,
  so we don't have to change the way we are invoking it, the
  Librsvg class just inherits from the already existing ConfigurePackage
  class. Apart from one setting of RUSTFLAGS to make the
  compiler find libintl, like we already have to do for
  the C++ compiler with LDFLAGS, and one setting of RUST_TARGET
  (I have to investigate if that one is actually needed), it's
  similar to what already exists. Behind this, Cargo effortelessly
  cross-compiles all Rust dependencies of librsvg [there are
  actually quite a few of them, but this is normal in the Rust
  world because there is a culture of making very small crates].

- Since Poppler's build system is CMake, we have to write a different
  class inheriting from Package alongside ConfigurePackage and
  MesonPackage, and figure out how CMake needs to be invoked and
  with what environment variables. From my point of view, this is
  more complex.



By the way, I checked the version of CMake in CentOS 7. According
to https://pkgs.org/search/?q=cmake, it's 2.8.12, while the minimum
required CMake version for building current versions of Poppler
(I checked the latest release, Poppler 23.01.0, as well as master)
is 3.16.0. Thus, either way, we'll -- unfortunately -- have to accept
that some tools needed to run a build need to be installed outside
of the distribution.
That's not true, we can use the version from el7 (which we use for
something else already, I forgot which package). This offers us CMake
3.17.5 from the "official" repos (for some definition of "official").


Now, that is interesting. I didn't know about EPEL. According to
https://packages.fedoraproject.org/pkgs/rust/rust/
EPEL 7 has Rust 1.66, which is enough for librsvg (Rust 1.63+).
So that should work, right?

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]