]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
ci: speed up mac build; remove others/overkill feat/pause-sync 1/head
authorgg <chown_tee@proton.me>
Fri, 16 Jan 2026 23:42:48 +0000 (18:42 -0500)
committergg <chown_tee@proton.me>
Sat, 17 Jan 2026 01:37:36 +0000 (20:37 -0500)
.github/workflows/build-mac.yml
.github/workflows/guix.yml [deleted file]
.github/workflows/linux.yml [deleted file]
.github/workflows/mac.yml [deleted file]
.github/workflows/win.yml

index 4be043874bff03ba42a23d02e34d2c79d11b12c0..0d629156545db20b514bc6e74064e7aa8e773c40 100644 (file)
@@ -8,28 +8,55 @@ on:
 
 jobs:
   build-macos:
-    name: "macOS (brew)"
-    # Disabled due to 6 hour timeout. Need to find a way to speed it up.
-    if: false
-    runs-on: macos-latest
+    name: "macOS (Apple Silicon)"
+    # Enable the job
+    if: true
+    # UTTERLY CRITICAL: Use M1/M2 runners (macos-14).
+    # This reduces compile time from >6h to ~1.5h.
+    runs-on: macos-14
+
     env:
       CCACHE_DIR: /Users/runner/Library/Caches/ccache
+      CCACHE_COMPILERCHECK: content
+      CCACHE_MAXSIZE: 1G
       HOMEBREW_NO_AUTO_UPDATE: 1
+
     steps:
       - uses: actions/checkout@v4
         with:
           submodules: recursive
-      - name: install dependencies
+
+      - name: Install dependencies
         run: |
           brew install --quiet qt libsodium libzip qrencode unbound cmake boost hidapi openssl expat protobuf pkg-config ccache ninja
+
       - name: Setup ccache
         uses: actions/cache@v4
         with:
           path: ${{ env.CCACHE_DIR }}
-          key: macos-ccache-${{ github.sha }}
+          # Use a simpler key so it matches easily.
+          # We rely on ccache's internal hashing, not the git SHA.
+          key: macos-ccache-v1-${{ github.ref_name }}
           restore-keys: |
-            macos-ccache-
-      - name: build
+            macos-ccache-v1-
+
+      - name: Configure
         run: |
