aboutsummaryrefslogtreecommitdiffstats
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
parent69a760747d8d9d1c5dcceebc05e868e1eaf13a2b (diff)
downloaddtc-23b56cb7e18992650c79a04c9e4e3f2740bc1fbd.tar.gz
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>
-rw-r--r--.gitignore4
-rw-r--r--MANIFEST.in9
-rw-r--r--pylibfdt/Makefile.pylibfdt3
-rw-r--r--pylibfdt/meson.build4
-rwxr-xr-xsetup.py (renamed from pylibfdt/setup.py)15
5 files changed, 24 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
index 8e332d8..416fa05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,7 @@ lex.yy.c
# cscope files
cscope.*
ncscope.*
+
+.eggs/
+build/
+dist/
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..9e6c4ac
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+
+global-exclude *
+include setup.py
+include pylibfdt/libfdt.i
+include pylibfdt/*.py
+include libfdt/libfdt.h
+include libfdt/fdt.h
+include libfdt/libfdt_env.h
diff --git a/pylibfdt/Makefile.pylibfdt b/pylibfdt/Makefile.pylibfdt
index 015a05e..82f565e 100644
--- a/pylibfdt/Makefile.pylibfdt
+++ b/pylibfdt/Makefile.pylibfdt
@@ -9,8 +9,7 @@ PYLIBFDT_CLEANFILES = $(PYLIBFDT_CLEANFILES_L:%=$(PYLIBFDT_dir)/%)
PYLIBFDT_CLEANDIRS_L = build __pycache__
PYLIBFDT_CLEANDIRS = $(PYLIBFDT_CLEANDIRS_L:%=$(PYLIBFDT_dir)/%)
-SETUP = $(PYLIBFDT_dir)/setup.py
-SETUPFLAGS = --top-builddir .
+SETUP = ./setup.py
ifndef V
SETUPFLAGS += --quiet
diff --git a/pylibfdt/meson.build b/pylibfdt/meson.build
index fad5aa1..f684cbb 100644
--- a/pylibfdt/meson.build
+++ b/pylibfdt/meson.build
@@ -1,5 +1,5 @@
-setup_py = find_program('setup.py')
-setup_py = [setup_py.path(), '--quiet', '--top-builddir', meson.current_build_dir() / '..']
+setup_py = find_program('../setup.py')
+setup_py = [setup_py.path(), '--quiet', '--top-builddir', meson.project_build_root()]
custom_target(
'pylibfdt',
diff --git a/pylibfdt/setup.py b/setup.py
index 75ce09a..4b07be9 100755
--- a/pylibfdt/setup.py
+++ b/setup.py
@@ -15,36 +15,37 @@ 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 os.getcwd()
+ return srcdir
-srcdir = os.path.dirname(os.path.abspath(sys.argv[0]))
top_builddir = get_top_builddir()
libfdt_module = Extension(
'_libfdt',
- sources=[os.path.join(srcdir, 'libfdt.i')],
- include_dirs=[os.path.join(srcdir, '../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')],
+ swig_opts=['-I' + os.path.join(srcdir, 'libfdt')],
)
setup(
name='libfdt',
use_scm_version={
- "root": os.path.join(srcdir, '..'),
+ "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={'': srcdir},
+ package_dir={'': os.path.join(srcdir, 'pylibfdt')},
py_modules=['libfdt'],
)