Files
Tweaks/.github/workflows/build.yml
2026-05-03 17:31:36 +02:00

118 lines
4.0 KiB
YAML

name: Build Tweak
on:
workflow_dispatch:
inputs:
tweak:
description: 'Tweak folder to build (e.g., BusinessJB, CreditAgricoleJB, Infuse-iOS, TF1Plus/TF1Plus-tvOS)'
required: false
default: 'BusinessJB'
branch:
description: 'Branch to build from'
required: false
default: 'main'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.tweak || 'BusinessJB' }}
cancel-in-progress: true
jobs:
build:
name: Build ${{ inputs.tweak || 'BusinessJB' }}
runs-on: macos-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.branch || github.ref }}
- name: Install dependencies
run: brew install make ldid
- name: Set PATH environment variables
run: |
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
echo "THEOS=${{ github.workspace }}/theos" >> $GITHUB_ENV
# Original from YTweaks
- name: Get Theos commit
run: |
get_commit_hash() {
local repo_url=$1
git ls-remote "$repo_url" HEAD | awk '{print substr($1,1,7)}'
}
TWEAK_PATH="${{ inputs.tweak || 'BusinessJB' }}"
if [[ "$TWEAK_PATH" == *"tvOS"* || "$TWEAK_PATH" == *"TVOS"* ]]; then
THEOS_URL="https://github.com/NohamR/theos-tvOS"
else
THEOS_URL="https://github.com/roothide/theos"
fi
echo "THEOS_REPO=$THEOS_URL" >> $GITHUB_ENV
echo "THEOS_COMMIT=$(get_commit_hash "$THEOS_URL")" >> $GITHUB_ENV
- name: Cache Theos
id: cache-theos
uses: actions/cache@v5
with:
path: theos
key: Tweak-18.6-SDK-${{ env.THEOS_COMMIT }}
- name: Setup Theos
if: ${{ steps.cache-theos.outputs.cache-hit != 'true' }}
run: |
git clone --quiet --depth=1 --recurse-submodules ${{ env.THEOS_REPO }}.git theos
git clone --quiet --depth=1 -n --filter=tree:0 https://github.com/Tonwalter888/iOS-SDKs.git
cd iOS-SDKs
git sparse-checkout set --no-cone iPhoneOS18.6.sdk
git checkout --quiet
mv *.sdk "$THEOS/sdks"
- name: Clone headers
run: |
if [ ! -d "$THEOS/include/PSHeader" ]; then
git clone --quiet --depth=1 https://github.com/PoomSmart/PSHeader.git "$THEOS/include/PSHeader"
else
cd $THEOS/include/PSHeader
git pull --quiet --force
cd ${{ github.workspace }}
fi
- name: Build Tweak
run: |
TWEAK_PATH="${{ inputs.tweak || 'BusinessJB' }}"
TWEAK_NAME=$(basename "$TWEAK_PATH")
cd "$TWEAK_PATH"
echo "TWEAK_VERSION=$(grep '^Version:' control | cut -d ' ' -f2)" >> $GITHUB_ENV
echo "TWEAK_NAME=$TWEAK_NAME" >> $GITHUB_ENV
# Check if this is a tvOS tweak
if grep -q "TARGET.*appletv" Makefile; then
# tvOS tweaks don't use rootless/roothide schemes
make clean package DEBUG=0 FINALPACKAGE=1
else
# iOS tweaks build with multiple schemes
make clean package DEBUG=0 FINALPACKAGE=1
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide
fi
mv packages/*.deb ${{ github.workspace }}
- name: Upload the tweak .deb(s)
uses: actions/upload-artifact@v7
with:
name: ${{ env.TWEAK_NAME }} v${{ env.TWEAK_VERSION }}
path: ${{ github.workspace }}/*.deb
if-no-files-found: error
overwrite: true
- name: Create a draft release
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ env.TWEAK_NAME }}-v${{ env.TWEAK_VERSION }}
name: ${{ env.TWEAK_NAME }} v${{ env.TWEAK_VERSION }}
files: ${{ github.workspace }}/*.deb
draft: true