-          cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_SCANNER=Off -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-          cmake --build build
+          # Configure for Release.
+          # Note: This produces an arm64 binary.
+          cmake -G Ninja -S . -B build \
+            -DCMAKE_BUILD_TYPE=Release \
+            -DWITH_SCANNER=Off \
+            -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
+
+      - name: Build Monero Libs (Cache Primer)
+        # We build the heavy libs first. If this passes but the next step fails/times out,
+        # ccache will still have these objects for the next run.
+        run: cmake --build build --target wallet_api
+
+      - name: Build Feather
+        run: cmake --build build
+
+      - name: Show ccache stats
+        # Useful to verify you are actually getting hits
+        run: ccache -s
diff --git a/.github/workflows/guix.yml b/.github/workflows/guix.yml
deleted file mode 100644 (file)
index 90dd257..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-name: ci/gh-actions/guix
-
-on:
-  push:
-    tags:
-      - "guix-2.8.1-*"
-
-jobs:
-  cache-sources:
-    runs-on: ubuntu-24.04
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: depends sources cache
-        id: cache
-        uses: actions/cache@v4
-        with:
-          path: contrib/depends/sources
-          key: sources-${{ hashFiles('contrib/depends/packages/*') }}
-      - name: download depends sources
-        if: steps.cache.outputs.cache-hit != 'true'
-        run: make -C contrib/depends download
-
-  build-guix:
-    runs-on: ubuntu-24.04
-    needs: [cache-sources]
-    strategy:
-      fail-fast: false
-      matrix:
-        toolchain:
-          - target: "x86_64-linux-gnu"
-          - target: "x86_64-linux-gnu.no-tor-bundle"
-          - target: "x86_64-linux-gnu.pack"
-          - target: "aarch64-linux-gnu"
-          - target: "riscv64-linux-gnu"
-          - target: "x86_64-w64-mingw32"
-          - target: "x86_64-w64-mingw32.installer"
-          - target: "x86_64-apple-darwin"
-          - target: "arm64-apple-darwin"
-
-    outputs:
-      WIN_INSTALLER_ARTIFACT_ID: ${{ steps.win-installer.outputs.WIN_INSTALLER_ARTIFACT_ID }}
-      WIN_EXECUTABLE_ARTIFACT_ID: ${{ steps.win-executable.outputs.WIN_EXECUTABLE_ARTIFACT_ID }}
-    name: ${{ matrix.toolchain.target }}
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-          ref: ${{ github.ref }}
-          submodules: recursive
-      # https://github.com/actions/checkout/issues/1467
-      - name: git fetch tags
-        run: git fetch --tags
-      - name: remove bundled packages
-        run: sudo rm -rf /usr/local
-      - name: depends sources cache
-        uses: actions/cache/restore@v4
-        with:
-          path: contrib/depends/sources
-          key: sources-${{ hashFiles('contrib/depends/packages/*') }}
-      - name: install dependencies
-        run: sudo apt update; sudo apt -y install guix git ca-certificates apparmor-utils osslsigncode
-      - name: apparmor workaround
-        # https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115
-        run: |
-          sudo tee /etc/apparmor.d/guix << EOF
-          abi <abi/4.0>,
-          include <tunables/global>
-          profile guix /usr/bin/guix flags=(unconfined) {
-            userns,
-            include if exists <local/guix>
-          }
-          EOF
-          sudo /etc/init.d/apparmor reload
-          sudo aa-enforce guix || true
-          sudo apt -y purge apparmor
-      - name: build
-        run: ADDITIONAL_GUIX_TIMEMACHINE_FLAGS="--disable-authentication" SUBSTITUTE_URLS='http://bordeaux.guix.gnu.org' HOSTS="${{ matrix.toolchain.target }}" ./contrib/guix/guix-build
-      - name: virustotal scan
-        env:
-          VT_API_KEY: ${{ secrets.VT_API_KEY }}
-        if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32' && env.VT_API_KEY != '' }}
-        uses: crazy-max/ghaction-virustotal@v4
-        with:
-          vt_api_key: ${{ secrets.VT_API_KEY }}
-          files: |
-            guix/guix-build-*/build/distsrc-*/build/bin/feather.exe
-      - uses: actions/upload-artifact@v4
-        id: upload-artifact
-        with:
-          name: ${{ matrix.toolchain.target }}
-          path: |
-            guix/guix-build-*/output/${{ matrix.toolchain.target }}/*
-            guix/guix-build-*/logs/${{ matrix.toolchain.target }}/*
-      - if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32.installer' }}
-        id: win-installer
-        run: echo "WIN_INSTALLER_ARTIFACT_ID=${{ steps.upload-artifact.outputs.artifact-id }}" >> "$GITHUB_OUTPUT"
-      - if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32' }}
-        id: win-executable
-        run: echo "WIN_EXECUTABLE_ARTIFACT_ID=${{ steps.upload-artifact.outputs.artifact-id }}" >> "$GITHUB_OUTPUT"
-
-  bundle-logs:
-    runs-on: ubuntu-24.04
-    needs: [build-guix]
-    steps:
-      - uses: actions/download-artifact@v4
-        with:
-          merge-multiple: true
-      - name: print hashes
-        run: |
-          echo '```' >> $GITHUB_STEP_SUMMARY
-          uname --machine && find **/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum >> $GITHUB_STEP_SUMMARY
-          echo '```' >> $GITHUB_STEP_SUMMARY
-      - uses: actions/upload-artifact@v4
-        with:
-          name: "logs"
-          path: "**/logs/**"
-
-  codesigning:
-    runs-on: ubuntu-24.04
-    needs: [build-guix, bundle-logs]
-    if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-rc')
-    strategy:
-      fail-fast: false
-      matrix:
-        toolchain:
-          - target: "x86_64-w64-mingw32"
-          - target: "x86_64-w64-mingw32.installer"
-    steps:
-      - name: install dependencies
-        run: sudo apt update; sudo apt -y install osslsigncode
-      - name: "set artifact id"
-        run: |
-          if [ "${{ matrix.toolchain.target }}" == "x86_64-w64-mingw32" ]; then
-            echo "ARTIFACT_ID=${{ needs.build-guix.outputs.WIN_EXECUTABLE_ARTIFACT_ID }}" >> $GITHUB_ENV
-            echo "ARTIFACT_SLUG=executable" >> $GITHUB_ENV
-          elif [ "${{ matrix.toolchain.target }}" == "x86_64-w64-mingw32.installer" ]; then
-            echo "ARTIFACT_ID=${{ needs.build-guix.outputs.WIN_INSTALLER_ARTIFACT_ID }}" >> $GITHUB_ENV
-            echo "ARTIFACT_SLUG=installer" >> $GITHUB_ENV
-          fi
-      - uses: signpath/github-action-submit-signing-request@v1
-        name: "request signature"
-        with:
-          api-token: "${{ secrets.SIGNPATH_API_KEY }}"
-          organization-id: "d3e94749-9c69-44e9-82de-c65cb3832869"
-          project-slug: "feather"
-          signing-policy-slug: "release-signing"
-          artifact-configuration-slug: ${{ env.ARTIFACT_SLUG }}
-          github-artifact-id: ${{ env.ARTIFACT_ID }}
-          wait-for-completion: true
-          output-artifact-directory: codesigning/
-      - name: "extract signature"
-        run: osslsigncode extract-signature -in codesigning/guix-build-*/output/${{ matrix.toolchain.target }}/*.exe -out codesigning/${{ matrix.toolchain.target }}.pem
-      - uses: actions/upload-artifact@v4
-        name: "upload signature"
-        with:
-          name: ${{ matrix.toolchain.target }}.pem
-          path: |
-            codesigning/${{ matrix.toolchain.target }}.pem
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
deleted file mode 100644 (file)
index 7fbddf4..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-name: Linux CI
-
-on:
-  push:
-    tags:
-      - "linux-2.8.1-*"
-      - "ubuntu-2.8.1-*"
-
-jobs:
-  build:
-    name: ${{ matrix.distro }}
-    runs-on: ${{ matrix.runs_on }}
-    container: ${{ matrix.container }}
-    strategy:
-      fail-fast: false
-      matrix:
-        include:
-          - distro: ubuntu-24.04
-            runs_on: ubuntu-24.04
-            container:
-            install_cmd: |
-              export DEBIAN_FRONTEND=noninteractive
-              sudo apt update
-              sudo apt -y install git cmake build-essential ccache ninja-build libssl-dev libunbound-dev libboost-all-dev \
-                             libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \
-                             qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \
-                             protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev \
-                             libusb-1.0-0-dev pkg-config
-          - distro: ubuntu-22.04
-            runs_on: ubuntu-22.04
-            container:
-            install_cmd: |
-              export DEBIAN_FRONTEND=noninteractive
-              sudo apt update
-              sudo apt -y install git cmake build-essential ccache ninja-build libssl-dev libunbound-dev libboost-all-dev \
-                             libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \
-                             qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \
-                             protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev \
-                             libusb-1.0-0-dev pkg-config
-          - distro: ubuntu-20.04
-            runs_on: ubuntu-22.04 # 20.04 runner deprecated/slow, run in container on 22.04
-            container: ubuntu:20.04
-            install_cmd: |
-              export DEBIAN_FRONTEND=noninteractive
-              apt update
-              apt -y install software-properties-common
-              add-apt-repository -y ppa:okirby/qt6-backports
-              apt update
-              apt -y install git cmake build-essential ccache ninja-build libssl-dev libunbound-dev libboost-all-dev \
-                             libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \
-                             qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \
-                             protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev \
-                             libusb-1.0-0-dev pkg-config
-          - distro: fedora-latest
-            runs_on: ubuntu-latest
-            container: fedora:latest
-            install_cmd: |
-              dnf -y update
-              dnf -y install git cmake make gcc-c++ ccache ninja-build openssl-devel libunbound-devel boost-devel \
-                             qrencode-devel qt6-qtbase-devel qt6-qtsvg-devel qt6-qtwebsockets-devel \
-                             qt6-qtmultimedia-devel qt6-qtwayland-devel libzip-devel libsodium-devel \
-                             libgcrypt-devel libxcb-devel protobuf-compiler protobuf-devel hidapi-devel \
-                             zxing-cpp-devel libusb1-devel systemd-devel
-          - distro: archlinux-latest
-            runs_on: ubuntu-latest
-            container: archlinux:latest
-            install_cmd: |
-              pacman -Syu --noconfirm
-              pacman -S --noconfirm git cmake base-devel ccache ninja openssl libunbound boost qrencode \
-                                    qt6-base qt6-svg qt6-websockets qt6-multimedia qt6-wayland \
-                                    libzip libsodium libgcrypt libxcb protobuf hidapi zxing-cpp libusb
-
-    env:
-      CCACHE_DIR: /github/home/.ccache
-
-    steps:
-      - name: Install dependencies
-        run: ${{ matrix.install_cmd }}
-
-      - name: Checkout repository
-        uses: actions/checkout@v4
-        with:
-          submodules: recursive
-
-      - name: Setup ccache
-        uses: actions/cache@v4
-        with:
-          path: ${{ env.CCACHE_DIR }}
-          key: ${{ matrix.distro }}-ccache-${{ github.sha }}
-          restore-keys: |
-            ${{ matrix.distro }}-ccache-
-
-      - name: Configure CMake
-        run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-
-      - name: Build
-        run: cmake --build build
-
-      - name: Validate Version
-        run: ./build/bin/feather --version | grep "Feather Wallet"
diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml
deleted file mode 100644 (file)
index ad90ce6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-name: macOS CI
-
-on:
-  push:
-    tags:
-      - "macos-2.8.1-*"
-
-jobs:
-  build:
-    name: macOS (brew)
-    runs-on: macos-latest
-    env:
-      CCACHE_DIR: /Users/runner/Library/Caches/ccache
-      HOMEBREW_NO_AUTO_UPDATE: 1
-
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@v4
-        with:
-          submodules: recursive
-
-      - name: Install dependencies
-        run: |
-          brew install --quiet qt libsodium libzip qrencode unbound cmake boost hidapi openssl expat protobuf pkg-config ccache ninja
-
-      - name: Setup ccache
-        uses: actions/cache@v4
-        with:
-          path: ${{ env.CCACHE_DIR }}
-          key: macos-ccache-${{ github.sha }}
-          restore-keys: |
-            macos-ccache-
-
-      - name: Configure CMake
-        run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_SCANNER=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-
-      - name: Build
-        run: cmake --build build
-
-      - name: Validate Version
-        run: ./build/bin/feather.app/Contents/MacOS/feather --version
index ae9a91912efef81c0753408f0749cbf8e234a6c9..f83793be32985197b83530f4c4628c9cbfe0bc59 100644 (file)
@@ -1,3 +1,4 @@
+---
 name: Windows CI
 
 on: