All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] package/kmod: fix build with python 3.8
@ 2019-10-20 19:38 James Hilliard
  2019-10-21 18:56 ` Thomas Petazzoni
  2019-10-22  9:02 ` Thomas Petazzoni
  0 siblings, 2 replies; 8+ messages in thread
From: James Hilliard @ 2019-10-20 19:38 UTC (permalink / raw)
  To: buildroot

Fixes:
 - http://autobuild.buildroot.net/results/71bf937339705a520e047d12c146229ec42a76f2

Details:
 - https://bugs.python.org/issue36721

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
 package/kmod/kmod.mk | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/package/kmod/kmod.mk b/package/kmod/kmod.mk
index a5bcf2f2d6..a63fe99d91 100644
--- a/package/kmod/kmod.mk
+++ b/package/kmod/kmod.mk
@@ -45,6 +45,10 @@ endif
 ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)
 KMOD_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)
 KMOD_CONF_OPTS += --enable-python
+ifeq ($(BR2_PACKAGE_PYTHON3),y)
+KMOD_CONF_ENV += \
+	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`"
+endif
 endif
 
 ifeq ($(BR2_PACKAGE_KMOD_TOOLS),y)
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [Buildroot] [PATCH 1/1] package/kmod: fix build with python 3.8
@ 2019-11-16 11:45 Fabrice Fontaine
  2019-11-16 16:23 ` Yann E. MORIN
  0 siblings, 1 reply; 8+ messages in thread
From: Fabrice Fontaine @ 2019-11-16 11:45 UTC (permalink / raw)
  To: buildroot

Replace second patch that adds -Wl,-z,undefs by a patch that remove
-Wl,--no-undefined as some ld versions are ignoring this flag:

/home/naourr/work/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/aarch64_be-linux-gnu/7.3.1/../../../../aarch64_be-linux-gnu/bin/ld: warning: -z undefs ignored.

Fixes:
 - http://autobuild.buildroot.org/results/06a6d865b6b7d8ebd793bde214f4a4c40e0962e1

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 ...-undefined-symbols-when-building-the.patch | 75 -------------------
 ...-configure.ac-remove-Wl-no-undefined.patch | 39 ++++++++++
 package/kmod/kmod.mk                          |  2 +-
 3 files changed, 40 insertions(+), 76 deletions(-)
 delete mode 100644 package/kmod/0002-Do-not-check-for-undefined-symbols-when-building-the.patch
 create mode 100644 package/kmod/0002-configure.ac-remove-Wl-no-undefined.patch

