From c09085b0769a46fa925fd87f559e40d82a6c341c Mon Sep 17 00:00:00 2001 From: Sebastian Kemper Date: Fri, 10 Apr 2020 14:10:24 +0200 Subject: [PATCH] kamailio-5.x: add app_python3 Adds the Python 3 module. Patch is required because otherwise the module's Makefile tries to get the includes from host python. The patch also adds "--embed" to the python-config call that discovers LDFLAGS as otherwise the python lib is not linked into the module. Patch has been accepted upstream already. Adding PYTHON3 to MAKE_VARS tells the Makefile which python to use. Signed-off-by: Sebastian Kemper --- net/kamailio-5.x/Makefile | 8 ++- .../patches/150-python3-cross-compile.patch | 54 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 net/kamailio-5.x/patches/150-python3-cross-compile.patch diff --git a/net/kamailio-5.x/Makefile b/net/kamailio-5.x/Makefile index 3fd6870..de87750 100644 --- a/net/kamailio-5.x/Makefile +++ b/net/kamailio-5.x/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kamailio5 PKG_VERSION:=5.3.3 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_URL:=https://www.kamailio.org/pub/kamailio/$(PKG_VERSION)/src PKG_SOURCE:=kamailio-$(PKG_VERSION)$(PKG_VARIANT)_src.tar.gz @@ -33,6 +33,7 @@ MODULES_AVAILABLE:= \ app_jsdt \ app_lua \ app_lua_sr \ + app_python3 \ app_ruby \ app_sqlang \ async \ @@ -231,6 +232,7 @@ PKG_CONFIG_DEPENDS:= \ include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/python/python3-version.mk # Build reproducibly TARGET_CFLAGS += -DVERSION_NODATE=1 @@ -420,6 +422,9 @@ MAKE_FLAGS += \ quiet=verbose \ run_prefix="" +MAKE_VARS += \ + PYTHON3=python$(PYTHON3_VERSION) + define Build/Configure endef @@ -451,6 +456,7 @@ $(eval $(call BuildKamailio5Module,alias_db,Database-backend aliases,,)) $(eval $(call BuildKamailio5Module,app_jsdt,Execute JavaScript scripts,,)) $(eval $(call BuildKamailio5Module,app_lua,Execute embedded Lua scripts,,+liblua)) $(eval $(call BuildKamailio5Module,app_lua_sr,Old Lua API,,+kamailio5-mod-app-lua,)) +$(eval $(call BuildKamailio5Module,app_python3,Python3 scripting interpreter,,+python3-light)) $(eval $(call BuildKamailio5Module,app_ruby,Ruby scripting interpreter,,+libruby)) $(eval $(call BuildKamailio5Module,app_sqlang,Execute Squirrel language scripts,,+libstdcpp)) $(eval $(call BuildKamailio5Module,async,Asynchronous SIP handling functions,,+kamailio5-mod-tm +kamailio5-mod-tmx)) diff --git a/net/kamailio-5.x/patches/150-python3-cross-compile.patch b/net/kamailio-5.x/patches/150-python3-cross-compile.patch new file mode 100644 index 0000000..8879545 --- /dev/null +++ b/net/kamailio-5.x/patches/150-python3-cross-compile.patch @@ -0,0 +1,54 @@ +commit 05af36d34aa2668780aa111878206c6797fa98b0 +Author: Sebastian Kemper +Date: Sun Apr 12 09:37:48 2020 +0200 + + app_python3: update Python3 detection mechanism + + This commit + + - removes the python calls whose output is never actually used. + + - changes the include discovery to use python3(.x)-config. This is + preferable because it also works for cross-compiling. Calling + python3(.x) directly will always provide host flags, which for + cross-compiling is not feasible. + + - updates LDFLAGS discovery to also work with >= Python 3.8. To + achieve this python3(.x)-config is first run with the argument + "--embed". If this does not succeed (exit status 1) + python3(.x)-config is run again without "--embed". This is the + method suggested by Python upstream to provide backwards + compatibility. See [1] for more details. + + [1] https://docs.python.org/3/whatsnew/3.8.html + + Signed-off-by: Sebastian Kemper + +diff --git a/src/modules/app_python3/Makefile b/src/modules/app_python3/Makefile +index 1c9ff1c6b6..d31cd6ab10 100644 +--- a/src/modules/app_python3/Makefile ++++ b/src/modules/app_python3/Makefile +@@ -11,18 +11,16 @@ NAME=app_python3.so + # but no testing has been done with that. + PYTHON3?=python3 + +-PYTHON3_VERSION=${shell ${PYTHON3} -c "import distutils.sysconfig;print(distutils.sysconfig.get_config_var('VERSION'))"} +-PYTHON3_LIBDIR=${shell ${PYTHON3} -c "import distutils.sysconfig;print(distutils.sysconfig.get_config_var('LIBDIR'))"} +-PYTHON3_LDFLAGS=${shell ${PYTHON3} -c "import distutils.sysconfig;print(distutils.sysconfig.get_config_var('LINKFORSHARED'))"} +-PYTHON3_INCDIR=${shell ${PYTHON3} -c "import distutils.sysconfig;print(distutils.sysconfig.get_python_inc())"} +- +-LIBS=${shell ${PYTHON3}-config --ldflags} ++LIBS=${shell \ ++ tmp_py3_libs=$$(${PYTHON3}-config --ldflags --embed 2>/dev/null) || \ ++ tmp_py3_libs=$$(${PYTHON3}-config --ldflags); \ ++ echo $$tmp_py3_libs} + + ifeq ($(OS), freebsd) + LIBS+=-pthread + endif + +-DEFS+=-I${PYTHON3_INCDIR} ++DEFS+=${shell ${PYTHON3}-config --includes} + + include ../../Makefile.modules + -- 2.30.2