diff mbox

add new library: libpugixml

Message ID 20160904210846.1332-1-theo.debrouwere@skynet.be
State Changes Requested
Headers show

Commit Message

Theo Debrouwere Sept. 4, 2016, 9:08 p.m. UTC
From: Theo Debrouwere <t.debrouwere@televic.com>

    pugixml is a light-weight C++ XML processing library. It features:
    * DOM-like interface with rich traversal/modification capabilities
    * Extremely fast non-validating XML parser which constructs the DOM tree from an XML file/buffer
    * XPath 1.0 implementation for complex data-driven tree queries
    * Full Unicode support with Unicode interface variants and automatic encoding conversions

    Homepage: http://pugixml.org/
    Repository: https://github.com/zeux/pugixml

Signed-off-by: Theo Debrouwere <t.debrouwere@televic.com>
---
 package/Config.in                  |  1 +
 package/libpugixml/Config.in       | 15 +++++++++++++++
 package/libpugixml/libpugixml.hash |  2 ++
 package/libpugixml/libpugixml.mk   | 19 +++++++++++++++++++
 4 files changed, 37 insertions(+)
 create mode 100644 package/libpugixml/Config.in
 create mode 100644 package/libpugixml/libpugixml.hash
 create mode 100644 package/libpugixml/libpugixml.mk

Comments

Samuel Martin Sept. 5, 2016, 8:47 p.m. UTC | #1
Hi Theo, all,

Thanks for this contribution. Hereafter few comments inlined.

The subject should be: "libpugixml: new package"

On Sun, Sep 4, 2016 at 11:08 PM, Theo Debrouwere
<theo.debrouwere@skynet.be> wrote:
> From: Theo Debrouwere <t.debrouwere@televic.com>
>
>     pugixml is a light-weight C++ XML processing library. It features:
>     * DOM-like interface with rich traversal/modification capabilities
>     * Extremely fast non-validating XML parser which constructs the DOM tree from an XML file/buffer
>     * XPath 1.0 implementation for complex data-driven tree queries
>     * Full Unicode support with Unicode interface variants and automatic encoding conversions
>
>     Homepage: http://pugixml.org/
>     Repository: https://github.com/zeux/pugixml
>
> Signed-off-by: Theo Debrouwere <t.debrouwere@televic.com>
> ---
>  package/Config.in                  |  1 +
>  package/libpugixml/Config.in       | 15 +++++++++++++++
>  package/libpugixml/libpugixml.hash |  2 ++
>  package/libpugixml/libpugixml.mk   | 19 +++++++++++++++++++
>  4 files changed, 37 insertions(+)
>  create mode 100644 package/libpugixml/Config.in
>  create mode 100644 package/libpugixml/libpugixml.hash
>  create mode 100644 package/libpugixml/libpugixml.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 1e51a45..d0198ce 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1092,6 +1092,7 @@ menu "JSON/XML"
>         source "package/libxslt/Config.in"
>         source "package/libyaml/Config.in"
>         source "package/mxml/Config.in"
> +       source "package/libpugixml/Config.in"

Keep package list alphabetically sorted please.

>         source "package/rapidjson/Config.in"
>         source "package/rapidxml/Config.in"
>         source "package/raptor/Config.in"
> diff --git a/package/libpugixml/Config.in b/package/libpugixml/Config.in
> new file mode 100644
> index 0000000..17c6eec
> --- /dev/null
> +++ b/package/libpugixml/Config.in
> @@ -0,0 +1,15 @@
> +config BR2_PACKAGE_LIBPUGIXML
> +       bool "libpugixml"

Since it is a C++ project, it should depend on BR2_INSTALL_LIBSTDCPP, see [1].

