Skip to content

[pull] main from beeware:main #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 38 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
6f5fa58
Switch main branch to Python 3.14.
freakboy3742 Dec 13, 2024
7c9ec06
Fixes #239 - Purge .orig files from release packages.
freakboy3742 Dec 13, 2024
5eb3316
Include iOS testbed in iOS release artefacts.
freakboy3742 Dec 13, 2024
5ca1c79
Update build to use 3.14.0a3
freakboy3742 Dec 17, 2024
42a4a13
Bump actions/upload-artifact from 4.4.3 to 4.5.0
dependabot[bot] Dec 22, 2024
23ea419
Merge pull request #242 from beeware/dependabot/github_actions/action…
freakboy3742 Dec 22, 2024
dad62c3
Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#244)
dependabot[bot] Jan 13, 2025
6d5096d
Bump ncipollo/release-action from 1.14.0 to 1.15.0 (#243)
dependabot[bot] Jan 13, 2025
a3ffcad
Update patch to 3.14.0a4.
freakboy3742 Feb 3, 2025
e6682a4
Bump actions/setup-python from 5.3.0 to 5.4.0 (#245)
dependabot[bot] Feb 3, 2025
a2c04c3
Bump patch to Python3.14.0a5. (#247)
freakboy3742 Feb 13, 2025
c82aa70
Modify handling of platform site to allow for venv usage. (#246)
freakboy3742 Feb 14, 2025
5cd3512
Improve support for PythonKit, and update usage guide (#248)
freakboy3742 Feb 14, 2025
3a7cd86
More updates to USAGE and README (#250)
freakboy3742 Feb 17, 2025
1158013
Bump ncipollo/release-action from 1.15.0 to 1.16.0 (#253)
dependabot[bot] Feb 23, 2025
832d393
Bump actions/upload-artifact from 4.6.0 to 4.6.1 (#254)
dependabot[bot] Feb 23, 2025
aa545e9
Add patch for handling empty simulator lists.
freakboy3742 Feb 25, 2025
c794b06
Bump actions/download-artifact from 4.1.8 to 4.1.9 (#255)
dependabot[bot] Mar 3, 2025
0013ca0
Update patch for Python 3.14.0a6 (#258)
freakboy3742 Mar 18, 2025
ca43143
Bump actions/download-artifact from 4.1.9 to 4.2.1 (#265)
dependabot[bot] Mar 23, 2025
cfd548d
Bump actions/upload-artifact from 4.6.1 to 4.6.2 (#266)
dependabot[bot] Mar 23, 2025
db04fbd
Bump actions/setup-python from 5.4.0 to 5.5.0 (#267)
dependabot[bot] Mar 30, 2025
81428db
Add Python.patch Note to Contributing.md (#271)
johnzhou721 Apr 17, 2025
92d8d95
Add support for visionOS (#270)
johnzhou721 Apr 23, 2025
f8fd686
Fix an iOS reference in testbed cloning. (#272)
johnzhou721 Apr 23, 2025
344aaf6
Update patch to include visionOS plist changes.
freakboy3742 Apr 25, 2025
515625c
visionOS Support and Other Fixes (#276)
johnzhou721 Apr 27, 2025
e29c0fd
Bump actions/setup-python from 5.5.0 to 5.6.0 (#277)
dependabot[bot] Apr 27, 2025
80296f0
Bump actions/download-artifact from 4.2.1 to 4.3.0 (#278)
dependabot[bot] Apr 27, 2025
b5bed64
Ensure base_prefix is set in a cross-venv. (#279)
freakboy3742 May 1, 2025
7a7aad1
Document the Patch Tree Approach. (#281)
johnzhou721 May 4, 2025
6583edf
Update CONTRIBUTING.md for Grammar + Clarity (#282)
johnzhou721 May 4, 2025
a041905
Remove some useless PATHs in Usage.md (#284)
johnzhou721 May 6, 2025
76b7f30
Bump patch to Python 3.14.0b2. (#290)
freakboy3742 Jun 3, 2025
c012e5d
Add xcprivacy and dSYM handling (#285)
freakboy3742 Jun 3, 2025
8019835
Temporarily disable dSYM production. (#293)
freakboy3742 Jun 3, 2025
a7aaafe
Correct issues with testing in CI (#295)
freakboy3742 Jun 4, 2025
119de47
Correct handling of sysconfig._BASE_PREFIX in cross environments. (#297)
freakboy3742 Jun 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 87 additions & 20 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
name: CI
on:
pull_request:
push:
branches:
- main
- 3.*
workflow_call:
inputs:
build-number:
Expand Down Expand Up @@ -93,53 +89,124 @@ jobs:
strategy:
fail-fast: false
matrix:
target: ['macOS', 'iOS', 'tvOS', 'watchOS']
include:
- briefcase-run-args:
- run-tests: false

- target: macOS
run-tests: true

- target: iOS
briefcase-run-args: ' -d "iPhone SE (3rd generation)"'
run-tests: true
target: ['macOS', 'iOS', 'tvOS', 'watchOS', 'visionOS']

steps:
- uses: actions/[email protected]

- name: Set up Python
uses: actions/setup-python@v5.3.0
uses: actions/setup-python@v5.6.0
with:
# Appending -dev ensures that we can always build the dev release.
# It's a no-op for versions that have been published.
python-version: ${{ needs.config.outputs.PYTHON_VER }}-dev
# Ensure that we *always* use the latest build, not a cached version.
# It's an edge case, but when a new alpha is released, we need to use it ASAP.
check-latest: true

- name: Build ${{ matrix.target }}
run: |
# Do the build for the requested target.
make ${{ matrix.target }} BUILD_NUMBER=${{ needs.config.outputs.BUILD_NUMBER }}

- name: Upload build artefacts
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.6.2
with:
name: Python-${{ needs.config.outputs.PYTHON_VER }}-${{ matrix.target }}-support.${{ needs.config.outputs.BUILD_NUMBER }}.tar.gz
path: dist/Python-${{ needs.config.outputs.PYTHON_VER }}-${{ matrix.target }}-support.${{ needs.config.outputs.BUILD_NUMBER }}.tar.gz

briefcase-testbed:
name: Briefcase testbed (${{ matrix.target }})
runs-on: macOS-latest
needs: [ config, build ]
strategy:
fail-fast: false
matrix:
target: ["macOS", "iOS"]
include:
- briefcase-run-args:

- target: iOS
briefcase-run-args: ' -d "iPhone SE (3rd generation)"'

steps:
- uses: actions/[email protected]

- name: Get build artifact
uses: actions/[email protected]
with:
pattern: Python-${{ needs.config.outputs.PYTHON_VER }}-${{ matrix.target }}-support.${{ needs.config.outputs.BUILD_NUMBER }}.tar.gz
path: dist
merge-multiple: true

- name: Set up Python
uses: actions/[email protected]
with:
# Appending -dev ensures that we can always build the dev release.
# It's a no-op for versions that have been published.
python-version: ${{ needs.config.outputs.PYTHON_VER }}-dev
# Ensure that we *always* use the latest build, not a cached version.
# It's an edge case, but when a new alpha is released, we need to use it ASAP.
check-latest: true

- uses: actions/[email protected]
if: matrix.run-tests
with:
repository: beeware/Python-support-testbed
path: Python-support-testbed

- name: Install dependencies
if: matrix.run-tests
run: |
# Use the development version of Briefcase
python -m pip install git+https://github.com/beeware/briefcase.git

- name: Run support testbed check
if: matrix.run-tests
timeout-minutes: 10
working-directory: Python-support-testbed
run: briefcase run ${{ matrix.target }} Xcode --test ${{ matrix.briefcase-run-args }} -C support_package=\'../dist/Python-${{ needs.config.outputs.PYTHON_VER }}-${{ matrix.target }}-support.${{ needs.config.outputs.BUILD_NUMBER }}.tar.gz\'

cpython-testbed:
name: CPython testbed (${{ matrix.target }})
runs-on: macOS-latest
needs: [ config, build ]
strategy:
fail-fast: false
matrix:
target: ["iOS", "visionOS"]

steps:
- uses: actions/[email protected]

- name: Get build artifact
uses: actions/[email protected]
with:
pattern: Python-${{ needs.config.outputs.PYTHON_VER }}-${{ matrix.target }}-support.${{ needs.config.outputs.BUILD_NUMBER }}.tar.gz
path: dist
merge-multiple: true

- name: Set up Python
uses: actions/[email protected]
with:
# Appending -dev ensures that we can always build the dev release.
# It's a no-op for versions that have been published.
python-version: ${{ needs.config.outputs.PYTHON_VER }}-dev
# Ensure that we *always* use the latest build, not a cached version.
# It's an edge case, but when a new alpha is released, we need to use it ASAP.
check-latest: true

- name: Unpack support package
run: |
mkdir support
cd support
tar zxvf ../dist/Python-${{ needs.config.outputs.PYTHON_VER }}-${{ matrix.target }}-support.${{ needs.config.outputs.BUILD_NUMBER }}.tar.gz

- name: Run CPython testbed
timeout-minutes: 10
working-directory: support
run: |
# Run a representative subset of CPython core tests:
# - test_builtin as a test of core language tools
# - test_grammar as a test of core language features
# - test_os as a test of system library calls
# - test_bz2 as a simple test of third party libraries
# - test_ctypes as a test of FFI
python -m testbed run -- test --single-process --rerun -W test_builtin test_grammar test_os test_bz2 test_ctypes
5 changes: 4 additions & 1 deletion .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Python environment
uses: actions/setup-python@v5.3.0
uses: actions/setup-python@v5.6.0
with:
python-version: "3.X"

Expand Down Expand Up @@ -48,3 +48,6 @@ jobs:
# watchOS build
curl -o watchOS-artefact.tar.gz -L https://github.com/beeware/Python-Apple-support/releases/download/${{ steps.build-vars.outputs.TAG }}/Python-${{ steps.build-vars.outputs.PYTHON_VER }}-watchOS-support.${{ steps.build-vars.outputs.BUILD_NUMBER }}.tar.gz
aws s3 cp watchOS-artefact.tar.gz s3://briefcase-support/python/${{ steps.build-vars.outputs.PYTHON_VER }}/watchOS/Python-${{ steps.build-vars.outputs.PYTHON_VER }}-watchOS-support.${{ steps.build-vars.outputs.BUILD_NUMBER }}.tar.gz
# visionOS build
curl -o visionOS-artefact.tar.gz -L https://github.com/beeware/Python-Apple-support/releases/download/${{ steps.build-vars.outputs.TAG }}/Python-${{ steps.build-vars.outputs.PYTHON_VER }}-visionOS-support.${{ steps.build-vars.outputs.BUILD_NUMBER }}.tar.gz
aws s3 cp visionOS-artefact.tar.gz s3://briefcase-support/python/${{ steps.build-vars.outputs.PYTHON_VER }}/visionOS/Python-${{ steps.build-vars.outputs.PYTHON_VER }}-visionOS-support.${{ steps.build-vars.outputs.BUILD_NUMBER }}.tar.gz
4 changes: 2 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ jobs:
needs: [ config, ci ]
steps:
- name: Get build artifacts
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v4.3.0
with:
pattern: Python-*
path: dist
merge-multiple: true

- name: Create Release
uses: ncipollo/release-action@v1.14.0
uses: ncipollo/release-action@v1.16.0
with:
name: ${{ needs.ci.outputs.PYTHON_VER }}-${{ needs.config.outputs.BUILD_NUMBER }}
tag: ${{ needs.ci.outputs.PYTHON_VER }}-${{ needs.config.outputs.BUILD_NUMBER }}
Expand Down
41 changes: 39 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,44 @@

BeeWare <3's contributions!

Please be aware, BeeWare operates under a Code of Conduct.
Please be aware that BeeWare operates under a [Code of
Conduct](https://beeware.org/community/behavior/code-of-conduct/).

See [CONTRIBUTING to BeeWare](https://beeware.org/contributing) for details.
See [CONTRIBUTING to BeeWare](https://beeware.org/contributing) for general
project contribution guidelines.

Unless a fix is version specific, PRs should genereally be made against the
`main` branch of this repo, targeting the current development version of Python.
Project maintainers will manage the process of backporting changes to older
Python versions.

## Changes to `Python.patch`

Additional handling is required if you need to make modifications to the patch
applied to Python sources (`patch/Python/Python.patch`).

Any iOS or macOS-specific changes should be submitted to the [upstream CPython
repository](https://github.com/python/cpython). macOS and iOS are both
officially supported Python platforms, and the code distributed by this project
for those platforms is unmodified from the official repository.

Changes to to support other platforms can be included in a PR for this repo, but
they must also be submitted as a pull request against the `MAJOR.MINOR-patched`
branch on [the `freakboy3742` fork of the CPython
repo](https://github.com/freakboy3742/cpython). This is required to ensure that
any contributed changes can be easily reproduced in future patches as more
changes are made.

Note that the `MAJOR.MINOR-patched` branch of that fork is maintained in the format
of a *patch tree*, which is a branch that consists of an entirely linear sequence of
commits applied on top of another branch (in the case of the fork, `MAJOR.MINOR`),
each of which adds a significant new feature. Therefore, a bug fix for an existing commit
in the patch tree *will* be merged when appropriate, but its changes will get combined
with that existing commit that adds the feature. A feature addition PR will be squashed
into a single, new commit, and then put on top of the patch tree.

This also means that if another contributor gets a pull request merged into
`MAJOR.MINOR-patched`, you must *rebase* your changes on top of the updated
`MAJOR.MINOR-patched` branch, as opposed to *merging* `MAJOR.MINOR-patched` into your
branch, since the "history" of a patch tree is likely to change in a way that is
incompatible with merge commits.
Loading