Get rid of embedded copy of libcroco

Bug #648246 reported by Luca Bruno
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Inkscape
Wishlist
Unassigned
libcroco
Confirmed
Medium
Gentoo Linux
Unknown
Medium
inkscape (Debian)
Confirmed
Unknown

Bug Description

Inkscape currently ships an embedded copy of libcroco.
The goal is to remove it and use the system-wide one.

This bug is being kept open to track progress and to-do items.

== Patches forwarded upstream ==
* [UNCONFIRMED] CSS pseudo-class should have case-insenstive matching [1]
* [UNCONFIRMED] Pseudo-class matches ignore class match restrictions [2]

[1] https://bugzilla.gnome.org/show_bug.cgi?id=721806
[2] https://bugzilla.gnome.org/show_bug.cgi?id=721886

Revision history for this message
In , Diego Elio Pettenò (flameeyes) wrote :

Would be nice to use the system copy instead.

Revision history for this message
In , Maekke-gentoo (maekke-gentoo) wrote :

the internal copy is a more recent copy of libcroco (according to upstreams svn) and will go away when libcroco-0.47 will be released.
the diffstat between libcroco and internal copy:

 cr-additional-sel.c | 136 +++-------
 cr-additional-sel.h | 14 +
 cr-attr-sel.c | 78 ++---
 cr-attr-sel.h | 2
 cr-cascade.c | 65 +---
 cr-declaration.c | 210 ++++++---------
 cr-doc-handler.c | 84 ++----
 cr-enc-handler.c | 46 +--
 cr-enc-handler.h | 6
 cr-fonts.c | 252 ++----------------
 cr-input.c | 386 +++++++++++-----------------
 cr-num.c | 89 ++----
 cr-om-parser.c | 130 ++++-----
 cr-parser.c | 428 +++++++++++--------------------
 cr-parsing-location.c | 56 +---
 cr-prop-list.c | 119 ++------
 cr-pseudo.c | 43 ---
 cr-rgb.c | 457 ++++++++++++++-------------------
 cr-rgb.h | 4
 cr-sel-eng.c | 460 +++++++++++++++-------------------
 cr-sel-eng.h | 22 -
 cr-selector.c | 79 +----
 cr-simple-sel.c | 62 +---
 cr-simple-sel.h | 6
 cr-statement.c | 674 +++++++++++++++++---------------------------------
 cr-statement.h | 4
 cr-string.c | 15 -
 cr-style.c | 101 +++----
 cr-stylesheet.c | 4
 cr-term.c | 38 +-
 cr-term.h | 2
 cr-tknzr.c | 82 ++----
 cr-token.c | 4
 cr-utils.c | 19 -
 cr-utils.h | 8
 libcroco.h | 6
 36 files changed, 1597 insertions(+), 2594 deletions(-)

Revision history for this message
Luca Bruno (lucab) wrote :

Main show-stopper for this bug is libcroco bug #572454:
https://bugzilla.gnome.org/show_bug.cgi?id=572454

I got in touch with upstream (Dodji) and he told me he has no time to handle this case, but would be willing to merge a properly crafted and complete patch.

Changed in inkscape (Debian):
status: Unknown → Confirmed
Changed in libcroco:
importance: Unknown → Medium
status: Unknown → Confirmed
Changed in gentoo:
importance: Unknown → Medium
status: Unknown → Won't Fix
Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Is anyone working on this at the moment? If I recall correctly, there was a bit of a push on it a year ago, but I haven't heard anything for a while.

Anyway, I did a quick comparison with the upstream git repo... it looks like we branched immediately after the libcroco-0.6.0 release [1]. If no one is working on this, I propose that we do the same thing as the GDL merge job:

1. Grab the diff from libcroco-0.6.0 to libcroco-0.6.0+inkscape (i.e., our fork).

2. Merge all upstream changes into our fork. [The easiest way is to branch the upstream git repo at version 0.6.0, apply our complete patch, and then do a git merge with master]

3. Pull the merged version back into Inkscape.

4. See which differences remain between libcroco-master and libcroco-master+inkscape.

5. Split the remaining diff into individual patches and submit each of them upstream.

6. After an upstream release is available with all the required changes, update devlibs + encourage linux distros to upgrade their libcroco packages.

7. Update config to build against external libcroco

8. Remove our fork.

Any thoughts?

[1] http://git.gnome.org/browse/libcroco/commit/?id=3e0fb4e6acd9b29303384da9242b08c70e4d9add

Changed in inkscape:
status: Confirmed → Triaged
Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Patch attached for rebasing our internal copy of libcroco to v0.6.8 (the latest upstream version). Most of the upstream changes are pretty minimal so hopefully there isn't much scope for regression.

This is part of the process of preparing a minimal patch that can be forwarded upstream...

Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Rebased on upstream libcroco 0.6.3 in lp:inkscape r12765. Remaining changes attached.

Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Rebased on libcroco-0.6.4 in lp:inkscape r12766. Remaining changes attached.

Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Rebased up to current libcroco-0.6.8 in lp:inkscape r12770. Remaining changes attached.

description: updated
Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Rebased on libcroco 0.6.9 in r14449. Remaining changes attached.

This fixes a lot of the build warnings that we had patched in our fork so the delta has reduced by about 30%. Please keep an eye out for regressions!

Upstream NEWS for 0.6.9
    * Added Visual Studio projects (Chun-wei Fan)
    * Lots of warnings fixed (Руслан Ижбулатов)
    * Improve build system (Nuno Araujo, Ignacio Casal Quinteiro)
    * Misc bug fixes

Revision history for this message
Alex Valavanis (valavanisalex) wrote :

Rebased on libcroco 0.6.11 in r14540. Diff for remaining changes attached.

Please keep an eye open for any regressions.

Upstream NEWS:

0.6.11
    * Fix regression in cr_tknzr_consume_chars (Florian Müllner)
    * Misc bug fixes

0.6.10
    * Misc bug fixes

Revision history for this message
In , mgorny (mgorny-gentoo-bugs) wrote :

Ten years later, it is still bundled.

Changed in gentoo:
status: Won't Fix → Unknown
Revision history for this message
In , dilfridge (dilfridge-gentoo-bugs) wrote :

Still bundled.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Related questions

Remote bug watches

Bug watches keep track of this bug in other bug trackers.