From 5c86f76a143523398823766a918bd5a64c0b325e Mon Sep 17 00:00:00 2001
From: "Travis F. Collins" <travis.collins@analog.com>
Date: Mon, 8 Jun 2020 09:22:44 -0700
Subject: [PATCH] Add support for DESTDIR for python builds
This fixes #545 when running `make DESTDIR=./some/folder install`. If
DESTDIR is set we will try to find the library in that path.
Signed-off-by: Travis F. Collins <travis.collins@analog.com>
---
bindings/python/setup.py.cmakein | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/bindings/python/setup.py.cmakein b/bindings/python/setup.py.cmakein
index 26ba8aed..dd40c11c 100644
--- a/bindings/python/setup.py.cmakein
+++ b/bindings/python/setup.py.cmakein
@@ -35,6 +35,15 @@ except:
long_description = description
+def find_recursive(folder, filename):
+ import os
+
+ for root, dirs, files in os.walk(folder):
+ for file in files:
+ if file == filename:
+ return os.path.join(root, file)
+
+
class InstallWrapper(install):
"""Before installing we check if the
libiio library is actually installed"""
@@ -55,7 +64,15 @@ class InstallWrapper(install):
# Non-windows, possibly Posix system
_iiolib = "iio"
try:
- _lib = _cdll(find_library(_iiolib), use_errno=True, use_last_error=True)
+ import os
+
+ destdir = os.getenv("DESTDIR", "")
+ if destdir:
+ destdir = os.path.join("${CMAKE_BINARY_DIR}", destdir)
+ out = find_recursive(destdir, "libiio.so")
+ _lib = _cdll(out, use_errno=True, use_last_error=True)
+ else:
+ _lib = _cdll(find_library(_iiolib), use_errno=True, use_last_error=True)
if not _lib._name:
raise OSError
except OSError: