Skip to contentSkip to conversation

package/kodi: needs .py modules

PATCH New Thomas Petazzoni 3 participants 3 messages Oct 15, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/kodi: needs .py modules

From: "Yann E. MORIN" <[email protected]>

Kodi segfaults as soon as it tries to load a python module:

Could not find platform independent libraries <prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site
Segmentation fault

Turns out that keeping .py modules (with or without .pyc) fixes the issue.

Currently, Kodi selects python, but since the format of modules is a choice, we can not select it.

Fix that by inverting the dependency on python from Kodi:
- turn it into a depends rather than a select,
- add the dependency to ! pyc-only
- update the comment accordingly.

In addition, the !MMU and !static dependencies are updated since they are no longer needed for Python (we now depend on it rather than selecting it), but for other packages. The !MMU dependency is moved to the _ARCH_SUPPORTS symbol as well.

Also, we can no longer "select BR2_PACKAGE_SAMBA4", because samba4 selects python, and we can no longer select python. Therefore, we switch to a "depends on" dependency for samba4, which is fine as a user willing to use Kodi with Samba will certainly realize that Samba should be enabled.

Fixes bug #9221.

[Thomas:
- update on latest master
- take care of the !MMU/!static dependencies.
- take care of the samba4 problem.]

---
 package/kodi/Config.in | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)
package/kodi/Config.in +9 -14
index f388a72..4174c6b 100644
@@ -1,17 +1,19 @@
 config BR2_PACKAGE_KODI_ARCH_SUPPORTS
 	bool
+	depends on BR2_USE_MMU # libcdio, and others
 	default y if (BR2_arm || (BR2_mipsel && BR2_TOOLCHAIN_USES_GLIBC) || BR2_i386 || BR2_x86_64) \
 		&& BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS \
 		&& BR2_TOOLCHAIN_HAS_SYNC_8
 
-comment "kodi needs a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.7, host gcc >= 4.6"
+comment "kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.7, host gcc >= 4.6"
 	depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
 		|| !BR2_USE_WCHAR || BR2_STATIC_LIBS \
 		|| !BR2_HOST_GCC_AT_LEAST_4_6 \
 		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \
-		|| BR2_TOOLCHAIN_USES_MUSL
-	depends on BR2_USE_MMU
+		|| BR2_TOOLCHAIN_USES_MUSL \
+		|| !BR2_PACKAGE_PYTHON \
+		|| BR2_PACKAGE_PYTHON_PYC_ONLY
 
 config BR2_PACKAGE_KODI_EGL_GLES
 	bool
@@ -42,10 +44,11 @@ menuconfig BR2_PACKAGE_KODI
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on !BR2_TOOLCHAIN_USES_MUSL
 	depends on BR2_PACKAGE_KODI_EGL_GLES || BR2_PACKAGE_KODI_GL
-	depends on BR2_USE_MMU # python
 	depends on BR2_USE_WCHAR
-	depends on !BR2_STATIC_LIBS # python
+	depends on !BR2_STATIC_LIBS # libsquish, and others
 	depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_PYTHON
+	depends on !BR2_PACKAGE_PYTHON_PYC_ONLY
 	select BR2_NEEDS_HOST_JAVA
 	select BR2_PACKAGE_BOOST
 	select BR2_PACKAGE_BOOST_THREAD
@@ -83,7 +86,6 @@ menuconfig BR2_PACKAGE_KODI
 	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_PCRE
 	select BR2_PACKAGE_PCRE_UCP
-	select BR2_PACKAGE_PYTHON
 	select BR2_PACKAGE_PYTHON_BSDDB
 	select BR2_PACKAGE_PYTHON_BZIP2
 	select BR2_PACKAGE_PYTHON_CURSES
@@ -200,16 +202,9 @@ config BR2_PACKAGE_KODI_LIBSHAIRPLAY
 	  Enable Shairport support.
 	  Select this if you want to stream content from an Apple device.
 
-comment "samba support needs a glibc or uClibc toolchain w/ RPC"
-	depends on (!BR2_TOOLCHAIN_USES_GLIBC && \
-		!BR2_TOOLCHAIN_USES_UCLIBC) || !BR2_TOOLCHAIN_HAS_NATIVE_RPC
-
 config BR2_PACKAGE_KODI_LIBSMBCLIENT
 	bool "samba"
-	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC
-	depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
-	depends on BR2_TOOLCHAIN_HAS_SYNC_4
-	select BR2_PACKAGE_SAMBA4
+	depends on BR2_PACKAGE_SAMBA4
 	help
 	  Enable Samba support
 
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 package/kodi: needs .py modules

Thomas, All,

On 2016-10-15 18:10 +0200, Thomas Petazzoni spake thusly:

Quoted 31 lines

From: "Yann E. MORIN" <[email protected]>

Kodi segfaults as soon as it tries to load a python module:

Could not find platform independent libraries <prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site
Segmentation fault

Turns out that keeping .py modules (with or without .pyc) fixes the issue.

Currently, Kodi selects python, but since the format of modules is a choice, we can not select it.

Fix that by inverting the dependency on python from Kodi:
- turn it into a depends rather than a select,
- add the dependency to ! pyc-only
- update the comment accordingly.

