diff mbox

[v3,1/1] python-pylibftdi: new package

Message ID 1488385119-14452-1-git-send-email-christian.kellermann@solectrix.de
State Accepted
Headers show

Commit Message

Christian Kellermann March 1, 2017, 4:18 p.m. UTC
Adds the python binding for libftdi to buildroot.

Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>
---
Changes:

v2 -> v3:
  - Style fixes
  - Patch description added
  - added myself to DEVELOPERS

v1 -> v2:
  - Formatting
  - Removed unneeded dependency
  - Use setuptools as SETUP_TYPE
---
 DEVELOPERS                                         |  3 +++
 package/Config.in                                  |  1 +
 .../0001-do-not-use-find-library.patch             | 31 ++++++++++++++++++++++
 package/python-pylibftdi/Config.in                 | 11 ++++++++
 package/python-pylibftdi/python-libftdi.hash       |  3 +++
 package/python-pylibftdi/python-libftdi.mk         | 15 +++++++++++
 6 files changed, 64 insertions(+)
 create mode 100644 package/python-pylibftdi/0001-do-not-use-find-library.patch
 create mode 100644 package/python-pylibftdi/Config.in
 create mode 100644 package/python-pylibftdi/python-libftdi.hash
 create mode 100644 package/python-pylibftdi/python-libftdi.mk

Comments

Yegor Yefremov March 2, 2017, 8:29 a.m. UTC | #1
On Wed, Mar 1, 2017 at 5:18 PM, Christian Kellermann
<christian.kellermann@solectrix.de> wrote:
> Adds the python binding for libftdi to buildroot.
>
> Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>

Reviewed-by: Yegor Yefremov <yegorslists@googlemail.com>

> ---
> Changes:
>
> v2 -> v3:
>   - Style fixes
>   - Patch description added
>   - added myself to DEVELOPERS
>
> v1 -> v2:
>   - Formatting
>   - Removed unneeded dependency
>   - Use setuptools as SETUP_TYPE
> ---
>  DEVELOPERS                                         |  3 +++
>  package/Config.in                                  |  1 +
>  .../0001-do-not-use-find-library.patch             | 31 ++++++++++++++++++++++
>  package/python-pylibftdi/Config.in                 | 11 ++++++++
>  package/python-pylibftdi/python-libftdi.hash       |  3 +++
>  package/python-pylibftdi/python-libftdi.mk         | 15 +++++++++++
>  6 files changed, 64 insertions(+)
>  create mode 100644 package/python-pylibftdi/0001-do-not-use-find-library.patch
>  create mode 100644 package/python-pylibftdi/Config.in
>  create mode 100644 package/python-pylibftdi/python-libftdi.hash
>  create mode 100644 package/python-pylibftdi/python-libftdi.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 09a0a6e..8cb2b5a 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -305,6 +305,9 @@ F:  package/micropython/
>  F:     package/micropython-lib/
>  F:     package/syslog-ng/
>
> +N:     Christian Kellermann <christian.kellermann@solectrix.de>
> +F:     package/python-pylibftdi/
> +
>  N:     Christian Stewart <christian@paral.in>
>  F:     linux/linux-ext-aufs.mk
>  F:     package/aufs/
> diff --git a/package/Config.in b/package/Config.in
> index 26893e5..8248331 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -769,6 +769,7 @@ menu "External python modules"
>         source "package/python-pygments/Config.in"
>         source "package/python-pyicu/Config.in"
>         source "package/python-pyinotify/Config.in"
> +       source "package/python-pylibftdi/Config.in"
>         source "package/python-pylru/Config.in"
>         source "package/python-pymysql/Config.in"
>         source "package/python-pynacl/Config.in"
> diff --git a/package/python-pylibftdi/0001-do-not-use-find-library.patch b/package/python-pylibftdi/0001-do-not-use-find-library.patch
> new file mode 100644
> index 0000000..ae8fe2d
> --- /dev/null
> +++ b/package/python-pylibftdi/0001-do-not-use-find-library.patch
> @@ -0,0 +1,31 @@
> +Hard code library loading
> +
> +Shortcut the search for the libraries in case the built in
> +find_library is broken.
> +
> +As buildroot does not ship any of the external programs that the core
> +procedure use to find libraries use the canonical name of the shared
> +object and load it.
> +
> +In this case this affects loading libftdi and libusb.
> +
> +This should be reliable as we specify said libs as dependencies of
> +this package.
> +
> +Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>
> +
> +---
> +diff -purN pylibftdi-0.15.0.orig/pylibftdi/driver.py pylibftdi-0.15.0/pylibftdi/driver.py
> +--- pylibftdi-0.15.0.orig/pylibftdi/driver.py  2015-04-26 22:41:39.000000000 +0200
> ++++ pylibftdi-0.15.0/pylibftdi/driver.py       2017-02-27 13:08:56.502958000 +0100
> +@@ -121,8 +121,8 @@ class Driver(object):
> +                     lib = getattr(cdll, lib_path)
> +                     break
> +         if lib is None:
> +-            raise LibraryMissingError('{} library not found (search: {})'.format(
> +-                name, search_list))
> ++              return cdll.LoadLibrary(name + '.so')
> ++
> +         return lib
> +
> +     @property
> diff --git a/package/python-pylibftdi/Config.in b/package/python-pylibftdi/Config.in
> new file mode 100644
> index 0000000..f829071
> --- /dev/null
> +++ b/package/python-pylibftdi/Config.in
> @@ -0,0 +1,11 @@
> +config BR2_PACKAGE_PYTHON_PYLIBFTDI
> +       bool "python-pylibftdi"
> +       select BR2_PACKAGE_LIBFTDI
> +       depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
> +       help
> +         This package contains the python language binding libftdi.
> +
> +         https://pypi.python.org/pypi/pylibftdi
> +
> +comment "python-pylibftdi needs a toolchain w/ threads"
> +       depends on !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/python-pylibftdi/python-libftdi.hash b/package/python-pylibftdi/python-libftdi.hash
> new file mode 100644
> index 0000000..54b33a1
> --- /dev/null
> +++ b/package/python-pylibftdi/python-libftdi.hash
> @@ -0,0 +1,3 @@
> +# md5 from https://pypi.python.org/pypi/pylibftdi/json, sha256 locally computed
> +md5  eaee7fb3a67f33a35a164a9628daaafe pylibftdi-0.15.0.tar.gz
> +sha256  51ef08ebcc4ec3eaec2366e9648d3f8fa1b737ea507a7f3a374ac58abf148e77 pylibftdi-0.15.0.tar.gz
> diff --git a/package/python-pylibftdi/python-libftdi.mk b/package/python-pylibftdi/python-libftdi.mk
> new file mode 100644
> index 0000000..b375abb
> --- /dev/null
> +++ b/package/python-pylibftdi/python-libftdi.mk
> @@ -0,0 +1,15 @@
> +################################################################################
> +#
> +# python-libftdi
> +#
> +################################################################################
> +
> +PYTHON_PYLIBFTDI_VERSION = 0.15.0
> +PYTHON_PYLIBFTDI_SOURCE = pylibftdi-$(PYTHON_PYLIBFTDI_VERSION).tar.gz
> +PYTHON_PYLIBFTDI_SITE = https://pypi.python.org/packages/e5/bb/d7a86dbd7685e3866ea75d21c6c726d01706fdc0aa5dc9051ce18ae65693
> +PYTHON_PYLIBFTDI_LICENSE = MIT
> +PYTHON_PYLIBFTDI_LICENSE_FILES = LICENSE.txt
> +PYTHON_PYLIBFTDI_DEPENDENCIES = libftdi
> +PYTHON_PYLIBFTDI_SETUP_TYPE = setuptools
> +
> +$(eval $(python-package))
> --
> 2.1.4
>
Thomas Petazzoni March 5, 2017, 8:38 p.m. UTC | #2
Hello,

