From 1d8626ae9bb832404c6c8751cbf8d9a3f2e4054a Mon Sep 17 00:00:00 2001 From: Siddharth Saxena Date: Sun, 17 Dec 2023 02:12:33 +0530 Subject: [PATCH] build script and github actions for rootful and rootless builds --- .github/workflows/ci.yaml | 64 +++++++++++++++++++ screendumpLowFrame/Makefile | 17 ++++- screendumpLowFrame/build_package_rootless.sh | 9 --- screendumpLowFrame/build_packages.sh | 11 ++++ screendumpLowFrame/hooks/Makefile | 1 + screendumpLowFrame/hooks/Tweak.xm | 2 - screendumpLowFrame/layout/DEBIAN/postinst | 9 ++- screendumpLowFrame/layout/DEBIAN/prerm | 6 +- .../com.julioverne.screendumpd.plist | 2 +- .../com.julioverne.screendumpd.rootless.plist | 16 +++++ screendumpLowFrame/main.mm | 2 - 11 files changed, 121 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/ci.yaml delete mode 100755 screendumpLowFrame/build_package_rootless.sh create mode 100755 screendumpLowFrame/build_packages.sh create mode 100644 screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.rootless.plist diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..dac9ae1 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -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 }} diff --git a/screendumpLowFrame/Makefile b/screendumpLowFrame/Makefile index fd54955..03a9096 100644 --- a/screendumpLowFrame/Makefile +++ b/screendumpLowFrame/Makefile @@ -2,7 +2,11 @@ TARGET = iphone:16.5:14.0 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)_FILES = main.mm @@ -24,3 +28,14 @@ include $(THEOS_MAKE_PATH)/tool.mk SUBPROJECTS += hooks 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 diff --git a/screendumpLowFrame/build_package_rootless.sh b/screendumpLowFrame/build_package_rootless.sh deleted file mode 100755 index 7754e8e..0000000 --- a/screendumpLowFrame/build_package_rootless.sh +++ /dev/null @@ -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 diff --git a/screendumpLowFrame/build_packages.sh b/screendumpLowFrame/build_packages.sh new file mode 100755 index 0000000..4a99d82 --- /dev/null +++ b/screendumpLowFrame/build_packages.sh @@ -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 diff --git a/screendumpLowFrame/hooks/Makefile b/screendumpLowFrame/hooks/Makefile index 2924364..9c6a8a6 100644 --- a/screendumpLowFrame/hooks/Makefile +++ b/screendumpLowFrame/hooks/Makefile @@ -2,6 +2,7 @@ TARGET = iphone:16.5:14.0 include $(THEOS)/makefiles/common.mk + TWEAK_NAME = screendumpbb $(TWEAK_NAME)_FILES = Tweak.xm $(TWEAK_NAME)_FRAMEWORKS := IOSurface IOKit diff --git a/screendumpLowFrame/hooks/Tweak.xm b/screendumpLowFrame/hooks/Tweak.xm index 2f1c774..7705452 100644 --- a/screendumpLowFrame/hooks/Tweak.xm +++ b/screendumpLowFrame/hooks/Tweak.xm @@ -7,8 +7,6 @@ #undef NSLog -#define kSettingsPath @"/var/jb/var/mobile/Library/Preferences/com.cosmosgenius.screendump.plist" - extern "C" UIImage* _UICreateScreenUIImage(); static BOOL isEnabled; diff --git a/screendumpLowFrame/layout/DEBIAN/postinst b/screendumpLowFrame/layout/DEBIAN/postinst index 0d6bce7..4018832 100755 --- a/screendumpLowFrame/layout/DEBIAN/postinst +++ b/screendumpLowFrame/layout/DEBIAN/postinst @@ -1,6 +1,11 @@ #!/bin/bash -launchctl unload /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist -launchctl load /var/jb/Library/LaunchDaemons/com.julioverne.screendumpd.plist +if [ -L "/var/jb" ]; then + 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; \ No newline at end of file diff --git a/screendumpLowFrame/layout/DEBIAN/prerm b/screendumpLowFrame/layout/DEBIAN/prerm index dcfcb1a..0866b01 100755 --- a/screendumpLowFrame/layout/DEBIAN/prerm +++ b/screendumpLowFrame/layout/DEBIAN/prerm @@ -1,5 +1,9 @@ #!/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; \ No newline at end of file diff --git a/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.plist b/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.plist index 64803f4..911f22e 100644 --- a/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.plist +++ b/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.plist @@ -6,7 +6,7 @@ com.julioverne.screendumpd ProgramArguments - /var/jb/usr/libexec/screendumpd + /usr/libexec/screendumpd RunAtLoad diff --git a/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.rootless.plist b/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.rootless.plist new file mode 100644 index 0000000..64803f4 --- /dev/null +++ b/screendumpLowFrame/layout/Library/LaunchDaemons/com.julioverne.screendumpd.rootless.plist @@ -0,0 +1,16 @@ + + + + + Label + com.julioverne.screendumpd + ProgramArguments + + /var/jb/usr/libexec/screendumpd + + RunAtLoad + + KeepAlive + + + diff --git a/screendumpLowFrame/main.mm b/screendumpLowFrame/main.mm index 9ac9d69..1252761 100644 --- a/screendumpLowFrame/main.mm +++ b/screendumpLowFrame/main.mm @@ -5,8 +5,6 @@ #import #import -#define kSettingsPath @"/var/jb/var/mobile/Library/Preferences/com.cosmosgenius.screendump.plist" - static bool CCSisEnabled = true; static NSString *CCSPassword = nil; static rfbScreenInfoPtr screen;