[Python-checkins] gh-100221: Fix creating dirs in `make sharedinstall` (GH-100329)

miss-islington webhook-mailer at python.org
Wed Feb 8 11:51:08 EST 2023


https://github.com/python/cpython/commit/2a8bf2580441147f1a15e61229d669abc0ab86ee
commit: 2a8bf2580441147f1a15e61229d669abc0ab86ee
branch: main
author: Michał Górny <mgorny at gentoo.org>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2023-02-08T08:50:43-08:00
summary:

gh-100221: Fix creating dirs in `make sharedinstall` (GH-100329)



Fix creating install directories in `make sharedinstall` if they exist already outside `DESTDIR`.  The previous make rules assumed that the directories would be created via a dependency on a rule for `$(DESTSHARED)` that did not fire if the directory did exist outside `$(DESTDIR)`.

While technically `$(DESTDIR)` could be prepended to the rule name, moving the rules for creating directories straight into the `sharedinstall` rule seems to fit the common practices better. Since the rule explicitly checks whether the individual directories exist anyway, there seems to be no reason to rely on make determining that implicitly as well.

files:
A Misc/NEWS.d/next/Build/2022-12-18-08-33-28.gh-issue-100221.K94Ct3.rst
M Makefile.pre.in

diff --git a/Makefile.pre.in b/Makefile.pre.in
index 3641c4eeebee..2559df8e7495 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1816,7 +1816,15 @@ commoninstall:  check-clean-src @FRAMEWORKALTINSTALLFIRST@ \
 # Install shared libraries enabled by Setup
 DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
 
-sharedinstall: $(DESTSHARED) all
+sharedinstall: all
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
 		@for i in X $(SHAREDMODS); do \
 		  if test $$i != X; then \
 		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
@@ -1828,17 +1836,6 @@ sharedinstall: $(DESTSHARED) all
 		  fi; \
 		done
 
-
-$(DESTSHARED):
-		@for i in $(DESTDIRS); \
-		do \
-			if test ! -d $(DESTDIR)$$i; then \
-				echo "Creating directory $$i"; \
-				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
-			else    true; \
-			fi; \
-		done
-
 # Install the interpreter with $(VERSION) affixed
 # This goes into $(exec_prefix)
 altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@
diff --git a/Misc/NEWS.d/next/Build/2022-12-18-08-33-28.gh-issue-100221.K94Ct3.rst b/Misc/NEWS.d/next/Build/2022-12-18-08-33-28.gh-issue-100221.K94Ct3.rst
new file mode 100644
index 000000000000..27c948330cfc
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2022-12-18-08-33-28.gh-issue-100221.K94Ct3.rst
@@ -0,0 +1,2 @@
+Fix creating install directories in ``make sharedinstall`` if they exist
+outside ``DESTDIR`` already.



More information about the Python-checkins mailing list