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?
OpenPGP_signature
Description: OpenPGP digital signature