> +       help
> +         Light-weight, simple and fast XML parser for C++ with XPath support
> +
> +         Features:
> +         * DOM-like interface with rich traversal/modification capabilities
> +         * Extremely fast non-validating XML parser which constructs the DOM tree
> +           from an XML file/buffer
> +         * XPath 1.0 implementation for complex data-driven tree queries
> +         * Full Unicode support with Unicode interface variants and automatic
> +           encoding conversions
> +
> +         http://pugixml.org/
> +         https://github.com/zeux/pugixml
> diff --git a/package/libpugixml/libpugixml.hash b/package/libpugixml/libpugixml.hash
> new file mode 100644
> index 0000000..9007f7c
> --- /dev/null
> +++ b/package/libpugixml/libpugixml.hash
> @@ -0,0 +1,2 @@
> +# Locally computed:
> +sha256  fbe10d46f61d769f7d92a296102e4e2bd3ee16130f11c5b10a1aae590ea1f5ca  pugixml-1.7.tar.gz
> diff --git a/package/libpugixml/libpugixml.mk b/package/libpugixml/libpugixml.mk
> new file mode 100644
> index 0000000..3c9987e
> --- /dev/null
> +++ b/package/libpugixml/libpugixml.mk
> @@ -0,0 +1,19 @@
> +################################################################################
> +#
> +# libpugixml
> +#
> +################################################################################
> +
> +LIBPUGIXML_VERSION = 1.7
> +LIBPUGIXML_SOURCE = pugixml-$(LIBPUGIXML_VERSION).tar.gz
> +LIBPUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(LIBPUGIXML_VERSION)
> +LIBPUGIXML_LICENSE = MIT
> +LIBPUGIXML_LICENSE_FILES = docs/manual.html
> +LIBPUGIXML_INSTALL_STAGING = YES
> +
> +LIBPUGIXML_SUBDIR = scripts
> +
> +# build libpugixml as a shared library
> +LIBPUGIXML_CONF_OPTS = -DBUILD_SHARED_LIBS=ON

Please do not do that, this will break static only build.
This flag is automatically driven by the cmake infrastructure
depending on kind of build (shared lib only, shared + static lib or
static lib only), check the cmake infrastructure reference section in
the manual [2].
Note that, in case of shared + static lib build, if the build-system
supports building only one kind of libs, shared libs is prefered (see
[3]).

If you really want to forbid the static build of the library, then
consider using "depends on !BR2_STATIC_LIBS", see the package section
in the manual [1].

> +
> +$(eval $(cmake-package))
> --
> 2.9.3
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

[1] http://nightly.buildroot.org/manual.html#dependencies-target-toolchain-options
[2] http://nightly.buildroot.org/manual.html#cmake-package-reference
[3] https://github.com/buildroot/buildroot/blob/master/package/pkg-cmake.mk#L100

Regards,
Thomas Petazzoni Sept. 5, 2016, 9:30 p.m. UTC | #2
Hello,

Thanks for your contribution!

This review is in addition to what Samuel Martin already said on the
same patch.

On Sun,  4 Sep 2016 23:08:46 +0200, Theo Debrouwere wrote:

> +LIBPUGIXML_VERSION = 1.7
> +LIBPUGIXML_SOURCE = pugixml-$(LIBPUGIXML_VERSION).tar.gz

Please use pugixml for the package name, since it's the upstream name.
Then you can drop this line as the value will be the default.

> +LIBPUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(LIBPUGIXML_VERSION)
> +LIBPUGIXML_LICENSE = MIT
> +LIBPUGIXML_LICENSE_FILES = docs/manual.html

Using an HTML file here is not really appropriate, as we concatenate
all license files into a big text file, so it's not really going to
look nice :/

The readme.txt is good enough as a license file.

> +LIBPUGIXML_INSTALL_STAGING = YES
> +
> +LIBPUGIXML_SUBDIR = scripts

Hum, why?

> +
> +# build libpugixml as a shared library
> +LIBPUGIXML_CONF_OPTS = -DBUILD_SHARED_LIBS=ON
> +
> +$(eval $(cmake-package))

Thomas
Arnout Vandecappelle Sept. 5, 2016, 10:15 p.m. UTC | #3
Hi Theo,

 In addition to what the other two have commented...

On 04-09-16 23:08, Theo Debrouwere wrote:
> From: Theo Debrouwere <t.debrouwere@televic.com>
> 
>     pugixml is a light-weight C++ XML processing library. It features:

 Since upstream calls it pugixml (without lib- prefix), the buildroot package
should be named the same.

