@@ -27,9 +27,9 @@ 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
31
- OPENSSL_VERSION =3.0.15 -1
32
- XZ_VERSION =5.6.2 -1
30
+ LIBFFI_VERSION =3.4.7 -1
31
+ OPENSSL_VERSION =3.0.16 -1
32
+ XZ_VERSION =5.6.4 -1
33
33
34
34
# Supported OS
35
35
OS_LIST =macOS iOS tvOS watchOS
@@ -128,10 +128,10 @@ ARCH-$(target)=$$(subst .,,$$(suffix $(target)))
128
128
ifneq ($(os ) ,macOS)
129
129
ifeq ($$(findstring simulator,$$(SDK-$(target))),)
130
130
TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(OS_LOWER-$(target ) )$$(VERSION_MIN-$(os ) )
131
- IS_SIMULATOR-$(target) =" False"
131
+ IS_SIMULATOR-$(target) =False
132
132
else
133
133
TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(OS_LOWER-$(target ) )$$(VERSION_MIN-$(os ) ) -simulator
134
- IS_SIMULATOR-$(target) =" True"
134
+ IS_SIMULATOR-$(target) =True
135
135
endif
136
136
endif
137
137
@@ -240,6 +240,9 @@ PYTHON_LIB-$(target)=$$(PYTHON_FRAMEWORK-$(target))/Python
240
240
PYTHON_BIN-$(target) =$$(PYTHON_INSTALL-$(target ) ) /bin
241
241
PYTHON_INCLUDE-$(target) =$$(PYTHON_FRAMEWORK-$(target ) ) /Headers
242
242
PYTHON_STDLIB-$(target) =$$(PYTHON_INSTALL-$(target ) ) /lib/python$(PYTHON_VER )
243
+ PYTHON_PLATFORM_CONFIG-$(target) =$$(PYTHON_INSTALL-$(target ) ) /platform-config/$$(ARCH-$(target ) ) -$$(SDK-$(target ) )
244
+ PYTHON_PLATFORM_SITECUSTOMIZE-$(target) =$$(PYTHON_PLATFORM_CONFIG-$(target ) ) /sitecustomize.py
245
+
243
246
244
247
$$(PYTHON_SRCDIR-$(target ) ) /configure : \
245
248
downloads/Python-$(PYTHON_VERSION ) .tar.gz \
@@ -292,23 +295,35 @@ $$(PYTHON_LIB-$(target)): $$(PYTHON_SRCDIR-$(target))/python.exe
292
295
# Remove any .orig files produced by the compliance patching process
293
296
find $$(PYTHON_INSTALL-$(target)) -name "*.orig" -exec rm {} \;
294
297
295
- endif
296
-
297
- PYTHON_SITECUSTOMIZE-$(target ) =$(PROJECT_DIR ) /support/$(PYTHON_VER ) /$(os ) /platform-site/$(target ) /sitecustomize.py
298
298
299
- $$(PYTHON_SITECUSTOMIZE-$(target ) ) :
300
- @echo ">>> Create cross-platform sitecustomize.py for $(target ) "
301
- mkdir -p $$(dir $$(PYTHON_SITECUSTOMIZE-$(target ) ) )
302
- cat $(PROJECT_DIR ) /patch/Python/sitecustomize.$(os ) .py \
299
+ $$(PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) ) :
300
+ @echo " >>> Create cross-plaform config for $( target) "
301
+ mkdir -p $$(PYTHON_PLATFORM_CONFIG-$(target ) )
302
+ # Create the cross-platform site definition
303
+ echo " import _cross_$$ (ARCH-$( target) )_$$ (SDK-$( target) ); import _cross_venv;" \
304
+ > $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /_cross_venv.pth
305
+ cp $(PROJECT_DIR ) /patch/Python/make_cross_venv.py \
306
+ $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /make_cross_venv.py
307
+ cp $(PROJECT_DIR ) /patch/Python/_cross_venv.py \
308
+ $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /_cross_venv.py
309
+ cp $$(PYTHON_STDLIB-$(target ) ) /_sysconfig* \
310
+ $$(PYTHON_PLATFORM_CONFIG-$(target ) )
311
+ cat $(PROJECT_DIR ) /patch/Python/_cross_target.py.tmpl \
303
312
| sed -e " s/{{os}}/$( os) /g" \
313
+ | sed -e " s/{{platform}}/$$ (OS_LOWER-$( target) )/g" \
304
314
| sed -e " s/{{arch}}/$$ (ARCH-$( target) )/g" \
315
+ | sed -e " s/{{sdk}}/$$ (SDK-$( target) )/g" \
305
316
| sed -e " s/{{version_min}}/$$ (VERSION_MIN-$( os) )/g" \
306
317
| sed -e " s/{{is_simulator}}/$$ (IS_SIMULATOR-$( target) )/g" \
307
- | sed -e "s/{{multiarch}}/$$(ARCH-$(target ) ) -$$(SDK-$(target ) ) /g" \
308
- | sed -e "s/{{tag}}/$$(OS_LOWER-$(target ) ) -$$(VERSION_MIN-$(os ) ) -$$(ARCH-$(target ) ) -$$(SDK-$(target ) ) /g" \
309
- > $$(PYTHON_SITECUSTOMIZE-$(target ) )
318
+ > $$(PYTHON_PLATFORM_CONFIG-$(target ) ) /_cross_$$(ARCH-$(target ) ) _$$(SDK-$(target ) ) .py
319
+ cat $(PROJECT_DIR ) /patch/Python/sitecustomize.py.tmpl \
320
+ | sed -e " s/{{arch}}/$$ (ARCH-$( target) )/g" \
321
+ | sed -e " s/{{sdk}}/$$ (SDK-$( target) )/g" \
322
+ > $$(PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) )
323
+
324
+ endif
310
325
311
- $(target ) : $$(PYTHON_SITECUSTOMIZE -$(target ) ) $$(PYTHON_LIB-$(target ) )
326
+ $(target ) : $$(PYTHON_PLATFORM_SITECUSTOMIZE -$(target ) ) $$(PYTHON_LIB-$(target ) )
312
327
313
328
# ##########################################################################
314
329
# Target: Debug
@@ -335,6 +350,8 @@ vars-$(target):
335
350
@echo "PYTHON_BIN-$(target ) : $$(PYTHON_BIN-$(target ) ) "
336
351
@echo "PYTHON_INCLUDE-$(target ) : $$(PYTHON_INCLUDE-$(target ) ) "
337
352
@echo "PYTHON_STDLIB-$(target ) : $$(PYTHON_STDLIB-$(target ) ) "
353
+ @echo "PYTHON_PLATFORM_CONFIG-$(target ) : $$(PYTHON_PLATFORM_CONFIG-$(target ) ) "
354
+ @echo "PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) : $$(PYTHON_PLATFORM_SITECUSTOMIZE-$(target ) ) "
338
355
@echo
339
356
340
357
endef # build-target
@@ -380,6 +397,7 @@ PYTHON_FRAMEWORK-$(sdk)=$$(PYTHON_INSTALL-$(sdk))/Python.framework
380
397
PYTHON_INSTALL_VERSION-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Versions/$(PYTHON_VER )
381
398
PYTHON_LIB-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /Python
382
399
PYTHON_INCLUDE-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /include/python$(PYTHON_VER )
400
+ PYTHON_MODULEMAP-$(sdk) =$$(PYTHON_INCLUDE-$(sdk ) ) /module.modulemap
383
401
PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL_VERSION-$(sdk ) ) /lib/python$(PYTHON_VER )
384
402
385
403
else
@@ -390,11 +408,13 @@ else
390
408
# The non-macOS frameworks don't use the versioning structure.
391
409
392
410
PYTHON_INSTALL-$(sdk) =$(PROJECT_DIR ) /install/$(os ) /$(sdk ) /python-$(PYTHON_VERSION )
411
+ PYTHON_MODULEMAP-$(sdk) =$$(PYTHON_INCLUDE-$(sdk ) ) /module.modulemap
393
412
PYTHON_FRAMEWORK-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /Python.framework
394
413
PYTHON_LIB-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Python
395
414
PYTHON_BIN-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /bin
396
415
PYTHON_INCLUDE-$(sdk) =$$(PYTHON_FRAMEWORK-$(sdk ) ) /Headers
397
416
PYTHON_STDLIB-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /lib/python$(PYTHON_VER )
417
+ PYTHON_PLATFORM_CONFIG-$(sdk) =$$(PYTHON_INSTALL-$(sdk ) ) /platform-config
398
418
399
419
$$(PYTHON_LIB-$(sdk ) ) : $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_LIB-$$(target ) ) )
400
420
@echo " >>> Build Python fat library for the $( sdk) SDK"
@@ -419,6 +439,15 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
419
439
# Copy headers as-is from the first target in the $(sdk) SDK
420
440
cp -r $$(PYTHON_INCLUDE-$$(firstword $$(SDK_TARGETS-$(sdk)))) $$(PYTHON_INCLUDE-$(sdk))
421
441
442
+ # Create the modulemap file
443
+ cp -r patch/Python/module.modulemap.prefix $$(PYTHON_MODULEMAP-$(sdk))
444
+ echo "" >> $$(PYTHON_MODULEMAP-$(sdk))
445
+ cd $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/Include && \
446
+ find cpython -name "*.h" | sort | sed -e 's/^/ exclude header "/' | sed 's/$$$$/"/' >> $$(PYTHON_MODULEMAP-$(sdk)) && \
447
+ echo "" >> $$(PYTHON_MODULEMAP-$(sdk)) && \
448
+ find internal -name "*.h" | sort | sed -e 's/^/ exclude header "/' | sed 's/$$$$/"/' >> $$(PYTHON_MODULEMAP-$(sdk))
449
+ echo "\n}" >> $$(PYTHON_MODULEMAP-$(sdk))
450
+
422
451
# Link the PYTHONHOME version of the headers
423
452
mkdir -p $$(PYTHON_INSTALL-$(sdk))/include
424
453
ln -si ../Python.framework/Headers $$(PYTHON_INSTALL-$(sdk))/include/python$(PYTHON_VER)
@@ -430,7 +459,7 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
430
459
cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
431
460
432
461
433
- $$(PYTHON_STDLIB-$(sdk ) ) /LICENSE.TXT : $$(PYTHON_LIB-$(sdk ) ) $$(PYTHON_FRAMEWORK-$(sdk ) ) /Info.plist $$(PYTHON_INCLUDE-$(sdk ) ) /pyconfig.h
462
+ $$(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 ) ) )
434
463
@echo " >>> Build Python stdlib for the $( sdk) SDK"
435
464
mkdir -p $$(PYTHON_STDLIB-$(sdk ) ) /lib-dynload
436
465
# Copy stdlib from the first target associated with the $(sdk) SDK
@@ -445,6 +474,10 @@ $$(PYTHON_STDLIB-$(sdk))/LICENSE.TXT: $$(PYTHON_LIB-$(sdk)) $$(PYTHON_FRAMEWORK-
445
474
# Copy the individual _sysconfigdata modules into names that include the architecture
446
475
$$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_STDLIB-$$(target))/_sysconfigdata_* $$(PYTHON_STDLIB-$(sdk))/; )
447
476
477
+ # Copy the platform site folders for each architecture
478
+ mkdir -p $$(PYTHON_PLATFORM_CONFIG-$(sdk))
479
+ $$(foreach target,$$(SDK_TARGETS-$(sdk)),cp -r $$(PYTHON_PLATFORM_CONFIG-$$(target)) $$(PYTHON_PLATFORM_CONFIG-$(sdk)); )
480
+
448
481
# Merge the binary modules from each target in the $(sdk) SDK into a single binary
449
482
$$(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))); )
450
483
@@ -529,6 +562,15 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
529
562
# Rewrite the framework to make it standalone
530
563
patch/make-relocatable.sh $$(PYTHON_INSTALL_VERSION-macosx) 2>&1 > /dev/null
531
564
565
+ # Create the modulemap file
566
+ cp -r patch/Python/module.modulemap.prefix $$(PYTHON_MODULEMAP-macosx)
567
+ echo "" >> $$(PYTHON_MODULEMAP-macosx)
568
+ cd $$(PYTHON_INCLUDE-macosx) && \
569
+ find cpython -name "*.h" | sort | sed -e 's/^/ exclude header "/' | sed 's/$$$$/"/' >> $$(PYTHON_MODULEMAP-macosx) && \
570
+ echo "" >> $$(PYTHON_MODULEMAP-macosx) && \
571
+ find internal -name "*.h" | sort | sed -e 's/^/ exclude header "/' | sed 's/$$$$/"/' >> $$(PYTHON_MODULEMAP-macosx)
572
+ echo "\n}" >> $$(PYTHON_MODULEMAP-macosx)
573
+
532
574
# Re-apply the signature on the binaries.
533
575
codesign -s - --preserve-metadata=identifier,entitlements,flags,runtime -f $$(PYTHON_LIB-macosx) \
534
576
2>&1 | tee $$(PYTHON_INSTALL-macosx)/python-$(os).codesign.log
@@ -552,7 +594,7 @@ support/$(PYTHON_VER)/macOS/VERSIONS:
552
594
dist/Python-$(PYTHON_VER ) -macOS-support.$(BUILD_NUMBER ) .tar.gz : \
553
595
$$(PYTHON_XCFRAMEWORK-macOS ) /Info.plist \
554
596
support/$(PYTHON_VER ) /macOS/VERSIONS \
555
- $$(foreach target,$$(TARGETS-macOS ) , $$(PYTHON_SITECUSTOMIZE -$$(target ) ) )
597
+ $$(foreach target,$$(TARGETS-macOS ) , $$(PYTHON_PLATFORM_SITECUSTOMIZE -$$(target ) ) )
556
598
557
599
@echo ">>> Create final distribution artefact for macOS"
558
600
mkdir -p dist
@@ -575,9 +617,7 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
575
617
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/include $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
576
618
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/bin $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
577
619
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
578
-
579
- @echo ">>> Create helper links in XCframework for $(os)"
580
- $$(foreach sdk,$$(SDKS-$(os)),ln -si $$(SDK_SLICE-$$(sdk)) $$(PYTHON_XCFRAMEWORK-$(os))/$$(sdk); )
620
+ $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/platform-config $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
581
621
582
622
ifeq ($(os ) ,iOS)
583
623
@echo ">>> Clone testbed project for $(os)"
@@ -596,7 +636,7 @@ endif
596
636
597
637
dist/Python-$(PYTHON_VER ) -$(os ) -support.$(BUILD_NUMBER ) .tar.gz : \
598
638
$$(PYTHON_XCFRAMEWORK-$(os ) ) /Info.plist \
599
- $$(foreach target,$$(TARGETS-$(os ) ) , $$(PYTHON_SITECUSTOMIZE -$$(target ) ) )
639
+ $$(foreach target,$$(TARGETS-$(os ) ) , $$(PYTHON_PLATFORM_SITECUSTOMIZE -$$(target ) ) )
600
640
601
641
@echo ">>> Create final distribution artefact for $(os)"
602
642
mkdir -p dist
0 commit comments