diff mbox

[v2] package/libsvg: new package

Message ID 1372593363-10994-1-git-send-email-c.schoenert@gmail.com
State Superseded
Headers show

Commit Message

Carsten Schoenert June 30, 2013, 11:56 a.m. UTC
From: Carsten Schoenert <c.schoenert@gmail.com>

Libsvg provides a library for parsing SVG content in files or buffers.
Libsvg does not do any rendering, but instead provides a function-based
interface that can be used by various rendering engines.

Signed-off-by: Carsten Schoenert <c.schoenert@gmail.com>
---
Changes v2:
	- reworking the whole patch after suggestions from Peter and Thomas
	- adding patch to preventing compiler errors while linking
	  against libexpat

 package/Config.in                                  |    1 +
 package/libsvg/Config.in                           |   23 ++++++++++++++
 .../libsvg-fix-expat-static-declaration.patch      |   33 ++++++++++++++++++++
 package/libsvg/libsvg.mk                           |   23 ++++++++++++++
 4 files changed, 80 insertions(+)
 create mode 100644 package/libsvg/Config.in
 create mode 100644 package/libsvg/libsvg-fix-expat-static-declaration.patch
 create mode 100644 package/libsvg/libsvg.mk

Comments

Thomas Petazzoni June 30, 2013, 8:25 p.m. UTC | #1
Dear Carsten Schoenert,

On Sun, 30 Jun 2013 13:56:03 +0200, Carsten Schoenert wrote:

> +config BR2_PACKAGE_LIBSVG
> +	bool "libsvg"
> +	select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_LIBSVG_EXPAT

I don't think we want the BR2_PACKAGE_LIBSVG_EXPAT option. Just make
this:

	select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT

> +	help
> +	  Libsvg provides a parser for SVG content in files or buffers.
> +	  Libsvg does not do any rendering, but instead provides a
> +	  function-based interface that can be used by various rendering
> +	  engines.
> +
> +	  http://cairographics.org/snapshots/
> +
> +if BR2_PACKAGE_LIBSVG
> +
> +config BR2_PACKAGE_LIBSVG_EXPAT
> +    bool "use expat XML parser library"
> +	select BR2_PACKAGE_EXPAT
> +	default y
> +	help
> +	  Libsvg needs a XML parsing library!
> +	  Select expat if you want to use the Expat XML Parser library,
> +	  otherwhise the libxml2 library will be used.

Remove this option.


> +LIBSVG_VERSION         = 0.1.4
> +LIBSVG_SITE            = http://cairographics.org/snapshots/
> +LIBSVG_DEPENDENCIES    = host-pkgconf libpng libjpeg
> +LIBSVG_INSTALL_STAGING = YES
> +LIBSVG_LICENSE         = LGPLv2+
> +LIBSVG_LICENSE_FILES   = COPYING
> +
> +# libsvg needs at last a XML parser
> +ifeq ($(BR2_PACKAGE_LIBSVG_EXPAT),y)

ifeq ($(BR2_PACKAGE_EXPAT),y)

> +LIBSVG_CONF_OPT += --with-expat
> +LIBSVG_DEPENDENCIES += expat
> +else ifeq ($(BR2_PACKAGE_LIBXML2),y)
> +LIBSVG_CONF_OPT += --with-libxml2
> +LIBSVG_DEPENDENCIES += libxml2
> +endif
> +
> +$(eval $(autotools-package))

