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?

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?

Attachment: signature.asc
Description: PGP signature

Reply via email to