rsvg2 3.2.3-x64-mingw32 → 3.2.4-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -2
  3. data/vendor/local/bin/csslint-0.6.exe +0 -0
  4. data/vendor/local/bin/libcroco-0.6-3.dll +0 -0
  5. data/vendor/local/bin/librsvg-2-2.dll +0 -0
  6. data/vendor/local/bin/rsvg-convert.exe +0 -0
  7. data/vendor/local/include/librsvg-2.0/librsvg/librsvg-enum-types.h +1 -1
  8. data/vendor/local/include/librsvg-2.0/librsvg/librsvg-features.h +3 -3
  9. data/vendor/local/include/librsvg-2.0/librsvg/rsvg-cairo.h +2 -2
  10. data/vendor/local/include/librsvg-2.0/librsvg/rsvg.h +13 -9
  11. data/vendor/local/lib/girepository-1.0/Rsvg-2.0.typelib +0 -0
  12. data/vendor/local/lib/libcroco-0.6.dll.a +0 -0
  13. data/vendor/local/lib/librsvg-2.a +0 -0
  14. data/vendor/local/lib/librsvg-2.dll.a +0 -0
  15. data/vendor/local/lib/librsvg-2.la +5 -5
  16. data/vendor/local/lib/pkgconfig/librsvg-2.0.pc +1 -1
  17. data/vendor/local/share/doc/librsvg/COMPILING.md +266 -0
  18. data/vendor/local/share/doc/librsvg/CONTRIBUTING.md +152 -0
  19. data/vendor/local/share/doc/librsvg/README.md +162 -0
  20. data/vendor/local/share/doc/librsvg/code-of-conduct.md +74 -0
  21. data/vendor/local/share/gir-1.0/Rsvg-2.0.gir +49 -32
  22. data/vendor/local/share/gtk-doc/html/rsvg-2.0/annotation-glossary.html +6 -6
  23. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-full.html +65 -108
  24. data/vendor/local/share/gtk-doc/html/rsvg-2.0/ch01.html +54 -0
  25. data/vendor/local/share/gtk-doc/html/rsvg-2.0/index.html +35 -19
  26. data/vendor/local/share/gtk-doc/html/rsvg-2.0/licence.html +14 -10
  27. data/vendor/local/share/gtk-doc/html/rsvg-2.0/object-tree.html +10 -14
  28. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-2.0.devhelp2 +46 -55
  29. data/vendor/local/share/gtk-doc/html/rsvg-2.0/{RsvgHandle.html → rsvg-RsvgHandle.html} +252 -338
  30. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-GIO.html +35 -42
  31. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-GdkPixbuf.html +38 -34
  32. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-cairo.html +13 -13
  33. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Version-check-and-feature-tests.html +13 -13
  34. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg.html +61 -15
  35. data/vendor/local/share/man/man1/rsvg-convert.1 +33 -16
  36. metadata +14 -17
  37. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-14.html +0 -54
  38. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-22.html +0 -42
  39. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-32.html +0 -46
  40. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-36.html +0 -45
  41. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-4.html +0 -38
  42. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-8.html +0 -53
  43. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-9.html +0 -52
  44. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-deprecated.html +0 -99
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 882875b9fde7facfba165bb1ba208f2123fab8e3245f9801013e032115cc16b5
4
- data.tar.gz: 3965924033a501ae748c638f3b0c1681d1241aaae4819c74e084f3ffbf30176c
3
+ metadata.gz: f016f543eee7d7a0c2257e48f9261d011b3f6cfafcdbe6deac4c1bee37660756
4
+ data.tar.gz: 59c29cca1983c05e17a7d888e85d9608b78d48009ada7ef79ab1653d5a78c9ee
5
5
  SHA512:
