mirror of
https://github.com/palera1n/palera1n.git
synced 2026-10-21 09:47:01 +02:00
Compare commits
33
Commits
nickchan/test
...
v2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71240fb719 | ||
|
|
006518db3d | ||
|
|
3d2d380820 | ||
|
|
a099e321c0 | ||
|
|
34bc646439 | ||
|
|
147134b495 | ||
|
|
7ddf02e0b9 | ||
|
|
aa91582aba | ||
|
|
39a5ad981c | ||
|
|
59aabaad08 | ||
|
|
106e2214b5 | ||
|
|
3022c6a447 | ||
|
|
a4eacb75c0 | ||
|
|
05ca13d925 | ||
|
|
c01b426a87 | ||
|
|
3a2ff433ed | ||
|
|
0122e6c603 | ||
|
|
cc151e727e | ||
|
|
76b2695e9d | ||
|
|
1e72458985 | ||
|
|
ba2a4dee25 | ||
|
|
f8319e44f1 | ||
|
|
ff581a41e9 | ||
|
|
b4bd41de60 | ||
|
|
0b5b54521f | ||
|
|
17f28f3f0a | ||
|
|
8ef0035dc0 | ||
|
|
34edfd649b | ||
|
|
671e2346ae | ||
|
|
464c832883 | ||
|
|
0e9cd5e1f6 | ||
|
|
08fbb60538 | ||
|
|
8787616ae0 |
No files matched your search
@@ -2,8 +2,11 @@ name: Create Issue
|
|||||||
description: Ask help for palera1n regarding support or generally how it works!
|
description: Ask help for palera1n regarding support or generally how it works!
|
||||||
labels: [palera1n]
|
labels: [palera1n]
|
||||||
assignees:
|
assignees:
|
||||||
- ssalggnikool
|
- khcrysalis
|
||||||
- asdfugil
|
- asdfugil
|
||||||
|
- elliessurviving
|
||||||
|
- hg13bs
|
||||||
|
- afastaudir8
|
||||||
body:
|
body:
|
||||||
- type: input
|
- type: input
|
||||||
id: device
|
id: device
|
||||||
|
|||||||
+143
-142
@@ -76,9 +76,11 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
MBEDTLS_VERSION: 3.5.2
|
MBEDTLS_VERSION: 3.5.2
|
||||||
READLINE_VERSION: 8.2
|
READLINE_VERSION: 8.2
|
||||||
SLANG_VERSION: 2.3.3
|
LIBIMOBILEDEVICE_COMMIT: ed0d66d0341562731bb19928dfe48155509fa7a7
|
||||||
NEWT_VERSION: 0.52.23
|
LIBIRECOVERY_COMMIT: 7ce02c347b7c26e59498e6af31c9da51018d0fa1
|
||||||
POPT_VERSION: 1.19
|
LIBIMOBILEDEVICE_GLUE_COMMIT: 362f7848ac89b74d9dd113b38b51ecb601f76094
|
||||||
|
LIBPLIST_COMMIT: 2117b8fdb6b4096455bd2041a63e59a028120136
|
||||||
|
LIBUSBMUXD_COMMIT: a7f0543fb1ecb20ac7121c0fd77297200e0e43fc
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -98,26 +100,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "SDK=$(xcrun -sdk ${{ matrix.os }} --show-sdk-path)" >> $GITHUB_ENV
|
echo "SDK=$(xcrun -sdk ${{ matrix.os }} --show-sdk-path)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Download dependencies (source code)
|
|
||||||
run: |
|
|
||||||
curl -LOOOOOO \
|
|
||||||
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
|
||||||
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz \
|
|
||||||
https://www.jedsoft.org/releases/slang/slang-${{ env.SLANG_VERSION }}.tar.bz2 \
|
|
||||||
https://releases.pagure.org/newt/newt-${{ env.NEWT_VERSION }}.tar.gz \
|
|
||||||
https://github.com/rpm-software-management/popt/archive/refs/tags/popt-${{ env.POPT_VERSION }}-release.tar.gz
|
|
||||||
|
|
||||||
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
|
||||||
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
|
||||||
tar -xjf slang-${{ env.SLANG_VERSION }}.tar.bz2
|
|
||||||
tar -xf newt-${{ env.NEWT_VERSION }}.tar.gz
|
|
||||||
tar -xf popt-${{ env.POPT_VERSION }}-release.tar.gz
|
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
|
||||||
|
|
||||||
- name: Select correct Xcode
|
- name: Select correct Xcode
|
||||||
run: |
|
run: |
|
||||||
sudo xcode-select -s /Applications/Xcode_14.2.app
|
sudo xcode-select -s /Applications/Xcode_14.2.app
|
||||||
@@ -132,16 +114,14 @@ jobs:
|
|||||||
echo "CC=$(xcrun --find cc)" >> $GITHUB_ENV
|
echo "CC=$(xcrun --find cc)" >> $GITHUB_ENV
|
||||||
echo "CXX=$(xcrun --find c++)" >> $GITHUB_ENV
|
echo "CXX=$(xcrun --find c++)" >> $GITHUB_ENV
|
||||||
echo "CPP=$(xcrun --find cc) -E" >> $GITHUB_ENV
|
echo "CPP=$(xcrun --find cc) -E" >> $GITHUB_ENV
|
||||||
echo "CFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Os -g -flto=full -Wl,-object_path_lto,lto.o" >> $GITHUB_ENV
|
echo "CFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Os -g -flto=full -Wl,-object_path_lto,lto.o -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||||
echo "CPPFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Wno-error-implicit-function-declaration -Os" >> $GITHUB_ENV
|
echo "CPPFLAGS=-g -Os -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isysroot ${{ env.SDK }} -isystem $(pwd)/sysroot/usr/local/include -Wno-error-implicit-function-declaration -Os -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||||
echo "CXXFLAGS=-stdlib=libc++ -g -Os -isysroot ${{ env.SDK }} -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isystem $(pwd)/sysroot/usr/local/include -Os" >> $GITHUB_ENV
|
echo "CXXFLAGS=-stdlib=libc++ -g -Os -isysroot ${{ env.SDK }} -arch ${{ matrix.arch }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -isystem $(pwd)/sysroot/usr/local/include -Os -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||||
echo "LDFLAGS=-g -Wl,-dead_strip -arch ${{ matrix.arch }} -isysroot ${{ env.SDK }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
echo "LDFLAGS=-g -Wl,-dead_strip -arch ${{ matrix.arch }} -isysroot ${{ env.SDK }} -m${{ matrix.os }}-version-min=${{ matrix.minos }} -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
||||||
echo "CFLAGS_FOR_BUILD=-arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Os" >> $GITHUB_ENV
|
echo "CFLAGS_FOR_BUILD=-arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Os" >> $GITHUB_ENV
|
||||||
echo "CXXFLAGS_FOR_BUILD=-stdlib=libc++ -arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Os" >> $GITHUB_ENV
|
echo "CXXFLAGS_FOR_BUILD=-stdlib=libc++ -arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Os" >> $GITHUB_ENV
|
||||||
echo "CPPFLAGS_FOR_BUILD=-arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Wno-error-implicit-function-declaration -Os" >> $GITHUB_ENV
|
echo "CPPFLAGS_FOR_BUILD=-arch $(uname -m) -isysroot $(xcrun -sdk macosx --show-sdk-path) -Wno-error-implicit-function-declaration -Os" >> $GITHUB_ENV
|
||||||
echo "LDFLAGS_FOR_BUILD=-Wl,-dead_strip" >> $GITHUB_ENV
|
echo "LDFLAGS_FOR_BUILD=-Wl,-dead_strip" >> $GITHUB_ENV
|
||||||
mkdir -p $(pwd)/sysroot/usr/local/lib
|
|
||||||
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
|
||||||
|
|
||||||
- name: Prepare iPhoneOS environment
|
- name: Prepare iPhoneOS environment
|
||||||
if: matrix.os == 'iphoneos'
|
if: matrix.os == 'iphoneos'
|
||||||
@@ -182,7 +162,59 @@ jobs:
|
|||||||
gsed -E /'__API_UNAVAILABLE'/d < ${TARGET_SYSROOT}/usr/include/pthread.h > sysroot/usr/local/include/pthread.h
|
gsed -E /'__API_UNAVAILABLE'/d < ${TARGET_SYSROOT}/usr/include/pthread.h > sysroot/usr/local/include/pthread.h
|
||||||
gsed -i -E s/'__API_UNAVAILABLE\(.*\)'// sysroot/usr/local/include/IOKit/IOKitLib.h
|
gsed -i -E s/'__API_UNAVAILABLE\(.*\)'// sysroot/usr/local/include/IOKit/IOKitLib.h
|
||||||
|
|
||||||
|
- name: Check dependencies cache
|
||||||
|
run: |
|
||||||
|
echo "target: ${{ matrix.os }}-${{ matrix.arch }}" > cache.txt
|
||||||
|
echo "mbedtls ${{ env.MBEDTLS_VERSION }}" >> cache.txt
|
||||||
|
echo "readline: ${{ env.READLINE_VERSION }}" >> cache.txt
|
||||||
|
echo "libimobiledevice: ${{ env.LIBIMOBILEDEVICE_COMMIT }}" >> cache.txt
|
||||||
|
echo "libirecovery: ${{ env.LIBIRECOVERY_COMMIT }}" >> cache.txt
|
||||||
|
echo "libimobiledevice-glue: ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }}" >> cache.txt
|
||||||
|
echo "libplist: ${{ env.LIBPLIST_COMMIT }}" >> cache.txt
|
||||||
|
echo "libusbmuxd: ${{ env.LIBUSBMUXD_COMMIT }}" >> cache.txt
|
||||||
|
echo "cc: $($(xcrun --find cc) --version)" >> cache.txt
|
||||||
|
echo "CACHE_TXT_CHECKSUM=sysroot-$(shasum -a 512 cache.txt | cut -d' ' -f1)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Download cached sysroot
|
||||||
|
id: sysroot_cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||||
|
key: sysroot-${{ env.CACHE_TXT_CHECKSUM }}
|
||||||
|
|
||||||
|
- name: Extract cached sysroot
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit == 'true'
|
||||||
|
run: |
|
||||||
|
xz -dcT0 sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz | tar -x
|
||||||
|
|
||||||
|
- name: Setup sysroot
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
mkdir -p $(pwd)/sysroot/usr/local/lib
|
||||||
|
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
||||||
|
|
||||||
|
- name: Download dependencies (source code)
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
curl -LOOOOOO \
|
||||||
|
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
||||||
|
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||||
|
|
||||||
|
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
||||||
|
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||||
|
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
||||||
|
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
||||||
|
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
||||||
|
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
||||||
|
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
||||||
|
cd libplist && git fetch origin ${{ env.LIBPLIST_COMMIT }} && git reset --hard ${{ env.LIBPLIST_COMMIT }} && cd ..
|
||||||
|
cd libirecovery && git fetch origin ${{ env.LIBIRECOVERY_COMMIT }} && git reset --hard ${{ env.LIBIRECOVERY_COMMIT }} && cd ..
|
||||||
|
cd libimobiledevice-glue && git fetch origin ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && cd ..
|
||||||
|
cd libimobiledevice && git fetch origin ${{ env.LIBIMOBILEDEVICE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_COMMIT }} && cd ..
|
||||||
|
cd libusbmuxd && git fetch origin ${{ env.LIBUSBMUXD_COMMIT }} && git reset --hard ${{ env.LIBUSBMUXD_COMMIT }} && cd ..
|
||||||
|
|
||||||
- name: Build Mbed TLS
|
- name: Build Mbed TLS
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
||||||
cat ../patches/mbedtls/0001-Allow-empty-x509-cert-issuer.patch | patch -sN -d . -p1
|
cat ../patches/mbedtls/0001-Allow-empty-x509-cert-issuer.patch | patch -sN -d . -p1
|
||||||
@@ -207,6 +239,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build readline
|
- name: Build readline
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd readline-${{ env.READLINE_VERSION }}
|
cd readline-${{ env.READLINE_VERSION }}
|
||||||
CC=clang CXX=clang++ ./configure ${{ env.CONFIGURE_ARGS }} ac_cv_type_sig_atomic_t=no
|
CC=clang CXX=clang++ ./configure ${{ env.CONFIGURE_ARGS }} ac_cv_type_sig_atomic_t=no
|
||||||
@@ -214,52 +247,8 @@ jobs:
|
|||||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build S-Lang
|
|
||||||
run: |
|
|
||||||
cd slang-${{ env.SLANG_VERSION }}
|
|
||||||
./configure \
|
|
||||||
${{ env.CONFIGURE_ARGS }} \
|
|
||||||
--without-x \
|
|
||||||
--without-pcre \
|
|
||||||
--without-onig \
|
|
||||||
--without-z \
|
|
||||||
--without-png \
|
|
||||||
--without-iconv
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) static
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) install-static DESTDIR=${{ env.DESTDIR }}
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Build popt
|
|
||||||
run: |
|
|
||||||
cd popt-popt-${{ env.POPT_VERSION }}-release
|
|
||||||
autoreconf -fiv
|
|
||||||
./configure \
|
|
||||||
${{ env.CONFIGURE_ARGS }} \
|
|
||||||
--without-libiconv-prefix \
|
|
||||||
--without-libintl-prefix \
|
|
||||||
--disable-nls \
|
|
||||||
--disable-werror
|
|
||||||
gmake -j$(sysctl -n hw.ncpu)
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Build newt
|
|
||||||
run: |
|
|
||||||
cd newt-${{ env.NEWT_VERSION }}
|
|
||||||
./configure \
|
|
||||||
${{ env.CONFIGURE_ARGS }} \
|
|
||||||
--with-readline=gnu \
|
|
||||||
--without-python \
|
|
||||||
--without-tcl \
|
|
||||||
--disable-nls
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) libnewt.a
|
|
||||||
mkdir -p ${{ env.DESTDIR }}/usr/local/{lib/pkgconfig,include}
|
|
||||||
install -m644 libnewt.pc ${{ env.DESTDIR }}/usr/local/lib/pkgconfig
|
|
||||||
install -m644 libnewt.a ${{ env.DESTDIR }}/usr/local/lib
|
|
||||||
install -m644 newt.h ${{ env.DESTDIR }}/usr/local/include
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Build libplist
|
- name: Build libplist
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libplist
|
cd libplist
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -269,6 +258,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libimobiledevice-glue
|
- name: Build libimobiledevice-glue
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libimobiledevice-glue
|
cd libimobiledevice-glue
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -278,6 +268,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libirecovery
|
- name: Build libirecovery
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
sudo cp -a sysroot/usr/local/* /usr/local
|
sudo cp -a sysroot/usr/local/* /usr/local
|
||||||
cd libirecovery
|
cd libirecovery
|
||||||
@@ -293,6 +284,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libusbmuxd
|
- name: Build libusbmuxd
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libusbmuxd
|
cd libusbmuxd
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -302,10 +294,11 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libimobiledevice
|
- name: Build libimobiledevice
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libimobiledevice
|
cd libimobiledevice
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --enable-debug
|
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --disable-debug --disable-wireless-pairing
|
||||||
echo -e 'all:\ninstall:' > tools/Makefile
|
echo -e 'all:\ninstall:' > tools/Makefile
|
||||||
gmake -j$(sysctl -n hw.ncpu)
|
gmake -j$(sysctl -n hw.ncpu)
|
||||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||||
@@ -316,15 +309,15 @@ jobs:
|
|||||||
cp -a sysroot/${{ env.PREFIX }}/{include,lib} dep_root
|
cp -a sysroot/${{ env.PREFIX }}/{include,lib} dep_root
|
||||||
find dep_root -name '*.dylib' -delete
|
find dep_root -name '*.dylib' -delete
|
||||||
find dep_root -name '*.la' -delete
|
find dep_root -name '*.la' -delete
|
||||||
gmake -j$(sysctl -n hw.ncpu) TUI=1
|
gmake -j$(sysctl -n hw.ncpu) ROOTFUL=1
|
||||||
cp src/palera1n palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
cp src/palera1n palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
||||||
dsymutil palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
dsymutil palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
||||||
strip palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
strip palera1n-${{ matrix.os }}-${{ matrix.arch }}
|
||||||
|
|
||||||
- name: Build palera1n (Development)
|
- name: Build palera1n (Development)
|
||||||
run: |
|
run: |
|
||||||
CC="${{ matrix.triple }}-gcc" gmake -j$(sysctl -n hw.ncpu) clean
|
gmake -j$(sysctl -n hw.ncpu) clean
|
||||||
CC="${{ matrix.triple }}-gcc" gmake -j$(sysctl -n hw.ncpu) DEV_BUILD=1 TUI=1 ROOTFUL=1
|
gmake -j$(sysctl -n hw.ncpu) DEV_BUILD=1 TUI=1 ROOTFUL=1
|
||||||
cp src/palera1n palera1n-${{ matrix.os }}-${{ matrix.arch }}.development
|
cp src/palera1n palera1n-${{ matrix.os }}-${{ matrix.arch }}.development
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
@@ -378,7 +371,12 @@ jobs:
|
|||||||
name: palera1n-${{ matrix.os }}-${{ matrix.arch }}.dSYM
|
name: palera1n-${{ matrix.os }}-${{ matrix.arch }}.dSYM
|
||||||
path: palera1n-${{ matrix.os }}-${{ matrix.arch }}.dSYM
|
path: palera1n-${{ matrix.os }}-${{ matrix.arch }}.dSYM
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
|
- name: Generate cached sysroot archive
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
tar -c sysroot | xz -zce9T 0 > sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||||
|
|
||||||
darwin-dist:
|
darwin-dist:
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
@@ -532,12 +530,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
MBEDTLS_VERSION: 3.5.2
|
MBEDTLS_VERSION: 3.5.2
|
||||||
LIBUSB_VERSION: 1.0.26
|
LIBUSB_VERSION: 1.0.27
|
||||||
READLINE_VERSION: 8.2
|
READLINE_VERSION: 8.2
|
||||||
SLANG_VERSION: 2.3.3
|
|
||||||
NEWT_VERSION: 0.52.23
|
|
||||||
GPM_VERSION: 1.20.7
|
GPM_VERSION: 1.20.7
|
||||||
POPT_VERSION: 1.19
|
LIBIMOBILEDEVICE_COMMIT: ed0d66d0341562731bb19928dfe48155509fa7a7
|
||||||
|
LIBIRECOVERY_COMMIT: 7ce02c347b7c26e59498e6af31c9da51018d0fa1
|
||||||
|
LIBIMOBILEDEVICE_GLUE_COMMIT: 362f7848ac89b74d9dd113b38b51ecb601f76094
|
||||||
|
USBMUXD_COMMIT: bc0b91ca856811f4393318dc83db6dc3c1ac326d
|
||||||
|
LIBPLIST_COMMIT: 2117b8fdb6b4096455bd2041a63e59a028120136
|
||||||
|
LIBUSBMUXD_COMMIT: a7f0543fb1ecb20ac7121c0fd77297200e0e43fc
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -592,43 +593,75 @@ jobs:
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV
|
echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV
|
||||||
echo "CFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
echo "CFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||||
echo "CXXFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
echo "CXXFLAGS=-g -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" >> $GITHUB_ENV
|
||||||
echo "LDFLAGS=-g -Wl,--gc-sections -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
echo "LDFLAGS=-g -Wl,--gc-sections -fdata-sections -ffunction-sections -I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV
|
||||||
echo "INSTALL=$(command -v install) --strip-program=${{ matrix.triple }}-strip" >> $GITHUB_ENV
|
echo "INSTALL=$(command -v install) --strip-program=${{ matrix.triple }}-strip" >> $GITHUB_ENV
|
||||||
echo "DESTDIR=$(pwd)/sysroot" >> $GITHUB_ENV
|
echo "DESTDIR=$(pwd)/sysroot" >> $GITHUB_ENV
|
||||||
echo "PREFIX=/usr/local" >> $GITHUB_ENV
|
echo "PREFIX=/usr/local" >> $GITHUB_ENV
|
||||||
echo "CONFIGURE_ARGS=--build=x86_64-linux-gnu --host=${{ matrix.triple }} --prefix=/usr/local --disable-shared --enable-static" >> $GITHUB_ENV
|
echo "CONFIGURE_ARGS=--build=x86_64-linux-gnu --host=${{ matrix.triple }} --prefix=/usr/local --disable-shared --enable-static" >> $GITHUB_ENV
|
||||||
echo "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
|
echo "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Check dependencies cache
|
||||||
|
run: |
|
||||||
|
echo "target: ${{ matrix.triple }}" > cache.txt
|
||||||
|
echo "mbedtls ${{ env.MBEDTLS_VERSION }}" >> cache.txt
|
||||||
|
echo "readline: ${{ env.READLINE_VERSION }}" >> cache.txt
|
||||||
|
echo "libimobiledevice: ${{ env.LIBIMOBILEDEVICE_COMMIT }}" >> cache.txt
|
||||||
|
echo "libirecovery: ${{ env.LIBIRECOVERY_COMMIT }}" >> cache.txt
|
||||||
|
echo "libimobiledevice-glue: ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }}" >> cache.txt
|
||||||
|
echo "libplist: ${{ env.LIBPLIST_COMMIT }}" >> cache.txt
|
||||||
|
echo "libusbmuxd: ${{ env.LIBUSBMUXD_COMMIT }}" >> cache.txt
|
||||||
|
echo "usbmuxd: ${{ env.USBMUXD_COMMIT }}" >> cache.txt
|
||||||
|
echo "cc: $(${{ env.CROSS_COMPILE }}gcc --version)" >> cache.txt
|
||||||
|
echo "CACHE_TXT_CHECKSUM=sysroot-$(sha512sum cache.txt | cut -d' ' -f1)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Download cached sysroot
|
||||||
|
id: sysroot_cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||||
|
key: sysroot-${{ env.CACHE_TXT_CHECKSUM }}
|
||||||
|
|
||||||
|
- name: Extract cached sysroot
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit == 'true'
|
||||||
|
run: |
|
||||||
|
xz -dcT0 sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz | tar -x
|
||||||
|
|
||||||
|
- name: Setup sysroot
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
mkdir -p $(pwd)/sysroot/usr/local/lib
|
mkdir -p $(pwd)/sysroot/usr/local/lib
|
||||||
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
||||||
|
|
||||||
- name: Download dependencies (source code)
|
- name: Download dependencies (source code)
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
curl -LOOOOOOO \
|
curl -LOOOOOOO \
|
||||||
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v${{ env.MBEDTLS_VERSION }}.tar.gz \
|
||||||
https://github.com/libusb/libusb/releases/download/v${{ env.LIBUSB_VERSION }}/libusb-${{ env.LIBUSB_VERSION }}.tar.bz2 \
|
https://github.com/libusb/libusb/releases/download/v${{ env.LIBUSB_VERSION }}/libusb-${{ env.LIBUSB_VERSION }}.tar.bz2 \
|
||||||
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz \
|
https://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz \
|
||||||
https://www.jedsoft.org/releases/slang/slang-${{ env.SLANG_VERSION }}.tar.bz2 \
|
https://github.com/telmich/gpm/archive/refs/tags/${{ env.GPM_VERSION }}.tar.gz
|
||||||
https://releases.pagure.org/newt/newt-${{ env.NEWT_VERSION }}.tar.gz \
|
|
||||||
https://github.com/telmich/gpm/archive/refs/tags/${{ env.GPM_VERSION }}.tar.gz \
|
|
||||||
https://github.com/rpm-software-management/popt/archive/refs/tags/popt-${{ env.POPT_VERSION }}-release.tar.gz
|
|
||||||
|
|
||||||
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
||||||
tar -xjf libusb-${{ env.LIBUSB_VERSION }}.tar.bz2
|
tar -xjf libusb-${{ env.LIBUSB_VERSION }}.tar.bz2
|
||||||
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
tar -xf readline-${{ env.READLINE_VERSION }}.tar.gz
|
||||||
tar -xjf slang-${{ env.SLANG_VERSION }}.tar.bz2
|
|
||||||
tar -xf newt-${{ env.NEWT_VERSION }}.tar.gz
|
|
||||||
tar -xf ${{ env.GPM_VERSION }}.tar.gz
|
tar -xf ${{ env.GPM_VERSION }}.tar.gz
|
||||||
tar -xf popt-${{ env.POPT_VERSION }}-release.tar.gz
|
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
git clone --depth=1 https://github.com/libimobiledevice/libplist
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice-glue
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
git clone --depth=1 https://github.com/libimobiledevice/libirecovery
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
git clone --depth=1 https://github.com/libimobiledevice/libusbmuxd
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
git clone --depth=1 https://github.com/libimobiledevice/libimobiledevice
|
||||||
git clone --depth=1 https://github.com/libimobiledevice/usbmuxd
|
git clone --depth=1 https://github.com/libimobiledevice/usbmuxd
|
||||||
|
cd libplist && git fetch origin ${{ env.LIBPLIST_COMMIT }} && git reset --hard ${{ env.LIBPLIST_COMMIT }} && cd ..
|
||||||
|
cd libirecovery && git fetch origin ${{ env.LIBIRECOVERY_COMMIT }} && git reset --hard ${{ env.LIBIRECOVERY_COMMIT }} && cd ..
|
||||||
|
cd libimobiledevice-glue && git fetch origin ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_GLUE_COMMIT }} && cd ..
|
||||||
|
cd usbmuxd && git fetch origin ${{ env.USBMUXD_COMMIT }} && git reset --hard ${{ env.USBMUXD_COMMIT }} && cd ..
|
||||||
|
cd libimobiledevice && git fetch origin ${{ env.LIBIMOBILEDEVICE_COMMIT }} && git reset --hard ${{ env.LIBIMOBILEDEVICE_COMMIT }} && cd ..
|
||||||
|
cd libusbmuxd && git fetch origin ${{ env.LIBUSBMUXD_COMMIT }} && git reset --hard ${{ env.LIBUSBMUXD_COMMIT }} && cd ..
|
||||||
|
|
||||||
- name: Build Mbed TLS
|
- name: Build Mbed TLS
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
||||||
cat ../patches/mbedtls/0001-Allow-empty-x509-cert-issuer.patch | patch -sN -d . -p1
|
cat ../patches/mbedtls/0001-Allow-empty-x509-cert-issuer.patch | patch -sN -d . -p1
|
||||||
@@ -653,6 +686,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libusb
|
- name: Build libusb
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libusb-${{ env.LIBUSB_VERSION }}
|
cd libusb-${{ env.LIBUSB_VERSION }}
|
||||||
./configure ${{ env.CONFIGURE_ARGS }} --disable-udev
|
./configure ${{ env.CONFIGURE_ARGS }} --disable-udev
|
||||||
@@ -661,6 +695,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build readline
|
- name: Build readline
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd readline-${{ env.READLINE_VERSION }}
|
cd readline-${{ env.READLINE_VERSION }}
|
||||||
./configure ${{ env.CONFIGURE_ARGS }}
|
./configure ${{ env.CONFIGURE_ARGS }}
|
||||||
@@ -668,22 +703,8 @@ jobs:
|
|||||||
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build S-Lang
|
|
||||||
run: |
|
|
||||||
cd slang-${{ env.SLANG_VERSION }}
|
|
||||||
./configure \
|
|
||||||
${{ env.CONFIGURE_ARGS }} \
|
|
||||||
--without-x \
|
|
||||||
--without-pcre \
|
|
||||||
--without-onig \
|
|
||||||
--without-z \
|
|
||||||
--without-png \
|
|
||||||
--without-iconv
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) static
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) install-static DESTDIR=${{ env.DESTDIR }}
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Build GPM
|
- name: Build GPM
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd gpm-${{ env.GPM_VERSION }}
|
cd gpm-${{ env.GPM_VERSION }}
|
||||||
cat ../patches/gpm/*.patch | patch -sN -d . -p1
|
cat ../patches/gpm/*.patch | patch -sN -d . -p1
|
||||||
@@ -694,38 +715,8 @@ jobs:
|
|||||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build popt
|
|
||||||
run: |
|
|
||||||
cd popt-popt-${{ env.POPT_VERSION }}-release
|
|
||||||
autoreconf -fiv
|
|
||||||
./configure \
|
|
||||||
${{ env.CONFIGURE_ARGS }} \
|
|
||||||
--without-libiconv-prefix \
|
|
||||||
--without-libintl-prefix \
|
|
||||||
--disable-nls \
|
|
||||||
--disable-werror
|
|
||||||
gmake -j$(sysctl -n hw.ncpu)
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) install DESTDIR=${{ env.DESTDIR }}
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Build newt
|
|
||||||
run: |
|
|
||||||
cd newt-${{ env.NEWT_VERSION }}
|
|
||||||
./configure \
|
|
||||||
${{ env.CONFIGURE_ARGS }} \
|
|
||||||
--with-readline=gnu \
|
|
||||||
--without-python \
|
|
||||||
--without-tcl \
|
|
||||||
--disable-nls \
|
|
||||||
--with-gpm-support
|
|
||||||
gmake -j$(sysctl -n hw.ncpu) libnewt.a
|
|
||||||
mkdir -p ${{ env.DESTDIR }}/usr/local/{lib/pkgconfig,include}
|
|
||||||
install -m644 libnewt.pc ${{ env.DESTDIR }}/usr/local/lib/pkgconfig
|
|
||||||
install -m644 libnewt.a ${{ env.DESTDIR }}/usr/local/lib
|
|
||||||
install -m644 newt.h ${{ env.DESTDIR }}/usr/local/include
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Build libplist
|
- name: Build libplist
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libplist
|
cd libplist
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -735,6 +726,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libimobiledevice-glue
|
- name: Build libimobiledevice-glue
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libimobiledevice-glue
|
cd libimobiledevice-glue
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -744,6 +736,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libirecovery (sorta)
|
- name: Build libirecovery (sorta)
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
sudo mv /usr/local /usr/local.bak
|
sudo mv /usr/local /usr/local.bak
|
||||||
sudo ln -s ${{ env.DESTDIR }}${{ env.PREFIX }} /usr/local
|
sudo ln -s ${{ env.DESTDIR }}${{ env.PREFIX }} /usr/local
|
||||||
@@ -757,6 +750,7 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libusbmuxd
|
- name: Build libusbmuxd
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libusbmuxd
|
cd libusbmuxd
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -766,10 +760,11 @@ jobs:
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
- name: Build libimobiledevice
|
- name: Build libimobiledevice
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd libimobiledevice
|
cd libimobiledevice
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --enable-debug
|
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls --disable-debug --disable-wireless-pairing
|
||||||
echo -e 'all:\ninstall:' > tools/Makefile
|
echo -e 'all:\ninstall:' > tools/Makefile
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
||||||
@@ -778,6 +773,7 @@ jobs:
|
|||||||
sudo mv /usr/local.bak /usr/local
|
sudo mv /usr/local.bak /usr/local
|
||||||
|
|
||||||
- name: Build usbmuxd
|
- name: Build usbmuxd
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd usbmuxd
|
cd usbmuxd
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@@ -798,7 +794,7 @@ jobs:
|
|||||||
cp -a ${{ env.DESTDIR }}/${{ env.PREFIX }}/{include,lib} dep_root
|
cp -a ${{ env.DESTDIR }}/${{ env.PREFIX }}/{include,lib} dep_root
|
||||||
find dep_root -name '*.so' -delete
|
find dep_root -name '*.so' -delete
|
||||||
find dep_root -name '*.la' -delete
|
find dep_root -name '*.la' -delete
|
||||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) TUI=1
|
CC="${{ matrix.triple }}-gcc" make -j$(nproc) ROOTFUL=1
|
||||||
cp src/palera1n palera1n.release
|
cp src/palera1n palera1n.release
|
||||||
|
|
||||||
- name: Seperate debug symbols
|
- name: Seperate debug symbols
|
||||||
@@ -807,11 +803,11 @@ jobs:
|
|||||||
${{ matrix.triple }}-strip --strip-debug --strip-unneeded palera1n.release
|
${{ matrix.triple }}-strip --strip-debug --strip-unneeded palera1n.release
|
||||||
${{ matrix.triple }}-objcopy --add-gnu-debuglink=palera1n.debug palera1n.release
|
${{ matrix.triple }}-objcopy --add-gnu-debuglink=palera1n.debug palera1n.release
|
||||||
chmod -x palera1n.debug
|
chmod -x palera1n.debug
|
||||||
|
|
||||||
- name: Build palera1n (Development)
|
- name: Build palera1n (Development)
|
||||||
run: |
|
run: |
|
||||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) clean
|
CC="${{ matrix.triple }}-gcc" make -j$(nproc) clean
|
||||||
CC="${{ matrix.triple }}-gcc" make -j$(nproc) DEV_BUILD=1 TUI=1 ROOTFUL=1
|
CC="${{ matrix.triple }}-gcc" make -j$(nproc) DEV_BUILD=1 ROOTFUL=1
|
||||||
cp src/palera1n palera1n.development
|
cp src/palera1n palera1n.development
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
@@ -836,7 +832,7 @@ jobs:
|
|||||||
|
|
||||||
sed 's|@DEB_ARCH@|${{ env.ARCH_NAME }}|g' -i stage/DEBIAN/control
|
sed 's|@DEB_ARCH@|${{ env.ARCH_NAME }}|g' -i stage/DEBIAN/control
|
||||||
sed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
sed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||||
|
|
||||||
install -Dm644 ready/binaries/palera1n-${{ env.CHECKRA1N_NAME }} stage/usr/bin/palera1n
|
install -Dm644 ready/binaries/palera1n-${{ env.CHECKRA1N_NAME }} stage/usr/bin/palera1n
|
||||||
gzip -c9 docs/palera1n.1 > stage/usr/share/man/man1/palera1n.1.gz
|
gzip -c9 docs/palera1n.1 > stage/usr/share/man/man1/palera1n.1.gz
|
||||||
chmod 755 stage/usr/bin/palera1n
|
chmod 755 stage/usr/bin/palera1n
|
||||||
@@ -876,6 +872,11 @@ jobs:
|
|||||||
localDir: 'usbmuxd-static/'
|
localDir: 'usbmuxd-static/'
|
||||||
remoteDir: "/palera1n/artifacts/usbmuxd-static"
|
remoteDir: "/palera1n/artifacts/usbmuxd-static"
|
||||||
|
|
||||||
|
- name: Generate cached sysroot archive
|
||||||
|
if: steps.sysroot_cache.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
tar -c sysroot | xz -zce9T 0 > sysroot-${{ env.CACHE_TXT_CHECKSUM }}.txz
|
||||||
|
|
||||||
finish-build:
|
finish-build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ dep_root/**
|
|||||||
!contrib/.keep
|
!contrib/.keep
|
||||||
contrib/
|
contrib/
|
||||||
*.o
|
*.o
|
||||||
|
dep_root*.tgz
|
||||||
.vscode
|
.vscode
|
||||||
checkra1n*
|
checkra1n*
|
||||||
payload.c
|
payload.c
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ endif
|
|||||||
LIBS += $(DEP)/lib/libmbedtls.a $(DEP)/lib/libmbedcrypto.a $(DEP)/lib/libmbedx509.a $(DEP)/lib/libreadline.a
|
LIBS += $(DEP)/lib/libmbedtls.a $(DEP)/lib/libmbedcrypto.a $(DEP)/lib/libmbedx509.a $(DEP)/lib/libreadline.a
|
||||||
|
|
||||||
ifeq ($(TUI),1)
|
ifeq ($(TUI),1)
|
||||||
LIBS += $(DEP)/lib/libnewt.a $(DEP)/lib/libpopt.a $(DEP)/lib/libslang.a
|
|
||||||
ifeq ($(TARGET_OS),Linux)
|
ifeq ($(TARGET_OS),Linux)
|
||||||
LIBS += $(DEP)/lib/libgpm.a
|
LIBS += $(DEP)/lib/libgpm.a
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(DEV_BUILD),1)
|
ifeq ($(DEV_BUILD),1)
|
||||||
CFLAGS += -O0 -g -DDEV_BUILD -fno-omit-frame-pointer
|
CFLAGS += -O0 -g -DDEV_BUILD -fno-omit-frame-pointer
|
||||||
ifeq ($(ASAN),1)
|
ifeq ($(ASAN),1)
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0
|
|||||||
| iPhone 8 | iPad Pro (12.9") (1st generation) | | |
|
| iPhone 8 | iPad Pro (12.9") (1st generation) | | |
|
||||||
| iPhone 8 Plus | iPad Pro (10.5") | | |
|
| iPhone 8 Plus | iPad Pro (10.5") | | |
|
||||||
| iPhone X | iPad Pro (12.9") (2nd generation) | | |
|
| iPhone X | iPad Pro (12.9") (2nd generation) | | |
|
||||||
|
| | iPad Air 2 | | |
|
||||||
|
|
||||||
|
|
||||||
> Note that on `A11` (iPhone X, 8, 8 Plus), **you must disable your passcode while in the jailbroken state** (on iOS 16, you need to **reset your device** before proceeding with palera1n).
|
> Note that on `A11` (iPhone X, 8, 8 Plus), **you must disable your passcode while in the jailbroken state** (on iOS 16, you need to **reset your device** before proceeding with palera1n).
|
||||||
|
|
||||||
@@ -87,10 +89,16 @@ We are **NOT** responsible for any data loss, or the result of a device being br
|
|||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
Make sure you're following the guides provided [here](https://palera.in), also when asking for support make sure you provide full details on your device, such as:
|
Make sure you're following the guides provided [here](https://palera.in), also when asking for support make sure you provide full details on your device, such as:
|
||||||
- iPhone/iPad/iPod
|
- iPhone/iPad/iPod/Apple TV
|
||||||
- iOS Version
|
- iOS Version
|
||||||
- Passcode enabled?
|
- Passcode enabled?
|
||||||
- Verbose from palera1n (specifying `-Vv` within palera1n)
|
- Verbose from palera1n (specifying `-Vv` within palera1n)
|
||||||
- Panic logs, if panicked then send latest `panic-full` log from your device.
|
- Panic logs, if panicked then send latest `panic-full` log from your device.
|
||||||
|
|
||||||
Create an issue here: https://github.com/palera1n/palera1n/issues/new/choose
|
Create an issue here: https://github.com/palera1n/palera1n/issues/new/choose
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
[All credits for palera1n can be found here](https://palera.in/)
|
||||||
|
|
||||||
|
If proper credit isn't shown please message us or create an issue.
|
||||||
+3
-4
@@ -6,7 +6,7 @@
|
|||||||
.Dt palera1n 1
|
.Dt palera1n 1
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm palera1n
|
.Nm palera1n
|
||||||
.Nd arm64 iOS/iPadOS/tvOS 15.0-17.5, bridgeOS 5.0-8.3 jailbreaking tool
|
.Nd arm64 iOS/iPadOS/tvOS 15.0-18.0, bridgeOS 5.0-9.0 jailbreaking tool
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl cCdDEfhIlLnpRsSTvV
|
.Op Fl cCdDEfhIlLnpRsSTvV
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
.Op Fl -force-revert
|
.Op Fl -force-revert
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
.Nm
|
.Nm
|
||||||
jailbreaks an iOS/iPadOS/tvOS 15.0-17.5, bridgeOS 6.0-8.3 device with an arm64 (arm64e excluded) on iOS 15.0-17.5,
|
jailbreaks an arm64 (arm64e excluded) iOS/iPadOS/tvOS 15.0-18.0, bridgeOS 5.0-9.0 device,
|
||||||
utilizing the
|
utilizing the
|
||||||
.Em checkm8
|
.Em checkm8
|
||||||
bootROM exploit.
|
bootROM exploit.
|
||||||
@@ -57,7 +57,7 @@ In the remainder of this document, the term "iOS" and "iPadOS" will be used inte
|
|||||||
as the difference is negligible as far as the jailbreak is concerened.
|
as the difference is negligible as far as the jailbreak is concerened.
|
||||||
.Pp
|
.Pp
|
||||||
.Sh SUPPORTED DEVICES
|
.Sh SUPPORTED DEVICES
|
||||||
As described above, arm64 iOS 15.0-17.5 devices are supported, here is an explicit
|
As described above, arm64 iOS 15.0-18.0 devices are supported, here is an explicit
|
||||||
list of supported devicecs:
|
list of supported devicecs:
|
||||||
|
|
||||||
.Bl -tag -compact
|
.Bl -tag -compact
|
||||||
@@ -166,7 +166,6 @@ argument is used during fakefs setup.
|
|||||||
Exit after entering recovery mode.
|
Exit after entering recovery mode.
|
||||||
.It Fl f , -fakefs
|
.It Fl f , -fakefs
|
||||||
Proceed in rootful mode. This applies to both full, partial fakefs, as well as realfs.
|
Proceed in rootful mode. This applies to both full, partial fakefs, as well as realfs.
|
||||||
This option is not supported on iOS/iPadOS 17.
|
|
||||||
.It Fl h , -help
|
.It Fl h , -help
|
||||||
Prints help text.
|
Prints help text.
|
||||||
.It Fl i , -checkra1n-file Ar checkra1n file
|
.It Fl i , -checkra1n-file Ar checkra1n file
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@
|
|||||||
#define U stderr,
|
#define U stderr,
|
||||||
#define B "#\n# palera1n: " BUILD_TAG " \n#\n"
|
#define B "#\n# palera1n: " BUILD_TAG " \n#\n"
|
||||||
#define L "# ======== Made by =======\n"
|
#define L "# ======== Made by =======\n"
|
||||||
#define E "# Made by: Nick Chan, " THE_PLUSH ", Samara, Mineek, staturnz, " BAKERAIN_DEVELOPE_R ", " NEKO_DEVELOPE_R " \n"
|
#define E "# Made by: Nick Chan, " THE_PLUSH ", Khcrysalis, Mineek, staturnz, " BAKERAIN_DEVELOPE_R ", " NEKO_DEVELOPE_R " \n"
|
||||||
#define M "# ======== Thanks to =======\n"
|
#define M "# ======== Thanks to =======\n"
|
||||||
#define A "# Thanks to: llsc12, Nebula, Lrdsnow, nikias (libimobiledevice),\n"
|
#define A "# Thanks to: llsc12, Nebula, Lrdsnow, nikias (libimobiledevice),\n"
|
||||||
#define K "# checkra1n team (Siguza, axi0mx, littlelailo et al.),\n"
|
#define K "# checkra1n team (Siguza, axi0mx, littlelailo et al.),\n"
|
||||||
|
|||||||
+40
-49
@@ -40,10 +40,6 @@ int exec_checkra1n(void) {
|
|||||||
LOG(LOG_INFO, "About to execute checkra1n");
|
LOG(LOG_INFO, "About to execute checkra1n");
|
||||||
int fd_checkra1n, fd_pongo, ret;
|
int fd_checkra1n, fd_pongo, ret;
|
||||||
char* checkra1n_path = NULL;
|
char* checkra1n_path = NULL;
|
||||||
if (ext_checkra1n != NULL) {
|
|
||||||
checkra1n_path = ext_checkra1n;
|
|
||||||
goto checkra1n_exec;
|
|
||||||
}
|
|
||||||
#ifndef NO_CUSTOM_PONGO
|
#ifndef NO_CUSTOM_PONGO
|
||||||
if (pongo_path == NULL) {
|
if (pongo_path == NULL) {
|
||||||
pongo_path = malloc(strlen(tmpdir) + 20);
|
pongo_path = malloc(strlen(tmpdir) + 20);
|
||||||
@@ -69,36 +65,40 @@ int exec_checkra1n(void) {
|
|||||||
}
|
}
|
||||||
} else external_pongo = true;
|
} else external_pongo = true;
|
||||||
#endif
|
#endif
|
||||||
checkra1n_path = malloc(strlen(tmpdir) + 20);
|
if (ext_checkra1n != NULL) {
|
||||||
if (checkra1n_path == NULL) {
|
checkra1n_path = ext_checkra1n;
|
||||||
LOG(LOG_FATAL, "memory allocation failed\n");
|
} else {
|
||||||
return -1;
|
checkra1n_path = malloc(strlen(tmpdir) + 20);
|
||||||
}
|
if (checkra1n_path == NULL) {
|
||||||
snprintf(checkra1n_path, strlen(tmpdir) + 20, "%s/checkra1n.XXXXXX", tmpdir);
|
LOG(LOG_FATAL, "memory allocation failed\n");
|
||||||
fd_checkra1n = mkstemp(checkra1n_path);
|
return -1;
|
||||||
if (fd_checkra1n == -1) {
|
}
|
||||||
LOG(LOG_FATAL, "Cannot open temporary file %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
snprintf(checkra1n_path, strlen(tmpdir) + 20, "%s/checkra1n.XXXXXX", tmpdir);
|
||||||
free(checkra1n_path);
|
fd_checkra1n = mkstemp(checkra1n_path);
|
||||||
checkra1n_path = NULL;
|
if (fd_checkra1n == -1) {
|
||||||
return -1;
|
LOG(LOG_FATAL, "Cannot open temporary file %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||||
}
|
free(checkra1n_path);
|
||||||
ssize_t didWrite_checkra1n = write(fd_checkra1n, checkra1n, checkra1n_len);
|
checkra1n_path = NULL;
|
||||||
if (didWrite_checkra1n != (ssize_t)checkra1n_len) {
|
return -1;
|
||||||
LOG(LOG_FATAL, "Size written to %s does not match expected: %zd != %" PRIu32 ": %d (%s)", checkra1n_path, didWrite_checkra1n, checkra1n_len, errno, strerror(errno));
|
}
|
||||||
|
ssize_t didWrite_checkra1n = write(fd_checkra1n, checkra1n, checkra1n_len);
|
||||||
|
if (didWrite_checkra1n != (ssize_t)checkra1n_len) {
|
||||||
|
LOG(LOG_FATAL, "Size written to %s does not match expected: %zd != %" PRIu32 ": %d (%s)", checkra1n_path, didWrite_checkra1n, checkra1n_len, errno, strerror(errno));
|
||||||
|
close(fd_checkra1n);
|
||||||
|
unlink(checkra1n_path);
|
||||||
|
free(checkra1n_path);
|
||||||
|
checkra1n_path = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
close(fd_checkra1n);
|
close(fd_checkra1n);
|
||||||
unlink(checkra1n_path);
|
ret = chmod(checkra1n_path, 0700);
|
||||||
free(checkra1n_path);
|
if (ret) {
|
||||||
checkra1n_path = NULL;
|
LOG(LOG_FATAL, "Cannot chmod %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||||
return -1;
|
unlink(checkra1n_path);
|
||||||
}
|
free(checkra1n_path);
|
||||||
close(fd_checkra1n);
|
checkra1n_path = NULL;
|
||||||
ret = chmod(checkra1n_path, 0700);
|
return -1;
|
||||||
if (ret) {
|
}
|
||||||
LOG(LOG_FATAL, "Cannot chmod %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
|
||||||
unlink(checkra1n_path);
|
|
||||||
free(checkra1n_path);
|
|
||||||
checkra1n_path = NULL;
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
#if defined(__APPLE__) && defined(__arm64__) && (TARGET_OS_IPHONE || defined(FORCE_HELPER))
|
#if defined(__APPLE__) && defined(__arm64__) && (TARGET_OS_IPHONE || defined(FORCE_HELPER))
|
||||||
char* libcheckra1nhelper_dylib_path = NULL;
|
char* libcheckra1nhelper_dylib_path = NULL;
|
||||||
@@ -146,7 +146,6 @@ setenv_ra1n:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
checkra1n_exec: {};
|
|
||||||
char args[0x10] = "-E";
|
char args[0x10] = "-E";
|
||||||
if ((palerain_flags & palerain_option_demote)) strncat(args, "d", 0xf);
|
if ((palerain_flags & palerain_option_demote)) strncat(args, "d", 0xf);
|
||||||
if (!(palerain_flags & palerain_option_checkrain_is_clone)) {
|
if (!(palerain_flags & palerain_option_checkrain_is_clone)) {
|
||||||
@@ -168,21 +167,13 @@ checkra1n_exec: {};
|
|||||||
posix_spawn_file_actions_addopen(&action, 2, "/dev/null", O_WRONLY, 0);
|
posix_spawn_file_actions_addopen(&action, 2, "/dev/null", O_WRONLY, 0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (pongo_path != NULL) {
|
ret = posix_spawn(&pid, checkra1n_path, &action, NULL, (char* []){
|
||||||
ret = posix_spawn(&pid, checkra1n_path, &action, NULL, (char* []){
|
checkra1n_path,
|
||||||
checkra1n_path,
|
args,
|
||||||
args,
|
"-k",
|
||||||
"-k",
|
pongo_path,
|
||||||
pongo_path,
|
NULL
|
||||||
NULL
|
}, environ);
|
||||||
}, environ);
|
|
||||||
} else {
|
|
||||||
ret = posix_spawn(&pid, checkra1n_path, &action, NULL, (char* []){
|
|
||||||
checkra1n_path,
|
|
||||||
args,
|
|
||||||
NULL
|
|
||||||
}, environ);
|
|
||||||
}
|
|
||||||
posix_spawn_file_actions_destroy(&action);
|
posix_spawn_file_actions_destroy(&action);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
LOG(LOG_FATAL, "Cannot posix spawn %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
LOG(LOG_FATAL, "Cannot posix spawn %s: %d (%s)", checkra1n_path, errno, strerror(errno));
|
||||||
|
|||||||
+2
-2
@@ -57,8 +57,8 @@ static struct option longopts[] = {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef TUI
|
#ifdef TUI
|
||||||
{"tui", no_argument, NULL, 't'},
|
{"tui", no_argument, NULL, 't'},
|
||||||
{"cli", no_argument, NULL, palerain_option_case_cli},
|
|
||||||
#endif
|
#endif
|
||||||
|
{"cli", no_argument, NULL, palerain_option_case_cli},
|
||||||
{NULL, 0, NULL, 0}
|
{NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -313,10 +313,10 @@ int optparse(int argc, char* argv[]) {
|
|||||||
case 't':
|
case 't':
|
||||||
palerain_flags |= palerain_option_tui;
|
palerain_flags |= palerain_option_tui;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case palerain_option_case_cli:
|
case palerain_option_case_cli:
|
||||||
palerain_flags |= palerain_option_cli;
|
palerain_flags |= palerain_option_cli;
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
case '1':
|
case '1':
|
||||||
palerain_flags |= palerain_option_test1;
|
palerain_flags |= palerain_option_test1;
|
||||||
|
|||||||
+2
-2
@@ -114,10 +114,10 @@ void *pongo_usb_callback(stuff_t *arg) {
|
|||||||
#ifdef ROOTFUL
|
#ifdef ROOTFUL
|
||||||
if ((palerain_flags & palerain_option_setup_partial_root)) {
|
if ((palerain_flags & palerain_option_setup_partial_root)) {
|
||||||
LOG(LOG_INFO, "Please wait up to 5 minutes for the bindfs to be created.");
|
LOG(LOG_INFO, "Please wait up to 5 minutes for the bindfs to be created.");
|
||||||
LOG(LOG_INFO, "Once the device boots up to iOS, run again without the -B (Create BindFS) option to jailbreak.");
|
LOG(LOG_INFO, "Once the device reboots into recovery mode, run again without the -B (Create BindFS) option to jailbreak.");
|
||||||
} else if ((palerain_flags & palerain_option_setup_rootful)) {
|
} else if ((palerain_flags & palerain_option_setup_rootful)) {
|
||||||
LOG(LOG_INFO, "Please wait up to 10 minutes for the fakefs to be created.");
|
LOG(LOG_INFO, "Please wait up to 10 minutes for the fakefs to be created.");
|
||||||
LOG(LOG_INFO, "Once the device boots up to iOS, run again without the -c (Create FakeFS) option to jailbreak.");
|
LOG(LOG_INFO, "Once the device reboots into recovery mode, run again without the -c (Create FakeFS) option to jailbreak.");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (dfuhelper_thr_running) {
|
if (dfuhelper_thr_running) {
|
||||||
|
|||||||
+12
-4
@@ -86,7 +86,7 @@ void tui_screen_main_redraw(void) {
|
|||||||
PRINTATT(3, 2, "Welcome to palera1n!");
|
PRINTATT(3, 2, "Welcome to palera1n!");
|
||||||
|
|
||||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||||
PRINTATT(3, 9, "Made by: Nick Chan, Ploosh, Samara, Mineek");
|
PRINTATT(3, 9, "Made by: Nick Chan, Ploosh, Khcrysalis, Mineek");
|
||||||
PRINTATT(3, 10, "staturnz, kok3shidoll, ");
|
PRINTATT(3, 10, "staturnz, kok3shidoll, ");
|
||||||
if ((tui_mouse_y == tui_y_offset + 9 && tui_mouse_x >= tui_x_offset + 25 && tui_mouse_x <= tui_x_offset + 25 + 8) || easter_egg) {
|
if ((tui_mouse_y == tui_y_offset + 9 && tui_mouse_x >= tui_x_offset + 25 && tui_mouse_x <= tui_x_offset + 25 + 8) || easter_egg) {
|
||||||
SETCOLORA(FG_BRIGHT_WHITE, BG_BLACK, BOLD);
|
SETCOLORA(FG_BRIGHT_WHITE, BG_BLACK, BOLD);
|
||||||
@@ -136,11 +136,19 @@ void tui_screen_main_redraw(void) {
|
|||||||
printf("Sorry, %s (iOS %s) is not supported.", tui_connected_devices->display_name, tui_connected_devices->version);
|
printf("Sorry, %s (iOS %s) is not supported.", tui_connected_devices->display_name, tui_connected_devices->version);
|
||||||
ecid_y = 6;
|
ecid_y = 6;
|
||||||
tui_can_start = false;
|
tui_can_start = false;
|
||||||
} else if (tui_compare_versions(tui_connected_devices->version, "15.0") < 0 || tui_compare_versions(tui_connected_devices->version, "17.3.1") > 0) {
|
} else if (tui_compare_versions(tui_connected_devices->version, "15.0") < 0) {
|
||||||
printf("Sorry, %s is supported, but iOS", tui_connected_devices->display_name);
|
printf("Sorry, %s is supported, but iOS", tui_connected_devices->display_name);
|
||||||
MOVETOT(3, 6);
|
MOVETOT(3, 6);
|
||||||
printf("%s is not.", tui_connected_devices->version);
|
printf("%s is not.", tui_connected_devices->version);
|
||||||
PRINTATT(3, 7, "Supported versions are 15.0 - 17.3.1.");
|
PRINTATT(3, 7, "Supported versions are 15.0+");
|
||||||
|
ecid_y = 8;
|
||||||
|
tui_can_start = false;
|
||||||
|
} else if (tui_connected_devices->requires_passcode_disabled) {
|
||||||
|
printf("Sorry, this devices passcode must be disabled on %s.", tui_connected_devices->version);
|
||||||
|
MOVETOT(3, 6);
|
||||||
|
printf("On 16.0+, you must reset the phone to factory settings");
|
||||||
|
MOVETOT(3, 7);
|
||||||
|
printf("and not have a passcode enabled ever since last restore.");
|
||||||
ecid_y = 8;
|
ecid_y = 8;
|
||||||
tui_can_start = false;
|
tui_can_start = false;
|
||||||
} else {
|
} else {
|
||||||
@@ -163,7 +171,7 @@ void tui_screen_main_redraw(void) {
|
|||||||
} else {
|
} else {
|
||||||
PRINTATT(3, 6, "Press (E) to show ECID.");
|
PRINTATT(3, 6, "Press (E) to show ECID.");
|
||||||
}
|
}
|
||||||
PRINTATT(3, 7, "NOTE: Ensure installed iOS is in range 15.0 - 17.3.1!");
|
PRINTATT(3, 7, "NOTE: Ensure installed iOS is in range 15.0+");
|
||||||
tui_can_start = true;
|
tui_can_start = true;
|
||||||
} else if (tui_connected_devices->mode == TUI_DEVICE_MODE_DFU) {
|
} else if (tui_connected_devices->mode == TUI_DEVICE_MODE_DFU) {
|
||||||
MOVETOT(3, 5);
|
MOVETOT(3, 5);
|
||||||
|
|||||||
+39
-44
@@ -47,37 +47,34 @@ void tui_screen_options_nav(void) {
|
|||||||
extern bool easter_egg;
|
extern bool easter_egg;
|
||||||
|
|
||||||
void tui_screen_options_options(void) {
|
void tui_screen_options_options(void) {
|
||||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
SETCOLOR( FG_BRIGHT_BLACK, BG_BLACK);
|
||||||
MOVETOT(3, 8);
|
MOVETOT(3, 8);
|
||||||
printf("[%c] %sAllow untested iOS/iPadOS versions" COLOR(FG_WHITE, BG_BLACK),
|
printf("[%c] %sAllow untested iOS/iPadOS versions" COLOR(FG_WHITE, BG_BLACK),
|
||||||
tui_options_allow_untested ? 'x' : ' ',
|
tui_options_allow_untested ? ' ' : ' ',
|
||||||
tui_options_nav_selection == 1 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
COLOR(FG_BLACK, FG_BRIGHT_BLACK));
|
||||||
(
|
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
|
||||||
) && (tui_mouse_y == tui_y_offset + 7) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
|
||||||
));
|
|
||||||
MOVETOT(3, 9);
|
MOVETOT(3, 9);
|
||||||
printf("[%c] %sSafe Mode " COLOR(FG_WHITE, BG_BLACK),
|
printf("[%c] %sSafe Mode " COLOR(FG_WHITE, BG_BLACK),
|
||||||
tui_options_safe_mode ? 'x' : ' ',
|
tui_options_safe_mode ? 'x' : ' ',
|
||||||
tui_options_nav_selection == 2 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
tui_options_nav_selection == 1 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||||
(
|
(
|
||||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||||
) && (tui_mouse_y == tui_y_offset + 8) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
) && (tui_mouse_y == tui_y_offset + 8) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||||
));
|
));
|
||||||
MOVETOT(3, 10);
|
MOVETOT(3, 10);
|
||||||
printf("[%c] %sVerbose Boot " COLOR(FG_WHITE, BG_BLACK),
|
printf("[%c] %sVerbose Boot " COLOR(FG_WHITE, BG_BLACK),
|
||||||
tui_options_verbose_boot ? 'x' : ' ',
|
tui_options_verbose_boot ? 'x' : ' ',
|
||||||
tui_options_nav_selection == 3 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
tui_options_nav_selection == 2 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||||
(
|
(
|
||||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||||
) && (tui_mouse_y == tui_y_offset + 9) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
) && (tui_mouse_y == tui_y_offset + 9) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||||
));
|
));
|
||||||
MOVETOT(3, 11);
|
MOVETOT(3, 11);
|
||||||
printf("[%c] %sForce Revert " COLOR(FG_WHITE, BG_BLACK),
|
printf("[%c] %sForce Revert " COLOR(FG_WHITE, BG_BLACK),
|
||||||
tui_options_force_revert ? 'x' : ' ',
|
tui_options_force_revert ? 'x' : ' ',
|
||||||
tui_options_nav_selection == 4 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
tui_options_nav_selection == 3 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||||
(
|
(
|
||||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||||
) && (tui_mouse_y == tui_y_offset + 10) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
) && (tui_mouse_y == tui_y_offset + 10) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||||
));
|
));
|
||||||
if (supports_bright_colors) {
|
if (supports_bright_colors) {
|
||||||
@@ -89,9 +86,9 @@ void tui_screen_options_options(void) {
|
|||||||
SETCOLOR(FG_WHITE, BG_BLACK);
|
SETCOLOR(FG_WHITE, BG_BLACK);
|
||||||
MOVETOT(7, 15);
|
MOVETOT(7, 15);
|
||||||
printf("%sBoot Arguments: " COLOR(FG_WHITE, BG_BLACK),
|
printf("%sBoot Arguments: " COLOR(FG_WHITE, BG_BLACK),
|
||||||
tui_options_nav_selection == 5 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
tui_options_nav_selection == 4 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||||
(
|
(
|
||||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||||
) && (
|
) && (
|
||||||
tui_mouse_y == tui_y_offset + 14 || tui_mouse_y == tui_y_offset + 15
|
tui_mouse_y == tui_y_offset + 14 || tui_mouse_y == tui_y_offset + 15
|
||||||
) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||||
@@ -102,9 +99,9 @@ void tui_screen_options_options(void) {
|
|||||||
MOVETOT(3, 17);
|
MOVETOT(3, 17);
|
||||||
printf("[%c] %s%s " COLOR(FG_WHITE, BG_BLACK),
|
printf("[%c] %s%s " COLOR(FG_WHITE, BG_BLACK),
|
||||||
tui_options_flower_chain ? 'x' : ' ',
|
tui_options_flower_chain ? 'x' : ' ',
|
||||||
tui_options_nav_selection == 6 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
tui_options_nav_selection == 5 ? COLOR(FG_BLACK, BG_BRIGHT_WHITE) : (
|
||||||
(
|
(
|
||||||
tui_mouse_x >= tui_x_offset + 6 && tui_mouse_x <= tui_x_offset + 6 + 34
|
tui_mouse_x >= tui_x_offset + 5 && tui_mouse_x <= tui_x_offset + 5 + 34
|
||||||
) && (tui_mouse_y == tui_y_offset + 16) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
) && (tui_mouse_y == tui_y_offset + 16) ? COLOR(FG_BLACK, BG_WHITE) : ""
|
||||||
), easter_egg ? "Neko Chain " : "Flower Chain");
|
), easter_egg ? "Neko Chain " : "Flower Chain");
|
||||||
|
|
||||||
@@ -174,7 +171,7 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
case TUI_INPUT_DOWN:
|
case TUI_INPUT_DOWN:
|
||||||
case TUI_INPUT_TAB:
|
case TUI_INPUT_TAB:
|
||||||
if (tui_options_is_editing_boot_args) break;
|
if (tui_options_is_editing_boot_args) break;
|
||||||
if (++tui_options_nav_selection > 6) tui_options_nav_selection = 0;
|
if (++tui_options_nav_selection > 5) tui_options_nav_selection = 0;
|
||||||
tui_screen_options_nav();
|
tui_screen_options_nav();
|
||||||
tui_screen_options_options();
|
tui_screen_options_options();
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
@@ -182,7 +179,7 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
case TUI_INPUT_UP:
|
case TUI_INPUT_UP:
|
||||||
case TUI_INPUT_TAB_BACK:
|
case TUI_INPUT_TAB_BACK:
|
||||||
if (tui_options_is_editing_boot_args) break;
|
if (tui_options_is_editing_boot_args) break;
|
||||||
if (--tui_options_nav_selection < 0) tui_options_nav_selection = 6;
|
if (--tui_options_nav_selection < 0) tui_options_nav_selection = 5;
|
||||||
tui_screen_options_nav();
|
tui_screen_options_nav();
|
||||||
tui_screen_options_options();
|
tui_screen_options_options();
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
@@ -200,23 +197,23 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
switch(tui_options_nav_selection) {
|
switch(tui_options_nav_selection) {
|
||||||
case 0:
|
case 0:
|
||||||
return MAIN_SCREEN;
|
return MAIN_SCREEN;
|
||||||
|
// case 1:
|
||||||
|
// tui_options_allow_untested = !tui_options_allow_untested;
|
||||||
|
// break;
|
||||||
case 1:
|
case 1:
|
||||||
tui_options_allow_untested = !tui_options_allow_untested;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
tui_options_safe_mode = !tui_options_safe_mode;
|
tui_options_safe_mode = !tui_options_safe_mode;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 2:
|
||||||
tui_options_verbose_boot = !tui_options_verbose_boot;
|
tui_options_verbose_boot = !tui_options_verbose_boot;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 3:
|
||||||
tui_options_force_revert = !tui_options_force_revert;
|
tui_options_force_revert = !tui_options_force_revert;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 4:
|
||||||
tui_options_is_editing_boot_args = !tui_options_is_editing_boot_args;
|
tui_options_is_editing_boot_args = !tui_options_is_editing_boot_args;
|
||||||
tui_options_boot_args_cursor = tui_options_is_editing_boot_args ? strlen(tui_options_boot_args) : 0;
|
tui_options_boot_args_cursor = tui_options_is_editing_boot_args ? strlen(tui_options_boot_args) : 0;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 5:
|
||||||
tui_options_flower_chain = !tui_options_flower_chain;
|
tui_options_flower_chain = !tui_options_flower_chain;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -240,8 +237,8 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
|
|
||||||
#define MOUSEDOWN_HANDLER(y, val) \
|
#define MOUSEDOWN_HANDLER(y, val) \
|
||||||
if (tui_mouse_y == tui_y_offset + y && \
|
if (tui_mouse_y == tui_y_offset + y && \
|
||||||
tui_mouse_x >= tui_x_offset + 6 - 4 && \
|
tui_mouse_x >= tui_x_offset + 5 - 4 && \
|
||||||
tui_mouse_x <= tui_x_offset + 6 + 34) { \
|
tui_mouse_x <= tui_x_offset + 5 + 34) { \
|
||||||
tui_options_nav_selection = val; \
|
tui_options_nav_selection = val; \
|
||||||
tui_options_nav_mouse_select = val; \
|
tui_options_nav_mouse_select = val; \
|
||||||
tui_screen_options_nav(); \
|
tui_screen_options_nav(); \
|
||||||
@@ -250,15 +247,14 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!tui_options_is_editing_boot_args) {
|
if (!tui_options_is_editing_boot_args) {
|
||||||
MOUSEDOWN_HANDLER(7, 1);
|
MOUSEDOWN_HANDLER(8, 1);
|
||||||
MOUSEDOWN_HANDLER(8, 2);
|
MOUSEDOWN_HANDLER(9, 2);
|
||||||
MOUSEDOWN_HANDLER(9, 3);
|
MOUSEDOWN_HANDLER(10, 3);
|
||||||
MOUSEDOWN_HANDLER(10, 4);
|
MOUSEDOWN_HANDLER(16, 5);
|
||||||
MOUSEDOWN_HANDLER(16, 6);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MOUSEDOWN_HANDLER(14, 5);
|
MOUSEDOWN_HANDLER(14, 4);
|
||||||
MOUSEDOWN_HANDLER(15, 5);
|
MOUSEDOWN_HANDLER(15, 4);
|
||||||
|
|
||||||
#undef MOUSEDOWN_HANDLER
|
#undef MOUSEDOWN_HANDLER
|
||||||
break;
|
break;
|
||||||
@@ -272,8 +268,8 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
|
|
||||||
#define MOUSEUP_HANDLER(y, val, option, e) \
|
#define MOUSEUP_HANDLER(y, val, option, e) \
|
||||||
if (tui_mouse_y == tui_y_offset + y && \
|
if (tui_mouse_y == tui_y_offset + y && \
|
||||||
tui_mouse_x >= tui_x_offset + 6 - 4 && \
|
tui_mouse_x >= tui_x_offset + 5 - 4 && \
|
||||||
tui_mouse_x <= tui_x_offset + 6 + 34 && \
|
tui_mouse_x <= tui_x_offset + 5 + 34 && \
|
||||||
tui_options_nav_mouse_select == val) { \
|
tui_options_nav_mouse_select == val) { \
|
||||||
tui_options_##option = !tui_options_##option; \
|
tui_options_##option = !tui_options_##option; \
|
||||||
e \
|
e \
|
||||||
@@ -283,18 +279,17 @@ tui_screen_t tui_screen_options(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!tui_options_is_editing_boot_args) {
|
if (!tui_options_is_editing_boot_args) {
|
||||||
MOUSEUP_HANDLER(7, 1, allow_untested, );
|
MOUSEUP_HANDLER(8, 1, safe_mode, );
|
||||||
MOUSEUP_HANDLER(8, 2, safe_mode, );
|
MOUSEUP_HANDLER(9, 2, verbose_boot, );
|
||||||
MOUSEUP_HANDLER(9, 3, verbose_boot, );
|
MOUSEUP_HANDLER(10, 3, force_revert, );
|
||||||
MOUSEUP_HANDLER(10, 4, force_revert, );
|
MOUSEUP_HANDLER(16, 5, flower_chain, );
|
||||||
MOUSEUP_HANDLER(16, 6, flower_chain, );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BOOTARGS_HANDLER \
|
#define BOOTARGS_HANDLER \
|
||||||
tui_options_boot_args_cursor = tui_options_is_editing_boot_args ? strlen(tui_options_boot_args) : 0;
|
tui_options_boot_args_cursor = tui_options_is_editing_boot_args ? strlen(tui_options_boot_args) : 0;
|
||||||
|
|
||||||
MOUSEUP_HANDLER(14, 5, is_editing_boot_args, BOOTARGS_HANDLER);
|
MOUSEUP_HANDLER(14, 4, is_editing_boot_args, BOOTARGS_HANDLER);
|
||||||
MOUSEUP_HANDLER(15, 5, is_editing_boot_args, BOOTARGS_HANDLER);
|
MOUSEUP_HANDLER(15, 4, is_editing_boot_args, BOOTARGS_HANDLER);
|
||||||
#undef MOUSEUP_HANDLER
|
#undef MOUSEUP_HANDLER
|
||||||
tui_options_nav_mouse_select = -1;
|
tui_options_nav_mouse_select = -1;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in new issue
Block a user