In addition, the !MMU and !static dependencies are updated since they are no longer needed for Python (we now depend on it rather than selecting it), but for other packages. The !MMU dependency is moved to the _ARCH_SUPPORTS symbol as well.

Also, we can no longer "select BR2_PACKAGE_SAMBA4", because samba4 selects python, and we can no longer select python. Therefore, we switch to a "depends on" dependency for samba4, which is fine as a user willing to use Kodi with Samba will certainly realize that Samba should be enabled.

Quoted 8 lines

Fixes bug #9221.

[Thomas:
- update on latest master
- take care of the !MMU/!static dependencies.
- take care of the samba4 problem.]

[yann.morin.1998 at free.fr: reviewed the samba fix]

Regards,
Yann E. MORIN.

Quoted 74 lines
---
 package/kodi/Config.in | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)
package/kodi/Config.in +9 -14
index f388a72..4174c6b 100644
@@ -1,17 +1,19 @@
 config BR2_PACKAGE_KODI_ARCH_SUPPORTS
 	bool
+	depends on BR2_USE_MMU # libcdio, and others
 	default y if (BR2_arm || (BR2_mipsel && BR2_TOOLCHAIN_USES_GLIBC) || BR2_i386 || BR2_x86_64) \
 		&& BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS \
 		&& BR2_TOOLCHAIN_HAS_SYNC_8
 
-comment "kodi needs a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.7, host gcc >= 4.6"
+comment "kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.7, host gcc >= 4.6"
 	depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
 		|| !BR2_USE_WCHAR || BR2_STATIC_LIBS \
 		|| !BR2_HOST_GCC_AT_LEAST_4_6 \
 		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \
-		|| BR2_TOOLCHAIN_USES_MUSL
-	depends on BR2_USE_MMU
+		|| BR2_TOOLCHAIN_USES_MUSL \
+		|| !BR2_PACKAGE_PYTHON \
+		|| BR2_PACKAGE_PYTHON_PYC_ONLY
 
 config BR2_PACKAGE_KODI_EGL_GLES
 	bool
@@ -42,10 +44,11 @@ menuconfig BR2_PACKAGE_KODI
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on !BR2_TOOLCHAIN_USES_MUSL
 	depends on BR2_PACKAGE_KODI_EGL_GLES || BR2_PACKAGE_KODI_GL
-	depends on BR2_USE_MMU # python
 	depends on BR2_USE_WCHAR
-	depends on !BR2_STATIC_LIBS # python
+	depends on !BR2_STATIC_LIBS # libsquish, and others
 	depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_PYTHON
+	depends on !BR2_PACKAGE_PYTHON_PYC_ONLY
 	select BR2_NEEDS_HOST_JAVA
 	select BR2_PACKAGE_BOOST
 	select BR2_PACKAGE_BOOST_THREAD
@@ -83,7 +86,6 @@ menuconfig BR2_PACKAGE_KODI
 	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_PCRE
 	select BR2_PACKAGE_PCRE_UCP
-	select BR2_PACKAGE_PYTHON
 	select BR2_PACKAGE_PYTHON_BSDDB
 	select BR2_PACKAGE_PYTHON_BZIP2
 	select BR2_PACKAGE_PYTHON_CURSES
@@ -200,16 +202,9 @@ config BR2_PACKAGE_KODI_LIBSHAIRPLAY
 	  Enable Shairport support.
 	  Select this if you want to stream content from an Apple device.
 
-comment "samba support needs a glibc or uClibc toolchain w/ RPC"
-	depends on (!BR2_TOOLCHAIN_USES_GLIBC && \
-		!BR2_TOOLCHAIN_USES_UCLIBC) || !BR2_TOOLCHAIN_HAS_NATIVE_RPC
-
 config BR2_PACKAGE_KODI_LIBSMBCLIENT
 	bool "samba"
-	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC
-	depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
-	depends on BR2_TOOLCHAIN_HAS_SYNC_4
-	select BR2_PACKAGE_SAMBA4
+	depends on BR2_PACKAGE_SAMBA4
 	help
 	  Enable Samba support
 
Signature · 1 line
2.7.4
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 1/1 package/kodi: needs .py modules

In reply to Thomas Petazzoni
Quoted 32 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

From: "Yann E. MORIN" <[email protected]> Kodi segfaults as soon as it tries to load a python module:

Could not find platform independent libraries <prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site
Segmentation fault

Turns out that keeping .py modules (with or without .pyc) fixes the issue.

Currently, Kodi selects python, but since the format of modules is a choice, we can not select it.

Fix that by inverting the dependency on python from Kodi:
- turn it into a depends rather than a select,
- add the dependency to ! pyc-only
- update the comment accordingly.

In addition, the !MMU and !static dependencies are updated since they are no longer needed for Python (we now depend on it rather than selecting it), but for other packages. The !MMU dependency is moved to the _ARCH_SUPPORTS symbol as well.

Also, we can no longer "select BR2_PACKAGE_SAMBA4", because samba4 selects python, and we can no longer select python. Therefore, we switch to a "depends on" dependency for samba4, which is fine as a user willing to use Kodi with Samba will certainly realize that Samba should be enabled.

Quoted 8 lines

Fixes bug #9221.

[Thomas:
- update on latest master
- take care of the !MMU/!static dependencies.
- take care of the samba4 problem.]

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard