Marius Bakke transcribed 5.2K bytes: > Hello! > > Our current version of librsvg is officially unmaintained, and the > latest version requires Rust. > > I've succeeded in making the latest version build, but there are a > couple of problems. > > * Module dependency cycle: <https://bugs.gnu.org/31392>. > * librsvg requires Cairo 1.15, which is not a "stable" release branch. > * It bundles 59 Rust libraries. > > Here are the Rust libs: > > aho-corasick/ bitflags/ > bitflags-0.9.1/ cairo-rs/ > cairo-sys-rs/ cssparser/ > cssparser-macros/ c_vec/ > downcast-rs/ dtoa/ > dtoa-short/ either/ > float-cmp/ fuchsia-zircon/ > fuchsia-zircon-sys/ glib/ > glib-sys/ gobject-sys/ > itertools/ itoa/ > lazy_static/ libc/ > matches/ memchr/ > num-traits/ pango/ > pangocairo/ pangocairo-sys/ > pango-sys/ phf/ > phf_codegen/ phf_generator/ > phf_shared/ pkg-config/ > procedural-masquerade/ proc-macro2/ > quote/ quote-0.3.15/ > rand/ rand-0.3.22/ > regex/ regex-syntax/ > siphasher/ smallvec/ > syn/ syn-0.11.11/ > synom/ thread_local/ > ucd-util/ unicode-xid/ > unicode-xid-0.0.4/ unreachable/ > utf8-ranges/ void/ > winapi/ winapi-0.2.8/ > winapi-i686-pc-windows-gnu/ winapi-x86_64-pc-windows-gnu/ > > Have anyone packaged any of these? Or made a Rust importer?
I think if Chris has the same amount of crates as I have, we have half of them ready to be packaged. The remaining issues with the rust build-system felt so obvious (since I have the email on guix-devel bookmarked) that I never reported the list of things to be fixed, but I would not try anything above 0 dependency crates before crates can build properly. I'll try and open tickets tomorrow. > Here is a package definition for librsvg (use with guix package -f). > > (use-modules (guix packages) > (guix download) > (guix utils) > (gnu packages) > (gnu packages gnome) > (gnu packages gtk) > (gnu packages rust) > (srfi srfi-1)) > > ;; XXX: Cairo 1.15 is a development branch, yet recent librsvg depends on it. > (define-public cairo-1.15 > (package > (inherit cairo) > (version "1.15.12") > (source (origin > (method url-fetch) > (uri (string-append "https://cairographics.org/snapshots/cairo-" > version ".tar.xz")) > (sha256 > (base32 > "1jcl0mnqq6j2xip8p506g2cj54sfycm339rrd3p4g2jljhdhh8vn")) > )))) > > (define pango-for-librsvg > (package > (inherit pango) > (propagated-inputs > `(("cairo" ,cairo-1.15) > ,@(alist-delete "cairo" (package-propagated-inputs pango)))))) > > (define-public librsvg-2.42 > (package > (inherit librsvg) > (name "librsvg") > (version "2.42.4") > (source (origin > (method url-fetch) > (uri (string-append "mirror://gnome/sources/" name "/" > (version-major+minor version) "/" > name "-" version ".tar.xz")) > (sha256 > (base32 > "1qsd0j7s97ab5fzy5b5gix5b7hbw57cr46ia8pkcrr4ylsi80li2")))) > (native-inputs > `(("cargo" ,rust "cargo") > ("rust" ,rust) > ,@(package-native-inputs librsvg))) > (inputs > `(("pango" ,pango-for-librsvg) > ,@(alist-delete "pango" (package-inputs librsvg)))) > (propagated-inputs > `(("cairo" ,cairo-1.15) > ,@(alist-delete "cairo" (package-propagated-inputs librsvg)))) > (arguments > (substitute-keyword-arguments (package-arguments librsvg) > ((#:phases phases) > `(modify-phases ,phases > (add-after 'remove-failing-tests 'disable-yet-another-test > (lambda _ > ;; FIXME: This fails since the update to 2.42.4. > (delete-file > "tests/fixtures/reftests/svg1.1/coords-viewattr-02-b.svg") > #t)) > ;; XXX: Shebang patching causes Cargo to error out due to checksum > ;; mismatches. Luckily we don't need it until the check phase. > ;; This can be removed once all vendored libs are in Guix proper. > (delete 'patch-source-shebangs) > (delete 'patch-generated-file-shebangs) > (add-before 'check 'patch-shebangs > (assoc-ref %standard-phases 'patch-source-shebangs)))))))) > > librsvg-2.42 > > Feedback welcome. I'd like to get this into the next 'staging' cycle > and will attempt to package some of the Rust libs separately. > > Propagating this Cairo variant is unfortunate however, perhaps we should > make it a regular input for now?