@@ -439,7 +439,6 @@ PYTHON_INSTALL_VERSION-$(sdk)=$$(PYTHON_FRAMEWORK-$(sdk))/Versions/$(PYTHON_VER)
439439PYTHON_LIB-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /Python
440440PYTHON_INCLUDE-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /include/python$(PYTHON_VER )
441441PYTHON_MODULEMAP-$(sdk) =$$(PYTHON_INCLUDE-$(sdk ) ) /module.modulemap
442- PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /lib/python$(PYTHON_VER )
443442
444443else
445444# Non-macOS builds need to be merged on a per-SDK basis. The merge covers:
@@ -454,7 +453,6 @@ PYTHON_FRAMEWORK-$(sdk)=$$(PYTHON_INSTALL-$(sdk))/Python.framework
454453PYTHON_LIB-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Python
455454PYTHON_BIN-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /bin
456455PYTHON_INCLUDE-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Headers
457- PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /lib/python$(PYTHON_VER )
458456PYTHON_PLATFORM_CONFIG-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /platform-config
459457
460458$$(PYTHON_LIB-$(sdk ) ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_LIB-$$(target ) ) )
@@ -502,40 +500,28 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
502500 cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/Apple/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
503501
504502
505- $$(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 ) ) )
503+ $$(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 ) ) )
506504 @echo " >>> Build Python stdlib for the $( sdk) SDK"
507- mkdir -p $$(PYTHON_STDLIB-$(sdk ) ) /lib-dynload
508- # Copy stdlib from the first target associated with the $(sdk) SDK
509- cp -r $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$(sdk ) ) ) ) / $$(PYTHON_STDLIB-$(sdk ) )
505+ mkdir -p $$(PYTHON_INSTALL-$(sdk ) ) /lib
510506
511- # Delete the single-SDK parts of the standard library
512- rm -rf \
513- $$(PYTHON_STDLIB-$(sdk))/_sysconfigdata__*.py \
514- $$(PYTHON_STDLIB-$(sdk))/config-* \
515- $$(PYTHON_STDLIB-$(sdk))/lib-dynload/*
507+ # Create arch-specific stdlib directories
508+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),mkdir -p $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER); )
509+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfigdata_* $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER)/; )
510+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp -r $$(PYTHON_STDLIB-$$(target))/lib-dynload $$(PYTHON_INSTALL-$(sdk))/lib-$$(ARCH-$$(target))/python$(PYTHON_VER)/; )
516511
517- # Copy the individual _sysconfigdata modules into names that include the architecture
518- $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfigdata_* $$(PYTHON_STDLIB-$(sdk))/; )
512+ # Copy in known-required xcprivacy files.
513+ # Libraries linking OpenSSL must provide a privacy manifest. The one in this repository
514+ # has been sourced from https://github.com/openssl/openssl/blob/openssl-3.0/os-dep/Apple/PrivacyInfo.xcprivacy
515+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$$(target))/lib-dynload/_hashlib.xcprivacy; )
516+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$$(target))/lib-dynload/_ssl.xcprivacy; )
519517
520518 # Copy the platform site folders for each architecture
521519 mkdir -p $$(PYTHON_PLATFORM_CONFIG-$(sdk))
522520 $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp -r $$(PYTHON_PLATFORM_CONFIG-$$(target)) $$(PYTHON_PLATFORM_CONFIG-$(sdk)); )
523521
524- # Merge the binary modules from each target in the $(sdk) SDK into a single binary
525- $$(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))); )
526-
527- # # Disable dSYM production (for now)
528- # # Create dSYM files for each module
529- # $$(foreach module,$$(wildcard $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$(sdk))))/lib-dynload/*),dsymutil $$(PYTHON_STDLIB-$(sdk))/lib-dynload/$$(notdir $$(module)); )
530-
531- # Copy in known-required xcprivacy files.
532- # Libraries linking OpenSSL must provide a privacy manifest. The one in this repository
533- # has been sourced from https://github.com/openssl/openssl/blob/openssl-3.0/os-dep/Apple/PrivacyInfo.xcprivacy
534- cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$(sdk))/lib-dynload/_hashlib.xcprivacy
535- cp $(PROJECT_DIR)/patch/Python/OpenSSL.xcprivacy $$(PYTHON_STDLIB-$(sdk))/lib-dynload/_ssl.xcprivacy
536522endif
537523
538- $(sdk ) : $$(PYTHON_STDLIB -$(sdk ) ) /LICENSE.TXT
524+ $(sdk ) : $$(PYTHON_PLATFORM_CONFIG -$(sdk ) ) /sitecustomize.py
539525
540526# ##########################################################################
541527# SDK: Debug
@@ -552,8 +538,7 @@ vars-$(sdk):
552538 @echo "PYTHON_LIB-$(sdk ) : $$(PYTHON_LIB-$(sdk ) ) "
553539 @echo "PYTHON_BIN-$(sdk ) : $$(PYTHON_BIN-$(sdk ) ) "
554540 @echo "PYTHON_INCLUDE-$(sdk ) : $$(PYTHON_INCLUDE-$(sdk ) ) "
555- @echo "PYTHON_STDLIB-$(sdk ) : $$(PYTHON_STDLIB-$(sdk ) ) "
556-
541+ @echo "PYTHON_PLATFORM_CONFIG-$(sdk ) : $$(PYTHON_PLATFORM_CONFIG-$(sdk ) ) "
557542 @echo
558543
559544endef # build-sdk
@@ -658,7 +643,7 @@ dist/Python-$(PYTHON_VER)-macOS-support.$(BUILD_NUMBER).tar.gz: \
658643else
659644
660645$$(PYTHON_XCFRAMEWORK-$(os ) ) /Info.plist : \
661- $$(foreach sdk,$$(SDKS-$(os ) ) ,$$(PYTHON_STDLIB -$$(sdk ) ) /LICENSE.TXT )
646+ $$(foreach sdk,$$(SDKS-$(os ) ) ,$$(PYTHON_PLATFORM_CONFIG -$$(sdk ) ) /sitecustomize.py )
662647 @echo " >>> Create Python.XCFramework on $( os) "
663648 mkdir -p $$(dir $$(PYTHON_XCFRAMEWORK-$(os ) ) )
664649 xcodebuild -create-xcframework \
@@ -670,19 +655,26 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
670655 cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple/testbed/Python.xcframework/build/utils.sh $$(PYTHON_XCFRAMEWORK-$(os))/build
671656 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
672657
658+ @echo ">>> Install stdlib for $(os)"
659+ mkdir -p $$(PYTHON_XCFRAMEWORK-$(os))/lib
660+ cp -r $$(PYTHON_STDLIB-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)
661+
662+ # Delete the single-SDK parts of the standard library
663+ rm -rf \
664+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/_sysconfigdata__*.py \
665+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/config-* \
666+ $$(PYTHON_XCFRAMEWORK-$(os))/lib/python$(PYTHON_VER)/lib-dynload
667+
673668 @echo ">>> Install PYTHONHOME for $(os)"
674669 $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/include $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
675670 $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/bin $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
676- $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
671+ $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib* $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
677672 $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/platform-config $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
678673
679674 # Create symlink for dylib
680675 $$(foreach sdk,$$(SDKS-$(os)),ln -si ../Python.framework/Python $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk))/lib/libpython$(PYTHON_VER).dylib; )
681676
682- # Disable dSYM production (for now)
683- # $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/Python.dSYM $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
684-
685- ifeq ($(filter $(os ) ,iOS tvOS visionOS) ,$(os ) )
677+ ifeq (filter($(os ) ,iOS tvOS watchOS), $(os ) )
686678 @echo ">>> Clone testbed project for $(os)"
687679 $(HOST_PYTHON) $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple/testbed clone --platform $(os) --framework $$(PYTHON_XCFRAMEWORK-$(os)) support/$(PYTHON_VER)/$(os)/testbed
688680endif
0 commit comments