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>
This commit is contained in:
parent
69a760747d
commit
23b56cb7e1
5 changed files with 24 additions and 11 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -22,3 +22,7 @@ lex.yy.c
|
|||
# cscope files
|
||||
cscope.*
|
||||
ncscope.*
|
||||
|
||||
.eggs/
|
||||
build/
|
||||
dist/
|
||||
|
|
9
MANIFEST.in
Normal file
9
MANIFEST.in
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'],
|
||||
)
|
Loading…
Reference in a new issue