diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 0000000..5f2cf1d --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,188 @@ +name: Build palera1n Linux + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + build-Linux: + strategy: + matrix: + triple: + - i486-linux-musl + - x86_64-linux-musl + - armel-linux-musleabi + - aarch64-linux-musl + runs-on: ubuntu-latest + env: + OSSL_VERSION: 3.0.7 + 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 + + - name: Download toolchain + run: | + curl -LO https://musl.cc/${{ matrix.triple }}-cross.tgz + tar -xf ${{ matrix.triple }}-cross.tgz + + - name: Setup Environment + run: | + mkdir sysroot + echo "$(pwd)/${{ matrix.triple }}-cross/bin" >> $GITHUB_PATH + case ${{ matrix.triple }} in + i486-linux-musl) + echo "CHECKRA1N_NAME=linux-x86" >> $GITHUB_ENV + echo "OSSL_ARCH=linux-x86" >> $GITHUB_ENV + ;; + x86_64-linux-musl) + echo "CHECKRA1N_NAME=linux-x86_64" >> $GITHUB_ENV + echo "OSSL_ARCH=linux-x86_64" >> $GITHUB_ENV + ;; + armel-linux-musleabi) + echo "CHECKRA1N_NAME=linux-armel" >> $GITHUB_ENV + echo "OSSL_ARCH=linux-armv4" >> $GITHUB_ENV + ;; + aarch64-linux-musl) + echo "CHECKRA1N_NAME=linux-arm64" >> $GITHUB_ENV + echo "OSSL_ARCH=linux-aarch64" >> $GITHUB_ENV + ;; + esac + echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV + echo "CFLAGS=-I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV + echo "CXXFLAGS=-I$(pwd)/sysroot/usr/local/include -L$(pwd)/sysroot/usr/local/lib" >> $GITHUB_ENV + echo "LDFLAGS=-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://cdn.discordapp.com/attachments/672628720497852459/1064954768021274694/checkra1n-kpf-pongo https://cdn.discordapp.com/attachments/672628720497852459/1065189871251111966/binpack.dmg https://cdn.discordapp.com/attachments/672628720497852459/1065189871636983848/ramdisk.dmg + cd .. + + - name: Download dependencies (source code) + run: | + curl -LOOO \ + https://www.openssl.org/source/openssl-${{ env.OSSL_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 openssl-${{ env.OSSL_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 OpenSSL + run: | + cd openssl-${{ env.OSSL_VERSION }} + LDFLAGS="${{ env.LDFLAGS }} -latomic" ./Configure ${{ env.OSSL_ARCH }} + sed -i 's/-m64//g' Makefile + make -j$(nproc) LDFLAGS="${{ env.LDFLAGS }} -latomic" + make install DESTDIR=${{ env.DESTDIR }} + cd .. + + - name: Build libusb + run: | + cd libusb-${{ env.LIBUSB_VERSION }} + ./configure ${{ env.CONFIGURE_ARGS }} --disable-udev + make -j$(nproc) + make install DESTDIR=${{ env.DESTDIR }} + cd .. + + - name: Build readline + run: | + cd readline-${{ env.READLINE_VERSION }} + ./configure ${{ env.CONFIGURE_ARGS }} + make -j$(nproc) + make install DESTDIR=${{ env.DESTDIR }} + cd .. + + - name: Build libplist + run: | + cd libplist + autoreconf -fiv + ./configure ${{ env.CONFIGURE_ARGS }} --without-cython + make -j$(nproc) + make install DESTDIR=${{ env.DESTDIR }} + cd .. + + - name: Build libimobiledevice-glue + run: | + cd libimobiledevice-glue + autoreconf -fiv + ./configure ${{ env.CONFIGURE_ARGS }} + make -j$(nproc) + make 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 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 install DESTDIR=${{ env.DESTDIR }} + cd .. + + - name: Build libimobiledevice + run: | + cd libimobiledevice + autoreconf -fiv + ./configure ${{ env.CONFIGURE_ARGS }} --with-openssl openssl_LIBS="-lssl -lcrypto" openssl_CFLAGS=" " + make -j$(nproc) + make 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 + make -j$(nproc) CC="${{ matrix.triple }}-gcc" LDFLAGS="${{ env.LDFLAGS }} -lssl -lcrypto" 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: Upload palera1n + uses: actions/upload-artifact@v2 + with: + name: palera1n-${{ matrix.triple }} + path: src/palera1n + + - name: Upload debug symbols + uses: actions/upload-artifact@v2 + with: + name: palera1n-${{ matrix.triple }}.debug + path: palera1n.debug diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b440b1e..2fb7826 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build palera1n +name: Build palera1n macOS on: push: diff --git a/Makefile b/Makefile index 3830bd7..fa2f02a 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ DEP = $(SRC)/dep_root STRIP = strip CC ?= cc CFLAGS += -I$(DEP)/include -I$(SRC)/include -I$(SRC) -Wall -Wextra -DPALERAIN_VERSION=\"2.0.0\" -LIBS = $(DEP)/lib/libimobiledevice-1.0.a $(DEP)/lib/libirecovery-1.0.a $(DEP)/lib/libusbmuxd-2.0.a $(DEP)/lib/libplist-2.0.a $(DEP)/lib/libimobiledevice-glue-1.0.a -pthread +LIBS += $(DEP)/lib/libimobiledevice-1.0.a $(DEP)/lib/libirecovery-1.0.a $(DEP)/lib/libusbmuxd-2.0.a $(DEP)/lib/libimobiledevice-glue-1.0.a $(DEP)/lib/libplist-2.0.a $(DEP)/lib/libreadline.a -pthread ifeq ($(TARGET_OS),) TARGET_OS = $(shell uname -s) endif @@ -12,11 +12,10 @@ CFLAGS += -mmacosx-version-min=10.8 LIBS += $(DEP)/lib/libcrypto.35.tbd $(DEP)/lib/libssl.35.tbd $(DEP)/lib/libusb-1.0.a LIBS += -framework CoreFoundation -framework SystemConfiguration -framework IOKit -framework Security else -LDFLAGS += -static -fuse-ld=lld -no-pie -LIBS += $(DEP)/lib/libcrypto.a $(DEP)/lib/libssl.a +LDFLAGS += -static -no-pie +LIBS += $(DEP)/lib/libssl.a $(DEP)/lib/libcrypto.a endif LIBS += $(DEP)/lib/libusb-1.0.a -LDFLAGS += $(LIBS) ifeq ($(DEV_BUILD),1) CFLAGS += -O0 -g @@ -24,7 +23,7 @@ else CFLAGS += -Os -g endif -export SRC DEP CC CFLAGS LDFLAGS LIBS +export SRC DEP CC CFLAGS LDFLAGS LIBS TARGET_OS all: palera1n diff --git a/src/Makefile b/src/Makefile index 5cbe908..cbe9a17 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,6 +1,6 @@ all: palera1n -OBJECTS = main.o dfuhelper.o lockdown_helper.o devhelper.o exec_checkra1n.o pongo_usb.o checkra1n.o +OBJECTS = main.o dfuhelper.o devhelper.o lockdown_helper.o exec_checkra1n.o pongo_usb.o checkra1n.o CHECKRA1N_VERSION ?= 0.1337.1 LIPO = lipo @@ -31,7 +31,7 @@ checkra1n.c: checkra1n checkra1n-kpf-pongo ramdisk.dmg binpack.dmg $(CC) -c $(CFLAGS) $< palera1n: $(OBJECTS) - $(CC) $(OBJECTS) $(CFLAGS) $(LDFLAGS) -o palera1n + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o palera1n clean: rm -rf *.o palera1n checkra1n checkra1n.c palera1n.dSYM