On Thu, Feb 03, 2022 at 12:04:07PM -0600, Rob Herring wrote: > 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@xxxxxxxxxx> Applied, thanks. > --- > MANIFEST.in | 1 - > setup.py | 8 ++++++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/MANIFEST.in b/MANIFEST.in > index d9fb71b77a65..6e7244d195e6 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 029aa6182221..a8e54a361512 100755 > --- a/setup.py > +++ b/setup.py > @@ -11,6 +11,8 @@ Written by Simon Glass <sjg@xxxxxxxxxxxx> > """ > > 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@xxxxxxxxxxxx', -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature