[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Updating librsvg
From: |
Nils Gillmann |
Subject: |
Re: Updating librsvg |
Date: |
Wed, 9 May 2018 18:28:39 +0000 |
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?