Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
2d47eda
ci: stabilize legacy packages for GCC 15 / C23 compatibility
frangarcj Apr 26, 2026
982a89a
ci: install subversion dependency in runners
frangarcj Apr 26, 2026
daacba0
ci: fix all numeric labels in pixman assembler
frangarcj Apr 26, 2026
0a460c9
ci: use ubuntu-22.04 to restore python2.7 support
frangarcj Apr 26, 2026
a539867
ci: add GCC 15 compatibility flags to ffmpeg and sdl2_image
frangarcj Apr 26, 2026
ce5771c
ci: add GCC 15 compatibility flags to libarchive
frangarcj Apr 26, 2026
8a325e9
ci: add GCC 15 compatibility flags to libvita2d and sdl2_ttf
frangarcj Apr 26, 2026
bbb0d82
ci: add GCC 15 compatibility flags to harfbuzz, freetype and libvorbis
frangarcj Apr 26, 2026
31c0cb1
ci: add GCC 15 compatibility flags to libmad and libogg
frangarcj Apr 26, 2026
d66f0e4
ci: add GCC 15 compatibility flags to libtheora and libpng
frangarcj Apr 26, 2026
bbc6b1b
ci: add GCC 15 compatibility flags to zlib
frangarcj Apr 26, 2026
e367cf8
ci: add GCC 15 compatibility flags to sdl2
frangarcj Apr 26, 2026
f1855fe
ci: restore ubuntu-latest and fix python2.7 install via setup-python
frangarcj Apr 26, 2026
78c660b
ci: stabilize build_depends by removing failing python2.7 setup on ub…
frangarcj Apr 26, 2026
150c5c4
ci: add GCC 15 compatibility flags to SceShaccCgExt, vitaGL and ALmixer
frangarcj Apr 26, 2026
04e2c14
ci: master fix for GCC 15/C23 compatibility and python 2.7 source build
frangarcj Apr 26, 2026
9320934
ci: fix cpython3 build by symlinking python3.11 and adding GCC 15 flags
frangarcj Apr 26, 2026
50497bc
ci: add GCC 15 compatibility flags to icu4c, boost, libxml2, libarchi…
frangarcj Apr 26, 2026
d546261
ci: add GCC 15 compatibility flags to sdl2, sdl2_ttf, and libvita2d
frangarcj Apr 26, 2026
2009ba4
Optimize CI workflow with Tiers/Tracks and fix failing packages with …
frangarcj Apr 26, 2026
cde3e3b
Fix pib patch to avoid -std=gnu11 warning with C++
frangarcj Apr 26, 2026
d1f8bc3
Fix build.yml needs dependency and use heredoc for matrix output
frangarcj Apr 26, 2026
043b826
Fix sha256sums length in VITABUILD files
frangarcj Apr 26, 2026
6a04a23
Fix artifact download in build_package.yml and add deps-list to creat…
frangarcj Apr 26, 2026
3fbaf84
Use actions/setup-python to install exact Python 3.11 for cpython3 build
frangarcj Apr 26, 2026
f1f3287
Force C standard in cpython/cpython3 build scripts to avoid C23 keywo…
frangarcj Apr 26, 2026
bd4c013
Add -lpthread to cpython/cpython3 link flags to support new OpenSSL
frangarcj Apr 27, 2026
d3b2d62
Implement internal Docker container for CI optimization
frangarcj Apr 27, 2026
80b8445
Add curl to Dockerfile (required by VitaSDK installer)
frangarcj Apr 27, 2026
0aa0917
Add non-root user and use branch name for Docker tag
frangarcj Apr 27, 2026
c098c23
Sanitize Docker tag and pass it to builds
frangarcj Apr 27, 2026
b73fcba
Add missing image_tag to Tier 4 jobs
frangarcj Apr 27, 2026
767c28a
Add needs: prepare_jobs to prepare_docker job
frangarcj Apr 27, 2026
8173f10
Make libc6-dev-i386 optional based on architecture (fix local arm64 b…
frangarcj Apr 27, 2026
ca9e47b
Optimize Dockerfile: separate sudo install and use --no-install-recom…
frangarcj Apr 27, 2026
1efd7a2
Add fakeroot to Dockerfile
frangarcj Apr 27, 2026
8205f80
Add autotools and essential build utilities to Dockerfile
frangarcj Apr 27, 2026
9456003
Fix cpython build scripts (bash) and add luajit host dependencies
frangarcj Apr 27, 2026
f8316ea
Add continue-on-error: true to all build jobs
frangarcj Apr 27, 2026
c310263
Fix workflow validation: move continue-on-error to reusable workflow
frangarcj Apr 27, 2026
6e2f550
Fix Python builds: add openssl3, pass GITHUB_TOKEN, and fix build scr…
frangarcj Apr 27, 2026
fc6b9e2
Revert cpython3 to openssl-1.1.1 and remove openssl3
frangarcj Apr 27, 2026
b8a8667
Ensure openssl-1.1.1 is preferred over openssl to fix cpython3 build
frangarcj Apr 27, 2026
75d9b41
Add unzip and implement recursive dependency check for OpenSSL versions
frangarcj Apr 27, 2026
6954989
Fix shell compatibility and explicitly filter OpenSSL versions for Py…
frangarcj Apr 27, 2026
ee93853
Fix 7z command in Python build scripts
frangarcj Apr 27, 2026
c926bd4
ci: optimize Dockerfile build using GHA cache and cache bust
frangarcj Apr 28, 2026
c3cfa36
ci: fix buildx cache issue, clean dead code, add cycle detection
frangarcj Apr 28, 2026
55564c8
fix: update actions
frangarcj May 1, 2026
f72d4a2
ci: only download dependency artifacts for packages that have depende…
frangarcj May 17, 2026
6d2b46a
ci: fix dependency artifact download pattern
frangarcj May 17, 2026
2519133
ci: fix artifact download pattern using brace expansion
frangarcj May 17, 2026
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
265 changes: 173 additions & 92 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,109 +16,190 @@ jobs:
- name: Install dependencies
id: set-matrix
run: |
echo "dependant=$(node create-matrix.js dependant)" >> $GITHUB_OUTPUT
echo "non_dependant=$(node create-matrix.js non_dependant)" >> $GITHUB_OUTPUT
echo "matrix<<EOF" >> $GITHUB_OUTPUT
node create-matrix.js >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
TAG=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9._-]/-/g')
echo "tag=$TAG" >> $GITHUB_OUTPUT

