aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2022-02-03 12:04:07 -0600
committerDavid Gibson <david@gibson.dropbear.id.au>2022-02-04 18:52:36 +1100
commitc001fc01a43e7a06447c06ea3d50bd60641322b8 (patch)
tree26440a76e179450c07084ddcfe65086e69b407d4
parent26c54f840d2340271f305c04f0d66bafac93274f (diff)
downloaddtc-c001fc01a43e7a06447c06ea3d50bd60641322b8.zip
dtc-c001fc01a43e7a06447c06ea3d50bd60641322b8.tar.gz
dtc-c001fc01a43e7a06447c06ea3d50bd60641322b8.tar.bz2
pylibfdt: fix swig build in install
A 'pip install' is silently broken unless the tree is dirty and contains pylibfdt/libfdt.py. The problem is a known issue[1] with SWIG and setuptools where the 'build_py' stage needing module.py runs before the 'build_ext' stage which generates it. The work-around is to override 'build_py' to run 'build_ext' first. [1] https://stackoverflow.com/questions/50239473/building-a-module-with-setuptools-and-swig Signed-off-by: Rob Herring <robh@kernel.org> Message-Id: <20220203180408.611645-2-robh@kernel.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--MANIFEST.in1
-rwxr-xr-xsetup.py8
2 files changed, 8 insertions, 1 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index ff8f5d6..0eee931 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,7 +6,6 @@ include GPL
include BSD-2-Clause
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/setup.py b/setup.py
index 029aa61..a8e54a3 100755
--- a/setup.py
+++ b/setup.py
@@ -11,6 +11,8 @@ Written by Simon Glass <sjg@chromium.org>
"""
from setuptools import setup, Extension
+from setuptools.command.build_py import build_py as _build_py
+
import os
import re
import sys
@@ -40,11 +42,17 @@ libfdt_module = Extension(
swig_opts=['-I' + os.path.join(srcdir, 'libfdt')],
)
+class build_py(_build_py):
+ def run(self):
+ self.run_command("build_ext")
+ return super().run()
+
setup(
name='libfdt',
use_scm_version={
"root": srcdir,
},
+ cmdclass = {'build_py' : build_py},
setup_requires = ['setuptools_scm'],
author='Simon Glass',
author_email='sjg@chromium.org',