name: compatibility check on: [push] jobs: mingw: strategy: matrix: coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm steps: - name: Install dependencies run: | apt update apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 - 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: ${{ matrix.coin }}/x86_64-w64-mingw32 run: ./build_single.sh ${{ matrix.coin }} x86_64-w64-mingw32 -j$(nproc) - name: ${{ matrix.coin }}/i686-w64-mingw32 run: ./build_single.sh ${{ matrix.coin }} i686-w64-mingw32 -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ for i in release/${{ matrix.coin }}/* do cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: mingw ${{ matrix.coin }} path: release/${{ matrix.coin }} android: strategy: matrix: coin: [monero, wownero] runs-on: ubuntu-latest # container: # image: debian:bookworm steps: - name: Free Disk Space if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: jlumbroso/free-disk-space@main with: tool-cache: false android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - name: Install dependencies run: | sudo apt update sudo apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf unzip python-is-python3 - 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: ${{ matrix.coin }}/x86_64-linux-android run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-android -j$(nproc) - name: ${{ matrix.coin }}/aarch64-linux-android run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-android -j$(nproc) - name: ${{ matrix.coin }}/armv7a-linux-androideabi run: ./build_single.sh ${{ matrix.coin }} armv7a-linux-androideabi -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ for i in release/${{ matrix.coin }}/* do cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: android ${{ matrix.coin }} path: release/${{ matrix.coin }} - name: remove android_ndk run: | rm -rf ${{ matrix.coin }}/contrib/depends/built/*/android_ndk rm -rf ${{ matrix.coin }}/contrib/depends/sources/android-ndk-r26d-linux.zip linux: strategy: matrix: coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm steps: - name: Install dependencies run: | apt update apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-i686-linux-gnu g++-i686-linux-gnu - 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: ${{ matrix.coin }}/x86_64-linux-gnu run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-gnu -j$(nproc) - name: ${{ matrix.coin }}/aarch64-linux-gnu run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-gnu -j$(nproc) - name: ${{ matrix.coin }}/i686-linux-gnu run: ./build_single.sh ${{ matrix.coin }} i686-linux-gnu -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ for i in release/${{ matrix.coin }}/* do cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: linux ${{ matrix.coin }} path: release/${{ matrix.coin }} sailfishos_aarch64: strategy: matrix: coin: [monero, wownero] runs-on: buildjet-4vcpu-ubuntu-2204-arm steps: - name: Set up QEMU uses: docker/setup-qemu-action@v3 - uses: thejerrybao/setup-swap-space@v1 with: swap-space-path: /swapfile swap-size-gb: 8 remove-existing-swap-files: true - 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu run: | docker run --rm -v $PWD/.ccache:/root/.ccache -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 "*" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/aarch64-meego-linux-gnu-$i; ln -s /usr/bin/$i /usr/bin/aarch64-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} aarch64-meego-linux-gnu -j$(nproc)' - name: rename artifacts run: | sudo mkdir release/gh/ for i in release/${{ matrix.coin }}/* do sudo cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: sfos aarch64 ${{ matrix.coin }} path: release/${{ matrix.coin }} 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu run: | docker run --rm -v $PWD/.ccache:/root/.ccache -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 "*" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/i686-linux-gnu-$i; ln -s /usr/bin/$i /usr/bin/i686-meego-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} i686-meego-linux-gnu -j$(nproc)' - name: rename artifacts run: | sudo mkdir release/gh/ for i in release/${{ matrix.coin }}/* do sudo cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: sfos_i486 ${{ matrix.coin }} path: release/${{ matrix.coin }} darwin: strategy: matrix: coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm steps: - name: Install dependencies run: | apt update apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf python-is-python3 - 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 monero ./apply_patches.sh wownero - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: ${{ matrix.coin }}/x86_64-apple-darwin11 run: ./build_single.sh ${{ matrix.coin }} x86_64-apple-darwin11 -j$(nproc) - name: ${{ matrix.coin }}/aarch64-apple-darwin11 run: ./build_single.sh ${{ matrix.coin }} aarch64-apple-darwin11 -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ for i in release/${{ matrix.coin }}/* do cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: darwin ${{ matrix.coin }} path: release/${{ matrix.coin }} macos: strategy: matrix: coin: [monero, wownero] name: macos build runs-on: macos-14 steps: - name: Checkout monero_c repo uses: actions/checkout@v4 with: repository: MrCyjaneK/monero_c fetch-depth: 0 submodules: recursive - uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '15.4' - name: install dependencies run: | brew install ccache unbound boost@1.76 zmq autoconf automake libtool && brew link boost@1.76 - 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: build run: | ./build_single.sh ${{ matrix.coin }} aarch64-host-apple-darwin -j$(sysctl -n hw.logicalcpu) - name: rename artifacts run: | mkdir release/gh/ for i in release/${{ matrix.coin }}/* do cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: macos ${{ matrix.coin }} path: release/${{ matrix.coin }} ios: strategy: matrix: coin: [monero, wownero] name: ios build runs-on: macos-14 steps: - name: Checkout monero_c repo uses: actions/checkout@v4 with: repository: MrCyjaneK/monero_c fetch-depth: 0 submodules: recursive - uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '15.4' - name: install dependencies run: | brew install ccache unbound boost@1.76 zmq autoconf automake libtool && brew link boost@1.76 - 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: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.coin }} - name: Cache built if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/cache@v4 with: path: | ${{ matrix.coin }}/contrib/depends/built/* ${{ matrix.coin }}/contrib/depends/sources/* key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - name: build run: | ./build_single.sh ${{ matrix.coin }} host-apple-ios -j$(sysctl -n hw.logicalcpu) - name: rename artifacts run: | mkdir release/gh/ for i in release/${{ matrix.coin }}/* do cp "$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 }} - name: Upload lib uses: actions/upload-artifact@v4 with: name: ios ${{ matrix.coin }} path: release/${{ matrix.coin }}