build script and github actions for rootful and rootless builds

This commit is contained in:
Siddharth Saxena 2023-12-17 02:12:33 +05:30
parent 91e167e25d
commit 1d8626ae9b
11 changed files with 121 additions and 18 deletions

64
.github/workflows/ci.yaml vendored Normal file
View File

@ -0,0 +1,64 @@
name: Theos CI
on:
release:
types:
- created
jobs:
build:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: recursive
- name: Theos Setup (Check Cache)
id: verify-cache
run: |
echo "::set-output name=heads::`git ls-remote https://github.com/roothide/theos | head -n 1 | cut -f 1`-`git ls-remote https://github.com/xybp888/iOS-SDKs | head -n 1 | cut -f 1`"
- name: Theos Setup (Use Cache)
id: cache
uses: actions/cache@v2
with:
path: ${{ github.workspace }}/theos
key: ${{ runner.os }}-${{ steps.verify-cache.outputs.heads }}
- name: Theos Setup (Setup)
uses: NyaMisty/theos-action@master
with:
theos-src: https://github.com/roothide/theos
theos-sdks: https://github.com/xybp888/iOS-SDKs
- name: Get tag
if: ${{ startsWith(github.ref, 'refs/tags/') }}
id: tag
uses: dawidd6/action-get-tag@v1
- name: Build Release package - Rootful
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
cd screendumpLowFrame
make clean
TAGNAME=${{ steps.tag.outputs.tag }}
make package FINALPACKAGE=1 PACKAGE_VERSION=${TAGNAME#v}-rootful
- name: Build Release package - Rootless
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
cd screendumpLowFrame
make clean
TAGNAME=${{ steps.tag.outputs.tag }}
make package THEOS_PACKAGE_SCHEME=rootless FINALPACKAGE=1 PACKAGE_VERSION=${TAGNAME#v}-rootless
- name: Release
uses: softprops/action-gh-release@v1
if: ${{ startsWith(github.ref, 'refs/tags/') }}
with:
files: |
${{ github.workspace }}/screendumpLowFrame/packages/*.deb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -2,7 +2,11 @@ TARGET = iphone:16.5:14.0
include $(THEOS)/makefiles/common.mk include $(THEOS)/makefiles/common.mk
PACKAGE_BUILDNAME := rootless ifeq ($(THEOS_PACKAGE_SCHEME),rootless)
PACKAGE_BUILDNAME := rootless
else
PACKAGE_BUILDNAME := rootful
endif
TOOL_NAME = screendumpd TOOL_NAME = screendumpd
$(TOOL_NAME)_FILES = main.mm $(TOOL_NAME)_FILES = main.mm
@ -24,3 +28,14 @@ include $(THEOS_MAKE_PATH)/tool.mk
SUBPROJECTS += hooks SUBPROJECTS += hooks
include $(THEOS_MAKE_PATH)/aggregate.mk include $(THEOS_MAKE_PATH)/aggregate.mk
ifeq ($(THEOS_PACKAGE_SCHEME),rootless)
after-screendumpd-stage::
$(ECHO_NOTHING) rm $(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.julioverne.screendumpd.plist$(ECHO_END)
$(ECHO_NOTHING) mv $(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.julioverne.screendumpd.rootless.plist $(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.julioverne.screendumpd.plist$(ECHO_END)
$(ECHO_NOTHING)$(FAKEROOT) chown root:wheel $(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.julioverne.screendumpd.plist$(ECHO_END)
else
after-screendumpd-stage::
$(ECHO_NOTHING) rm $(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.julioverne.screendumpd.rootless.plist$(ECHO_END)
$(ECHO_NOTHING)$(FAKEROOT) chown root:wheel $(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.julioverne.screendumpd.plist$(ECHO_END)
endif

View File

@ -1,9 +0,0 @@
#!/bin/bash
echo "Building package for ROOTLESS Jailbreak"
export THEOS_PACKAGE_SCHEME=rootless
make clean
make package FINALPACKAGE=1
unset THEOS_PACKAGE_SCHEME

View File

@ -0,0 +1,11 @@
#!/bin/bash
echo "Building package for ROOTFUL Jailbreak"
make clean
make package FINALPACKAGE=1
echo "Building package for ROOTLESS Jailbreak"
make clean
make package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless

View File

@ -2,6 +2,7 @@ TARGET = iphone:16.5:14.0
include $(THEOS)/makefiles/common.mk include $(THEOS)/makefiles/common.mk
TWEAK_NAME = screendumpbb TWEAK_NAME = screendumpbb
$(TWEAK_NAME)_FILES = Tweak.xm $(TWEAK_NAME)_FILES = Tweak.xm
$(TWEAK_NAME)_FRAMEWORKS := IOSurface IOKit $(TWEAK_NAME)_FRAMEWORKS := IOSurface IOKit

View File

@ -7,8 +7,6 @@
#undef NSLog #undef NSLog
#define kSettingsPath @"/var/jb/var/mobile/Library/Preferences/com.cosmosgenius.screendump.plist"
extern "C" UIImage* _UICreateScreenUIImage(); extern "C" UIImage* _UICreateScreenUIImage();
static BOOL isEnabled; static BOOL isEnabled;

View File

@ -1,6 +1,11 @@
#!/bin/bash #!/bin/bash
launchctl unload /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist if [ -L "/var/jb" ]; then
launchctl load /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist launchctl unload /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist
launchctl load /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist
else
launchctl unload /Library/LaunchDaemons/com.julioverne.screendumpd.plist
launchctl load /Library/LaunchDaemons/com.julioverne.screendumpd.plist
fi
exit 0; exit 0;

View File

@ -1,5 +1,9 @@
#!/bin/bash #!/bin/bash
launchctl unload /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist if [ -L "/var/jb" ]; then
launchctl unload /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist
else
launchctl unload /Library/LaunchDaemons/com.julioverne.screendumpd.plist
fi
exit 0; exit 0;

View File

@ -6,7 +6,7 @@
<string>com.julioverne.screendumpd</string> <string>com.julioverne.screendumpd</string>
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/var/jb/usr/libexec/screendumpd</string> <string>/usr/libexec/screendumpd</string>
</array> </array>
<key>RunAtLoad</key> <key>RunAtLoad</key>
<true/> <true/>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.julioverne.screendumpd</string>
<key>ProgramArguments</key>
<array>
<string>/var/jb/usr/libexec/screendumpd</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

View File

@ -5,8 +5,6 @@
#import <IOSurface/IOSurfaceRef.h> #import <IOSurface/IOSurfaceRef.h>
#import <rootless.h> #import <rootless.h>
#define kSettingsPath @"/var/jb/var/mobile/Library/Preferences/com.cosmosgenius.screendump.plist"
static bool CCSisEnabled = true; static bool CCSisEnabled = true;
static NSString *CCSPassword = nil; static NSString *CCSPassword = nil;
static rfbScreenInfoPtr screen; static rfbScreenInfoPtr screen;