Skip to contentSkip to conversation

python-libconfig: new package

PATCH New Johan Derycke 3 participants 5 messages Mar 4, 2014 – Mar 5, 2014

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/2 python-libconfig: new package

Python bindings to the C++ library libconfig
https://github.com/cnangel/python-libconfig

---
Changes v2 -> v3:
-Avoid line-wrap using "git send-email"
Changes v1 -> v2:
-Fixed indentations and blank lines
-Added package/Config.in

 package/Config.in                            |    1 +
 package/python-libconfig/Config.in           |    9 +++++++++
 package/python-libconfig/python-libconfig.mk |   17 +++++++++++++++++
 3 files changed, 27 insertions(+)
 create mode 100644 package/python-libconfig/Config.in
 create mode 100644 package/python-libconfig/python-libconfig.mk
package/Config.in +1 -0
index 417c9b8..fb29097 100644
@@ -442,6 +442,7 @@ source "package/python-id3/Config.in"
 source "package/python-ipy/Config.in"
 source "package/python-json-schema-validator/Config.in"
 source "package/python-keyring/Config.in"
+source "package/python-libconfig/Config.in"
 source "package/python-mad/Config.in"
 source "package/python-meld3/Config.in"
 source "package/python-msgpack/Config.in"
(quoted diff) +0 -0

b/package/python-libconfig/Config.in
new file mode 100644
index 0000000..170926d

package/python-libconfig/Config.in new file +9 -0
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_PYTHON_LIBCONFIG
+	bool "python-libconfig"
+	depends on BR2_PACKAGE_PYTHON
+	select BR2_PACKAGE_BOOST_PYTHON
+	select BR2_PACKAGE_LIBCONFIG
+	help
+	  Python bindings to the C++ library libconfig
+
+	  https://github.com/cnangel/python-libconfig
(quoted diff) +0 -0

b/package/python-libconfig/python-libconfig.mk
new file mode 100644
index 0000000..3f5984b

package/python-libconfig/python-libconfig.mk new file +8 -0
@@ -0,0 +1,17 @@
+################################################################################
+#
+# python-libconfig
+#
+################################################################################
+
+PYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391
+PYTHON_LIBCONFIG_SITE = $(call 

github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION)) +
+PYTHON_LIBCONFIG_LICENSE = BSD +PYTHON_LIBCONFIG_LICENSE_FILES = README
+
+PYTHON_LIBCONFIG_SETUP_TYPE = setuptools
+
+PYTHON_LIBCONFIG_DEPENDENCIES = libconfig boost
+
+$(eval $(python-package))

Signature · 16 lines
1.7.10.4



DISCLAIMER:
Unless indicated otherwise, the information contained in this message is 
privileged and confidential, and is intended only for the use of the 
addressee(s) named above and others who have been specifically authorized 
to receive it. If you are not the intended recipient, you are hereby 
notified that any dissemination, distribution or copying of this message 
and/or attachments is strictly prohibited. The company accepts no 
liability for any damage caused by any virus transmitted by this email. 
Furthermore, the company does not warrant a proper and complete 
transmission of this information, nor does it accept liability for any 
delays. If you have received this message in error, please contact the 
sender and delete the message. Thank you.
#1 lore raw

PATCH v3 2/2 boost: make build with python an option

Add an option to boost to build the Boost.Python library.
http://www.boost.org/doc/libs/1_55_0/libs/python/doc/index.html

---
Changes v2 -> v3:
-Avoid line-wrap using "git send-email"
Changes v1 -> v2:
-Fixed indentations and blank lines
-Removed package/Config.in
-Allow build with python3

 package/boost/Config.in |    4 ++++
 package/boost/boost.mk  |   13 +++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)
package/boost/Config.in +4 -0
index 68c3909..a74c2d7 100644
@@ -60,6 +60,10 @@ config BR2_PACKAGE_BOOST_MPI
 config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
 	bool "boost-program_options"
 
+config BR2_PACKAGE_BOOST_PYTHON
+	depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
+	bool "boost-python"
+
 config BR2_PACKAGE_BOOST_RANDOM
 	bool "boost-random"
 
package/boost/boost.mk +0 -0
index 7aab614..53d2b4d 100644
@@ -26,7 +26,7 @@ HOST_BOOST_FLAGS = --without-icu \
 # atomic library compile only with upstream version, wait for next 

release

 # coroutine breaks on some weak toolchains and it's new for 1.54+
 # log breaks with some toolchain combinations and it's new for 1.54+
-BOOST_WITHOUT_FLAGS = atomic coroutine log python
+BOOST_WITHOUT_FLAGS = atomic coroutine log

BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context)
@@ -40,6 +40,7 @@ BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) BOOST_WITHOUT_FLAGS += $(if
$(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) BOOST_WITHOUT_FLAGS += $(if
$(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization)
@@ -50,6 +51,8 @@ BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave)

+BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
+
ifeq ($(BR2_PACKAGE_ICU),y)
BOOST_FLAGS += --with-icu=$(STAGING_DIR)/usr BOOST_DEPENDENCIES += icu
@@ -61,6 +64,12 @@ ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y)
BOOST_DEPENDENCIES += bzip2 zlib
endif

+ifeq ($(BR2_PACKAGE_BOOST_PYTHON),y)
+BOOST_FLAGS += --with-python-root=$(HOST_DIR) +BOOST_TARGET_CXXFLAGS
+= -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)/ +BOOST_DEPENDENCIES += python
+endif
+
HOST_BOOST_OPT += toolset=gcc threading=multi variant=release link=shared
\
runtime-link=shared

@@ -84,7 +93,7 @@ BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPERATED), --without-libraries=$

define BOOST_CONFIGURE_CMDS
(cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS))
- echo "using gcc : $(TARGET_CC_VERSION) : $(TARGET_CXX) :
<cxxflags>\"$(TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam
+ echo "using gcc : $(TARGET_CC_VERSION) : $(TARGET_CXX) :
<cxxflags>\"$(BOOST_TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;"

Quoted 1 line

$(@D)/user-config.jam

echo "" >> $(@D)/user-config.jam
endef

Signature · 16 lines
1.7.10.4



DISCLAIMER:
Unless indicated otherwise, the information contained in this message is 
privileged and confidential, and is intended only for the use of the 
addressee(s) named above and others who have been specifically authorized 
to receive it. If you are not the intended recipient, you are hereby 
notified that any dissemination, distribution or copying of this message 
and/or attachments is strictly prohibited. The company accepts no 
liability for any damage caused by any virus transmitted by this email. 
Furthermore, the company does not warrant a proper and complete 
transmission of this information, nor does it accept liability for any 
delays. If you have received this message in error, please contact the 
sender and delete the message. Thank you.
#2 lore raw

PATCH v3 2/2 boost: make build with python an option

Dear Johan Derycke,

Thanks a lot for your persistence with those patches, really appreciated!

package/boost/Config.in config BR2_PACKAGE_BOOST_MPI · line 65

Quoted 3 lines · Johan Derycke
package/boost/Config.in +3 -0
+config BR2_PACKAGE_BOOST_PYTHON
+	depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
+	bool "boost-python"

Ok, so this means that boost::python is compatible with Python 3, which seems to match various claims I've seen on the web.

Quoted 8 lines
 # coroutine breaks on some weak toolchains and it's new for 1.54+
 # log breaks with some toolchain combinations and it's new for 1.54+
(quoted diff) +1 -1
-BOOST_WITHOUT_FLAGS = atomic coroutine log python
+BOOST_WITHOUT_FLAGS = atomic coroutine log
 
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono)
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context)

Review BOOST_WITHOUT_FLAGS += $(if · line 45

Quoted 6 lines
(quoted diff) +1 -0
@@ -40,6 +40,7 @@ BOOST_WITHOUT_FLAGS += $(if 
 $(BR2_PACKAGE_BOOST_LOCALE),,locale)
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math)
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi)
 BOOST_WITHOUT_FLAGS += $(if 
 $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options)
+BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python)

Ok.

Quoted 15 lines
(quoted diff) +0 -0
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random)

BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) BOOST_WITHOUT_FLAGS += $(if
$(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization)

(quoted diff) +2 -0
@@ -50,6 +51,8 @@ BOOST_WITHOUT_FLAGS += $(if 
 $(BR2_PACKAGE_BOOST_THREAD),,thread)
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer)
 BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave)
 
+BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
+
 ifeq ($(BR2_PACKAGE_ICU),y)
 BOOST_FLAGS += --with-icu=$(STAGING_DIR)/usr

BOOST_DEPENDENCIES += icu

Review ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y) · line 68

Quoted 5 lines
(quoted diff) +2 -0
@@ -61,6 +64,12 @@ ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y)
 BOOST_DEPENDENCIES += bzip2 zlib
 endif
 
+ifeq ($(BR2_PACKAGE_BOOST_PYTHON),y)
+BOOST_FLAGS += --with-python-root=$(HOST_DIR)

Depending on what Boost needs exactly, this might be correct or not. It is correct to find a Python interpreter that runs on the build machine. But Boost uses that to ask the Python interpreter various details about the Python installation (such as the location of Python modules, the cross-compiler to use, etc.), then it will be wrong. I guess I'll have to have a look.

Review ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y) · line 71

Quoted 3 lines
(quoted diff) +3 -0
+BOOST_TARGET_CXXFLAGS 
+= -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)/
+BOOST_DEPENDENCIES += python

This isn't going to work with Python 3. It should be:

ifeq ($(BR2_PACKAGE_PYTHON3),y)
BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) BOOST_DEPENDENCIES += python3
else
BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) BOOST_DEPENDENCIES += python
endif

Quoted 16 lines
(quoted diff) +2 -0
+endif
+
 HOST_BOOST_OPT += toolset=gcc threading=multi variant=release link=shared 
 \
 	runtime-link=shared
@@ -84,7 +93,7 @@ BOOST_FLAGS += $(if 

$(BOOST_WITHOUT_FLAGS_COMMASEPERATED), --without-libraries=$

define BOOST_CONFIGURE_CMDS

(quoted diff) +0 -1
 	(cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS))
-	echo "using gcc : $(TARGET_CC_VERSION) : $(TARGET_CXX) : 

<cxxflags>\"$(TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam

(quoted diff) +1 -0
+	echo "using gcc : $(TARGET_CC_VERSION) : $(TARGET_CXX) : 

<cxxflags>\"$(BOOST_TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;"

Quoted 4 lines
Quoted 1 line

$(@D)/user-config.jam

echo "" >> $(@D)/user-config.jam
endef

Ok.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH v3 1/2 python-libconfig: new package

In reply to Johan Derycke

Dear Johan Derycke,

Quoted 7 lines · Johan Derycke

Python bindings to the C++ library libconfig
https://github.com/cnangel/python-libconfig

---
Changes v2 -> v3:
-Avoid line-wrap using "git send-email"

Unfortunately, even though you have used "git send-email" this time, the patches are still line-wrapped. I strongly suspect that your company SMTP server, while adding the useless "DISCLAIMER" at the end of each e-mail, takes the freedom to rewrap the entire e-mail.

Solutions are:

*) Complain to your IT people.

*) Send using another SMTP server.

*) Let us fix up the patches manually. This is OK for small patches,
but is quickly going to be horrible if the patches become large.

package/python-libconfig/Config.in line 3

Quoted 10 lines
package/python-libconfig/Config.in new file +3 -0
new file mode 100644
index 0000000..170926d
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_PYTHON_LIBCONFIG
+	bool "python-libconfig"
+	depends on BR2_PACKAGE_PYTHON

Ok, so this package only builds with Python 2, correct?

package/python-libconfig/Config.in line 4

Quoted 1 line
package/python-libconfig/Config.in new file +1 -0
+	select BR2_PACKAGE_BOOST_PYTHON

I must say it's really horrible to need something as large as Boost just to have a Python interface to a library as simple as libconfig. But oh well, that's not your fault.

Quoted 21 lines
package/python-libconfig/Config.in new file +5 -0
+	select BR2_PACKAGE_LIBCONFIG
+	help
+	  Python bindings to the C++ library libconfig
+
+	  https://github.com/cnangel/python-libconfig
package/python-libconfig/python-libconfig.mk new file +8 -0
new file mode 100644
index 0000000..3f5984b
@@ -0,0 +1,17 @@
+################################################################################
+#
+# python-libconfig
+#
+################################################################################
+
+PYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391
+PYTHON_LIBCONFIG_SITE = $(call 

github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION))

package/python-libconfig/python-libconfig.mk

Quoted 9 lines
package/python-libconfig/python-libconfig.mk new file +9 -0
+
+PYTHON_LIBCONFIG_LICENSE = BSD
+PYTHON_LIBCONFIG_LICENSE_FILES = README
+
+PYTHON_LIBCONFIG_SETUP_TYPE = setuptools
+
+PYTHON_LIBCONFIG_DEPENDENCIES = libconfig boost
+
+$(eval $(python-package))

This looks good, but since this patch actually depends on the next patch, they should be inverted in the patch series: the boost patch first, and then the python-libconfig patch.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

PATCH v3 1/2 python-libconfig: new package

Hi Thomas,

Quoted 16 lines · Thomas Petazzoni

Dear Johan Derycke,

Quoted 7 lines · Johan Derycke

Python bindings to the C++ library libconfig
https://github.com/cnangel/python-libconfig

---
Changes v2 -> v3:
-Avoid line-wrap using "git send-email"

Unfortunately, even though you have used "git send-email" this time, the patches are still line-wrapped. I strongly suspect that your company SMTP server, while adding the useless "DISCLAIMER" at the end of each e-mail, takes the freedom to rewrap the entire e-mail.

Quoted 8 lines

Solutions are:

*) Complain to your IT people.

*) Send using another SMTP server.

*) Let us fix up the patches manually. This is OK for small patches,
but is quickly going to be horrible if the patches become large.

I will try with gmail smtp next time...

Quoted 4 lines
Quoted 4 lines
package/python-libconfig/Config.in new file +0 -0
new file mode 100644
index 0000000..170926d
Quoted 8 lines

package/python-libconfig/Config.in line 3

Quoted 6 lines
package/python-libconfig/Config.in new file +3 -0
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_PYTHON_LIBCONFIG
+   bool "python-libconfig"
+   depends on BR2_PACKAGE_PYTHON

Ok, so this package only builds with Python 2, correct?

It did not work with python3 because boost:python was wrong for python3. I was able to run a small python script with "from pylibconfig import Config" for both python2 and python3. I will re-enable it in v4 patch.

Quoted 42 lines

package/python-libconfig/Config.in line 4

Quoted 2 lines
package/python-libconfig/Config.in new file +1 -0
+   select BR2_PACKAGE_BOOST_PYTHON

I must say it's really horrible to need something as large as Boost just to have a Python interface to a library as simple as libconfig. But oh well, that's not your fault.

Quoted 21 lines
package/python-libconfig/Config.in new file +5 -0
+   select BR2_PACKAGE_LIBCONFIG
+   help
+     Python bindings to the C++ library libconfig
+
+     https://github.com/cnangel/python-libconfig
package/python-libconfig/python-libconfig.mk new file +8 -0
new file mode 100644
index 0000000..3f5984b
@@ -0,0 +1,17 @@
+################################################################################
+#
+# python-libconfig
+#
+################################################################################
+
+PYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391
+PYTHON_LIBCONFIG_SITE = $(call

github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION))

package/python-libconfig/python-libconfig.mk

Quoted 9 lines
package/python-libconfig/python-libconfig.mk new file +9 -0
+
+PYTHON_LIBCONFIG_LICENSE = BSD
+PYTHON_LIBCONFIG_LICENSE_FILES = README
+
+PYTHON_LIBCONFIG_SETUP_TYPE = setuptools
+
+PYTHON_LIBCONFIG_DEPENDENCIES = libconfig boost
+
+$(eval $(python-package))

This looks good, but since this patch actually depends on the next patch, they should be inverted in the patch series: the boost patch first, and then the python-libconfig patch.

Quoted 3 lines

Thanks!

Thomas

Thanks for the review

Johan
This message is subject to the following terms and conditions: MAIL DISCLAIMER<http://www.barco.com/en/maildisclaimer>