diff --git a/.gitea/actions/prepare-ram-ci/action.yml b/.gitea/actions/prepare-ram-ci/action.yml index d6a01b1..7975029 100644 --- a/.gitea/actions/prepare-ram-ci/action.yml +++ b/.gitea/actions/prepare-ram-ci/action.yml @@ -56,6 +56,13 @@ runs: NEXUS_NPM_URL="${NEXUS_NPM_URL%/}/" NEXUS_NODEJS_URL="${NEXUS_NODEJS_URL%/}/" + # Resolve the image's stable toolchain before HOME/CARGO_HOME move to RAM. + # Keep toolchains in the image; only registry data and build output are ephemeral. + RUSTUP_HOME="${RUSTUP_HOME:-$HOME/.rustup}" + export RUSTUP_HOME + RUST_BIN="$(dirname "$(rustup which --toolchain stable rustc)")" + test -x "$RUST_BIN/cargo" + CI_ROOT="$GITHUB_WORKSPACE/.ci" CI_HOME="$CI_ROOT/home" @@ -72,7 +79,6 @@ runs: CARGO_HOME="$CI_ROOT/cargo" CARGO_TARGET_DIR="$CI_ROOT/cargo-target" - RUSTUP_HOME="$CI_ROOT/rustup" XDG_CACHE_HOME="$CI_ROOT/xdg-cache" XDG_CONFIG_HOME="$CI_ROOT/xdg-config" @@ -88,7 +94,6 @@ runs: "$GRADLE_USER_HOME/init.d" \ "$CARGO_HOME" \ "$CARGO_TARGET_DIR" \ - "$RUSTUP_HOME" \ "$XDG_CACHE_HOME" \ "$XDG_CONFIG_HOME" \ "$XDG_DATA_HOME" @@ -96,8 +101,7 @@ runs: chmod 700 \ "$CI_HOME" \ "$GRADLE_USER_HOME" \ - "$CARGO_HOME" \ - "$RUSTUP_HOME" + "$CARGO_HOME" cat > "$NPM_CONFIG_USERCONFIG" <> "$GITHUB_ENV" { + echo "$RUST_BIN" echo "$CI_BIN" echo "$PNPM_HOME" } >> "$GITHUB_PATH" diff --git a/.gitea/workflows/desktop.yml b/.gitea/workflows/desktop.yml index 9b59bea..42d696e 100644 --- a/.gitea/workflows/desktop.yml +++ b/.gitea/workflows/desktop.yml @@ -2,9 +2,6 @@ name: Build Fluxer Desktop on: workflow_dispatch: - push: - branches: - - main env: NODE_VERSION: "24" @@ -386,7 +383,7 @@ jobs: linux-x64: name: Linux x64 - runs-on: ubuntu-22.04 + runs-on: ci-linux-builder env: NEXUS_CARGO_URL: ${{ secrets.NEXUS_CARGO_URL }} @@ -424,219 +421,27 @@ jobs: ls -la fluxer-src/fluxer_desktop - - name: Install Linux build dependencies + - name: Verify builder image shell: bash + env: + PKG_CONFIG_PATH: /usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig run: | - set -euxo pipefail + set -euo pipefail - apt-get update - - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - build-essential \ - ca-certificates \ - clang \ - cmake \ - curl \ - desktop-file-utils \ - dpkg-dev \ - fakeroot \ - ffmpeg \ - git \ - libasound2 \ - libaom-dev \ - libavcodec-dev \ - libavfilter-dev \ - libavformat-dev \ - libavutil-dev \ - libcbor-dev \ - libdbus-1-dev \ - libdav1d-dev \ - libde265-dev \ - libfido2-dev \ - libgbm1 \ - libgtk-3-0 \ - liblcms2-dev \ - libnotify4 \ - libnss3 \ - libpipewire-0.3-dev \ - libpulse-dev \ - libsecret-1-0 \ - libssl-dev \ - libswresample-dev \ - libswscale-dev \ - libudev-dev \ - libvips-dev \ - libwayland-dev \ - libwebp-dev \ - libx11-xcb1 \ - libxcb-dri3-0 \ - libxcomposite1 \ - libxdamage1 \ - libxkbcommon-dev \ - libxkbcommon0 \ - libxrandr2 \ - libxshmfence1 \ - libxss1 \ - libxtst6 \ - llvm \ - meson \ - nasm \ - ninja-build \ - pkg-config \ - python3 \ - python3-pip \ - rpm \ - unzip \ - xdg-utils \ - xz-utils \ - yasm \ - zlib1g-dev \ - zstd - - - name: Install modern libfido2 - shell: bash - run: | - set -euxo pipefail - - rm -rf /tmp/libfido2 - - git clone \ - --depth 1 \ - --branch 1.17.0 \ - https://github.com/Yubico/libfido2.git \ - /tmp/libfido2 - - cmake \ - -S /tmp/libfido2 \ - -B /tmp/libfido2/build \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr/local \ - -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ - -DBUILD_EXAMPLES=OFF \ - -DBUILD_MANPAGES=OFF \ - -DBUILD_TOOLS=OFF - - cmake \ - --build /tmp/libfido2/build \ - --parallel "$(nproc)" - - cmake \ - --install /tmp/libfido2/build - - ldconfig - - echo "=== libfido2 ===" - - PKG_CONFIG_PATH="/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig" \ - pkg-config --modversion libfido2 + node --version + npm --version + corepack --version + rustc --version + cargo --version + cmake --version + meson --version + ninja --version + pkg-config --atleast-version=1.17.0 libfido2 + pkg-config --atleast-version=1.0.5 libpipewire-0.3 + pkg-config --modversion libfido2 libpipewire-0.3 libspa-0.2 test -f /usr/local/include/fido/es384.h - ls -la /usr/local/include/fido/ - - echo "=== libraries ===" - - find /usr/local/lib \ - -name 'libfido2*' \ - -print - - - name: Install modern PipeWire - shell: bash - run: | - set -euxo pipefail - - PIPEWIRE_VERSION="1.0.5" - - rm -rf /tmp/pipewire - - git clone \ - --depth 1 \ - --branch "${PIPEWIRE_VERSION}" \ - https://github.com/PipeWire/pipewire.git \ - /tmp/pipewire - - meson setup \ - /tmp/pipewire/build \ - /tmp/pipewire \ - --prefix=/usr/local \ - --libdir=lib/x86_64-linux-gnu \ - --buildtype=release \ - -Ddocs=disabled \ - -Dman=disabled \ - -Dexamples=disabled \ - -Dtests=disabled \ - -Dinstalled_tests=disabled \ - -Dsession-managers=[] \ - -Dgstreamer=disabled \ - -Dsystemd=disabled \ - -Dselinux=disabled \ - -Dpipewire-jack=disabled \ - -Dpipewire-v4l2=disabled \ - -Dbluez5=disabled \ - -Djack=disabled \ - -Dv4l2=disabled \ - -Dlibcamera=disabled \ - -Dvulkan=disabled \ - -Dsdl2=disabled \ - -Dlibmysofa=disabled \ - -Droc=disabled \ - -Davahi=disabled \ - -Decho-cancel-webrtc=disabled \ - -Dlibusb=disabled \ - -Draop=disabled \ - -Dlv2=disabled \ - -Dlibcanberra=disabled \ - -Dlibffado=disabled - - meson compile \ - -C /tmp/pipewire/build \ - -j "$(nproc)" - - meson install \ - -C /tmp/pipewire/build - - ldconfig - - export PKG_CONFIG_PATH="/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig" - - echo "=== PipeWire ===" - - pkg-config \ - --modversion \ - libpipewire-0.3 - - pkg-config \ - --modversion \ - libspa-0.2 - - echo "=== PipeWire CFLAGS ===" - - pkg-config \ - --cflags \ - libpipewire-0.3 - - pkg-config \ - --cflags \ - libspa-0.2 - - echo "=== Checking headers ===" - - grep -R \ - "spa_meta_region_is_valid" \ - /usr/local/include/spa-0.2/spa \ - | head - - echo "=== PipeWire libraries ===" - - find /usr/local/lib \ - \( -name 'libpipewire-0.3.so*' -o -name 'libspa*.so*' \) \ - -print - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: "24" - - name: Setup pnpm shell: bash @@ -647,7 +452,7 @@ jobs: --install-directory "$CI_BIN" corepack prepare \ - pnpm@10.29.3 \ + "pnpm@$PNPM_VERSION" \ --activate node --version @@ -655,27 +460,6 @@ jobs: pnpm store path - - name: Setup Rust - shell: bash - run: | - set -euxo pipefail - - curl \ - --proto '=https' \ - --tlsv1.2 \ - -sSf \ - https://sh.rustup.rs | - sh -s -- -y --profile minimal - - echo "$CARGO_HOME/bin" >> "$GITHUB_PATH" - - "$CARGO_HOME/bin/rustup" update stable - "$CARGO_HOME/bin/rustup" default stable - - "$CARGO_HOME/bin/rustc" --version - "$CARGO_HOME/bin/cargo" --version - - - name: Configure self-hosted server shell: bash run: |