aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2021-11-10 19:11:35 -0600
committerDavid Gibson <david@gibson.dropbear.id.au>2021-11-11 14:34:51 +1100
commit23b56cb7e18992650c79a04c9e4e3f2740bc1fbd (patch)
tree363e29f2432274227523b065fba92dbec8012b08 /setup.py
parent69a760747d8d9d1c5dcceebc05e868e1eaf13a2b (diff)
downloaddtc-23b56cb7e18992650c79a04c9e4e3f2740bc1fbd.zip
dtc-23b56cb7e18992650c79a04c9e4e3f2740bc1fbd.tar.gz
dtc-23b56cb7e18992650c79a04c9e4e3f2740bc1fbd.tar.bz2
pylibfdt: Move setup.py to the top level
Using 'pip' and several setup.py sub-commands currently don't work with pylibfdt. The primary reason is Python packaging has opinions on the directory structure of repositories and one of those appears to be the inability to reference source files outside of setup.py's subtree. This means a sdist cannot be created with all necessary source components (i.e. libfdt headers). Moving setup.py to the top-level solves these problems. With this change. the following commands now work: Creating packages for pypi.org: ./setup.py sdist bdist_wheel Using pip for installs: pip install . pip install git+http://github.com/robherring/dtc.git@pypi-v2 Signed-off-by: Rob Herring <robh@kernel.org> Message-Id: <20211111011135.2386773-5-robh@kernel.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'setup.py')
-rwxr-xr-xsetup.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..4b07be9
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+
+# While Python 3 is the default, it's also possible to invoke
+# this setup.py script with Python 2.
+
+"""
+setup.py file for SWIG libfdt
+Copyright (C) 2017 Google, Inc.
+Written by Simon Glass <sjg@chromium.org>
+"""
+
+from setuptools import setup, Extension
+import os
+import re
+import sys
+
+srcdir = os.path.dirname(__file__)
+
+def get_top_builddir():
+ if '--top-builddir' in sys.argv:
+ index = sys.argv.index('--top-builddir')
+ sys.argv.pop(index)
+ return sys.argv.pop(index)
+ else:
+ return srcdir
+
+top_builddir = get_top_builddir()
+
+libfdt_module = Extension(
+ '_libfdt',
+ sources=[os.path.join(srcdir, 'pylibfdt/libfdt.i')],
+ include_dirs=[os.path.join(srcdir, 'libfdt')],
+ libraries=['fdt'],
+ library_dirs=[os.path.join(top_builddir, 'libfdt')],
+ swig_opts=['-I' + os.path.join(srcdir, 'libfdt')],
+)
+
+setup(
+ name='libfdt',
+ use_scm_version={
+ "root": srcdir,
+ },
+ setup_requires = ['setuptools_scm'],
+ author='Simon Glass',
+ author_email='sjg@chromium.org',
+ description='Python binding for libfdt',
+ ext_modules=[libfdt_module],
+ package_dir={'': os.path.join(srcdir, 'pylibfdt')},
+ py_modules=['libfdt'],
+)