outputs:
dependant: ${{ steps.set-matrix.outputs.dependant }}
non_dependant: ${{ steps.set-matrix.outputs.non_dependant }}
matrix: ${{ steps.set-matrix.outputs.matrix }}
tag: ${{ steps.set-matrix.outputs.tag }}

prepare_docker:
runs-on: ubuntu-latest
needs: prepare_jobs
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v6
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Log in to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v7
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}/vitasdk:${{ needs.prepare_jobs.outputs.tag }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
VITASDK_CACHE_BUST=${{ github.run_id }}-${{ github.run_attempt }}

build_tier0_main:
needs: [prepare_jobs, prepare_docker]

build:
needs: [prepare_jobs]
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.non_dependant) }}
env:
SSHPASS: ${{ secrets.SSHPASS }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: |
: # libarchive-tools provides bsdtar
: # libtool-bin is required to build libtremor
: # xutils-dev is required to build openssl
sudo apt-get update
sudo apt-get install libarchive-tools libtool-bin xutils-dev
- name: Prepare Build
run: |
bash ./prepare.sh
- name: Build package
run: |
export VITASDK=/usr/local/vitasdk
export PATH=$VITASDK/bin:$PATH
bash ./build.sh ${{ matrix.package }}
- name: Rename package
run: |
export FILE=`echo ${{ matrix.package }}/*-arm.tar.xz`
mv $FILE ${{ matrix.package }}/${{ matrix.package }}.tar.xz
- uses: actions/upload-artifact@v6
with:
name: ${{ matrix.package }}
path: ${{ matrix.package }}/${{ matrix.package }}.tar.xz
if-no-files-found: error
build_depends:
needs: [prepare_jobs, build]
runs-on: ubuntu-22.04
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier0_main }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier0_slow:
needs: [prepare_jobs, prepare_docker]

strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.dependant) }}
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier0_slow }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier1_main:
needs: [prepare_jobs, prepare_docker, build_tier0_main]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier1_main }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier1_slow:
needs: [prepare_jobs, prepare_docker, build_tier0_main, build_tier0_slow]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier1_slow }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier2_main:
needs: [prepare_jobs, prepare_docker, build_tier1_main]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier2_main }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier2_slow:
needs: [prepare_jobs, prepare_docker, build_tier1_main, build_tier1_slow]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier2_slow }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier3_main:
needs: [prepare_jobs, prepare_docker, build_tier2_main]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier3_main }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier3_slow:
needs: [prepare_jobs, prepare_docker, build_tier2_main, build_tier2_slow]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier3_slow }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}
secrets: inherit

build_tier4_main:
needs: [prepare_jobs, prepare_docker, build_tier3_main]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier4_main }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}

secrets: inherit

build_tier4_slow:
needs: [prepare_jobs, prepare_docker, build_tier3_main, build_tier3_slow]


strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.prepare_jobs.outputs.matrix).tier4_slow }}
uses: ./.github/workflows/build_package.yml
with:
package: ${{ matrix.package }}
image_tag: ${{ needs.prepare_jobs.outputs.tag }}

secrets: inherit

env:
SSHPASS: ${{ secrets.SSHPASS }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v6
- name: Generate actions/download-artifact pattern
id: generate-download-artifact-pattern
run: |
PATTERN=`echo ${{ matrix.package }} | awk 'NF{NF-=1};1' | tr ' ' '|' | awk '{ print "@(" $0 ")" }'`
echo "PATTERN=$PATTERN" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v7
with:
path: package
pattern: ${{ steps.generate-download-artifact-pattern.outputs.PATTERN }}
merge-multiple: true
- name: Install dependencies
run: |
: # libarchive-tools provides bsdtar
: # libc6-dev-i386 is required to build luajit
: # python2.7 is required to build cpython
sudo apt-get update
sudo apt-get install libarchive-tools libc6-dev-i386 python2.7
- uses: actions/setup-python@v6
with:
python-version: '3.11'
- name: Prepare Build
run: |
bash ./prepare.sh
- name: Install and Build packages
run: |
export VITASDK=/usr/local/vitasdk
export PATH=$VITASDK/bin:$PATH
for f in ${{ matrix.package }}; do bash ./install_or_build.sh $f; done
- name: Export package
run: |
export PACKAGE=`echo ${{ matrix.package }} | awk '{print $NF}'`
echo "PACKAGE=$PACKAGE" >> $GITHUB_ENV
- name: Rename package
run: |
export FILE=`echo ${{ env.PACKAGE }}/*-arm.tar.xz`
mv $FILE ${{ env.PACKAGE }}/${{ env.PACKAGE }}.tar.xz
- uses: actions/upload-artifact@v6
with:
name: ${{ env.PACKAGE }}
path: ${{ env.PACKAGE }}/${{ env.PACKAGE }}.tar.xz
if-no-files-found: error
upload-releases:
needs: [prepare_jobs, build, build_depends]
runs-on: ubuntu-latest
if: contains(github.ref,'refs/heads/master')
steps:
needs: [prepare_jobs, build_tier0_main, build_tier0_slow, build_tier1_main, build_tier1_slow, build_tier2_main, build_tier2_slow, build_tier3_main, build_tier3_slow, build_tier4_main, build_tier4_slow]
runs-on: ubuntu-latest
if: contains(github.ref,'refs/heads/master')
steps:
- uses: actions/checkout@v6
- uses: actions/download-artifact@v7
- uses: actions/download-artifact@v4
with:
path: package
merge-multiple: true
Expand Down
Loading
Loading