]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-100221: Fix creating dirs in `make sharedinstall` (GH-100329)
authorMichał Górny <mgorny@gentoo.org>
Wed, 8 Feb 2023 16:50:43 +0000 (17:50 +0100)
committerGitHub <noreply@github.com>
Wed, 8 Feb 2023 16:50:43 +0000 (08:50 -0800)
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.

Makefile.pre.in
Misc/NEWS.d/next/Build/2022-12-18-08-33-28.gh-issue-100221.K94Ct3.rst [new file with mode: 0644]

index 3641c4eeebeee39bd832711358a0b016e8d9c2c2..2559df8e74952cc9f7d0cd32aa8d6cf5e32e4ef8 100644 (file)
@@ -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 (file)
index 0000000..27c9483
--- /dev/null
@@ -0,0 +1,2 @@
+Fix creating install directories in ``make sharedinstall`` if they exist
+outside ``DESTDIR`` already.