futurerestore/.github/workflows/linux.sh
Cryptiiiic 93266082f8
Fix CI
2021-08-30 00:29:38 -07:00

58 lines
2.9 KiB
Bash
Executable file

#!/usr/bin/env bash
echo 'step 1:'
set -e
export DIR=$(pwd)
export BASE=/tmp/build/
export C_ARGS="-fPIC -static"
export CXX_ARGS="-fPIC -static"
export LD_ARGS="-Wl,--allow-multiple-definition -static -L/usr/lib/x86_64-linux-gnu -L/tmp/out/lib"
export C_ARGS2="-fPIC"
export CXX_ARGS2="-fPIC"
export LD_ARGS2="-Wl,--allow-multiple-definition -L/usr/lib/x86_64-linux-gnu -L/tmp/out/lib"
export PKG_CFG="/tmp/out/lib/pkgconfig"
export CC_ARGS="CC=/usr/bin/clang-13 CXX=/usr/bin/clang++-13 LD=/usr/bin/ld.lld-13 RANLIB=/usr/bin/ranlib AR=/usr/bin/ar"
export CONF_ARGS="--prefix=/tmp/out --disable-dependency-tracking --disable-silent-rules --disable-debug --without-cython --disable-shared"
export CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=true -DCMAKE_C_FLAGS=${C_ARGS} -DCMAKE_CXX_FLAGS=${CXX_ARGS} -DCMAKE_SHARED_LINKER_FLAGS=${LD_ARGS} -DCMAKE_STATIC_LINKER_FLAGS=${LD_ARGS} -DCMAKE_INSTALL_PREFIX=/tmp/out -DBUILD_SHARED_LIBS=0 -Wno-dev"
export JNUM="-j$(($(nproc) / 2))"
export LNUM="-l$(($(nproc) / 2))"
cd ${BASE}
sed -i 's/deb\.debian\.org/ftp.de.debian.org/g' /etc/apt/sources.list
apt-get -qq update
apt-get -yqq dist-upgrade
apt-get install --no-install-recommends -yqq curl gnupg2 zstd lsb-release wget software-properties-common build-essential git autoconf automake libtool-bin pkg-config cmake zlib1g-dev libminizip-dev libpng-dev libreadline-dev libbz2-dev libudev-dev libudev1
curl -sO https://linux.cryptiiiic.com/CI-Scripts/linux.sh
chmod +x linux.sh
if [[ "$(file linux.sh)" == "linux.sh: Bourne-Again shell script, ASCII text executable" ]]
then
./linux.sh
else
cp -LRP /usr/bin/ld ~/
rm -rf /usr/bin/ld /usr/lib/x86_64-linux-gnu/lib{usb-1.0,png*}.so*
curl -sO https://apt.llvm.org/llvm.sh
chmod 0755 llvm.sh
./llvm.sh 13
ln -sf /usr/bin/ld.lld-13 /usr/bin/ld
echo 'step 2:'
curl -sO https://linux.cryptiiiic.com/CI-Scripts/linux.tar.zst
zstd -dk linux.tar.zst
tar xf ${BASE}/linux.tar -C / --warning=none || true || true
echo 'step 3:'
cd ${BASE}/futurerestore
export FUTURERESTORE_VERSION_RELEASE=$(cat version.txt | tr -d '\n')
git submodule init; git submodule update --recursive
cd external/tsschecker
git submodule init; git submodule update --recursive
cd ${BASE}/futurerestore
echo 'step 5:'
./autogen.sh ${CONF_ARGS} --enable-static ${CC_ARGS} CFLAGS="${C_ARGS2} -DIDEVICERESTORE_NOMAIN=1 -DTSSCHECKER_NOMAIN=1" LDFLAGS="${LD_ARGS2} -lpthread -ldl -lusb-1.0 -ludev -lusbmuxd-2.0 -llzfse -lcommon -lxpwn" PKG_CONFIG_PATH="${PKG_CFG}"
make $JNUM $LNUM
make $JNUM $LNUM install
echo 'step 6:'
cp /tmp/out/bin/futurerestore ${BASE}/futurerestore-${FUTURERESTORE_VERSION_RELEASE}
cd ${BASE}
tar cpJvf ${BASE}/futurerestore-${FUTURERESTORE_VERSION_RELEASE}-linux.tar.xz futurerestore-${FUTURERESTORE_VERSION_RELEASE}
ldd ${BASE}/futurerestore-${FUTURERESTORE_VERSION_RELEASE} || true
./futurerestore-${FUTURERESTORE_VERSION_RELEASE} || true
echo 'End'
fi