From 662c204f36bbc871f14166d2965c81eb8fb34684 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 21 Feb 2024 12:00:45 +0800 Subject: [PATCH 1/2] Correct the install name for non-framework macOS libPython builds. --- Makefile.pre.in | 6 +++--- .../Build/2024-02-21-11-58-30.gh-issue-115737.dpNl2T.rst | 2 ++ configure | 8 ++++---- configure.ac | 8 ++++---- 4 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2024-02-21-11-58-30.gh-issue-115737.dpNl2T.rst diff --git a/Makefile.pre.in b/Makefile.pre.in index 66c4266b2f8f97..3b5c6855258918 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -184,7 +184,7 @@ PYTHONFRAMEWORK= @PYTHONFRAMEWORK@ PYTHONFRAMEWORKDIR= @PYTHONFRAMEWORKDIR@ PYTHONFRAMEWORKPREFIX= @PYTHONFRAMEWORKPREFIX@ PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@ -PYTHONFRAMEWORKINSTALLNAMEPREFIX= @PYTHONFRAMEWORKINSTALLNAMEPREFIX@ +DYLIBINSTALLNAMEPREFIX= @DYLIBINSTALLNAMEPREFIX@ RESSRCDIR= @RESSRCDIR@ # Deployment target selected during configure, to be checked # by distutils. The export statement is needed to ensure that the @@ -869,7 +869,7 @@ libpython3.so: libpython$(LDVERSION).so $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ libpython$(LDVERSION).dylib: $(LIBRARY_OBJS) - $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ + $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(DYLIBINSTALLNAMEPREFIX)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ libpython$(VERSION).sl: $(LIBRARY_OBJS) @@ -900,7 +900,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ -all_load $(LIBRARY) \ - -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ + -install_name $(DESTDIR)$(DYLIBINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ -compatibility_version $(VERSION) \ -current_version $(VERSION) \ -framework CoreFoundation $(LIBS); diff --git a/Misc/NEWS.d/next/Build/2024-02-21-11-58-30.gh-issue-115737.dpNl2T.rst b/Misc/NEWS.d/next/Build/2024-02-21-11-58-30.gh-issue-115737.dpNl2T.rst new file mode 100644 index 00000000000000..112f65258dd84b --- /dev/null +++ b/Misc/NEWS.d/next/Build/2024-02-21-11-58-30.gh-issue-115737.dpNl2T.rst @@ -0,0 +1,2 @@ +The install name for libPython is now correctly set for non-framework macOS +builds. diff --git a/configure b/configure index ba2d49df7c65fe..b3a3a72ca410ef 100755 --- a/configure +++ b/configure @@ -981,7 +981,7 @@ FRAMEWORKALTINSTALLFIRST FRAMEWORKINSTALLLAST FRAMEWORKINSTALLFIRST RESSRCDIR -PYTHONFRAMEWORKINSTALLNAMEPREFIX +DYLIBINSTALLNAMEPREFIX PYTHONFRAMEWORKINSTALLDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKDIR @@ -4201,7 +4201,7 @@ then : PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - PYTHONFRAMEWORKINSTALLNAMEPREFIX= + DYLIBINSTALLNAMEPREFIX=${prefix} RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= @@ -4273,7 +4273,7 @@ then : esac prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION - PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix} + DYLIBINSTALLNAMEPREFIX=${prefix} RESSRCDIR=Mac/Resources/framework # Add files for Mac specific code to the list of output @@ -4299,7 +4299,7 @@ else $as_nop PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - PYTHONFRAMEWORKINSTALLNAMEPREFIX= + DYLIBINSTALLNAMEPREFIX=${prefix} RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= diff --git a/configure.ac b/configure.ac index b39af7422c4c7c..6d05983cab3db9 100644 --- a/configure.ac +++ b/configure.ac @@ -492,7 +492,7 @@ AC_ARG_ENABLE([framework], PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - PYTHONFRAMEWORKINSTALLNAMEPREFIX= + DYLIBINSTALLNAMEPREFIX=${prefix} RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= @@ -564,7 +564,7 @@ AC_ARG_ENABLE([framework], esac prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION - PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix} + DYLIBINSTALLNAMEPREFIX=${prefix} RESSRCDIR=Mac/Resources/framework # Add files for Mac specific code to the list of output @@ -584,7 +584,7 @@ AC_ARG_ENABLE([framework], PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - PYTHONFRAMEWORKINSTALLNAMEPREFIX= + DYLIBINSTALLNAMEPREFIX=${prefix} RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= @@ -605,7 +605,7 @@ AC_SUBST([PYTHONFRAMEWORKIDENTIFIER]) AC_SUBST([PYTHONFRAMEWORKDIR]) AC_SUBST([PYTHONFRAMEWORKPREFIX]) AC_SUBST([PYTHONFRAMEWORKINSTALLDIR]) -AC_SUBST([PYTHONFRAMEWORKINSTALLNAMEPREFIX]) +AC_SUBST([DYLIBINSTALLNAMEPREFIX]) AC_SUBST([RESSRCDIR]) AC_SUBST([FRAMEWORKINSTALLFIRST]) AC_SUBST([FRAMEWORKINSTALLLAST]) From b1a161f77b20f2aff5d04b7cbd08f6909f467517 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 21 Feb 2024 16:41:23 +0800 Subject: [PATCH 2/2] Revert the DYLIBINSTALLNAMEPREFIX rename in favor of cleaning up the dylib target. --- Makefile.pre.in | 6 +++--- configure | 8 ++++---- configure.ac | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 3b5c6855258918..8130921b633e53 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -184,7 +184,7 @@ PYTHONFRAMEWORK= @PYTHONFRAMEWORK@ PYTHONFRAMEWORKDIR= @PYTHONFRAMEWORKDIR@ PYTHONFRAMEWORKPREFIX= @PYTHONFRAMEWORKPREFIX@ PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@ -DYLIBINSTALLNAMEPREFIX= @DYLIBINSTALLNAMEPREFIX@ +PYTHONFRAMEWORKINSTALLNAMEPREFIX= @PYTHONFRAMEWORKINSTALLNAMEPREFIX@ RESSRCDIR= @RESSRCDIR@ # Deployment target selected during configure, to be checked # by distutils. The export statement is needed to ensure that the @@ -869,7 +869,7 @@ libpython3.so: libpython$(LDVERSION).so $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ libpython$(LDVERSION).dylib: $(LIBRARY_OBJS) - $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(DYLIBINSTALLNAMEPREFIX)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ + $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ libpython$(VERSION).sl: $(LIBRARY_OBJS) @@ -900,7 +900,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ -all_load $(LIBRARY) \ - -install_name $(DESTDIR)$(DYLIBINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ + -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ -compatibility_version $(VERSION) \ -current_version $(VERSION) \ -framework CoreFoundation $(LIBS); diff --git a/configure b/configure index b3a3a72ca410ef..ba2d49df7c65fe 100755 --- a/configure +++ b/configure @@ -981,7 +981,7 @@ FRAMEWORKALTINSTALLFIRST FRAMEWORKINSTALLLAST FRAMEWORKINSTALLFIRST RESSRCDIR -DYLIBINSTALLNAMEPREFIX +PYTHONFRAMEWORKINSTALLNAMEPREFIX PYTHONFRAMEWORKINSTALLDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKDIR @@ -4201,7 +4201,7 @@ then : PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - DYLIBINSTALLNAMEPREFIX=${prefix} + PYTHONFRAMEWORKINSTALLNAMEPREFIX= RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= @@ -4273,7 +4273,7 @@ then : esac prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION - DYLIBINSTALLNAMEPREFIX=${prefix} + PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix} RESSRCDIR=Mac/Resources/framework # Add files for Mac specific code to the list of output @@ -4299,7 +4299,7 @@ else $as_nop PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - DYLIBINSTALLNAMEPREFIX=${prefix} + PYTHONFRAMEWORKINSTALLNAMEPREFIX= RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= diff --git a/configure.ac b/configure.ac index 6d05983cab3db9..b39af7422c4c7c 100644 --- a/configure.ac +++ b/configure.ac @@ -492,7 +492,7 @@ AC_ARG_ENABLE([framework], PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - DYLIBINSTALLNAMEPREFIX=${prefix} + PYTHONFRAMEWORKINSTALLNAMEPREFIX= RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= @@ -564,7 +564,7 @@ AC_ARG_ENABLE([framework], esac prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION - DYLIBINSTALLNAMEPREFIX=${prefix} + PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix} RESSRCDIR=Mac/Resources/framework # Add files for Mac specific code to the list of output @@ -584,7 +584,7 @@ AC_ARG_ENABLE([framework], PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= - DYLIBINSTALLNAMEPREFIX=${prefix} + PYTHONFRAMEWORKINSTALLNAMEPREFIX= RESSRCDIR= FRAMEWORKINSTALLFIRST= FRAMEWORKINSTALLLAST= @@ -605,7 +605,7 @@ AC_SUBST([PYTHONFRAMEWORKIDENTIFIER]) AC_SUBST([PYTHONFRAMEWORKDIR]) AC_SUBST([PYTHONFRAMEWORKPREFIX]) AC_SUBST([PYTHONFRAMEWORKINSTALLDIR]) -AC_SUBST([DYLIBINSTALLNAMEPREFIX]) +AC_SUBST([PYTHONFRAMEWORKINSTALLNAMEPREFIX]) AC_SUBST([RESSRCDIR]) AC_SUBST([FRAMEWORKINSTALLFIRST]) AC_SUBST([FRAMEWORKINSTALLLAST])