6
- metadata.gz: 4a80d3379b70914301ad4dbbceae87b46d2b612f33a6a2eda720a976bdc887c2a5acabfc52a1ff2ff0047375faade242383af3cc017513285dd0baa372c16dc8
7
- data.tar.gz: 8577c6abd9673b467b9da6da6e0a749164b0bd62c7e36e37a955d88620cb5bce1acfd4013636f42f17029b930e32223d2a7bcf6b07db8b8e29dbeb18f7ee079a
6
+ metadata.gz: 80e8f5c43f6845a33cd45bf06badb4f9afe6183f9973b5ddff52952b2aac53189315a9d1bd6bebf538ae80590c743cab2837e0097b029c6c3707ff543326618a
7
+ data.tar.gz: ed575f7a3003e8e531420189b79f95224c485e4b364e53c39eff4c4c108b0bee473ad1ca53ef6e652789ed326c4ec0fab256d65eee38e839e0cfb9331496c8ab
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- ruby -*-
2
2
  #
3
- # Copyright (C) 2010-2017 Ruby-GNOME2 Project Team
3
+ # Copyright (C) 2010-2018 Ruby-GNOME2 Project Team
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -64,14 +64,17 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
64
64
  :name => "librsvg",
65
65
  :download_site => :gnome,
66
66
  :label => "librsvg",
67
- :version => "2.40.20",
67
+ :version => "2.42.3",
68
68
  :compression_method => "xz",
69
69
  :windows => {
70
70
  :configure_args => [
71
71
  "--enable-introspection",
72
72
  ],
73
73
  :patches => [
74
+ "librsvg-2.42-cross-compile.diff"
74
75
  ],
76
+ :need_autoreconf => true,
77
+ :force_to_disable_deplibs_check => true,
75
78
  :built_file => "bin/librsvg-2-2.dll",
76
79
  },
77
80
  },
Binary file
Binary file
Binary file
Binary file
@@ -11,7 +11,7 @@
11
11
  #include <glib-object.h>
12
12
 
13
13
  G_BEGIN_DECLS
14
- /* enumerations from "rsvg.h" */
14
+ /* enumerations from "librsvg/rsvg.h" */
15
15
  GType rsvg_error_get_type (void);
16
16
  #define RSVG_TYPE_ERROR (rsvg_error_get_type())
17
17
  GType rsvg_handle_flags_get_type (void);
@@ -6,9 +6,9 @@
6
6
  #define LIBRSVG_FEATURES_H
7
7
 
8
8
  #define LIBRSVG_MAJOR_VERSION (2)
9
- #define LIBRSVG_MINOR_VERSION (40)
10
- #define LIBRSVG_MICRO_VERSION (20)
11
- #define LIBRSVG_VERSION "2.40.20"
9
+ #define LIBRSVG_MINOR_VERSION (42)
10
+ #define LIBRSVG_MICRO_VERSION (3)
11
+ #define LIBRSVG_VERSION "2.42.3"
12
12
 
13
13
  #define LIBRSVG_CHECK_VERSION(major,minor,micro) \
14
14
  (LIBRSVG_MAJOR_VERSION > (major) || \
@@ -1,5 +1,5 @@
1
- /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
- /* vim: set sw=4 sts=4 ts=4 expandtab: */
1
+ /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
+ /* vim: set sw=4 sts=4 expandtab: */
3
3
  /*
4
4
  rsvg-cairo.h: SAX-based renderer for SVG files using cairo
5
5
 
@@ -1,5 +1,5 @@
1
- /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
- /* vim: set sw=4 sts=4 ts=4 expandtab: */
1
+ /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
+ /* vim: set sw=4 sts=4 expandtab: */
3
3
  /*
4
4
  rsvg.h: SAX-based renderer for SVG files into a GdkPixbuf.
5
5
 
@@ -65,11 +65,6 @@ typedef enum {
65
65
  #define RSVG_ERROR (rsvg_error_quark ())
66
66
  GQuark rsvg_error_quark (void) G_GNUC_CONST;
67
67
 
68
- /**
69
- * RsvgHandle:
70
- *
71
- * The #RsvgHandle is an object representing the parsed form of a SVG
72
- */
73
68
  typedef struct _RsvgHandle RsvgHandle;
74
69
  typedef struct RsvgHandlePrivate RsvgHandlePrivate;
75
70
  typedef struct _RsvgHandleClass RsvgHandleClass;
@@ -80,7 +75,7 @@ typedef struct _RsvgPositionData RsvgPositionData;
80
75
  * RsvgHandleClass:
81
76
  * @parent: parent class
82
77
  *
83
- * Class structure for #RsvgHandle
78
+ * Class structure for #RsvgHandle.
84
79
  */
85
80
  struct _RsvgHandleClass {
86
81
  GObjectClass parent;
@@ -89,6 +84,12 @@ struct _RsvgHandleClass {
89
84
  gpointer _abi_padding[15];
90
85
  };
91
86
 
87
+ /**
88
+ * RsvgHandle:
89
+ * @parent: parent instance
90
+ *
91
+ * Lets you load SVG data and render it.
92
+ */
92
93
  struct _RsvgHandle {
93
94
  GObject parent;
94
95
 
@@ -127,7 +128,10 @@ struct _RsvgPositionData {
127
128
 
128
129
  void rsvg_cleanup (void);
129
130
 
131
+ RSVG_DEPRECATED
130
132
  void rsvg_set_default_dpi (double dpi);
133
+
134
+ RSVG_DEPRECATED
131
135
  void rsvg_set_default_dpi_x_y (double dpi_x, double dpi_y);
132
136
 
133
137
  void rsvg_handle_set_dpi (RsvgHandle * handle, double dpi);
@@ -219,7 +223,7 @@ void rsvg_handle_free (RsvgHandle * handle);
219
223
  * Deprecated: Set up a cairo matrix and use rsvg_handle_render_cairo() instead.
220
224
  * See the documentation for rsvg_handle_set_size_callback() for an example.
221
225
  */
222
- typedef /* RSVG_DEPRECATED */ void (*RsvgSizeFunc) (gint * width, gint * height, gpointer user_data);
226
+ /* RSVG_DEPRECATED */ typedef void (*RsvgSizeFunc) (gint * width, gint * height, gpointer user_data);
223
227
 
224
228
  RSVG_DEPRECATED
225
229
  void rsvg_handle_set_size_callback (RsvgHandle * handle,
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # librsvg-2.la - a libtool library file
2
- # Generated by libtool (GNU libtool) 2.4.6
2
+ # Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-2
3
3
  #
4
4
  # Please DO NOT delete this file!
5
5
  # It is necessary for linking the library.
@@ -17,15 +17,15 @@ old_library='librsvg-2.a'
17
17
  inherited_linker_flags=' -pthread'
18
18
 
19
19
  # Libraries that this one depends upon.
20
- dependency_libs=' -R/home/vagrant/ruby-gnome2/glib2/vendor/local/lib -L/home/vagrant/ruby-gnome2/glib2/vendor/local/lib -L/home/vagrant/rcairo/vendor/local/lib -L/home/vagrant/ruby-gnome2/rsvg2/vendor/local/lib -L/home/vagrant/ruby-gnome2/pango/vendor/local/lib -L/home/vagrant/ruby-gnome2/gdk_pixbuf2/vendor/local/lib /home/vagrant/ruby-gnome2/gdk_pixbuf2/vendor/local/lib/libgdk_pixbuf-2.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgio-2.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgmodule-2.0.la -ldnsapi -liphlpapi /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpangocairo-1.0.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpangowin32-1.0.la -lusp10 /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpangoft2-1.0.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libharfbuzz.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpango-1.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgthread-2.0.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libfribidi.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgobject-2.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libffi.la /home/vagrant/rcairo/vendor/local/lib/libcairo.la -lpthread /home/vagrant/rcairo/vendor/local/lib/libpixman-1.la /home/vagrant/rcairo/vendor/local/lib/libfontconfig.la /home/vagrant/rcairo/vendor/local/lib/libfreetype.la -lgdi32 -lmsimg32 /home/vagrant/rcairo/vendor/local/lib/libpng16.la /home/vagrant/ruby-gnome2/rsvg2/vendor/local/lib/libcroco-0.6.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libglib-2.0.la -lole32 -lwinmm -lshlwapi /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libpcre.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libintl.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libiconv.la /home/vagrant/rcairo/vendor/local/lib/libxml2.la -lz -lws2_32'
20
+ dependency_libs=' -R/home/vagrant/ruby-gnome2/glib2/vendor/local/lib -L/home/vagrant/ruby-gnome2/glib2/vendor/local/lib -L/home/vagrant/rcairo/vendor/local/lib -L/home/vagrant/ruby-gnome2/rsvg2/vendor/local/lib -L/home/vagrant/ruby-gnome2/pango/vendor/local/lib -L/home/vagrant/ruby-gnome2/gdk_pixbuf2/vendor/local/lib /home/vagrant/ruby-gnome2/gdk_pixbuf2/vendor/local/lib/libgdk_pixbuf-2.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgio-2.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgmodule-2.0.la -ldnsapi -liphlpapi /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpangocairo-1.0.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpangowin32-1.0.la -lusp10 /home/vagrant/rcairo/vendor/local/lib/libcairo.la -lpthread /home/vagrant/rcairo/vendor/local/lib/libpixman-1.la -lgdi32 -lmsimg32 /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpangoft2-1.0.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libharfbuzz.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libpango-1.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgthread-2.0.la /home/vagrant/ruby-gnome2/pango/vendor/local/lib/libfribidi.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libgobject-2.0.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libffi.la /home/vagrant/rcairo/vendor/local/lib/libfontconfig.la /home/vagrant/rcairo/vendor/local/lib/libfreetype.la /home/vagrant/rcairo/vendor/local/lib/libpng16.la /home/vagrant/ruby-gnome2/rsvg2/vendor/local/lib/libcroco-0.6.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libglib-2.0.la -lole32 -lwinmm -lshlwapi /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libpcre.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libintl.la /home/vagrant/ruby-gnome2/glib2/vendor/local/lib/libiconv.la /home/vagrant/rcairo/vendor/local/lib/libxml2.la -lz -lws2_32'
21
21
 
22
22
  # Names of additional weak libraries provided by this library
23
23
  weak_library_names=''
24
24
 
25
25
  # Version information for librsvg-2.
26
- current=42
27
- age=40
28
- revision=20
26
+ current=44
27
+ age=42
28
+ revision=3
29
29
 
30
30
  # Is this an already installed library?
31
31
  installed=yes
@@ -8,7 +8,7 @@ css_supported=true
8
8
 
9
9
  Name: librsvg
10
10
  Description: library that renders svg files
11
- Version: 2.40.20
11
+ Version: 2.42.3
12
12
  Requires: glib-2.0 gio-2.0 gdk-pixbuf-2.0 cairo
13
13
  Requires.private:
14
14
  Libs: -L${libdir} -lrsvg-2 -lm
@@ -0,0 +1,266 @@
1
+ Compiling librsvg
2
+ =================
3
+
4
+ Librsvg uses a mostly normal [autotools] setup, but it has some
5
+ peculiarities due to librsvg's use of a Rust sub-library. The details
6
+ of how librsvg integrates Cargo and Rust into its autotools setup are
7
+ described in [this blog post][blog], although hopefully you will not
8
+ need to refer to it.
9
+
10
+ It is perfectly fine to [ask the maintainer][maintainer] if you have
11
+ questions about the Autotools setup; it's a tricky bit of machinery,
12
+ and we are glad to help.
13
+
14
+ There are generic compilation/installation instructions in the
15
+ [`INSTALL`][install] file, which comes from Autotools. The following
16
+ explains librsvg's peculiarities.
17
+
18
+ * [Installing dependencies for building](#installing-dependencies-for-building)
19
+ * [Basic compilation instructions](#basic-compilation-instructions)
20
+ * [Verbosity](#verbosity)
21
+ * [Debug or release builds](#debug-or-release-builds)
22
+ * [Cross-compilation](#cross-compilation)
23
+ * [Building with no network access](#building-with-no-network-access)
24
+
25
+ # Installing dependencies for building
26
+
27
+ To compile librsvg, you need the following packages installed. The
28
+ minimum version is listed here; you may use a newer version instead.
29
+
30
+ **Compilers:**
31
+
32
+ * a C compiler and `make` tool; we recommend GNU `make`.
33
+ * rust 1.21
34
+ * cargo
35
+
36
+ **Mandatory dependencies:**
37
+
38
+ * Cairo 1.15.4 with PNG support
39
+ * Freetype2 2.8.0
40
+ * Libcroco 0.6.1
41
+ * Gdk-pixbuf 2.20.0
42
+ * GIO 2.24.0
43
+ * GObject-Introspection 0.10.8
44
+ * Libxml2 2.9.0
45
+ * Pango 1.38.0
46
+
47
+ **Optional dependencies:**
48
+
49
+ * GTK+ 3.10.0 if you want the `rsvg-view-3` program
50
+
51
+ The following sections describe how to install these dependencies on
52
+ several systems.
53
+
54
+ ### Debian based systems
55
+
56
+ As of 2018/Feb/22, librsvg cannot be built in `debian stable` and
57
+ `ubuntu 16.04`, as they have packages that are too old.
58
+
59
+ **Build dependencies on Debian Testing:**
60
+
61
+ ```sh
62
+ apt-get install -y gcc make rustc cargo \
63
+ automake autoconf libtool gettext itstool \
64
+ libgdk-pixbuf2.0-dev libgirepository1.0-dev \
65
+ gtk-doc-tools git libgtk-3-dev \
66
+ libxml2-dev libcroco3-dev libcairo2-dev libpango1.0-dev
67
+ ```
68
+
69
+ **Build dependencies on Ubuntu 18.04 or newer:**
70
+
71
+ As of 2018/Feb/22 you will need to install `rustc` and `cargo` with
72
+ [rustup.rs](https://rustup.rs), as the `rustc` package from Ubuntu is
73
+ too old. Please follow the instructions there to install Rust and Cargo.
74
+
75
+ ```sh
76
+ apt-get install -y gcc make \
77
+ automake autoconf libtool gettext itstool \
78
+ libgdk-pixbuf2.0-dev libgirepository1.0-dev \
79
+ gtk-doc-tools git libgtk-3-dev \
80
+ libxml2-dev libcroco3-dev libcairo2-dev libpango1.0-dev
81
+ ```
82
+
83
+ ### Fedora based systems
84
+
85
+ ```sh
86
+ dnf install -y gcc rust rust-std-static cargo make \
87
+ automake autoconf libtool gettext itstool \
88
+ gdk-pixbuf2-devel gobject-introspection-devel \
89
+ gtk-doc git redhat-rpm-config gtk3-devel \
90
+ libxml2-devel libcroco-devel cairo-devel pango-devel
91
+ ```
92
+
93
+ ### openSUSE based systems
94
+
95
+ ```sh
96
+ zypper install -y gcc rust rust-std cargo make \
97
+ automake autoconf libtool gettext itstool git \
98
+ gtk-doc gobject-introspection-devel gtk3-devel \
99
+ libxml2-devel libcroco-devel cairo-devel \
100
+ pango-devel gdk-pixbuf-devel
101
+ ```
102
+
103
+ ### MacOS systems
104
+
105
+ Dependencies may be installed using [Homebrew](https://brew.sh) or another
106
+ package manager.
107
+
108
+ ```sh
109
+ brew install cairo gdk-pixbuf glib libcroco pango \
110
+ gobject-introspection rust
111
+
112
+ export PKG_CONFIG_PATH="`brew --prefix`/lib/pkgconfig:\
113
+ `brew --prefix libffi`/lib/pkgconfig:\
114
+ /usr/lib/pkgconfig"
115
+ export ARCHFLAGS="-arch x86_64"
116
+ ```
117
+
118
+ Note that `PKG_CONFIG_PATH` must be manually set to include Homebrew's libffi,
119
+ as the system libffi is too old but Homebrew does not install it in a public
120
+ location by default.
121
+
122
+ Currently, cairo 1.15.4 or later must also be installed manually, as the
123
+ Homebrew package is for the older stable release. This may require adding
124
+ it to `PKG_CONFIG_PATH` as well if you do not install it in `/usr/local`.
125
+
126
+ Setting `ARCHFLAGS` is required if gobject-introspection is using the system
127
+ Python provided by Apple, as on Homebrew.
128
+
129
+
130
+ # Basic compilation instructions
131
+
132
+ If you are compiling a tarball:
133
+
134
+ ```sh
135
+ ./configure
136
+ make
137
+ make install
138
+ ```
139
+
140
+ See the [`INSTALL`][install] file for details on options you can pass
141
+ to the `configure` script to select where to install the compiled
142
+ library.
143
+
144
+ If you are compiling from a git checkout:
145
+
146
+ ```sh
147
+ ./autogen.sh
148
+ make
149
+ make install
150
+ ```
151
+
152
+ # Verbosity
153
+
154
+ By default the compilation process is quiet, and it just tells you
155
+ which files it is compiling.
156
+
157
+ If you wish to see the full compilation command lines, use "`make V=1`"
158
+ instead of plain "`make`".
159
+
160
+ # Debug or release builds
161
+
162
+ Librsvg has code both in C and Rust, and each language has a different
163
+ way of specifying compilation options to select compiler
164
+ optimizations, or whether debug information should be included.
165
+
166
+ You should set the `CFLAGS` environment variable with compiler flags
167
+ that you want to pass to the C compiler.
168
+
169
+ ## Controlling debug or release mode for Rust
170
+
171
+ * With a `configure` option: `--enable-debug` or `--disable-debug`
172
+ * With an environment variable: `LIBRSVG_DEBUG=yes` or `LIBRSVG_DEBUG=no`
173
+
174
+ For the Rust part of librsvg, we have a flag that
175
+ you can pass at `configure` time. When enabled, the Rust
176
+ sub-library will have debugging information and no compiler
177
+ optimizations. *This flag is off by default:* if the flag is not
178
+ specified, the Rust sub-library will be built in release mode (no
179
+ debug information, full compiler optimizations).
180
+
181
+ The rationale is that people who already had scripts in place to build
182
+ binary packages for librsvg, generally from release tarballs, are
183
+ already using conventional machinery to specify C compiler options,
184
+ such as that in RPM specfiles or Debian source packages. However,
185
+ they may not contemplate Rust sub-libraries and they will certainly
186
+ not want to modify their existing packaging scripts too much.
187
+
188
+ So, by default, the Rust library builds in **release mode**, to make
189
+ life easier to binary distributions. Librsvg's build scripts will add
190
+ `--release` to the Cargo command line by default.
191
+
192
+ Developers can request a debug build of the Rust sub-library by
193
+ passing `--enable-debug` to the `configure` script, or by setting the
194
+ `LIBRSVG_DEBUG=yes` environment variable before calling `configure`.
195
+ This will omit the `--release` option from Cargo, so that it will
196
+ build the Rust sub-library in debug mode.
197
+
198
+ In case both the environment variable and the command-line option are
199
+ specified, the command-line option overrides the env var.
200
+
201
+ # Cross-compilation
202
+
203
+ If you need to cross-compile librsvg, specify the `--host=TRIPLE` to
204
+ the `configure` script as usual with Autotools. This will cause
205
+ librsvg's build scripts to automatically pass `--target=TRIPLE` to
206
+ `cargo`.
207
+
208
+ Note, however, that Rust may support different targets than the C
209
+ compiler on your system. Rust's supported targets can be found in the
210
+ [`rust/src/librustc_back/target`][rust-target-dir] in the Rust
211
+ compiler's source code.
212
+
213
+ You can check Jorge Aparicio's [guide on cross-compilation for
214
+ Rust][rust-cross] for more details.
215
+
216
+ ## Cross-compiling to a target not supported by Rust out of the box
217
+
218
+ When building with a target that is not supported out of the box by
219
+ Rust, you have to do this:
220
+
221
+ 1. Create a [target JSON definition file][target-json].
222
+
223
+ 2. Set the environment variable `RUST_TARGET_PATH` to its directory
224
+ for the `make` command.
225
+
226
+ Example:
227
+
228
+ ```sh
229
+ cd /my/target/definition
230
+ echo "JSON goes here" > MYMACHINE-VENDOR-OS.json
231
+ cd /source/tree/for/librsvg
232
+ ./configure --host=MYMACHINE-VENDOR-OS
233
+ make RUST_TARGET_PATH=/my/target/definition
234
+ ```
235
+
236
+ # Building with no network access
237
+
238
+ Automated build systems generally avoid network access so that they
239
+ can compile from known-good sources, instead of pulling random updates
240
+ from the net every time. However, normally Cargo likes to download
241
+ dependencies when it first compiles a Rust project.
242
+
243
+ We use [`cargo vendor`][cargo-vendor] to ship librsvg release tarballs
244
+ with the source code for Rust dependencies **embedded within the
245
+ tarball**. If you unpack a librsvg tarball, these sources will appear
246
+ in the `rust/vendor` subdirectory. If you build librsvg from a
247
+ tarball, instead of git, it should not need to access the network to
248
+ download extra sources at all.
249
+
250
+ Build systems can use [Cargo's source replacement
251
+ mechanism][cargo-source-replacement] to override the location of the
252
+ source code for the Rust dependencies, for example, in order to patch
253
+ one of the Rust crates that librsvg uses internally.
254
+
255
+ The source replacement information is in `rust/.cargo/config` in the
256
+ unpacked tarball. Your build system can patch this file as needed.
257
+
258
+ [autotools]: https://autotools.io/index.html
259
+ [blog]: https://people.gnome.org/~federico/blog/librsvg-build-infrastructure.html
260
+ [maintainer]: README.md#maintainers
261
+ [install]: INSTALL
262
+ [rust-target-dir]: https://github.com/rust-lang/rust/tree/master/src/librustc_back/target
263
+ [cargo-vendor]: https://crates.io/crates/cargo-vendor
264
+ [cargo-source-replacement]: http://doc.crates.io/source-replacement.html
265
+ [rust-cross]: https://github.com/japaric/rust-cross
266
+ [target-json]: https://github.com/japaric/rust-cross#target-specification-files
@@ -0,0 +1,152 @@
1
+ Contributing to librsvg
2
+ =======================
3
+
4
+ Thank you for looking in this file! There are different ways of
5
+ contributing to librsvg, and we appreciate all of them.
6
+
7
+ * [Source repository](#source-code)
8
+ * [Reporting bugs](#reporting-bugs)
9
+ * [Feature requests](#feature-requests)
10
+ * [Merge requests](#merge-requests)
11
+
12
+ There is a **code of conduct** for contributors to librsvg; please see the
13
+ file [`code-of-conduct.md`][coc].
14
+
15
+ ## Source repository
16
+
17
+ Librsvg's main source repository is at gitlab.gnome.org. You can view
18
+ the web interface here:
19
+
20
+ https://gitlab.gnome.org/GNOME/librsvg
21
+
22
+ Development happens in the master branch. There are also branches for
23
+ stable releases.
24
+
25
+ Alternatively, you can use the mirror at Github:
26
+
27
+ https://github.com/GNOME/librsvg
28
+
29
+ Note that we don't do bug tracking in the Github mirror; see the next
30
+ section.
31
+
32
+ If you need to publish a branch, feel free to do it at any
33
+ publically-accessible Git hosting service, although gitlab.gnome.org
34
+ makes things easier for the maintainers of librsvg.
35
+
36
+ ## Reporting bugs
37
+
38
+ Please report bugs at https://gitlab.gnome.org/GNOME/librsvg/issues
39
+
40
+ If you want to report a rendering bug, or a missing SVG feature,
41
+ please provide an example SVG file as an attachment to your bug
42
+ report. It really helps if you can minimize the SVG to only the
43
+ elements required to reproduce the bug or see the missing feature, but
44
+ it is not absolutely required. **Please be careful** of publishing
45
+ SVG images that you don't want other people to see, or images whose
46
+ copyright does not allow redistribution; the bug tracker is a public
47
+ resource and attachments are visible to everyone.
48
+
49
+ You can also [browse the existing bugs][bugs-browse].
50
+
51
+ ## Feature requests
52
+
53
+ Librsvg aims to be a small and relatively simple SVG rendering
54
+ library. Currently we do not plan to support scripting, animation, or
55
+ interactive features like mouse events on SVG elements.
56
+
57
+ However, we *do* aim go provide good support for SVG's graphical
58
+ features. Please see the "[reporting bugs](#reporting-bugs)" section for
59
+ information about our bug tracking system; feature requests should be
60
+ directed there.
61
+
62
+ It is especially helpful if you file bug for a feature request along
63
+ with a sample SVG file.
64
+
65
+ ## Merge requests
66
+
67
+ ### Creating a merge request
68
+
69
+ You may create a forked version of librsvg in [GNOME's Gitlab
70
+ instance][gitlab], or any other publically-accesible Git hosting
71
+ service. You can register an account there, or log in with your
72
+ account from other OAuth services.
73
+
74
+ Note that the maintainers of librsvg only get notified about merge
75
+ requests (or pull requests) if your fork is in
76
+ [gitlab.gnome.org][gitlab].
77
+
78
+ For technical reasons, the maintainers of librsvg do not get
79
+ automatically notified if you submit a pull request through the GNOME
80
+ mirror in Github. [Please contact the maintainer][maintainer] directly if you
81
+ have a pull request there or a branch that you would like to
82
+ contribute.
83
+
84
+ ### Test suite
85
+
86
+ Please make sure that the test suite passes with the changes in your
87
+ branch. The easiest way to run all the tests is to go to librsvg's
88
+ toplevel directory and run `make check`. This will run both the small
89
+ unit tests and the black box tests in the `librsvg/tests` directory.
90
+
91
+ If you need to add new tests (you should, for new features, or for
92
+ things that we weren't testing!), or for additional information on how
93
+ the test suite works, please see the file
94
+ [`tests/README.md`][tests-readme].
95
+
96
+ ### Working on the source
97
+
98
+ Librvg uses an autotools setup, which is described in detail [in this
99
+ blog post][blog].
100
+
101
+ If you need to **add a new source file**, you need to do it in the
102
+ toplevel [`Makefile.am`][toplevel-makefile]. *Note that this is for
103
+ both C and Rust sources*, since `make(1)` needs to know when a Rust
104
+ file changed so it can call `cargo` as appropriate.
105
+
106
+ It is perfectly fine to [ask the maintainer][maintainer] if you have
107
+ questions about the Autotools setup; it's a tricky bit of machinery,
108
+ and we are glad to help.
109
+
110
+ ### Testing changes
111
+
112
+ The most direct way to test a change is to have an example SVG file
113
+ that exercises the code you want to test. Then you can rebuild
114
+ librsvg, and run this:
115
+
116
+ ```
117
+ cd /src/librsvg
118
+ libtool --mode=execute ./rsvg-convert -o foo.png foo.svg
119
+ ```
120
+
121
+ Then you can view the resulting `foo.png` image. Alternatively, you
122
+ can use `./rsvg-view-3` for a quick-and-dirty SVG viewer.
123
+
124
+ **Please update the test suite** with a suitable example file once you
125
+ have things working (or before even writing code, if you like
126
+ test-driven development), so we can avoid regressions later. The test
127
+ suite is documented in [`tests/README.md`][tests-readme].
128
+
129
+ ### Testing performance-related changes
130
+
131
+ You can use the [rsvg-bench] tool to benchmark librsvg. It lets you
132
+ run a benchmarking program **on an already-installed librsvg
133
+ library**. For example, you can ask rsvg-bench to render one or more
134
+ SVGs hundreds of times in a row, so you can take accurate timings or
135
+ run a sampling profiler and get enough samples.
136
+
137
+ **Why is rsvg-bench not integrated in librsvg's sources?** Because
138
+ rsvg-bench depends on the [rsvg-rs] Rust bindings, and these are
139
+ shipped outside of librsvg. This requires you to first install
140
+ librsvg, and then compile rsvg-bench. We aim to make this easier in
141
+ the future. Of course all help is appreciated!
142
+
143
+ [coc]: code-of-conduct.md
144
+ [gitlab]: https://gitlab.gnome.org/GNOME/librsvg
145
+ [bugs-browse]: https://gitlab.gnome.org/GNOME/librsvg/issues
146
+ [maintainer]: README.md#maintainers
147
+ [tests-readme]: tests/README.md
148
+ [blog]: https://people.gnome.org/~federico/blog/librsvg-build-infrastructure.html
149
+ [toplevel-makefile]: Makefile.am
150
+ [tests-readme]: tests/README.md
151
+ [rsvg-bench]: https://gitlab.gnome.org/federico/rsvg-bench
152
+ [rsvg-rs]: https://github.com/selaux/rsvg-rs