@@ -463,7 +463,6 @@ PYTHON_INSTALL_VERSION-$(sdk)=$$(PYTHON_FRAMEWORK-$(sdk))/Versions/$(PYTHON_VER)
463463PYTHON_LIB-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /Python
464464PYTHON_INCLUDE-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /include/python$(PYTHON_VER )
465465PYTHON_MODULEMAP-$(sdk) =$$(PYTHON_INCLUDE-$(sdk ) ) /module.modulemap
466- PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /lib/python$(PYTHON_VER )
467466
468467else
469468# Non-macOS builds need to be merged on a per-SDK basis. The merge covers:
@@ -478,7 +477,6 @@ PYTHON_FRAMEWORK-$(sdk)=$$(PYTHON_INSTALL-$(sdk))/Python.framework
478477PYTHON_LIB-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Python
479478PYTHON_BIN-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /bin
480479PYTHON_INCLUDE-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Headers
481- PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /lib/python$(PYTHON_VER )
482480PYTHON_PLATFORM_CONFIG-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /platform-config
483481
484482$$(PYTHON_LIB-$(sdk ) ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_LIB-$$(target ) ) )
@@ -526,42 +524,30 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
526524 cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/Apple/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
527525
528526
529- $$(PYTHON_STDLIB -$(sdk ) ) /LICENSE.TXT : $$(PYTHON_LIB-$(sdk ) ) $$(PYTHON_FRAMEWORK-$(sdk ) ) /Info.plist $$(PYTHON_INCLUDE-$(sdk ) ) /pyconfig.h $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_PLATFORM_SITECUSTOMIZE-$$(target ) ) )
527+ $$(PYTHON_PLATFORM_CONFIG -$(sdk ) ) /sitecustomize.py : $$(PYTHON_LIB-$(sdk ) ) $$(PYTHON_FRAMEWORK-$(sdk ) ) /Info.plist $$(PYTHON_INCLUDE-$(sdk ) ) /pyconfig.h $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_PLATFORM_SITECUSTOMIZE-$$(target ) ) )
530528 @echo " >>> Build Python stdlib for the $( sdk) SDK"
531- mkdir -p $$(PYTHON_STDLIB-$(sdk ) ) /lib-dynload
532- # Copy stdlib from the first target associated with the $(sdk) SDK
533- cp -r $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$(sdk ) ) ) ) / $$(PYTHON_STDLIB-$(sdk ) )
529+ mkdir -p $$(PYTHON_INSTALL-$(sdk ) ) /lib
534530
535- # Delete the single-SDK parts of the standard library
536- rm -rf \
537- $$(PYTHON_STDLIB -$(sdk))/_sysconfigdata__*.py \
538- $$(PYTHON_STDLIB -$(sdk))/_sysconfig_vars__*.json \
539- $$(PYTHON_STDLIB-$( sdk))/config-* \
540- $$(PYTHON_STDLIB -$(sdk))/lib-dynload/*
531+ # Create arch-specific stdlib directories
532+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),mkdir -p $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER); )
533+ $$(foreach target,$$(SDK_TARGETS -$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfigdata_* $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER)/; )
534+ $$(foreach target,$$(SDK_TARGETS -$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfig_vars_* $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER)/; )
535+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$( PYTHON_STDLIB-$$(target))/build-details.json $$(PYTHON_INSTALL-$( sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER)/; )
536+ $$(foreach target,$$(SDK_TARGETS -$(sdk)),cp -r $$(PYTHON_STDLIB-$$(target)) /lib-dynload $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER)/; )
541537
542- # Copy the individual _sysconfigdata modules into names that include the architecture
543- $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfigdata_* $$(PYTHON_STDLIB-$(sdk))/; )
544- $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfig_vars_* $$(PYTHON_STDLIB-$(sdk))/; )
538+ # Copy in known-required xcprivacy files.
539+ # Libraries linking OpenSSL must provide a privacy manifest. The one in this repository
540+ # has been sourced from https://github.com/openssl/openssl/blob/openssl-3.0/os-dep/Apple/PrivacyInfo.xcprivacy
541+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$$(target))/lib-dynload/_hashlib.xcprivacy; )
542+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$$(target))/lib-dynload/_ssl.xcprivacy; )
545543
546544 # Copy the platform site folders for each architecture
547545 mkdir -p $$(PYTHON_PLATFORM_CONFIG-$(sdk))
548546 $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp -r $$(PYTHON_PLATFORM_CONFIG-$$(target)) $$(PYTHON_PLATFORM_CONFIG-$(sdk)); )
549547
550- # Merge the binary modules from each target in the $(sdk) SDK into a single binary
551- $$(foreach module,$$(wildcard $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$(sdk))))/lib-dynload/*),lipo -create -output $$(PYTHON_STDLIB-$(sdk))/lib-dynload/$$(notdir $$(module)) $$(foreach target,$$(SDK_TARGETS-$(sdk)),$$(PYTHON_STDLIB-$$(target))/lib-dynload/$$(notdir $$(module))); )
552-
553- # # Disable dSYM production (for now)
554- # # Create dSYM files for each module
555- # $$(foreach module,$$(wildcard $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$(sdk))))/lib-dynload/*),dsymutil $$(PYTHON_STDLIB-$(sdk))/lib-dynload/$$(notdir $$(module)); )
556-
557- # Copy in known-required xcprivacy files.
558- # Libraries linking OpenSSL must provide a privacy manifest. The one in this repository
559- # has been sourced from https://github.com/openssl/openssl/blob/openssl-3.0/os-dep/Apple/PrivacyInfo.xcprivacy
560- cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$(sdk))/lib-dynload/_hashlib.xcprivacy
561- cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$(sdk))/lib-dynload/_ssl.xcprivacy
562548endif
563549
564- $(sdk ) : $$(PYTHON_STDLIB -$(sdk ) ) /LICENSE.TXT
550+ $(sdk ) : $$(PYTHON_PLATFORM_CONFIG -$(sdk ) ) /sitecustomize.py
565551
566552# ##########################################################################
567553# SDK: Debug
@@ -578,8 +564,7 @@ vars-$(sdk):
578564 @echo "PYTHON_LIB-$(sdk ) : $$(PYTHON_LIB-$(sdk ) ) "
579565 @echo "PYTHON_BIN-$(sdk ) : $$(PYTHON_BIN-$(sdk ) ) "
580566 @echo "PYTHON_INCLUDE-$(sdk ) : $$(PYTHON_INCLUDE-$(sdk ) ) "
581- @echo "PYTHON_STDLIB-$(sdk ) : $$(PYTHON_STDLIB-$(sdk ) ) "
582-
567+ @echo "PYTHON_PLATFORM_CONFIG-$(sdk ) : $$(PYTHON_PLATFORM_CONFIG-$(sdk ) ) "
583568 @echo
584569
585570endef # build-sdk
@@ -684,7 +669,7 @@ dist/Python-$(PYTHON_VER)-macOS-support.$(BUILD_NUMBER).tar.gz: \
684669else
685670
686671$$(PYTHON_XCFRAMEWORK-$(os ) ) /Info.plist : \
687- $$(foreach sdk,$$(SDKS-$(os ) ) ,$$(PYTHON_STDLIB -$$(sdk ) ) /LICENSE.TXT )
672+ $$(foreach sdk,$$(SDKS-$(os ) ) ,$$(PYTHON_PLATFORM_CONFIG -$$(sdk ) ) /sitecustomize.py )
688673 @echo " >>> Create Python.XCFramework on $( os) "
689674 mkdir -p $$(dir $$(PYTHON_XCFRAMEWORK-$(os ) ) )
690675 xcodebuild -create-xcframework \
@@ -696,11 +681,27 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
696681 cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple/testbed/Python.xcframework/build/utils.sh $$(PYTHON_XCFRAMEWORK-$(os))/build
697682 cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple/testbed/Python.xcframework/build/$$(PLATFORM_NAME-$(os))-dylib-Info-template.plist $$(PYTHON_XCFRAMEWORK-$(os))/build
698683
684+ @echo ">>> Install stdlib for $(os)"
685+ mkdir -p $$(PYTHON_XCFRAMEWORK-$(os))/lib
686+ cp -r $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)
687+
688+ # Delete the single-SDK parts of the standard library
689+ rm -rf \
690+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/_sysconfigdata__*.py \
691+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/_sysconfig_vars__*.json \
692+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/build-details.json \
693+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/config-* \
694+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/lib-dynload/*
695+
699696 @echo ">>> Install PYTHONHOME for $(os)"
700697 $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/include $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
701698 $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/bin $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
702- $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
699+ $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib* $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
703700 $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/platform-config $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
701+
702+ # Create symlink for dylib
703+ $$(foreach sdk,$$(SDKS-$(os)),ln -si ../Python.framework/Python $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk))/lib/libpython$(PYTHON_VER).dylib; )
704+
704705 # Disable dSYM production (for now)
705706 # $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/Python.dSYM $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
706707
0 commit comments