mirror of
https://github.com/palera1n/palera1n.git
synced 2026-10-21 09:47:01 +02:00
266 lines
9.7 KiB
YAML
266 lines
9.7 KiB
YAML
name: Build palera1n
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-macOS:
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Download dependencies
|
|
run: |
|
|
cd src
|
|
curl -LOOO https://github.com/guacaplushy/checkp4le/raw/main/binaries/checkra1n-kpf-pongo \
|
|
https://cdn.nickchan.lol/palera1n/c-rewrite/deps/binpack.dmg \
|
|
https://cdn.nickchan.lol/palera1n/c-rewrite/deps/ramdisk.dmg
|
|
|
|
cd ..
|
|
curl -LO https://cdn.nickchan.lol/palera1n/c-rewrite/deps/dep_root_macos.tgz
|
|
tar xf dep_root_macos.tgz
|
|
make -j5 download-checkra1n
|
|
|
|
- name: Build
|
|
run: |
|
|
make -j$(sysctl -n hw.ncpu) macos-dist
|
|
|
|
- name: Prepare artifact
|
|
run: |
|
|
mkdir ready
|
|
cp palera1n-macos ready/palera1n-macos-universal
|
|
cp palera1n-x86_64 ready/palera1n-macos-x86_64
|
|
cp palera1n-arm64 ready/palera1n-macos-arm64
|
|
zip -r ready/palera1n-macos-dSYM.zip palera1n-macos.dSYM
|
|
|
|
- name: Upload artifact
|
|
uses: wangyucode/[email protected]
|
|
with:
|
|
host: ${{ secrets.NICKCHAN_FTP_HOST }}
|
|
port: ${{ secrets.NICKCHAN_FTP_PORT }}
|
|
username: palera1n
|
|
privateKey: ${{ secrets.NICKCHAN_FTP_KEY }}
|
|
forceUpload: true
|
|
dryRun: false
|
|
localDir: 'ready/'
|
|
remoteDir: '/palera1n/artifacts/c-rewrite'
|
|
|
|
build-Linux:
|
|
strategy:
|
|
matrix:
|
|
triple:
|
|
- i486-linux-musl
|
|
- x86_64-linux-musl
|
|
- armel-linux-musleabi
|
|
- aarch64-linux-musl
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
MBEDTLS_VERSION: 3.3.0
|
|
LIBUSB_VERSION: 1.0.26
|
|
READLINE_VERSION: 8.2
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install build dependencies (packages)
|
|
run: |
|
|
sudo apt remove -y libssl-dev libreadline-dev
|
|
sudo apt install -y pkg-config autoconf automake
|
|
sudo pip3 install jsonschema jinja2
|
|
|
|
- name: Download toolchain checksum
|
|
run: |
|
|
curl -LO https://musl.cc/SHA512SUMS
|
|
echo "TOOLCHAIN_CHECKSUM="$(grep ${{ matrix.triple }}-cross.tgz SHA512SUMS | cut -d' ' -f1) >> $GITHUB_ENV
|
|
|
|
- name: Download toolchain (cached)
|
|
id: toolchain_cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ matrix.triple }}-cross.tgz
|
|
key: ${{ matrix.triple }}-${{ env.TOOLCHAIN_CHECKSUM }}-toolchain
|
|
|
|
- name: Download toolchain
|
|
if: steps.toolchain_cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -LO https://musl.cc/${{ matrix.triple }}-cross.tgz
|
|
|
|
- name: Setup environment
|
|
run: |
|
|
tar -xf ${{ matrix.triple }}-cross.tgz
|
|
mkdir sysroot
|
|
echo "$(pwd)/${{ matrix.triple }}-cross/bin" >> $GITHUB_PATH
|
|
case ${{ matrix.triple }} in
|
|
i486-linux-musl)
|
|
echo "CHECKRA1N_NAME=linux-x86" >> $GITHUB_ENV
|
|
;;
|
|
x86_64-linux-musl)
|
|
echo "CHECKRA1N_NAME=linux-x86_64" >> $GITHUB_ENV
|
|
;;
|
|
armel-linux-musleabi)
|
|
echo "CHECKRA1N_NAME=linux-armel" >> $GITHUB_ENV
|
|
;;
|
|
aarch64-linux-musl)
|
|
echo "CHECKRA1N_NAME=linux-arm64" >> $GITHUB_ENV
|
|
;;
|
|
esac
|
|
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 "CXXFLAGS=-g -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 "DESTDIR=$(pwd)/sysroot" >> $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 "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
|
|
mkdir -p $(pwd)/sysroot/usr/local/lib
|
|
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
|
|
|
- name: Download dependencies (embedded binaries)
|
|
run: |
|
|
cd src
|
|
curl -LOOO https://github.com/guacaplushy/checkp4le/raw/main/binaries/checkra1n-kpf-pongo \
|
|
https://cdn.nickchan.lol/palera1n/c-rewrite/deps/binpack.dmg \
|
|
https://cdn.nickchan.lol/palera1n/c-rewrite/deps/ramdisk.dmg
|
|
cd ..
|
|
make -j5 download-checkra1n
|
|
|
|
- name: Download dependencies (source code)
|
|
run: |
|
|
curl -LOOO \
|
|
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://mirror-hk.koddos.net/gnu/readline/readline-${{ env.READLINE_VERSION }}.tar.gz
|
|
tar -xf v${{ env.MBEDTLS_VERSION }}.tar.gz
|
|
tar -xjf libusb-${{ env.LIBUSB_VERSION }}.tar.bz2
|
|
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
|
|
|
|
- name: Build Mbed TLS
|
|
run: |
|
|
cd mbedtls-${{ env.MBEDTLS_VERSION }}
|
|
mkdir build
|
|
cd build
|
|
cmake .. \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_CROSSCOMPILING=true \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_PROCESSOR=$(echo ${{ matrix.triple }} | cut -d- -f1) \
|
|
-DCMAKE_C_COMPILER='${{ env.CROSS_COMPILE }}gcc' \
|
|
-DCMAKE_C_FLAGS='${{ env.CFLAGS }}' \
|
|
-DCMAKE_CXX_FLAGS='${{ env.CXXFLAGS }}' \
|
|
-DCMAKE_FIND_ROOT_PATH="${{ env.DESTDIR }}" \
|
|
-DCMAKE_INSTALL_PREFIX="${{ env.PREFIX }}" \
|
|
-DENABLE_TESTING=OFF \
|
|
-DENABLE_PROGRAMS=OFF \
|
|
-DCMAKE_INSTALL_SYSCONFDIR="/etc"
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
|
|
- name: Build libusb
|
|
run: |
|
|
cd libusb-${{ env.LIBUSB_VERSION }}
|
|
./configure ${{ env.CONFIGURE_ARGS }} --disable-udev
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
|
|
- name: Build readline
|
|
run: |
|
|
cd readline-${{ env.READLINE_VERSION }}
|
|
./configure ${{ env.CONFIGURE_ARGS }}
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
|
|
- name: Build libplist
|
|
run: |
|
|
cd libplist
|
|
autoreconf -fiv
|
|
./configure ${{ env.CONFIGURE_ARGS }} --without-cython
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
|
|
- name: Build libimobiledevice-glue
|
|
run: |
|
|
cd libimobiledevice-glue
|
|
autoreconf -fiv
|
|
./configure ${{ env.CONFIGURE_ARGS }}
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
|
|
- name: Build libirecovery (sorta)
|
|
run: |
|
|
sudo mv /usr/local /usr/local.bak
|
|
sudo ln -s ${{ env.DESTDIR }}${{ env.PREFIX }} /usr/local
|
|
cd libirecovery
|
|
autoreconf -fiv
|
|
./configure ${{ env.CONFIGURE_ARGS }}
|
|
make -ij$(nproc)
|
|
make -i -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
install -m644 src/.libs/libirecovery-1.0.a ${{ env.DESTDIR }}${{ env.PREFIX }}/lib
|
|
cd ..
|
|
|
|
- name: Build libusbmuxd
|
|
run: |
|
|
cd libusbmuxd
|
|
autoreconf -fiv
|
|
./configure ${{ env.CONFIGURE_ARGS }}
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
|
|
- name: Build libimobiledevice
|
|
run: |
|
|
cd libimobiledevice
|
|
autoreconf -fiv
|
|
./configure ${{ env.CONFIGURE_ARGS }} --with-mbedtls
|
|
make -j$(nproc)
|
|
make -j$(nproc) install DESTDIR=${{ env.DESTDIR }}
|
|
cd ..
|
|
sudo rm /usr/local
|
|
sudo mv /usr/local.bak /usr/local
|
|
|
|
- name: Build palera1n
|
|
run: |
|
|
cp -a sysroot/${{ env.PREFIX }}/{include,lib} dep_root
|
|
find dep_root -name '*.so' -delete
|
|
find dep_root -name '*.la' -delete
|
|
make -j$(nproc) CC="${{ matrix.triple }}-gcc" palera1n
|
|
|
|
- name: Seperate debug symbols
|
|
run: |
|
|
${{ matrix.triple }}-objcopy --only-keep-debug src/palera1n palera1n.debug
|
|
${{ matrix.triple }}-strip --strip-debug --strip-unneeded src/palera1n
|
|
${{ matrix.triple }}-objcopy --add-gnu-debuglink=palera1n.debug src/palera1n
|
|
chmod -x palera1n.debug
|
|
|
|
- name: Prepare artifact
|
|
run: |
|
|
mkdir ready
|
|
mv palera1n.debug ready/palera1n-${{ env.CHECKRA1N_NAME }}.debug
|
|
mv src/palera1n ready/palera1n-${{ env.CHECKRA1N_NAME }}
|
|
|
|
- name: Upload artifact
|
|
uses: wangyucode/[email protected]
|
|
with:
|
|
host: ${{ secrets.NICKCHAN_FTP_HOST }}
|
|
port: ${{ secrets.NICKCHAN_FTP_PORT }}
|
|
username: palera1n
|
|
privateKey: ${{ secrets.NICKCHAN_FTP_KEY }}
|
|
forceUpload: true
|
|
dryRun: false
|
|
localDir: 'ready/'
|
|
remoteDir: '/palera1n/artifacts/c-rewrite'
|