diff --git a/package/kmod/0002-Do-not-check-for-undefined-symbols-when-building-the.patch b/package/kmod/0002-Do-not-check-for-undefined-symbols-when-building-the.patch
deleted file mode 100644
index 3be40d4993..0000000000
--- a/package/kmod/0002-Do-not-check-for-undefined-symbols-when-building-the.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 55a0a0aac503f5012ff2df7af37107544c757f19 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-Date: Tue, 22 Oct 2019 09:56:32 +0200
-Subject: [PATCH kmod] Do not check for undefined symbols when building the
- Python modules
-
-kmod's configure.ac uses the -Wl,--no-undefined linker flag to verify
-at link time that all symbols of shared libraries are available, and
-that there are no undefined symbols.
-
-This make perfect sense for regular shared libraries. However, for
-Python extensions, which will be dlopen()ed inside the Python
-interpreter, it makes less sense.
-
-Since Python 3.8, there is a change in python-config script and
-Python's pkg-config file: it no longer links Python extensions with
-the libpython library. See
-https://docs.python.org/dev/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build
-which states:
-
-  On the other hand, pkg-config python3.8 --libs no longer contains
-  -lpython3.8. C extensions must not be linked to libpython (except on
-  Android and Cygwin, whose cases are handled by the script); this
-  change is backward incompatible on purpose. (Contributed by Victor
-  Stinner in bpo-36721.)
-
-So, when linking the kmod Python extensions, it currently fails with
-numerous unresolved symbols, that were previously provided by
-libpython:
-
-/home/test/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/powerpc64-buildroot-linux-gnu/7.4.0/../../../../powerpc64-buildroot-linux-gnu/bin/ld: libkmod/python/kmod/.libs/list_la-list.o: in function `__Pyx_PyObject_GetAttrStr':
-list.c:(.text.__Pyx_PyObject_GetAttrStr+0x48): undefined reference to `PyObject_GetAttr'
-/home/test/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/powerpc64-buildroot-linux-gnu/7.4.0/../../../../powerpc64-buildroot-linux-gnu/bin/ld: libkmod/python/kmod/.libs/list_la-list.o: in function `__pyx_tp_dealloc_4kmod_4list_ModListItem':
-list.c:(.text.__pyx_tp_dealloc_4kmod_4list_ModListItem+0x78): undefined reference to `PyObject_CallFinalizerFromDealloc'
-/home/test/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/powerpc64-buildroot-linux-gnu/7.4.0/../../../../powerpc64-buildroot-linux-gnu/bin/ld: libkmod/python/kmod/.libs/list_la-list.o: in function `__pyx_tp_dealloc_4kmod_4list_ModList':
-list.c:(.text.__pyx_tp_dealloc_4kmod_4list_ModList+0x30): undefined reference to `PyErr_Fetch'
-
-[Complete log at http://autobuild.buildroot.net/results/79a/79a5a0398723e8cfea0d0aa3dec5f7649aee4c63/build-end.log]
-
-Linking with libpython is no longer recommended: those symbols should
-remain unresolved in the Python extensions, as they wil be properly
-resolved when the Python extension gets loaded into the Python
-interpreter.
-
-Since we want to keep -Wl,--no-undefined globally in kmod, we leave
-the configure.ac file unchanged, and instead, specifically in the
-LDFLAGS used to build the Python extensions, we override
--Wl,--no-undefined with -Wl,-z,undefs. Ideally, -Wl,--no-undefined is
-the same as -Wl,-z,defs, and the effect of these options can be
-canceled on the linker command line by a following -Wl,-z,undefs (see
-the ld man page for details).
-
-Upstream: https://lore.kernel.org/linux-modules/20191024174710.9441-1-thomas.petazzoni at bootlin.com/
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-Cc: Victor Stinner <victor.stinner@gmail.com>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index c5c2f06..8e9c90d 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -173,7 +173,7 @@ CPYTHON_MODULE_CFLAGS = \
- 	$(AM_CFLAGS) -DCPYTHON_COMPILING_IN_PYPY=0 \
- 	$(PYTHON_NOWARN) $(PYTHON_CFLAGS) \
- 	-fvisibility=default
--CPYTHON_MODULE_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version -shared
-+CPYTHON_MODULE_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version -shared -Wl,-z,undefs
- 
- if BUILD_PYTHON
- pkgpyexec_LTLIBRARIES = \
--- 
-2.21.0
-
diff --git a/package/kmod/0002-configure.ac-remove-Wl-no-undefined.patch b/package/kmod/0002-configure.ac-remove-Wl-no-undefined.patch
new file mode 100644
index 0000000000..e45cb93e61
--- /dev/null
+++ b/package/kmod/0002-configure.ac-remove-Wl-no-undefined.patch
@@ -0,0 +1,39 @@
+From 11eeeb760062ff6aa41d31078793f69de560243f Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sat, 16 Nov 2019 12:29:21 +0100
+Subject: [PATCH] configure.ac: remove -Wl,--no-undefined
+
+Commit 1d14ef82f4a3be741bcdf6b1c6d51ce9dce43567 does not completely fix
+the build with python 3.8 as we still get link failure due to
+'-z undefs' being ignored by some versions of ld:
+
+/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: warning: -z undefs ignored.
+
+/home/naourr/work/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/aarch64_be-linux-gnu/7.3.1/../../../../aarch64_be-linux-gnu/bin/ld: warning: -z undefs ignored.
+
+So remove -Wl,--no-undefined from configure.ac to fix the issue
+
+Fixes:
+ - http://autobuild.buildroot.org/results/e9645d9969481b09f507f6e0d0b35faaa283eb60
+ - http://autobuild.buildroot.org/results/06a6d865b6b7d8ebd793bde214f4a4c40e0962e1
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index e885d79..bbeb513 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -266,7 +266,6 @@ AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags")
+ 
+ CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [ \
+ 		       -Wl,--as-needed \
+-		       -Wl,--no-undefined \
+ 		       -Wl,--gc-sections])
+ AC_SUBST([OUR_LDFLAGS], $with_ldflags)
+ 
+-- 
+2.24.0
+
diff --git a/package/kmod/kmod.mk b/package/kmod/kmod.mk
index e21f40a845..2f9df1834c 100644
--- a/package/kmod/kmod.mk
+++ b/package/kmod/kmod.mk
@@ -8,7 +8,7 @@ KMOD_VERSION = 26
 KMOD_SOURCE = kmod-$(KMOD_VERSION).tar.xz
 KMOD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kmod
 KMOD_INSTALL_STAGING = YES
-# 0002-Do-not-check-for-undefined-symbols-when-building-the.patch
+# We're patching configure.ac
 KMOD_AUTORECONF = YES
 KMOD_DEPENDENCIES = host-pkgconf
 HOST_KMOD_DEPENDENCIES = host-pkgconf
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-11-16 16:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-20 19:38 [Buildroot] [PATCH 1/1] package/kmod: fix build with python 3.8 James Hilliard
2019-10-21 18:56 ` Thomas Petazzoni
2019-10-21 19:12   ` James Hilliard
2019-10-21 19:23     ` Thomas Petazzoni
2019-10-22  9:02 ` Thomas Petazzoni
2019-11-16 11:45 Fabrice Fontaine
2019-11-16 16:23 ` Yann E. MORIN
2019-11-16 16:35   ` Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.