* [Buildroot] [PATCH 2/2] support/testing: add libiio python bindings runtime test
2025-12-22 17:26 [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils Marcus Hoffmann via buildroot
@ 2025-12-22 17:26 ` Marcus Hoffmann via buildroot
2026-01-07 17:50 ` Arnout Vandecappelle via buildroot
2025-12-24 1:39 ` [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils Fiona Klute via buildroot
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Marcus Hoffmann via buildroot @ 2025-12-22 17:26 UTC (permalink / raw)
To: buildroot
Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
---
.../tests/package/sample_libiio_bindings_python.py | 3 +++
.../tests/package/test_libiio_bindings_python.py | 13 +++++++++++++
2 files changed, 16 insertions(+)
create mode 100644 support/testing/tests/package/sample_libiio_bindings_python.py
create mode 100644 support/testing/tests/package/test_libiio_bindings_python.py
diff --git a/support/testing/tests/package/sample_libiio_bindings_python.py b/support/testing/tests/package/sample_libiio_bindings_python.py
new file mode 100644
index 0000000000..74452192c2
--- /dev/null
+++ b/support/testing/tests/package/sample_libiio_bindings_python.py
@@ -0,0 +1,3 @@
+import iio
+
+assert len(iio.scan_contexts()) == 1
diff --git a/support/testing/tests/package/test_libiio_bindings_python.py b/support/testing/tests/package/test_libiio_bindings_python.py
new file mode 100644
index 0000000000..e8cf5c3d13
--- /dev/null
+++ b/support/testing/tests/package/test_libiio_bindings_python.py
@@ -0,0 +1,13 @@
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestLibiioBindingsPython(TestPythonPackageBase):
+ __test__ = True
+ config = TestPythonPackageBase.config + \
+ """
+ BR2_PACKAGE_PYTHON3=y
+ BR2_PACKAGE_LIBIIO=y
+ BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
+ """
+ sample_scripts = ["tests/package/sample_libiio_bindings_python.py"]
+ timeout = 10
--
2.52.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [Buildroot] [PATCH 2/2] support/testing: add libiio python bindings runtime test
2025-12-22 17:26 ` [Buildroot] [PATCH 2/2] support/testing: add libiio python bindings runtime test Marcus Hoffmann via buildroot
@ 2026-01-07 17:50 ` Arnout Vandecappelle via buildroot
0 siblings, 0 replies; 7+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2026-01-07 17:50 UTC (permalink / raw)
To: Marcus Hoffmann; +Cc: Arnout Vandecappelle, buildroot
In reply of:
> Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
Applied to 2025.02.x and 2025.11.x. Thanks
> ---
> .../tests/package/sample_libiio_bindings_python.py | 3 +++
> .../tests/package/test_libiio_bindings_python.py | 13 +++++++++++++
> 2 files changed, 16 insertions(+)
> create mode 100644 support/testing/tests/package/sample_libiio_bindings_python.py
> create mode 100644 support/testing/tests/package/test_libiio_bindings_python.py
>
> diff --git a/support/testing/tests/package/sample_libiio_bindings_python.py b/support/testing/tests/package/sample_libiio_bindings_python.py
> new file mode 100644
> index 0000000000..74452192c2
> --- /dev/null
> +++ b/support/testing/tests/package/sample_libiio_bindings_python.py
> @@ -0,0 +1,3 @@
> +import iio
> +
> +assert len(iio.scan_contexts()) == 1
> diff --git a/support/testing/tests/package/test_libiio_bindings_python.py b/support/testing/tests/package/test_libiio_bindings_python.py
> new file mode 100644
> index 0000000000..e8cf5c3d13
> --- /dev/null
> +++ b/support/testing/tests/package/test_libiio_bindings_python.py
> @@ -0,0 +1,13 @@
> +from tests.package.test_python import TestPythonPackageBase
> +
> +
> +class TestLibiioBindingsPython(TestPythonPackageBase):
> + __test__ = True
> + config = TestPythonPackageBase.config + \
> + """
> + BR2_PACKAGE_PYTHON3=y
> + BR2_PACKAGE_LIBIIO=y
> + BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
> + """
> + sample_scripts = ["tests/package/sample_libiio_bindings_python.py"]
> + timeout = 10
> --
> 2.52.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils
2025-12-22 17:26 [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils Marcus Hoffmann via buildroot
2025-12-22 17:26 ` [Buildroot] [PATCH 2/2] support/testing: add libiio python bindings runtime test Marcus Hoffmann via buildroot
@ 2025-12-24 1:39 ` Fiona Klute via buildroot
2025-12-27 15:57 ` Thomas Petazzoni via buildroot
2026-01-07 17:50 ` Arnout Vandecappelle via buildroot
3 siblings, 0 replies; 7+ messages in thread
From: Fiona Klute via buildroot @ 2025-12-24 1:39 UTC (permalink / raw)
To: Marcus Hoffmann, buildroot; +Cc: Paul Cercueil
Am 22.12.25 um 18:26 schrieb Marcus Hoffmann via buildroot:
> Libiio python bindings use ctypes and specifically the find_library()
> function from there to load the libiio.so shared library. This is not
> working unless glibc utils (specifically ldconfig) is installed to the
> target (alternatively the target would need gcc or binutils, for objdump
> or ld).
>
> The easy fix here is to just bypass the find_library() machinery
> altogether as it's not needed on a buildroot system.
>
> Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
Tested-by: Fiona Klute <fiona.klute@gmx.de>
The issue also affects musl, where ldconfig simply doesn't exist. It's
clearly a bug in Python (where an open PR exists for years [1], and
Alpine has been carrying a musl-specific patch for >10 years by now),
but I think it's good to apply a workaround that's so simple.
Thank you,
Fiona
[1] https://github.com/python/cpython/pull/18380
> ---
> ...-bindings-python-fix-library-loading.patch | 41 +++++++++++++++++++
> 1 file changed, 41 insertions(+)
> create mode 100644 package/libiio/0001-bindings-python-fix-library-loading.patch
>
> diff --git a/package/libiio/0001-bindings-python-fix-library-loading.patch b/package/libiio/0001-bindings-python-fix-library-loading.patch
> new file mode 100644
> index 0000000000..f8715b4c5b
> --- /dev/null
> +++ b/package/libiio/0001-bindings-python-fix-library-loading.patch
> @@ -0,0 +1,41 @@
> +From 4d4d17e2810f793b9f7fd8acad2a3c551dbff2b5 Mon Sep 17 00:00:00 2001
> +From: Marcus Hoffmann <marcus.hoffmann@othermo.de>
> +Date: Fri, 31 Mar 2023 20:13:07 +0200
> +Subject: [PATCH] bindings: python: fix library loading
> +
> +On Linux the find_library() function requires ld, gcc, objdump
> +or ldconfig on the target, which might not be present on a
> +buildroot system. [1]
> +We do not actually need this function at all, as we know the iio library
> +will be referencable in the system under the name "libiio.so".
> +So instead of kicking of this complicated cross-platform/cross-distro
> +compatible machinery, we just pass in the name of the library we already
> +know.
> +
> +[1] https://docs.python.org/3/library/ctypes.html#finding-shared-libraries
> +
> +Upstream: N/A, buildroot doesn't have to care about different OS's and
> +distro setups, so we can just hardcode the lib name, but we cannot
> +submit that upstream.
> +
> +Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
> +---
> + bindings/python/iio.py | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/bindings/python/iio.py b/bindings/python/iio.py
> +index b91260cc..bde17694 100644
> +--- a/bindings/python/iio.py
> ++++ b/bindings/python/iio.py
> +@@ -224,7 +224,7 @@ else:
> + # Non-windows, possibly Posix system
> + _iiolib = "iio"
> +
> +-_lib = _cdll(find_library(_iiolib), use_errno=True, use_last_error=True)
> ++_lib = _cdll("libiio.so", use_errno=True, use_last_error=True)
> +
> + _get_backends_count = _lib.iio_get_backends_count
> + _get_backends_count.restype = c_uint
> +--
> +2.25.1
> +
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils
2025-12-22 17:26 [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils Marcus Hoffmann via buildroot
2025-12-22 17:26 ` [Buildroot] [PATCH 2/2] support/testing: add libiio python bindings runtime test Marcus Hoffmann via buildroot
2025-12-24 1:39 ` [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils Fiona Klute via buildroot
@ 2025-12-27 15:57 ` Thomas Petazzoni via buildroot
2025-12-30 23:18 ` Fiona Klute via buildroot
2026-01-07 17:50 ` Arnout Vandecappelle via buildroot
3 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-12-27 15:57 UTC (permalink / raw)
To: Marcus Hoffmann via buildroot; +Cc: Marcus Hoffmann, Paul Cercueil
Hello Marcus,
On Mon, 22 Dec 2025 18:26:36 +0100
Marcus Hoffmann via buildroot <buildroot@buildroot.org> wrote:
> Libiio python bindings use ctypes and specifically the find_library()
> function from there to load the libiio.so shared library. This is not
> working unless glibc utils (specifically ldconfig) is installed to the
> target (alternatively the target would need gcc or binutils, for objdump
> or ld).
>
> The easy fix here is to just bypass the find_library() machinery
> altogether as it's not needed on a buildroot system.
>
> Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
> ---
> ...-bindings-python-fix-library-loading.patch | 41 +++++++++++++++++++
> 1 file changed, 41 insertions(+)
> create mode 100644 package/libiio/0001-bindings-python-fix-library-loading.patch
Thanks, I have applied both patches. However I must admit that for
PATCH 1/2, I would probably have preferred to backport the on-going PR
on cpython, which fixes the problem for all cases, not just libiio.
Reading the discussion on the PR, I think it was improperly presented
as being needed for "musl", and used only for musl. I would suggest to
not present it as something musl-specific, but rather something that
makes the lookup for the C/C++ libraries more portable (and therefore
probably drop using ldconfig entirely). This would have addressed the
concern raised on the PR that this is musl specific, and musl is not a
supported platform, yadayadayada.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils
2025-12-27 15:57 ` Thomas Petazzoni via buildroot
@ 2025-12-30 23:18 ` Fiona Klute via buildroot
0 siblings, 0 replies; 7+ messages in thread
From: Fiona Klute via buildroot @ 2025-12-30 23:18 UTC (permalink / raw)
To: Thomas Petazzoni, Marcus Hoffmann via buildroot
Cc: Marcus Hoffmann, Paul Cercueil
Am 27.12.25 um 16:57 schrieb Thomas Petazzoni via buildroot:
> Hello Marcus,
>
> On Mon, 22 Dec 2025 18:26:36 +0100
> Marcus Hoffmann via buildroot <buildroot@buildroot.org> wrote:
>
>> Libiio python bindings use ctypes and specifically the find_library()
>> function from there to load the libiio.so shared library. This is not
>> working unless glibc utils (specifically ldconfig) is installed to the
>> target (alternatively the target would need gcc or binutils, for objdump
>> or ld).
>>
>> The easy fix here is to just bypass the find_library() machinery
>> altogether as it's not needed on a buildroot system.
>>
>> Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
>> ---
>> ...-bindings-python-fix-library-loading.patch | 41 +++++++++++++++++++
>> 1 file changed, 41 insertions(+)
>> create mode 100644 package/libiio/0001-bindings-python-fix-library-loading.patch
>
> Thanks, I have applied both patches. However I must admit that for
> PATCH 1/2, I would probably have preferred to backport the on-going PR
> on cpython, which fixes the problem for all cases, not just libiio.
>
> Reading the discussion on the PR, I think it was improperly presented
> as being needed for "musl", and used only for musl. I would suggest to
> not present it as something musl-specific, but rather something that
> makes the lookup for the C/C++ libraries more portable (and therefore
> probably drop using ldconfig entirely). This would have addressed the
> concern raised on the PR that this is musl specific, and musl is not a
> supported platform, yadayadayada.
Unfortunately the CPython PR [1] as it is actually *is* musl specific,
importing it would only help for musl-based systems (fine for my builds,
but not a general solution). The current ctypes.util.find_library()
implementation using glibc executables has issues beyond musl
compatibility as Marcus' point about missing ldconfig shows, but that
hasn't even been mentioned in the PR discussion.
Best regards,
Fiona
[1] https://github.com/python/cpython/pull/18380
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils
2025-12-22 17:26 [Buildroot] [PATCH 1/2] package/libiio: fix python bindings without glibc utils Marcus Hoffmann via buildroot
` (2 preceding siblings ...)
2025-12-27 15:57 ` Thomas Petazzoni via buildroot
@ 2026-01-07 17:50 ` Arnout Vandecappelle via buildroot
3 siblings, 0 replies; 7+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2026-01-07 17:50 UTC (permalink / raw)
To: Marcus Hoffmann; +Cc: Arnout Vandecappelle, buildroot
In reply of:
> Libiio python bindings use ctypes and specifically the find_library()
> function from there to load the libiio.so shared library. This is not
> working unless glibc utils (specifically ldconfig) is installed to the
> target (alternatively the target would need gcc or binutils, for objdump
> or ld).
>
> The easy fix here is to just bypass the find_library() machinery
> altogether as it's not needed on a buildroot system.
>
> Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
Applied to 2025.02.x and 2025.11.x. Thanks
> ---
> ...-bindings-python-fix-library-loading.patch | 41 +++++++++++++++++++
> 1 file changed, 41 insertions(+)
> create mode 100644 package/libiio/0001-bindings-python-fix-library-loading.patch
>
> diff --git a/package/libiio/0001-bindings-python-fix-library-loading.patch b/package/libiio/0001-bindings-python-fix-library-loading.patch
> new file mode 100644
> index 0000000000..f8715b4c5b
> --- /dev/null
> +++ b/package/libiio/0001-bindings-python-fix-library-loading.patch
> @@ -0,0 +1,41 @@
> +From 4d4d17e2810f793b9f7fd8acad2a3c551dbff2b5 Mon Sep 17 00:00:00 2001
> +From: Marcus Hoffmann <marcus.hoffmann@othermo.de>
> +Date: Fri, 31 Mar 2023 20:13:07 +0200
> +Subject: [PATCH] bindings: python: fix library loading
> +
> +On Linux the find_library() function requires ld, gcc, objdump
> +or ldconfig on the target, which might not be present on a
> +buildroot system. [1]
> +We do not actually need this function at all, as we know the iio library
> +will be referencable in the system under the name "libiio.so".
> +So instead of kicking of this complicated cross-platform/cross-distro
> +compatible machinery, we just pass in the name of the library we already
> +know.
> +
> +[1] https://docs.python.org/3/library/ctypes.html#finding-shared-libraries
> +
> +Upstream: N/A, buildroot doesn't have to care about different OS's and
> +distro setups, so we can just hardcode the lib name, but we cannot
> +submit that upstream.
> +
> +Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
> +---
> + bindings/python/iio.py | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/bindings/python/iio.py b/bindings/python/iio.py
> +index b91260cc..bde17694 100644
> +--- a/bindings/python/iio.py
> ++++ b/bindings/python/iio.py
> +@@ -224,7 +224,7 @@ else:
> + # Non-windows, possibly Posix system
> + _iiolib = "iio"
> +
> +-_lib = _cdll(find_library(_iiolib), use_errno=True, use_last_error=True)
> ++_lib = _cdll("libiio.so", use_errno=True, use_last_error=True)
> +
> + _get_backends_count = _lib.iio_get_backends_count
> + _get_backends_count.restype = c_uint
> +--
> +2.25.1
> +
> --
> 2.52.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 7+ messages in thread