From ef16de159ca856c3e0ed6c7a4b035d532583bafb Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 22 Jan 2026 01:22:13 -0700 Subject: [PATCH 01/11] build PyApp fowls --- .github/workflows/pyapp.yml | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/pyapp.yml diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml new file mode 100644 index 0000000..b09b456 --- /dev/null +++ b/.github/workflows/pyapp.yml @@ -0,0 +1,42 @@ +name: Unit Testing + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + pyapp: + strategy: + matrix: + os: + - runs-on: + - ubuntu-latest + - macOS + - windows-latest + python-version: + - "3.13" + runs-on: ${{ matrix.os.runs-on }} + # fixme: figure out version automatically? can we "run-on" tags only? + env: + PYAPP_EXEC_SPEC=fowl.cli:fowl + PYAPP_PROJECT_NAME=fowl + PYAPP_PROJECT_VERSION=25.10.0 + steps: + - name: Install PyApp + run: | + curl https://github.com/ofek/pyapp/releases/latest/download/source.tar.gz -Lo pyapp-source.tar.gz + tar -xzf pyapp-source.tar.gz + mv pyapp-v* pyapp-latest + cd pyapp-latest + + - name: Build fowl via PyApp + run: | + cd pyapp-latest && cargo build --release + + - name: Upload the Artifact + uses: actions/upload-artifact@v4 + with: + name: fowl-${{ matrix.os.runs-on }} + path: pyapp-latest/target/release/pyapp \ No newline at end of file From aee19ffc9bc6cca7aab54beb9a9fdf2804d734e6 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 22 Jan 2026 01:26:38 -0700 Subject: [PATCH 02/11] format --- .github/workflows/pyapp.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index b09b456..7c6f9d7 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -20,9 +20,9 @@ jobs: runs-on: ${{ matrix.os.runs-on }} # fixme: figure out version automatically? can we "run-on" tags only? env: - PYAPP_EXEC_SPEC=fowl.cli:fowl - PYAPP_PROJECT_NAME=fowl - PYAPP_PROJECT_VERSION=25.10.0 + PYAPP_EXEC_SPEC: fowl.cli:fowl + PYAPP_PROJECT_NAME: fowl + PYAPP_PROJECT_VERSION: 25.10.0 steps: - name: Install PyApp run: | From 711e9697555470d873d37ecaf50edd6db53c4ece Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 22 Jan 2026 01:28:44 -0700 Subject: [PATCH 03/11] naming --- .github/workflows/pyapp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index 7c6f9d7..b569bfa 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -1,4 +1,4 @@ -name: Unit Testing +name: Build PyApp fowl on: push: From e5f37af5a5f3ebc6aff20648907b2d365a899ede Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 22 Jan 2026 01:35:23 -0700 Subject: [PATCH 04/11] different matrix defn --- .github/workflows/pyapp.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index b569bfa..56d5246 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -10,14 +10,13 @@ jobs: pyapp: strategy: matrix: - os: - - runs-on: - - ubuntu-latest - - macOS - - windows-latest - python-version: - - "3.13" - runs-on: ${{ matrix.os.runs-on }} + include: + - os: macos-latest + python-version: "3.13" + - os: ubuntu-latest + python-version: "3.13" + - os: windows-latest + python-version: "3.13" # fixme: figure out version automatically? can we "run-on" tags only? env: PYAPP_EXEC_SPEC: fowl.cli:fowl From 9292722976f6bbadc7b3a0764dfe514c6e628bc8 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 22 Jan 2026 01:36:06 -0700 Subject: [PATCH 05/11] different matrix defn --- .github/workflows/pyapp.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index 56d5246..72c9bf3 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -17,6 +17,7 @@ jobs: python-version: "3.13" - os: windows-latest python-version: "3.13" + runs-on: ${{ matrix.os }} # fixme: figure out version automatically? can we "run-on" tags only? env: PYAPP_EXEC_SPEC: fowl.cli:fowl From 77b06908b36d2919f23660b6e044282a8eed2e30 Mon Sep 17 00:00:00 2001 From: meejah Date: Thu, 22 Jan 2026 01:43:37 -0700 Subject: [PATCH 06/11] githubactions --- .github/workflows/pyapp.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index 72c9bf3..b48285d 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -35,8 +35,16 @@ jobs: run: | cd pyapp-latest && cargo build --release - - name: Upload the Artifact + - name: Upload the Artifact (unix) + if: ${{ !contains(matrix.os, 'windows') }} uses: actions/upload-artifact@v4 with: - name: fowl-${{ matrix.os.runs-on }} - path: pyapp-latest/target/release/pyapp \ No newline at end of file + name: fowl-${{ matrix.os }} + path: pyapp-latest/target/release/pyapp + + - name: Upload the Artifact (exe) + if: ${{ contains(matrix.os, 'windows') }} + uses: actions/upload-artifact@v4 + with: + name: fowl-${{ matrix.os }} + path: pyapp-latest/target/release/pyapp.exe \ No newline at end of file From f89c7a95b505df724ac0985210f99fa3d01b746d Mon Sep 17 00:00:00 2001 From: meejah Date: Mon, 26 Jan 2026 14:00:34 -0700 Subject: [PATCH 07/11] embed --- .github/workflows/pyapp.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index b48285d..60bf570 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -22,8 +22,11 @@ jobs: env: PYAPP_EXEC_SPEC: fowl.cli:fowl PYAPP_PROJECT_NAME: fowl - PYAPP_PROJECT_VERSION: 25.10.0 + PYAPP_PROJECT_PATH: ../dist/fowl-25.10.0.tar.gz steps: + - name: Build Fowl sdist + run: | + hatchling build - name: Install PyApp run: | curl https://github.com/ofek/pyapp/releases/latest/download/source.tar.gz -Lo pyapp-source.tar.gz From 892c187cceee903d111fce39d5dcf1724dd3b8f8 Mon Sep 17 00:00:00 2001 From: meejah Date: Wed, 28 Jan 2026 13:34:08 -0700 Subject: [PATCH 08/11] python -m --- .github/workflows/pyapp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index 60bf570..c9c7ad8 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -26,7 +26,7 @@ jobs: steps: - name: Build Fowl sdist run: | - hatchling build + python -m hatchling build - name: Install PyApp run: | curl https://github.com/ofek/pyapp/releases/latest/download/source.tar.gz -Lo pyapp-source.tar.gz From 599caa4a38b48d2f286c267e6f7a5ce61854e432 Mon Sep 17 00:00:00 2001 From: meejah Date: Wed, 28 Jan 2026 13:35:38 -0700 Subject: [PATCH 09/11] install dev --- .github/workflows/pyapp.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index c9c7ad8..ae92cb2 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -26,6 +26,7 @@ jobs: steps: - name: Build Fowl sdist run: | + python -m pip install -e .[dev] python -m hatchling build - name: Install PyApp run: | From 100056376d677aedbf3c21e39216c070d6a4426b Mon Sep 17 00:00:00 2001 From: meejah Date: Wed, 28 Jan 2026 13:37:24 -0700 Subject: [PATCH 10/11] current source --- .github/workflows/pyapp.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index ae92cb2..febe814 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -24,10 +24,30 @@ jobs: PYAPP_PROJECT_NAME: fowl PYAPP_PROJECT_PATH: ../dist/fowl-25.10.0.tar.gz steps: + - name: Check out source code + uses: actions/checkout@v2 + with: + # Get enough history for the tags we get next to be meaningful. 0 + # means all history. + fetch-depth: "0" + # Checkout head of the branch of the PR, or the exact revision + # specified for non-PR builds. + ref: "${{ github.event.pull_request.head.sha || github.sha }}" + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install --editable .[dev] + - name: Build Fowl sdist run: | - python -m pip install -e .[dev] python -m hatchling build + - name: Install PyApp run: | curl https://github.com/ofek/pyapp/releases/latest/download/source.tar.gz -Lo pyapp-source.tar.gz From 6daa816ca24814c04a9e8c4e845d451ed88bf3b3 Mon Sep 17 00:00:00 2001 From: meejah Date: Wed, 28 Jan 2026 13:41:07 -0700 Subject: [PATCH 11/11] oldest ubuntu available --- .github/workflows/pyapp.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pyapp.yml b/.github/workflows/pyapp.yml index febe814..57c8d6d 100644 --- a/.github/workflows/pyapp.yml +++ b/.github/workflows/pyapp.yml @@ -13,8 +13,14 @@ jobs: include: - os: macos-latest python-version: "3.13" - - os: ubuntu-latest + +# counter-intuitively, we want the *oldest* linux runner so that we +# get the oldest GLIBC version for wider compatibility (since we can't +# actually statically-link rust) + + - os: ubuntu-22.04 python-version: "3.13" + - os: windows-latest python-version: "3.13" runs-on: ${{ matrix.os }}