On Wed,  1 Mar 2017 17:18:39 +0100, Christian Kellermann wrote:
> Adds the python binding for libftdi to buildroot.
> 
> Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>
> ---
> Changes:

Applied to master, thanks.

Thomas
Thomas Petazzoni March 6, 2017, 8:20 a.m. UTC | #3
Hello,

On Wed,  1 Mar 2017 17:18:39 +0100, Christian Kellermann wrote:
> Adds the python binding for libftdi to buildroot.
> 
> Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>
> ---
> Changes:

This package causes a build issue:

Traceback (most recent call last):
  File "/home/test/autobuild/run/instance-0/output/host/usr/lib/python3.5/py_compile.py", line 125, in compile
    _optimize=optimize)
  File "<frozen importlib._bootstrap_external>", line 700, in source_to_code
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/test/autobuild/run/instance-0/output/target/usr/lib/python3.5/site-packages/pylibftdi/driver.py", line 124
    return cdll.LoadLibrary(name + '.so')
                                        ^
TabError: inconsistent use of tabs and spaces in indentation

See
http://autobuild.buildroot.net/results/67c/67cddfdb801e83acfd9f197f5661fd43fa38a092/build-end.log
for the full log.

Could you have a look ?

Thanks,

Thomas
Yann E. MORIN March 6, 2017, 5:11 p.m. UTC | #4
Thomas, Christian, All,

On 2017-03-06 09:20 +0100, Thomas Petazzoni spake thusly:
> On Wed,  1 Mar 2017 17:18:39 +0100, Christian Kellermann wrote:
> > Adds the python binding for libftdi to buildroot.
> > 
> > Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>
> > ---
> > Changes:
> 
> This package causes a build issue:
> 
> Traceback (most recent call last):
>   File "/home/test/autobuild/run/instance-0/output/host/usr/lib/python3.5/py_compile.py", line 125, in compile
>     _optimize=optimize)
>   File "<frozen importlib._bootstrap_external>", line 700, in source_to_code
>   File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
>   File "/home/test/autobuild/run/instance-0/output/target/usr/lib/python3.5/site-packages/pylibftdi/driver.py", line 124
>     return cdll.LoadLibrary(name + '.so')
>                                         ^
> TabError: inconsistent use of tabs and spaces in indentation

