]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-45561: Run smelly.py tool from $(srcdir) (GH-29138)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 23 Nov 2021 10:32:31 +0000 (02:32 -0800)
committerGitHub <noreply@github.com>
Tue, 23 Nov 2021 10:32:31 +0000 (02:32 -0800)
(cherry picked from commit 457e6a6e96b5afad403a0bc892508a77beef4d33)

Co-authored-by: Neil Schemenauer <nas-github@arctrix.com>
Makefile.pre.in
Misc/NEWS.d/next/Build/2021-10-21-14-38-30.bpo-45561.PVqhZE.rst [new file with mode: 0644]
Tools/scripts/smelly.py

index ae6555c8e2fe143016fb62d1414858a779bb30ca..86014227c3387fefd0a49c1b2acde1ed2bbf499f 100644 (file)
@@ -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 (file)
index 0000000..cf5d868
--- /dev/null
@@ -0,0 +1 @@
+Run smelly.py tool from $(srcdir).
index fb01660dea33ae9fc1008e5cdc1c365687925bc0..276a5ab2cc84c664e202d1343ba6c75cf3feed64 100755 (executable)
@@ -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"):