Thomas
Peter Korsgaard July 1, 2013, 7:56 a.m. UTC | #2
>>>>> "Carsten" == Carsten Schoenert <c.schoenert@gmail.com> writes:

 Carsten> From: Carsten Schoenert <c.schoenert@gmail.com>
 Carsten> Libsvg provides a library for parsing SVG content in files or buffers.
 Carsten> Libsvg does not do any rendering, but instead provides a function-based
 Carsten> interface that can be used by various rendering engines.

 Carsten> +++ b/package/libsvg/Config.in
 Carsten> @@ -0,0 +1,23 @@
 Carsten> +config BR2_PACKAGE_LIBSVG
 Carsten> +	bool "libsvg"
 Carsten> +	select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_LIBSVG_EXPAT
 Carsten> +	help
 Carsten> +	  Libsvg provides a parser for SVG content in files or buffers.
 Carsten> +	  Libsvg does not do any rendering, but instead provides a
 Carsten> +	  function-based interface that can be used by various rendering
 Carsten> +	  engines.
 Carsten> +
 Carsten> +	  http://cairographics.org/snapshots/
 Carsten> +
 Carsten> +if BR2_PACKAGE_LIBSVG
 Carsten> +
 Carsten> +config BR2_PACKAGE_LIBSVG_EXPAT
 Carsten> +    bool "use expat XML parser library"
 Carsten> +	select BR2_PACKAGE_EXPAT
 Carsten> +	default y
 Carsten> +	help
 Carsten> +	  Libsvg needs a XML parsing library!
 Carsten> +	  Select expat if you want to use the Expat XML Parser library,
 Carsten> +	  otherwhise the libxml2 library will be used.
 Carsten> +
 Carsten> +endif # BR2_PACKAGE_LIBSVG

My idea was to simply automatically use the expat backend if
BR2_PACKAGE_EXPAT is enabled, and not have an explicit option for it, so
you can drop this suboption.
 Carsten> +++ b/package/libsvg/libsvg.mk
 Carsten> @@ -0,0 +1,23 @@
 Carsten> +################################################################################
 Carsten> +#
 Carsten> +# libsvg
 Carsten> +#
 Carsten> +################################################################################
 Carsten> +
 Carsten> +LIBSVG_VERSION         = 0.1.4
 Carsten> +LIBSVG_SITE            = http://cairographics.org/snapshots/
 Carsten> +LIBSVG_DEPENDENCIES    = host-pkgconf libpng libjpeg

Ohh? You didn't have libpng/libjpeg as dependencies in v1? Are they
needed? If so, you need to select them in Config.in as well.

 Carsten> +LIBSVG_INSTALL_STAGING = YES
 Carsten> +LIBSVG_LICENSE         = LGPLv2+
 Carsten> +LIBSVG_LICENSE_FILES   = COPYING
 Carsten> +
 Carsten> +# libsvg needs at last a XML parser
 Carsten> +ifeq ($(BR2_PACKAGE_LIBSVG_EXPAT),y)

This then becomes:

ifeq ($(BR2_PACKAGE_EXPAT),y)

 Carsten> +LIBSVG_CONF_OPT += --with-expat
 Carsten> +LIBSVG_DEPENDENCIES += expat
 Carsten> +else ifeq ($(BR2_PACKAGE_LIBXML2),y)
 Carsten> +LIBSVG_CONF_OPT += --with-libxml2
 Carsten> +LIBSVG_DEPENDENCIES += libxml2
 Carsten> +endif
 Carsten> +
 Carsten> +$(eval $(autotools-package))
 Carsten> -- 
 Carsten> 1.7.10.4
Carsten Schoenert July 1, 2013, 5:04 p.m. UTC | #3
Hello Peter and Thomas,

Am 01.07.2013 09:56, schrieb Peter Korsgaard:
> 
> My idea was to simply automatically use the expat backend if
> BR2_PACKAGE_EXPAT is enabled, and not have an explicit option for it, so
> you can drop this suboption.

My intention was to give the user the choice if he want to use expat
regularly on the system but use libxml2 for building the libsvg package.
But in the end this makes not really sense and the proposal of you both
is of course a little bit more simplify. Sometime I'm thinking to
"complicated".

>  Carsten> +LIBSVG_DEPENDENCIES    = host-pkgconf libpng libjpeg
> 
> Ohh? You didn't have libpng/libjpeg as dependencies in v1?

Yes, in v1 there wasn't this dependencies. As I must see the
configure.in lacks the need for both packages. But while testing after a
cleanup of the build environment I saw  build errors because of missed
header png.h and jpeglib.h, jerror.h.

> Are they
> needed? If so, you need to select them in Config.in as well.

Will set the packages in the Config.in and rework the patch again.

Thanks for patience with me!

Regards
Carsten
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index ebeabeb..7f5714d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -461,6 +461,7 @@  source "package/libpng/Config.in"
 source "package/libqrencode/Config.in"
 source "package/libraw/Config.in"
 source "package/librsvg/Config.in"
+source "package/libsvg/Config.in"
 source "package/libsvgtiny/Config.in"
 source "package/libungif/Config.in"
 source "package/opencv/Config.in"
diff --git a/package/libsvg/Config.in b/package/libsvg/Config.in
new file mode 100644
index 0000000..b25a83d
--- /dev/null
+++ b/package/libsvg/Config.in
@@ -0,0 +1,23 @@ 
+config BR2_PACKAGE_LIBSVG
+	bool "libsvg"
+	select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_LIBSVG_EXPAT
+	help
+	  Libsvg provides a parser for SVG content in files or buffers.
+	  Libsvg does not do any rendering, but instead provides a
+	  function-based interface that can be used by various rendering
+	  engines.
+
+	  http://cairographics.org/snapshots/
+
+if BR2_PACKAGE_LIBSVG
+
+config BR2_PACKAGE_LIBSVG_EXPAT
+    bool "use expat XML parser library"
+	select BR2_PACKAGE_EXPAT
+	default y
+	help
+	  Libsvg needs a XML parsing library!
+	  Select expat if you want to use the Expat XML Parser library,
+	  otherwhise the libxml2 library will be used.
+
+endif # BR2_PACKAGE_LIBSVG
diff --git a/package/libsvg/libsvg-fix-expat-static-declaration.patch b/package/libsvg/libsvg-fix-expat-static-declaration.patch
new file mode 100644
index 0000000..1900f79
--- /dev/null
+++ b/package/libsvg/libsvg-fix-expat-static-declaration.patch
@@ -0,0 +1,33 @@ 
+Newer expat versions use different declarations of the following functions:
+
+static void _svg_parser_sax_start_element ();
+static void _svg_parser_sax_end_element ();
+static void _svg_parser_sax_characters ();
+
+We need to patch the libsvg source to not follow into a build error like
+   "static declaration of 'foo' follows non-static declaration"
+and use the functions from the expat library instead from the libsvg source.
+
+Patch based on
+http://oe-lite.org/redmine/projects/xorg/repository/revisions/c4df7951e846e1be718f37f2455696a1d0861f3d/entry/recipes/cairo/libsvg-0.1.4/gcc4_and_expat.patch
+
+Signed-off-by: Carsten Schoenert <c.schoenert@gmail.com>
+
+diff -bur libsvg-0.1.4~orig/src/svg_parser_expat.c libsvg-0.1.4/src/svg_parser_expat.c
+--- libsvg-0.1.4~orig/src/svg_parser_expat.c	2005-02-14 11:26:26.000000000 -0600
++++ libsvg-0.1.4/src/svg_parser_expat.c	2006-02-10 21:58:20.000000000 -0600
+@@ -30,6 +30,7 @@
+ #include "svgint.h"
+ #include "svg_hash.h"
+ 
++#ifndef LIBSVG_EXPAT
+ static void
+ _svg_parser_sax_start_element (void		*closure,
+ 			       const XML_Char	*name,
+@@ -43,6 +44,7 @@
+ _svg_parser_sax_characters (void		*closure,
+ 			    const XML_Char	*ch,
+ 			    int			len);
++#endif
+ 
+ static void
+ _svg_parser_sax_warning (void		*closure,
diff --git a/package/libsvg/libsvg.mk b/package/libsvg/libsvg.mk
new file mode 100644
index 0000000..d08c0b4
--- /dev/null
+++ b/package/libsvg/libsvg.mk
@@ -0,0 +1,23 @@ 
+################################################################################
+#
+# libsvg
+#
+################################################################################
+
+LIBSVG_VERSION         = 0.1.4
+LIBSVG_SITE            = http://cairographics.org/snapshots/
+LIBSVG_DEPENDENCIES    = host-pkgconf libpng libjpeg
+LIBSVG_INSTALL_STAGING = YES
+LIBSVG_LICENSE         = LGPLv2+
+LIBSVG_LICENSE_FILES   = COPYING
+
+# libsvg needs at last a XML parser
+ifeq ($(BR2_PACKAGE_LIBSVG_EXPAT),y)
+LIBSVG_CONF_OPT += --with-expat
+LIBSVG_DEPENDENCIES += expat
+else ifeq ($(BR2_PACKAGE_LIBXML2),y)
+LIBSVG_CONF_OPT += --with-libxml2
+LIBSVG_DEPENDENCIES += libxml2
+endif
+
+$(eval $(autotools-package))