tim-janik / rapicorn

Rapicorn is a toolkit for declarative UI construction and SVG-based theming
https://rapicorn.testbit.org/
Mozilla Public License 2.0
12 stars 2 forks source link

Linking with librsvg #4

Closed rekado closed 8 years ago

rekado commented 8 years ago

I'm trying to package Beast for GNU Guix and I noticed that rapicorn contains a modified copy of the librsvg sources. Is it possible to just build the additional files svg.{cc,hh} as librcore_rsvg* and link that with the upstream version of librsvg?

It is frowned upon to bundle third-party code and package guidelines for many GNU/Linux distributions would only allow bundling in packages under extreme circumstances. I've been trying to modify the contents of rcore/rsvg in the manner described above, but have not yet been successful. It would be nice if rapicorn would provide such feature optionally.

tim-janik commented 8 years ago

Hey Rekado,

great to see you work on packaging! I've spent some effort on packaging Rapicorn and Beast for Debian lately, hope that helps with your efforts. The results of that you can find here: https://github.com/tim-janik/rapicorn/tree/master/debian https://github.com/tim-janik/beast/tree/master/debian

About the librsvg bundling. The reason for that are ways to resize SVG images in a non-standard way that could only be implemented by modifying librsvg.

But with some of the more recent SVG widget rendering efforts it looks like we might not actually require those resizing features, so there's a good chance that we can get rid of the embedded librsvg and still keep the widget rendering feature set in Rapicorn.

I don't remember off-head how hard it'll be to get rid of the code modifications to librsvg and am currently still at the CCC congress. I guess I can look into helping with that early next year when I'm back home.

On 30.12.2015 20:37, rekado wrote:

I'm trying to package Beast for GNU Guix and I noticed that rapicorn contains a modified copy of the librsvg sources. Is it possible to just build the additional files |svg.{cc,hh}| as |librcore_rsvg*| and link that with the upstream version of librsvg?

It is frowned upon to bundle third-party code and package guidelines for many GNU/Linux distributions would only allow bundling in packages under extreme circumstances. I've been trying to modify the contents of |rcore/rsvg| in the manner described above, but have not yet been successful. It would be nice if rapicorn would provide such feature optionally.

— Reply to this email directly or view it on GitHub https://github.com/tim-janik/rapicorn/issues/4.

Yours sincerely, Tim Janik

https://testbit.eu/timj/ Free software author and speaker.

rekado commented 8 years ago

But with some of the more recent SVG widget rendering efforts it looks like we might not actually require those resizing features, so there's a good chance that we can get rid of the embedded librsvg and still keep the widget rendering feature set in Rapicorn.

That's good! It would make packaging Rapicorn (and thus Beast) a lot simpler. I have stopped packaging the two for now; I could make it work, but frankly I don't really want to build a slightly modified version of librsvg if it can be avoided.

I'm very interested in removing the bundled librsvg. I don't currently have much time to investigate this, but I'd be willing to try to package and test pre-releases.

tim-janik commented 8 years ago

Official librsvg lacks rsvg_handle_list(), an addition to our internal rsvg copy, that Rapicorn relies on. This is now filed as: https://bugzilla.gnome.org/show_bug.cgi?id=764610 API: librsvg should provide a way to list sub element IDs

I'm creating a workaround for librapicorn atm, so we can get rid of the internal copy.

rekado commented 8 years ago

This is great, thank you!