python-psutil: not available on musl
authorPeter Korsgaard <peter@korsgaard.com>
Tue, 20 Sep 2016 13:01:13 +0000 (15:01 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Wed, 21 Sep 2016 15:09:13 +0000 (17:09 +0200)
Fixes:
http://autobuild.buildroot.net/results/365/365c2f0b32ae3cb1d6d4d8f0145500dfadd05c59/
http://autobuild.buildroot.org/results/140/140d0ec9d94f75453c4c82e18803c8d7bffcf6be/

And many more.

The sysinfo structure definition in linux/sysinfo.h (which gets indirectly
included from linux/kernel.h) conflicts with the definition in sys/sysinfo.h
when building against the musl C library, leading to build failures:

arm-linux-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes \
 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -fPIC -DPSUTIL_VERSION=430 \
  -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-3.5/psutil/_psutil_linux.o
In file included from /home/buildroot/build/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/kernel.h:4:0,
                 from /home/buildroot/build/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/ethtool.h:16,
                 from psutil/_psutil_linux.c:35:
/home/buildroot/build/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/sysinfo.h:7:8: error: redefinition of 'struct sysinfo'
 struct sysinfo {
        ^
In file included from psutil/_psutil_linux.c:21:0:
/home/buildroot/build/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/sys/sysinfo.h:10:8: note: originally defined here

The suggested solution by the musl developers is to duplicate the needed
structures and defines inline instead of including the kernel headers, which
is unlikely to be acceptable upstream - So instead mark python-psutil (and
its reverse dependencies) as unavailable on musl.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/circus/Config.in
package/python-crossbar/Config.in
package/python-psutil/Config.in

index e696f251df5ae32a217916d8969aa22602e3c272..3df41f5f23bc44c634763446163dabb320b26a96 100644 (file)
@@ -4,6 +4,7 @@ config BR2_PACKAGE_CIRCUS
        depends on BR2_USE_WCHAR # pyzmq -> zeromq
        depends on BR2_INSTALL_LIBSTDCPP # pyzmq -> zeromq
        depends on BR2_TOOLCHAIN_HAS_THREADS # pyzmq -> zeromq
+       depends on !BR2_TOOLCHAIN_USES_MUSL # python-psutil
        select BR2_PACKAGE_PYTHON_IOWAIT # runtime
        select BR2_PACKAGE_PYTHON_PSUTIL # runtime
        select BR2_PACKAGE_PYTHON_PYZMQ # runtime
@@ -15,7 +16,7 @@ config BR2_PACKAGE_CIRCUS
 
          https://circus.readthedocs.org/en/latest/
 
-comment "circus needs Python and a toolchain w/ C++, wchar, threads"
+comment "circus needs Python and a uClibc or glibc toolchain w/ C++, wchar, threads"
        depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
-               !BR2_TOOLCHAIN_HAS_THREADS || \
+               !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL \
                !(BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3)
index be8332515ec244529d4539186614b7dc1fc5c4ff..7ef1aadbc9d8ea1e245e9c220bbadd0d63b29cc5 100644 (file)
@@ -1,5 +1,6 @@
 config BR2_PACKAGE_PYTHON_CROSSBAR
        bool "python-crossbar"
+       depends on !BR2_TOOLCHAIN_USES_MUSL # python-psutil
        # All the following dependencies are runtime dependencies
        select BR2_PACKAGE_PYTHON_AUTOBAHN
        select BR2_PACKAGE_PYTHON_CBOR
@@ -39,5 +40,5 @@ config BR2_PACKAGE_PYTHON_CROSSBAR
 
          https://pypi.python.org/pypi/crossbar
 
-comment "python-crossbar needs a toolchain w/ C++"
-       depends on !BR2_INSTALL_LIBSTDCPP
+comment "python-crossbar needs a uClibc or glibc toolchain w/ C++"
+       depends on !BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_USES_MUSL
index c64eeeed6472cde158042cd4665e9507727c1474..0b1333cf5ce7b95bffc582297c988aeae2cfa1f3 100644 (file)
@@ -1,8 +1,13 @@
 config BR2_PACKAGE_PYTHON_PSUTIL
        bool "python-psutil"
+       # sys/sysinfo.h conflict with kernel headers
+       depends on !BR2_TOOLCHAIN_USES_MUSL
        help
          psutil is a cross-platform library for retrieving
          information on running processes and system utilization
          (CPU, memory, disks, network) in Python.
 
          https://pypi.python.org/pypi/psutil
+
+comment "python-psutil needs a uClibc or glibc toolchain"
+       depends BR2_TOOLCHAIN_USES_MUSL