Commit 458bdf3f authored by Thomas Petazzoni's avatar Thomas Petazzoni
Browse files

python3: optional decimal module support

This commit makes the decimal module support optional: since Python
3.3 it relies on an external library. The source code of this library
is available built-in as part of the Python sources, but in Buildroot
we generally prefer to use the external library when possible.

To achieve this, this commit adds a patch to Python that is similar to
the one we use for expat support, but this time for the
libmpdec/mpdecimal library.

As a consequence, since mpdecimal now builds properly even when
<fenv.h> is not available (on i386), this commit fixes:

  http://autobuild.buildroot.org/results/b64/b64d5c941a7cac00619da3a0696939f86a8eafc2/



Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 6bebd7f2
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -54,6 +54,12 @@ config BR2_PACKAGE_PYTHON3_CURSES
	help
	  curses module for Python3.

config BR2_PACKAGE_PYTHON3_DECIMAL
	select BR2_PACKAGE_MPDECIMAL
	bool "decimal module"
	help
	  decimal module for Python3.

config BR2_PACKAGE_PYTHON3_PYEXPAT
	select BR2_PACKAGE_EXPAT
	bool "pyexpat"
+53 −0
Original line number Diff line number Diff line
Add an option to disable decimal

This patch replaces the existing --with-system-libmpdec option with a
--with-libmpdec={system,builtin,none} option, which allows to tell
Python whether we want to use the system libmpdec (already installed),
the libmpdec builtin the Python sources, or no libmpdec at all.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---

Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
@@ -2385,13 +2385,20 @@
 AC_MSG_RESULT($with_system_ffi)
 
 # Check for use of the system libmpdec library
-AC_MSG_CHECKING(for --with-system-libmpdec)
-AC_ARG_WITH(system_libmpdec,
-            AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
+AC_MSG_CHECKING(for --with-libmpdec)
+AC_ARG_WITH(libmpdec,
+            AS_HELP_STRING([--with-libmpdec], [select which libmpdec version to use: system, builtin, none]),
             [],
-            [with_system_libmpdec="no"])
+            [with_libmpdec="builtin"])
 
-AC_MSG_RESULT($with_system_libmpdec)
+AC_MSG_RESULT($with_libmpdec)
+if test "$with_libmpdec" != "none"; then
+   MPDEC=yes
+else
+   DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _decimal"
+   MPDEC=no
+fi
+AC_SUBST(MPDEC)
 
 # Check for support for loadable sqlite extensions
 AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -1972,7 +1972,7 @@
     def _decimal_ext(self):
         extra_compile_args = []
         undef_macros = []
-        if '--with-system-libmpdec' in sysconfig.get_config_var("CONFIG_ARGS"):
+        if '--with-libmpdec=system' in sysconfig.get_config_var("CONFIG_ARGS"):
             include_dirs = []
             libraries = [':libmpdec.so.2']
             sources = ['_decimal/_decimal.c']
+7 −0
Original line number Diff line number Diff line
@@ -51,6 +51,13 @@ else
PYTHON3_CONF_OPT += --disable-curses
endif

ifeq ($(BR2_PACKAGE_PYTHON3_DECIMAL),y)
PYTHON3_DEPENDENCIES += mpdecimal
PYTHON3_CONF_OPT += --with-libmpdec=system
else
PYTHON3_CONF_OPT += --with-libmpdec=none
endif

ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y)
PYTHON3_DEPENDENCIES += expat
PYTHON3_CONF_OPT += --with-expat=system