That is because of our patch 0001-do-not-use-find-library.patch which
introduces leading tabs instead of spaces.

Patch incoming...

Regards,
Yann E. MORIN.
diff mbox

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 09a0a6e..8cb2b5a 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -305,6 +305,9 @@  F:	package/micropython/
 F:	package/micropython-lib/
 F:	package/syslog-ng/
 
+N:	Christian Kellermann <christian.kellermann@solectrix.de>
+F:	package/python-pylibftdi/
+
 N:	Christian Stewart <christian@paral.in>
 F:	linux/linux-ext-aufs.mk
 F:	package/aufs/
diff --git a/package/Config.in b/package/Config.in
index 26893e5..8248331 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -769,6 +769,7 @@  menu "External python modules"
 	source "package/python-pygments/Config.in"
 	source "package/python-pyicu/Config.in"
 	source "package/python-pyinotify/Config.in"
+	source "package/python-pylibftdi/Config.in"
 	source "package/python-pylru/Config.in"
 	source "package/python-pymysql/Config.in"
 	source "package/python-pynacl/Config.in"
diff --git a/package/python-pylibftdi/0001-do-not-use-find-library.patch b/package/python-pylibftdi/0001-do-not-use-find-library.patch
new file mode 100644
index 0000000..ae8fe2d
--- /dev/null
+++ b/package/python-pylibftdi/0001-do-not-use-find-library.patch
@@ -0,0 +1,31 @@ 
+Hard code library loading
+
+Shortcut the search for the libraries in case the built in
+find_library is broken.
+
+As buildroot does not ship any of the external programs that the core
+procedure use to find libraries use the canonical name of the shared
+object and load it.
+
+In this case this affects loading libftdi and libusb.
+
+This should be reliable as we specify said libs as dependencies of
+this package.
+
+Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de>
+
+---
+diff -purN pylibftdi-0.15.0.orig/pylibftdi/driver.py pylibftdi-0.15.0/pylibftdi/driver.py
+--- pylibftdi-0.15.0.orig/pylibftdi/driver.py	2015-04-26 22:41:39.000000000 +0200
++++ pylibftdi-0.15.0/pylibftdi/driver.py	2017-02-27 13:08:56.502958000 +0100
+@@ -121,8 +121,8 @@ class Driver(object):
+                     lib = getattr(cdll, lib_path)
+                     break
+         if lib is None:
+-            raise LibraryMissingError('{} library not found (search: {})'.format(
+-                name, search_list))
++		return cdll.LoadLibrary(name + '.so')
++
+         return lib
+ 
+     @property
diff --git a/package/python-pylibftdi/Config.in b/package/python-pylibftdi/Config.in
new file mode 100644
index 0000000..f829071
--- /dev/null
+++ b/package/python-pylibftdi/Config.in
@@ -0,0 +1,11 @@ 
+config BR2_PACKAGE_PYTHON_PYLIBFTDI
+	bool "python-pylibftdi"
+	select BR2_PACKAGE_LIBFTDI
+	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	help
+	  This package contains the python language binding libftdi.
+
+	  https://pypi.python.org/pypi/pylibftdi
+
+comment "python-pylibftdi needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/python-pylibftdi/python-libftdi.hash b/package/python-pylibftdi/python-libftdi.hash
new file mode 100644
index 0000000..54b33a1
--- /dev/null
+++ b/package/python-pylibftdi/python-libftdi.hash
@@ -0,0 +1,3 @@ 
+# md5 from https://pypi.python.org/pypi/pylibftdi/json, sha256 locally computed
+md5  eaee7fb3a67f33a35a164a9628daaafe pylibftdi-0.15.0.tar.gz
+sha256  51ef08ebcc4ec3eaec2366e9648d3f8fa1b737ea507a7f3a374ac58abf148e77 pylibftdi-0.15.0.tar.gz
diff --git a/package/python-pylibftdi/python-libftdi.mk b/package/python-pylibftdi/python-libftdi.mk
new file mode 100644
index 0000000..b375abb
--- /dev/null
+++ b/package/python-pylibftdi/python-libftdi.mk
@@ -0,0 +1,15 @@ 
+################################################################################
+#
+# python-libftdi
+#
+################################################################################
+
+PYTHON_PYLIBFTDI_VERSION = 0.15.0
+PYTHON_PYLIBFTDI_SOURCE = pylibftdi-$(PYTHON_PYLIBFTDI_VERSION).tar.gz
+PYTHON_PYLIBFTDI_SITE = https://pypi.python.org/packages/e5/bb/d7a86dbd7685e3866ea75d21c6c726d01706fdc0aa5dc9051ce18ae65693
+PYTHON_PYLIBFTDI_LICENSE = MIT
+PYTHON_PYLIBFTDI_LICENSE_FILES = LICENSE.txt
+PYTHON_PYLIBFTDI_DEPENDENCIES = libftdi
+PYTHON_PYLIBFTDI_SETUP_TYPE = setuptools
+
+$(eval $(python-package))