@@ -19,7 +19,7 @@ BUILD_NUMBER=custom
19
19
# of a release cycle, as official binaries won't be published.
20
20
# PYTHON_MICRO_VERSION is the full version number, without any alpha/beta/rc suffix. (e.g., 3.10.0)
21
21
# PYTHON_VER is the major/minor version (e.g., 3.10)
22
- PYTHON_VERSION =3.14.0rc1
22
+ PYTHON_VERSION =3.14.0rc3
23
23
PYTHON_PKG_VERSION =$(PYTHON_VERSION )
24
24
PYTHON_MICRO_VERSION =$(shell echo $(PYTHON_VERSION ) | grep -Eo "\d+\.\d+\.\d+")
25
25
PYTHON_PKG_MICRO_VERSION =$(shell echo $(PYTHON_PKG_VERSION ) | grep -Eo "\d+\.\d+\.\d+")
@@ -32,6 +32,7 @@ LIBFFI_VERSION=3.4.7-2
32
32
MPDECIMAL_VERSION =4.0.0-2
33
33
OPENSSL_VERSION =3.0.16-2
34
34
XZ_VERSION =5.6.4-2
35
+ ZSTD_VERSION =1.5.7-1
35
36
36
37
# Supported OS
37
38
OS_LIST =macOS iOS tvOS watchOS visionOS
@@ -95,7 +96,7 @@ update-patch:
95
96
# call
96
97
if [ -z " $( PYTHON_REPO_DIR) " ]; then echo " \n\nPYTHON_REPO_DIR must be set to the root of your Python github checkout\n\n" ; fi
97
98
cd $(PYTHON_REPO_DIR ) && \
98
- git diff -D v$(PYTHON_VERSION ) $(PYTHON_VER ) -patched \
99
+ git diff --no-renames - D v$(PYTHON_VERSION ) $(PYTHON_VER ) -patched \
99
100
| PATH=" /usr/local/bin:/opt/homebrew/bin:$( PATH) " filterdiff \
100
101
-X $(PROJECT_DIR ) /patch/Python/diff.exclude -p 1 --clean \
101
102
> $(PROJECT_DIR ) /patch/Python/Python.patch
@@ -187,6 +188,26 @@ $$(XZ_LIB-$(target)): downloads/xz-$(XZ_VERSION)-$(target).tar.gz
187
188
# Ensure the target is marked as clean.
188
189
touch $$(XZ_LIB-$(target ) )
189
190
191
+ # ##########################################################################
192
+ # Target: zstd (ZStandard)
193
+ # ##########################################################################
194
+
195
+ ZSTD_INSTALL-$(target ) =$(PROJECT_DIR ) /install/$(os ) /$(target ) /zstd-$(ZSTD_VERSION )
196
+ ZSTD_LIB-$(target ) =$$(ZSTD_INSTALL-$(target ) ) /lib/libzstd.a
197
+
198
+ downloads/zstd-$(ZSTD_VERSION ) -$(target ) .tar.gz:
199
+ @echo ">>> Download zstd for $(target ) "
200
+ mkdir -p downloads
201
+ curl $(CURL_FLAGS ) -o $$@ \
202
+ https://github.com/beeware/cpython-apple-source-deps/releases/download/zstd-$(ZSTD_VERSION ) /zstd-$(ZSTD_VERSION ) -$(target ) .tar.gz
203
+
204
+ $$(ZSTD_LIB-$(target ) ) : downloads/zstd-$(ZSTD_VERSION ) -$(target ) .tar.gz
205
+ @echo ">>> Install zstd for $(target ) "
206
+ mkdir -p $$(ZSTD_INSTALL-$(target ) )
207
+ cd $$(ZSTD_INSTALL-$(target ) ) && tar zxvf $(PROJECT_DIR ) /downloads/zstd-$(ZSTD_VERSION ) -$(target ) .tar.gz --exclude="*.dylib"
208
+ # Ensure the target is marked as clean.
209
+ touch $$(ZSTD_LIB-$(target ) )
210
+
190
211
# ##########################################################################
191
212
# Target: mpdecimal
192
213
# ##########################################################################
@@ -280,22 +301,23 @@ $$(PYTHON_SRCDIR-$(target))/configure: \
280
301
$$(LIBFFI_LIB-$(target ) ) \
281
302
$$(MPDECIMAL_LIB-$(target ) ) \
282
303
$$(OPENSSL_SSL_LIB-$(target ) ) \
283
- $$(XZ_LIB-$(target ) )
304
+ $$(XZ_LIB-$(target ) ) \
305
+ $$(ZSTD_LIB-$(target ) )
284
306
@echo " >>> Unpack and configure Python for $( target) "
285
307
mkdir -p $$(PYTHON_SRCDIR-$(target ) )
286
308
tar zxf downloads/Python-$(PYTHON_VERSION ) .tar.gz --strip-components 1 -C $$(PYTHON_SRCDIR-$(target ) )
287
309
# Apply target Python patches
288
310
cd $$(PYTHON_SRCDIR-$(target ) ) && patch -p1 < $(PROJECT_DIR ) /patch/Python/Python.patch
289
311
# Make sure the binary scripts are executable
290
- chmod 755 $$(PYTHON_SRCDIR-$(target ) ) /$(os ) /Resources/bin/*
312
+ chmod 755 $$(PYTHON_SRCDIR-$(target ) ) /Apple/ $(os ) /Resources/bin/*
291
313
# Touch the configure script to ensure that Make identifies it as up to date.
292
314
touch $$(PYTHON_SRCDIR-$(target ) ) /configure
293
315
294
316
$$(PYTHON_SRCDIR-$(target ) ) /Makefile : \
295
317
$$(PYTHON_SRCDIR-$(target ) ) /configure
296
318
# Configure target Python
297
319
cd $$(PYTHON_SRCDIR-$(target ) ) && \
298
- PATH=" $( PROJECT_DIR) /$$ (PYTHON_SRCDIR-$( target) )/$( os) /Resources/bin:$( PATH) " \
320
+ PATH=" $( PROJECT_DIR) /$$ (PYTHON_SRCDIR-$( target) )/Apple/ $( os) /Resources/bin:$( PATH) " \
299
321
./configure \
300
322
LIBLZMA_CFLAGS=" -I$$ (XZ_INSTALL-$( target) )/include" \
301
323
LIBLZMA_LIBS=" -L$$ (XZ_INSTALL-$( target) )/lib -llzma" \
@@ -305,6 +327,8 @@ $$(PYTHON_SRCDIR-$(target))/Makefile: \
305
327
LIBMPDEC_LIBS=" -L$$ (MPDECIMAL_INSTALL-$( target) )/lib -lmpdec" \
306
328
LIBFFI_CFLAGS=" -I$$ (LIBFFI_INSTALL-$( target) )/include" \
307
329
LIBFFI_LIBS=" -L$$ (LIBFFI_INSTALL-$( target) )/lib -lffi" \
330
+ LIBZSTD_CFLAGS ="-I$$(ZSTD_INSTALL-$(target ) ) /include" \
331
+ LIBZSTD_LIBS="-L$$(ZSTD_INSTALL-$(target ) ) /lib -lzstd" \
308
332
--host=$$(TARGET_TRIPLE-$(target ) ) \
309
333
--build=$(HOST_ARCH ) -apple-darwin \
310
334
--with-build-python=$(HOST_PYTHON ) \
@@ -317,14 +341,14 @@ $$(PYTHON_SRCDIR-$(target))/Makefile: \
317
341
$$(PYTHON_SRCDIR-$(target ) ) /python.exe : $$(PYTHON_SRCDIR-$(target ) ) /Makefile
318
342
@echo " >>> Build Python for $( target) "
319
343
cd $$(PYTHON_SRCDIR-$(target ) ) && \
320
- PATH=" $( PROJECT_DIR) /$$ (PYTHON_SRCDIR-$( target) )/$( os) /Resources/bin:$( PATH) " \
344
+ PATH=" $( PROJECT_DIR) /$$ (PYTHON_SRCDIR-$( target) )/Apple/ $( os) /Resources/bin:$( PATH) " \
321
345
make -j8 all \
322
346
2>&1 | tee -a ../python-$(PYTHON_VERSION ) .build.log
323
347
324
348
$$(PYTHON_LIB-$(target ) ) : $$(PYTHON_SRCDIR-$(target ) ) /python.exe
325
349
@echo " >>> Install Python for $( target) "
326
350
cd $$(PYTHON_SRCDIR-$(target ) ) && \
327
- PATH=" $( PROJECT_DIR) /$$ (PYTHON_SRCDIR-$( target) )/$( os) /Resources/bin:$( PATH) " \
351
+ PATH=" $( PROJECT_DIR) /$$ (PYTHON_SRCDIR-$( target) )/Apple/ $( os) /Resources/bin:$( PATH) " \
328
352
make install \
329
353
2>&1 | tee -a ../python-$(PYTHON_VERSION ) .install.log
330
354
@@ -490,15 +514,11 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
490
514
mkdir -p $$(PYTHON_INSTALL-$(sdk))/include
491
515
ln -si ../Python.framework/Headers $$(PYTHON_INSTALL-$(sdk))/include/python$(PYTHON_VER)
492
516
493
- ifeq ($(os ) , visionOS)
494
- echo "Skipping arch-specific header copying for visionOS"
495
- else
496
517
# Add the individual headers from each target in an arch-specific name
497
518
$$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_INCLUDE-$$(target))/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig-$$(ARCH-$$(target)).h; )
498
519
499
520
# Copy the cross-target header from the source folder of the first target in the $(sdk) SDK
500
- cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
501
- endif
521
+ cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/Apple/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
502
522
503
523
504
524
$$(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 ) ) )
@@ -666,6 +686,11 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
666
686
-output $$(PYTHON_XCFRAMEWORK-$(os ) ) $$(foreach sdk,$$(SDKS-$(os ) ) ,-framework $$(PYTHON_FRAMEWORK-$$(sdk ) ) ) \
667
687
2>&1 | tee -a support/$(PYTHON_VER ) /python-$(os ) .xcframework.log
668
688
689
+ @echo ">>> Install build tools for $(os)"
690
+ mkdir $$(PYTHON_XCFRAMEWORK-$(os))/build
691
+ cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple/testbed/Python.xcframework/build/utils.sh $$(PYTHON_XCFRAMEWORK-$(os))/build
692
+ cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple/testbed/Python.xcframework/build/$(os)-dylib-Info-template.plist $$(PYTHON_XCFRAMEWORK-$(os))/build
693
+
669
694
@echo ">>> Install PYTHONHOME for $(os)"
670
695
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/include $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
671
696
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/bin $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
@@ -674,9 +699,9 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
674
699
# Disable dSYM production (for now)
675
700
# $$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/Python.dSYM $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
676
701
677
- ifeq ($(filter $(os ) ,iOS visionOS) ,$(os ) )
702
+ ifeq ($(filter $(os ) ,iOS tvOS visionOS) ,$(os ) )
678
703
@echo ">>> Clone testbed project for $(os)"
679
- $(HOST_PYTHON) $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/$(os) /testbed clone --framework $$(PYTHON_XCFRAMEWORK-$(os)) support/$(PYTHON_VER)/$(os)/testbed
704
+ $(HOST_PYTHON) $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/Apple /testbed clone --platform $(os) --framework $$(PYTHON_XCFRAMEWORK-$(os)) support/$(PYTHON_VER)/$(os)/testbed
680
705
endif
681
706
682
707
@echo ">>> Create VERSIONS file for $(os)"
@@ -689,6 +714,7 @@ endif
689
714
echo "mpdecimal: $(MPDECIMAL_VERSION)" >> support/$(PYTHON_VER)/$(os)/VERSIONS
690
715
echo "OpenSSL: $(OPENSSL_VERSION)" >> support/$(PYTHON_VER)/$(os)/VERSIONS
691
716
echo "XZ: $(XZ_VERSION)" >> support/$(PYTHON_VER)/$(os)/VERSIONS
717
+ echo "Zstandard: $(ZSTD_VERSION)" >> support/$(PYTHON_VER)/$(os)/VERSIONS
692
718
693
719
dist/Python-$(PYTHON_VER ) -$(os ) -support.$(BUILD_NUMBER ) .tar.gz : \
694
720
$$(PYTHON_XCFRAMEWORK-$(os ) ) /Info.plist \
@@ -757,6 +783,7 @@ config:
757
783
@echo " MPDECIMAL_VERSION=$( MPDECIMAL_VERSION) "
758
784
@echo " OPENSSL_VERSION=$( OPENSSL_VERSION) "
759
785
@echo " XZ_VERSION=$( XZ_VERSION) "
786
+ @echo " ZSTD_VERSION=$( ZSTD_VERSION) "
760
787
761
788
# Expand cross-platform build and clean targets for each output product
762
789
clean : $(foreach os,$(OS_LIST ) ,clean-$(os ) )
0 commit comments