>     * DOM-like interface with rich traversal/modification capabilities
>     * Extremely fast non-validating XML parser which constructs the DOM tree from an XML file/buffer
>     * XPath 1.0 implementation for complex data-driven tree queries
>     * Full Unicode support with Unicode interface variants and automatic encoding conversions
> 
>     Homepage: http://pugixml.org/
>     Repository: https://github.com/zeux/pugixml
> 
> Signed-off-by: Theo Debrouwere <t.debrouwere@televic.com>
> ---
>  package/Config.in                  |  1 +
>  package/libpugixml/Config.in       | 15 +++++++++++++++
>  package/libpugixml/libpugixml.hash |  2 ++
>  package/libpugixml/libpugixml.mk   | 19 +++++++++++++++++++
>  4 files changed, 37 insertions(+)
>  create mode 100644 package/libpugixml/Config.in
>  create mode 100644 package/libpugixml/libpugixml.hash
>  create mode 100644 package/libpugixml/libpugixml.mk
> 
> diff --git a/package/Config.in b/package/Config.in
> index 1e51a45..d0198ce 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1092,6 +1092,7 @@ menu "JSON/XML"
>  	source "package/libxslt/Config.in"
>  	source "package/libyaml/Config.in"
>  	source "package/mxml/Config.in"
> +	source "package/libpugixml/Config.in"

 ... and then it's in the right place here :-)

>  	source "package/rapidjson/Config.in"
>  	source "package/rapidxml/Config.in"
>  	source "package/raptor/Config.in"
> diff --git a/package/libpugixml/Config.in b/package/libpugixml/Config.in
> new file mode 100644
> index 0000000..17c6eec
> --- /dev/null
> +++ b/package/libpugixml/Config.in
> @@ -0,0 +1,15 @@
> +config BR2_PACKAGE_LIBPUGIXML
> +	bool "libpugixml"
> +	help
> +	  Light-weight, simple and fast XML parser for C++ with XPath support
> +
> +	  Features:
> +	  * DOM-like interface with rich traversal/modification capabilities
> +	  * Extremely fast non-validating XML parser which constructs the DOM tree
> +	    from an XML file/buffer
> +	  * XPath 1.0 implementation for complex data-driven tree queries
> +	  * Full Unicode support with Unicode interface variants and automatic
> +	    encoding conversions
> +
> +	  http://pugixml.org/
> +	  https://github.com/zeux/pugixml
> diff --git a/package/libpugixml/libpugixml.hash b/package/libpugixml/libpugixml.hash
> new file mode 100644
> index 0000000..9007f7c
> --- /dev/null
> +++ b/package/libpugixml/libpugixml.hash
> @@ -0,0 +1,2 @@
> +# Locally computed:
> +sha256  fbe10d46f61d769f7d92a296102e4e2bd3ee16130f11c5b10a1aae590ea1f5ca  pugixml-1.7.tar.gz
> diff --git a/package/libpugixml/libpugixml.mk b/package/libpugixml/libpugixml.mk
> new file mode 100644
> index 0000000..3c9987e
> --- /dev/null
> +++ b/package/libpugixml/libpugixml.mk
> @@ -0,0 +1,19 @@
> +################################################################################
> +#
> +# libpugixml
> +#
> +################################################################################
> +
> +LIBPUGIXML_VERSION = 1.7
> +LIBPUGIXML_SOURCE = pugixml-$(LIBPUGIXML_VERSION).tar.gz

 If the package is called pugixml, this line isn't needed.


 Regards,
 Arnout


> +LIBPUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(LIBPUGIXML_VERSION)
> +LIBPUGIXML_LICENSE = MIT
> +LIBPUGIXML_LICENSE_FILES = docs/manual.html
> +LIBPUGIXML_INSTALL_STAGING = YES
> +
> +LIBPUGIXML_SUBDIR = scripts
> +
> +# build libpugixml as a shared library
> +LIBPUGIXML_CONF_OPTS = -DBUILD_SHARED_LIBS=ON
> +
> +$(eval $(cmake-package))
>
Theo Debrouwere Sept. 6, 2016, 12:07 p.m. UTC | #4
Hi,

Thanks for the pointers.
I'm cleaning up the patches & I'll resubmit them.

One question though:

> The readme.txt is good enough as a license file.
> 
> > +LIBPUGIXML_INSTALL_STAGING = YES
> > +
> > +LIBPUGIXML_SUBDIR = scripts
> 
> Hum, why?

Is this about the SUBDIR option?

The CMakeLists.txt file is in a subfolder called scripts,
so, it seems that I need this? Is there another option/setting?

Or should I add a comment about it?

I'm not sure what you are asking?

Theo
Theo Debrouwere Sept. 7, 2016, 3:21 p.m. UTC | #5
I fixed all the mentioned issues, except:
> +LIBPUGIXML_SUBDIR = scripts

