@@ -27,10 +27,10 @@ PYTHON_VER=$(basename $(PYTHON_VERSION))
27
27
# The binary releases of dependencies, published at:
28
28
# https://github.com/beeware/cpython-apple-source-deps/releases
29
29
BZIP2_VERSION =1.0.8-1
30
- LIBFFI_VERSION =3.4.6 -1
30
+ LIBFFI_VERSION =3.4.7 -1
31
31
MPDECIMAL_VERSION =4.0.0-1
32
- OPENSSL_VERSION =3.0.15 -1
33
- XZ_VERSION =5.6.2 -1
32
+ OPENSSL_VERSION =3.0.16 -1
33
+ XZ_VERSION =5.6.4 -1
34
34
35
35
# Supported OS
36
36
OS_LIST =macOS iOS tvOS watchOS
@@ -129,10 +129,10 @@ ARCH-$(target)=$$(subst .,,$$(suffix $(target)))
129
129
ifneq ($(os ) ,macOS)
130
130
ifeq ($$(findstring simulator,$$(SDK-$(target))),)
131
131
TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(OS_LOWER-$(target ) )$$(VERSION_MIN-$(os ) )
132
- IS_SIMULATOR-$(target) =" False"
132
+ IS_SIMULATOR-$(target) =False
133
133
else
134
134
TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(OS_LOWER-$(target ) )$$(VERSION_MIN-$(os ) ) -simulator
135
- IS_SIMULATOR-$(target) =" True"
135
+ IS_SIMULATOR-$(target) =True
136
136
endif
137
137
endif
138
138
@@ -261,6 +261,9 @@ PYTHON_LIB-$(target)=$$(PYTHON_FRAMEWORK-$(target))/Python
261
261
PYTHON_BIN-$(target) =$$(PYTHON_INSTALL-$(target ) ) /bin
262
262
PYTHON_INCLUDE-$(target) =$$(PYTHON_FRAMEWORK-$(target ) ) /Headers
263
263
PYTHON_STDLIB-$(target) =$$(PYTHON_INSTALL-$(target ) ) /lib/python$(PYTHON_VER )
264
+ PYTHON_PLATFORM_CONFIG-$(target) =$$(PYTHON_INSTALL-$(target ) ) /platform-config/$$(ARCH-$(target ) ) -$$(SDK-$(target ) )
265
+ PYTHON_PLATFORM_SITECUSTOMIZE-$(target) =$$(PYTHON_PLATFORM_CONFIG-$(target ) ) /sitecustomize.py
266
+
264
267
265
268
$$(PYTHON_SRCDIR-$(target ) ) /configure : \
266
269
downloads/Python-$(PYTHON_VERSION ) .tar.gz \
@@ -319,23 +322,35 @@ $$(PYTHON_LIB-$(target)): $$(PYTHON_SRCDIR-$(target))/python.exe
319
322
# Remove any .orig files produced by the compliance patching process
320
323
find $$(PYTHON_INSTALL-$(target)) -name "*.orig" -exec rm {} \;
321
324
322
- endif
323
-
324
- PYTHON_SITECUSTOMIZE-$(target ) =$(PROJECT_DIR ) /support/$(PYTHON_VER ) /$(os ) /platform-site/$(target ) /sitecustomize.py
325
325
326
- $$(PYTHON_SITECUSTOMIZE-$(target ) ) :
327
- @echo ">>> Create cross-platform sitecustomize.py for $(target ) "
328
- mkdir -p $$(dir $$(PYTHON_SITECUSTOMIZE-$(target ) ) )
329
- cat $(PROJECT_DIR ) /patch/Python/sitecustomize.$(os ) .py \
326
+ $$(PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) ) :
327
+ @echo " >>> Create cross-plaform config for $( target) "
328
+ mkdir -p $$(PYTHON_PLATFORM_CONFIG-$(target ) )
329
+ # Create the cross-platform site definition
330
+ echo " import _cross_$$ (ARCH-$( target) )_$$ (SDK-$( target) ); import _cross_venv;" \
331
+ > $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /_cross_venv.pth
332
+ cp $(PROJECT_DIR ) /patch/Python/make_cross_venv.py \
333
+ $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /make_cross_venv.py
334
+ cp $(PROJECT_DIR ) /patch/Python/_cross_venv.py \
335
+ $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /_cross_venv.py
336
+ cp $$(PYTHON_STDLIB-$(target ) ) /_sysconfig* \
337
+ $$(PYTHON_PLATFORM_CONFIG-$(target ) )
338
+ cat $(PROJECT_DIR ) /patch/Python/_cross_target.py.tmpl \
330
339
| sed -e " s/{{os}}/$( os) /g" \
340
+ | sed -e " s/{{platform}}/$$ (OS_LOWER-$( target) )/g" \
331
341
| sed -e " s/{{arch}}/$$ (ARCH-$( target) )/g" \
342
+ | sed -e " s/{{sdk}}/$$ (SDK-$( target) )/g" \
332
343
| sed -e " s/{{version_min}}/$$ (VERSION_MIN-$( os) )/g" \
333
344
| sed -e " s/{{is_simulator}}/$$ (IS_SIMULATOR-$( target) )/g" \
334
- | sed -e "s/{{multiarch}}/$$(ARCH-$(target ) ) -$$(SDK-$(target ) ) /g" \
335
- | sed -e "s/{{tag}}/$$(OS_LOWER-$(target ) ) -$$(VERSION_MIN-$(os ) ) -$$(ARCH-$(target ) ) -$$(SDK-$(target ) ) /g" \
336
- > $$(PYTHON_SITECUSTOMIZE-$(target ) )
345
+ > $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /_cross_$$(ARCH-$(target ) ) _$$(SDK-$(target ) ) .py
346
+ cat $(PROJECT_DIR ) /patch/Python/sitecustomize.py.tmpl \
347
+ | sed -e " s/{{arch}}/$$ (ARCH-$( target) )/g" \
348
+ | sed -e " s/{{sdk}}/$$ (SDK-$( target) )/g" \
349
+ > $$(PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) )
350
+
351
+ endif
337
352
338
- $(target ) : $$(PYTHON_SITECUSTOMIZE -$(target ) ) $$(PYTHON_LIB-$(target ) )
353
+ $(target ) : $$(PYTHON_PLATFORM_SITECUSTOMIZE -$(target ) ) $$(PYTHON_LIB-$(target ) )
339
354
340
355
# ##########################################################################
341
356
# Target: Debug
@@ -364,6 +379,8 @@ vars-$(target):
364
379
@echo "PYTHON_BIN-$(target ) : $$(PYTHON_BIN-$(target ) ) "
365
380
@echo "PYTHON_INCLUDE-$(target ) : $$(PYTHON_INCLUDE-$(target ) ) "
366
381
@echo "PYTHON_STDLIB-$(target ) : $$(PYTHON_STDLIB-$(target ) ) "
382
+ @echo "PYTHON_PLATFORM_CONFIG-$(target ) : $$(PYTHON_PLATFORM_CONFIG-$(target ) ) "
383
+ @echo "PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) : $$(PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) ) "
367
384
@echo
368
385
369
386
endef # build-target
@@ -424,6 +441,7 @@ PYTHON_LIB-$(sdk)=$$(PYTHON_FRAMEWORK-$(sdk))/Python
424
441
PYTHON_BIN-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /bin
425
442
PYTHON_INCLUDE-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Headers
426
443
PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /lib/python$(PYTHON_VER )
444
+ PYTHON_PLATFORM_CONFIG-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /platform-config
427
445
428
446
$$(PYTHON_LIB-$(sdk ) ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_LIB-$$(target ) ) )
429
447
@echo " >>> Build Python fat library for the $( sdk) SDK"
@@ -448,6 +466,9 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
448
466
# Copy headers as-is from the first target in the $(sdk) SDK
449
467
cp -r $$(PYTHON_INCLUDE-$$(firstword $$(SDK_TARGETS-$(sdk)))) $$(PYTHON_INCLUDE-$(sdk))
450
468
469
+ # Copy in the modulemap file
470
+ cp -r patch/Python/module.modulemap $$(PYTHON_INCLUDE-$(sdk))
471
+
451
472
# Link the PYTHONHOME version of the headers
452
473
mkdir -p $$(PYTHON_INSTALL-$(sdk))/include
453
474
ln -si ../Python.framework/Headers $$(PYTHON_INSTALL-$(sdk))/include/python$(PYTHON_VER)
@@ -459,7 +480,7 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
459
480
cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
460
481
461
482
462
- $$(PYTHON_STDLIB-$(sdk ) ) /LICENSE.TXT : $$(PYTHON_LIB-$(sdk ) ) $$(PYTHON_FRAMEWORK-$(sdk ) ) /Info.plist $$(PYTHON_INCLUDE-$(sdk ) ) /pyconfig.h
483
+ $$(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 ) ) )
463
484
@echo " >>> Build Python stdlib for the $( sdk) SDK"
464
485
mkdir -p $$(PYTHON_STDLIB-$(sdk ) ) /lib-dynload
465
486
# Copy stdlib from the first target associated with the $(sdk) SDK
@@ -474,6 +495,10 @@ $$(PYTHON_STDLIB-$(sdk))/LICENSE.TXT: $$(PYTHON_LIB-$(sdk)) $$(PYTHON_FRAMEWORK-
474
495
# Copy the individual _sysconfigdata modules into names that include the architecture
475
496
$$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfigdata_* $$(PYTHON_STDLIB-$(sdk))/; )
476
497
498
+ # Copy the platform site folders for each architecture
499
+ mkdir -p $$(PYTHON_PLATFORM_CONFIG-$(sdk))
500
+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp -r $$(PYTHON_PLATFORM_CONFIG-$$(target)) $$(PYTHON_PLATFORM_CONFIG-$(sdk)); )
501
+
477
502
# Merge the binary modules from each target in the $(sdk) SDK into a single binary
478
503
$$(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))); )
479
504
@@ -558,6 +583,9 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
558
583
# Rewrite the framework to make it standalone
559
584
patch/make-relocatable.sh $$(PYTHON_INSTALL_VERSION-macosx) 2>&1 > /dev/null
560
585
586
+ # Copy in the modulemap file
587
+ cp -r patch/Python/module.modulemap $$(PYTHON_FRAMEWORK-macosx)/Headers
588
+
561
589
# Re-apply the signature on the binaries.
562
590
codesign -s - --preserve-metadata=identifier,entitlements,flags,runtime -f $$(PYTHON_LIB-macosx) \
563
591
2>&1 | tee $$(PYTHON_INSTALL-macosx)/python-$(os).codesign.log
@@ -581,7 +609,7 @@ support/$(PYTHON_VER)/macOS/VERSIONS:
581
609
dist/Python-$(PYTHON_VER ) -macOS-support.$(BUILD_NUMBER ) .tar.gz : \
582
610
$$(PYTHON_XCFRAMEWORK-macOS ) /Info.plist \
583
611
support/$(PYTHON_VER ) /macOS/VERSIONS \
584
- $$(foreach target,$$(TARGETS-macOS ) , $$(PYTHON_SITECUSTOMIZE -$$(target ) ) )
612
+ $$(foreach target,$$(TARGETS-macOS ) , $$(PYTHON_PLATFORM_SITECUSTOMIZE -$$(target ) ) )
585
613
586
614
@echo ">>> Create final distribution artefact for macOS"
587
615
mkdir -p dist
@@ -604,9 +632,7 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
604
632
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/include $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
605
633
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/bin $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
606
634
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
607
-
608
- @echo ">>> Create helper links in XCframework for $(os)"
609
- $$(foreach sdk,$$(SDKS-$(os)),ln -si $$(SDK_SLICE-$$(sdk)) $$(PYTHON_XCFRAMEWORK-$(os))/$$(sdk); )
635
+ $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/platform-config $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
610
636
611
637
ifeq ($(os ) ,iOS)
612
638
@echo ">>> Clone testbed project for $(os)"
@@ -626,7 +652,7 @@ endif
626
652
627
653
dist/Python-$(PYTHON_VER ) -$(os ) -support.$(BUILD_NUMBER ) .tar.gz : \
628
654
$$(PYTHON_XCFRAMEWORK-$(os ) ) /Info.plist \
629
- $$(foreach target,$$(TARGETS-$(os ) ) , $$(PYTHON_SITECUSTOMIZE -$$(target ) ) )
655
+ $$(foreach target,$$(TARGETS-$(os ) ) , $$(PYTHON_PLATFORM_SITECUSTOMIZE -$$(target ) ) )
630
656
631
657
@echo ">>> Create final distribution artefact for $(os)"
632
658
mkdir -p dist
0 commit comments