From c81a5596c5d5d94289e662db9e3fdc1930b3fcc1 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Thu, 27 Jun 2024 09:36:55 +0200 Subject: [PATCH] sailfishos ci --- .github/workflows/compat.yaml | 64 +++++++++++++++++++++++++++++++++++ build_single.sh | 44 ++++++++++++++++++++++-- 2 files changed, 106 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compat.yaml b/.github/workflows/compat.yaml index fa6721f..4bb3654 100644 --- a/.github/workflows/compat.yaml +++ b/.github/workflows/compat.yaml @@ -122,6 +122,70 @@ jobs: with: files: release/gh/* token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + sailfishos_aarch64: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu + run: | + docker run --rm -v $PWD:$PWD -w $PWD ghcr.io/mrcyjanek/sailfishos:4.6.0.11_target_aarch64 bash -c 'zypper in -f -y perl-IPC-Cmd curl ccache gperf cmake ffmpeg-tools git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static && git config --global --add safe.directory '*' && git config --global user.email "ci@mrcyjanek.net" && git config --global user.name "CI mrcyjanek.net" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/aarch64-meego-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} aarch64-meego-linux-gnu -j$(nproc)' + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + mv "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + sailfishos_i486: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu + run: | + docker run --rm -v $PWD:$PWD -w $PWD ghcr.io/mrcyjanek/sailfishos:4.6.0.11_target_i486 bash -c 'zypper in -f -y perl-IPC-Cmd curl ccache gperf cmake ffmpeg-tools git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static && git config --global --add safe.directory '*' && git config --global user.email "ci@mrcyjanek.net" && git config --global user.name "CI mrcyjanek.net" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/i686-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} i684-meego-linux-gnu -j$(nproc)' + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + mv "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} darwin: strategy: matrix: diff --git a/build_single.sh b/build_single.sh index 31a788d..e7d9459 100755 --- a/build_single.sh +++ b/build_single.sh @@ -53,10 +53,44 @@ case "$HOST_ABI" in export CC="${HOST_ABI}-gcc" export CXX="${HOST_ABI}-g++" ;; + "i686-meego-linux-gnu") + # sanity checks, we should only run on native cpu + if [[ ! "$(uname -m)" == "x86_64" ]]; + then + echo "${HOST_ABI} builds are only supported on x86_64 host." + exit 1 + fi + # we also only support sailfishos linux + source /etc/os-release + if [[ ! "$ID" == "sailfishos" ]]; + then + echo "${HOST_ABI} builds are only supported on sailfishos host." + exit 1 + fi + export CC="${HOST_ABI}-gcc" + export CXX="${HOST_ABI}-g++" + ;; "aarch64-linux-gnu") export CC="${HOST_ABI}-gcc" export CXX="${HOST_ABI}-g++" ;; + "aarch64-meego-linux-gnu") + # sanity checks, we should only run on native cpu + if [[ ! "$(uname -m)" == "aarch64" ]]; + then + echo "${HOST_ABI} builds are only supported on aarch64 host." + exit 1 + fi + # we also only support sailfishos linux + source /etc/os-release + if [[ ! "$ID" == "sailfishos" ]]; + then + echo "${HOST_ABI} builds are only supported on sailfishos host." + exit 1 + fi + export CC="${HOST_ABI}-gcc" + export CXX="${HOST_ABI}-g++" + ;; "x86_64-linux-android") export PATH="$WDIR/$repo/contrib/depends/${HOST_ABI}/native/bin/:$PATH" export CC=x86_64-linux-android21-clang @@ -114,7 +148,7 @@ case "$HOST_ABI" in esac pushd $repo/contrib/depends case "$HOST_ABI" in - "x86_64-linux-gnu" | "i686-linux-gnu" | "aarch64-linux-gnu" | "x86_64-linux-android" | "i686-linux-android" | "aarch64-linux-android" | "armv7a-linux-androideabi" | "i686-w64-mingw32" | "x86_64-w64-mingw32" | "x86_64-apple-darwin11" | "aarch64-apple-darwin11") + "x86_64-linux-gnu" | "i686-linux-gnu" | "i686-meego-linux-gnu" | "aarch64-linux-gnu" | "aarch64-meego-linux-gnu" | "x86_64-linux-android" | "i686-linux-android" | "aarch64-linux-android" | "armv7a-linux-androideabi" | "i686-w64-mingw32" | "x86_64-w64-mingw32" | "x86_64-apple-darwin11" | "aarch64-apple-darwin11") CC=gcc CXX=g++ make HOST="$HOST_ABI" "$NPROC" ;; "host-apple-darwin" | "x86_64-host-apple-darwin" | "aarch64-host-apple-darwin") @@ -265,9 +299,15 @@ pushd $repo/build/${HOST_ABI} "i686-linux-gnu") env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="i686" -D STATIC=ON -D BUILD_64="OFF" -D CMAKE_BUILD_TYPE=$buildType -D ANDROID=false -D BUILD_TAG="linux-x86" -D CMAKE_SYSTEM_NAME="Linux" ../.. ;; + "i686-meego-linux-gnu") + env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="i686" -D STATIC=ON -D BUILD_64="OFF" -D CMAKE_BUILD_TYPE=$buildType -D ANDROID=false -D BUILD_TAG="linux-x86" -D CMAKE_SYSTEM_NAME="Linux" ../.. + ;; "aarch64-linux-gnu") env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=$buildType -D ANDROID=false -D BUILD_TAG="linux-armv8" -D CMAKE_SYSTEM_NAME="Linux" ../.. ;; + "aarch64-meego-linux-gnu") + env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=$buildType -D ANDROID=false -D BUILD_TAG="linux-armv8" -D CMAKE_SYSTEM_NAME="Linux" ../.. + ;; "x86_64-linux-android") env CC="${CC}" CXX="${CXX}" cmake -DHIDAPI_DUMMY=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="x86-64" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=$buildType -D ANDROID=true -D BUILD_TAG="android-x86_64" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_ARCH_ABI="x86_64" ../.. ;; @@ -331,7 +371,7 @@ pushd ${repo}_libwallet2_api_c mkdir -p build/${HOST_ABI} -p pushd build/${HOST_ABI} case $HOST_ABI in - "x86_64-linux-gnu" | "i686-linux-gnu" | "aarch64-linux-gnu" | "i686-w64-mingw32" | "x86_64-w64-mingw32" | "x86_64-apple-darwin11" | "aarch64-apple-darwin11" | "host-apple-darwin" | "x86_64-host-apple-darwin" | "aarch64-host-apple-darwin" | "x86_64-linux-android" | "i686-linux-android" | "aarch64-linux-android" | "armv7a-linux-androideabi") + "x86_64-linux-gnu" | "i686-linux-gnu" | "i686-meego-linux-gnu" | "aarch64-linux-gnu" | "aarch64-meego-linux-gnu" | "i686-w64-mingw32" | "x86_64-w64-mingw32" | "x86_64-apple-darwin11" | "aarch64-apple-darwin11" | "host-apple-darwin" | "x86_64-host-apple-darwin" | "aarch64-host-apple-darwin" | "x86_64-linux-android" | "i686-linux-android" | "aarch64-linux-android" | "armv7a-linux-androideabi") echo $CC env CC="${CC}" CXX="${CXX}" cmake -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../.. CC="${CC}" CXX="${CXX}" make $NPROC