Skip to content

Commit ba64a00

Browse files
committed
ci
Signed-off-by: Lessica <[email protected]>
1 parent fc40e61 commit ba64a00

File tree

2 files changed

+156
-0
lines changed

2 files changed

+156
-0
lines changed

.github/workflows/build.yml

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
name: Build XcodeAnyTroll
2+
3+
on:
4+
push:
5+
branches: [ release ]
6+
workflow_dispatch:
7+
8+
env:
9+
FINALPACKAGE: 1
10+
HOMEBREW_NO_AUTO_UPDATE: 1
11+
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
12+
13+
jobs:
14+
build:
15+
runs-on: macos-14
16+
17+
strategy:
18+
matrix:
19+
scheme: ['', 'rootless', 'roothide']
20+
21+
steps:
22+
- name: Checkout repository
23+
uses: actions/checkout@v4
24+
25+
- name: Install dependencies
26+
run: |
27+
# Install xcbeautify for build output formatting
28+
# Install ldid for iOS code signing
29+
# Install 7zip for compression
30+
brew install xcbeautify ldid-procursus p7zip make
31+
32+
- name: Checkout roothide/theos
33+
uses: actions/checkout@v4
34+
with:
35+
repository: roothide/theos
36+
path: theos-roothide
37+
submodules: recursive
38+
39+
- name: Checkout SandyXpc
40+
uses: actions/checkout@v4
41+
with:
42+
repository: Lessica/SandyXpc
43+
path: SandyXpc
44+
45+
- name: Install iOS SDKs
46+
run: |
47+
export THEOS=$GITHUB_WORKSPACE/theos-roothide
48+
cd theos-roothide
49+
./bin/install-sdk iPhoneOS16.5
50+
./bin/install-sdk iPhoneOS14.5
51+
env:
52+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53+
54+
- name: Setup Xcode
55+
uses: maxim-lobanov/setup-xcode@v1
56+
with:
57+
xcode-version: '16.2'
58+
59+
- name: Build SandyXpc (${{ matrix.scheme || 'default' }})
60+
run: |
61+
cd SandyXpc
62+
export THEOS=$GITHUB_WORKSPACE/theos-roothide
63+
THEOS_PACKAGE_SCHEME=${{ matrix.scheme }} FINALPACKAGE=1 gmake clean stage
64+
65+
- name: Build package (${{ matrix.scheme || 'default' }})
66+
run: |
67+
export THEOS=$GITHUB_WORKSPACE/theos-roothide
68+
THEOS_PACKAGE_SCHEME=${{ matrix.scheme }} FINALPACKAGE=1 gmake clean package
69+
70+
- name: Prepare artifacts
71+
run: |
72+
# Create directories for artifacts
73+
mkdir -p artifacts/dsym-${{ matrix.scheme || 'default' }}
74+
mkdir -p artifacts/packages-${{ matrix.scheme || 'default' }}
75+
76+
# Copy dSYM files
77+
if [ -d ".theos/obj" ]; then
78+
find .theos/obj -name "*.dSYM" -exec cp -r {} artifacts/dsym-${{ matrix.scheme || 'default' }}/ \;
79+
fi
80+
81+
# Copy packages
82+
if [ -d "packages" ]; then
83+
cp -r packages/* artifacts/packages-${{ matrix.scheme || 'default' }}/
84+
fi
85+
86+
- name: Upload dSYM artifacts
87+
uses: actions/upload-artifact@v4
88+
with:
89+
name: dsym-${{ matrix.scheme || 'default' }}
90+
path: artifacts/dsym-${{ matrix.scheme || 'default' }}
91+
if-no-files-found: warn
92+
93+
- name: Upload package artifacts
94+
uses: actions/upload-artifact@v4
95+
with:
96+
name: packages-${{ matrix.scheme || 'default' }}
97+
path: artifacts/packages-${{ matrix.scheme || 'default' }}
98+
if-no-files-found: warn
99+
100+
release:
101+
if: github.event_name == 'push' && github.ref == 'refs/heads/release'
102+
needs: build
103+
runs-on: macos-14
104+
105+
steps:
106+
- name: Checkout repository
107+
uses: actions/checkout@v4
108+
109+
- name: Download all package artifacts
110+
uses: actions/download-artifact@v4
111+
with:
112+
pattern: packages-*
113+
path: release-packages
114+
merge-multiple: true
115+
116+
- name: Create release tag
117+
id: tag
118+
run: |
119+
# Read PACKAGE_VERSION from Makefile
120+
PACKAGE_VERSION=$(grep 'PACKAGE_VERSION' Makefile | cut -d' ' -f4)
121+
TAG_NAME="v$PACKAGE_VERSION"
122+
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
123+
124+
- name: Create GitHub Release
125+
uses: softprops/action-gh-release@v1
126+
with:
127+
tag_name: ${{ steps.tag.outputs.tag_name }}
128+
name: Release ${{ steps.tag.outputs.tag_name }}
129+
body: |
130+
Automated build from release branch
131+
132+
This release contains packages built with:
133+
- Default scheme
134+
- Rootless scheme
135+
- Roothide scheme
136+
137+
Built on: ${{ github.sha }}
138+
files: release-packages/**/*
139+
draft: false
140+
prerelease: false

Headers/libSandy.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#import <stdbool.h>
2+
3+
#if defined(__cplusplus)
4+
extern "C" {
5+
#endif
6+
7+
#define kLibSandySuccess 0
8+
#define kLibSandyErrorXPCFailure 1
9+
#define kLibSandyErrorRestricted 2
10+
11+
extern int libSandy_applyProfile(const char *profileName);
12+
extern bool libSandy_works(void);
13+
14+
#if defined(__cplusplus)
15+
}
16+
#endif

0 commit comments

Comments
 (0)