diff options
-rw-r--r-- | Makefile.pre.in | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Build/2021-10-21-14-38-30.bpo-45561.PVqhZE.rst | 1 | ||||
-rwxr-xr-x | Tools/scripts/smelly.py | 9 |
3 files changed, 8 insertions, 4 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in index ae6555c..8601422 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1962,7 +1962,7 @@ distclean: clobber # Check that all symbols exported by libpython start with "Py" or "_Py" smelly: @DEF_MAKE_RULE@ - $(RUNSHARED) ./$(BUILDPYTHON) Tools/scripts/smelly.py + $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/smelly.py # Find files with funny names funny: diff --git a/Misc/NEWS.d/next/Build/2021-10-21-14-38-30.bpo-45561.PVqhZE.rst b/Misc/NEWS.d/next/Build/2021-10-21-14-38-30.bpo-45561.PVqhZE.rst new file mode 100644 index 0000000..cf5d868 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-10-21-14-38-30.bpo-45561.PVqhZE.rst @@ -0,0 +1 @@ +Run smelly.py tool from $(srcdir). diff --git a/Tools/scripts/smelly.py b/Tools/scripts/smelly.py index fb01660..276a5ab 100755 --- a/Tools/scripts/smelly.py +++ b/Tools/scripts/smelly.py @@ -108,8 +108,11 @@ def check_library(library, dynamic=False): def check_extensions(): print(__file__) - srcdir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) - filename = os.path.join(srcdir, "pybuilddir.txt") + # This assumes pybuilddir.txt is in same directory as pyconfig.h. + # In the case of out-of-tree builds, we can't assume pybuilddir.txt is + # in the source folder. + config_dir = os.path.dirname(sysconfig.get_config_h_filename()) + filename = os.path.join(config_dir, "pybuilddir.txt") try: with open(filename, encoding="utf-8") as fp: pybuilddir = fp.readline() @@ -118,7 +121,7 @@ def check_extensions(): return True print(f"Check extension modules from {pybuilddir} directory") - builddir = os.path.join(srcdir, pybuilddir) + builddir = os.path.join(config_dir, pybuilddir) nsymbol = 0 for name in os.listdir(builddir): if not name.endswith(".so"): |