In this release, CMakelists.txt is located in a subfolder.

This has been fixed in the git tree, but that hasn't been released yet.
Theo Debrouwere Sept. 7, 2016, 3:37 p.m. UTC | #6
I've fixed the remarks, except:

LIBPUGIXML_SUBDIR = scripts

The location of the current release is inside a subfolder.
This has been fixed in the git tree, but isn't present in the release itself.

Theo
Thomas Petazzoni Sept. 9, 2016, 12:14 p.m. UTC | #7
Hello,

On Tue, 6 Sep 2016 14:07:39 +0200, Theo Debrouwere wrote:

> > The readme.txt is good enough as a license file.
> >   
> > > +LIBPUGIXML_INSTALL_STAGING = YES
> > > +
> > > +LIBPUGIXML_SUBDIR = scripts  
> > 
> > Hum, why?  
> 
> Is this about the SUBDIR option?
> 
> The CMakeLists.txt file is in a subfolder called scripts,
> so, it seems that I need this? Is there another option/setting?
> 
> Or should I add a comment about it?
> 
> I'm not sure what you are asking?

What confused me is that in the latest version of pugixml (i.e master
branch), the CMakeLists.txt is directly at the root of the project:

  https://github.com/zeux/pugixml

However, since you are packaging the 1.7 version, which is a bit older
than the master branch, the CMakeLists.txt is indeed inside the
scripts/ subdirectory:

  https://github.com/zeux/pugixml/tree/v1.7

So, it makes complete sense to use the SUBDIR option in this case. It's
just that I was confused when looking at the Github repository, as I
was looking at the master branch.

Thanks for your contribution!

Thomas
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 1e51a45..d0198ce 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1092,6 +1092,7 @@  menu "JSON/XML"
 	source "package/libxslt/Config.in"
 	source "package/libyaml/Config.in"
 	source "package/mxml/Config.in"
+	source "package/libpugixml/Config.in"
 	source "package/rapidjson/Config.in"
 	source "package/rapidxml/Config.in"
 	source "package/raptor/Config.in"
diff --git a/package/libpugixml/Config.in b/package/libpugixml/Config.in
new file mode 100644
index 0000000..17c6eec
--- /dev/null
+++ b/package/libpugixml/Config.in
@@ -0,0 +1,15 @@ 
+config BR2_PACKAGE_LIBPUGIXML
+	bool "libpugixml"
+	help
+	  Light-weight, simple and fast XML parser for C++ with XPath support
+
+	  Features:
+	  * DOM-like interface with rich traversal/modification capabilities
+	  * Extremely fast non-validating XML parser which constructs the DOM tree
+	    from an XML file/buffer
+	  * XPath 1.0 implementation for complex data-driven tree queries
+	  * Full Unicode support with Unicode interface variants and automatic
+	    encoding conversions
+
+	  http://pugixml.org/
+	  https://github.com/zeux/pugixml
diff --git a/package/libpugixml/libpugixml.hash b/package/libpugixml/libpugixml.hash
new file mode 100644
index 0000000..9007f7c
--- /dev/null
+++ b/package/libpugixml/libpugixml.hash
@@ -0,0 +1,2 @@ 
+# Locally computed:
+sha256  fbe10d46f61d769f7d92a296102e4e2bd3ee16130f11c5b10a1aae590ea1f5ca  pugixml-1.7.tar.gz
diff --git a/package/libpugixml/libpugixml.mk b/package/libpugixml/libpugixml.mk
new file mode 100644
index 0000000..3c9987e
--- /dev/null
+++ b/package/libpugixml/libpugixml.mk
@@ -0,0 +1,19 @@ 
+################################################################################
+#
+# libpugixml
+#
+################################################################################
+
+LIBPUGIXML_VERSION = 1.7
+LIBPUGIXML_SOURCE = pugixml-$(LIBPUGIXML_VERSION).tar.gz
+LIBPUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(LIBPUGIXML_VERSION)
+LIBPUGIXML_LICENSE = MIT
+LIBPUGIXML_LICENSE_FILES = docs/manual.html
+LIBPUGIXML_INSTALL_STAGING = YES
+
+LIBPUGIXML_SUBDIR = scripts
+
+# build libpugixml as a shared library
+LIBPUGIXML_CONF_OPTS = -DBUILD_SHARED_LIBS=ON
+
+$(eval $(cmake-package))