c0dd43993c
Adds riscv64 to build pipelines so CodeWhale ships prebuilt binaries and npm wrappers for 64-bit RISC-V Linux (glibc) systems. Changes: **CI / build** - release.yml: +2 build matrix entries (codewhale + codewhale-tui for riscv64gc-unknown-linux-gnu), cross-compilation toolchain step using a dedicated DEB822-format apt source for ports.ubuntu.com, bundle step, and release-notes table row. - nightly.yml: +2 matrix entries, matching cross-compilation setup. - resolve job: handle workflow_dispatch when the target tag does not yet exist (fall back to HEAD SHA). **Packaging** - npm/codewhale/scripts/artifacts.js: add riscv64 to ASSET_MATRIX under linux so npm install -g codewhale resolves on RISC-V. **Docs** - docs/INSTALL.md: add riscv64 row to supported platforms table; replace with clearer 'other architectures' wording. Build strategy: cross-compile from ubuntu-latest (x86_64) using gcc-riscv64-linux-gnu. The dbus runtime dependency (from the keyring crate's secret-service backend) is satisfied via ports.ubuntu.com. PKG_CONFIG_ALLOW_CROSS and a cross-target libdir are set so the keyring crate finds dbus-1 during cross-compilation. Docker support for linux/riscv64 is intentionally not added here: GitHub Actions does not yet provide the infrastructure to build or emulate riscv64 containers. The Dockerfile changes will follow when the hosted CI surface supports it.
149 lines
5.2 KiB
YAML
149 lines
5.2 KiB
YAML
name: Nightly
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: nightly-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
RUSTFLAGS: -Dwarnings
|
|
DEEPSEEK_BUILD_SHA: ${{ github.sha }}
|
|
|
|
jobs:
|
|
build:
|
|
name: Build ${{ matrix.artifact_name }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# --- codewhale (cli dispatcher, canonical) ---
|
|
- os: ubuntu-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
binary: codewhale
|
|
artifact_name: codewhale-linux-x64
|
|
- os: ubuntu-24.04-arm
|
|
target: aarch64-unknown-linux-gnu
|
|
binary: codewhale
|
|
artifact_name: codewhale-linux-arm64
|
|
- os: ubuntu-latest
|
|
target: riscv64gc-unknown-linux-gnu
|
|
binary: codewhale
|
|
artifact_name: codewhale-linux-riscv64
|
|
- os: macos-latest
|
|
target: x86_64-apple-darwin
|
|
binary: codewhale
|
|
artifact_name: codewhale-macos-x64
|
|
- os: macos-latest
|
|
target: aarch64-apple-darwin
|
|
binary: codewhale
|
|
artifact_name: codewhale-macos-arm64
|
|
- os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
binary: codewhale.exe
|
|
artifact_name: codewhale-windows-x64.exe
|
|
# --- codewhale-tui (TUI runtime, canonical) ---
|
|
- os: ubuntu-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
binary: codewhale-tui
|
|
artifact_name: codewhale-tui-linux-x64
|
|
- os: ubuntu-24.04-arm
|
|
target: aarch64-unknown-linux-gnu
|
|
binary: codewhale-tui
|
|
artifact_name: codewhale-tui-linux-arm64
|
|
- os: ubuntu-latest
|
|
target: riscv64gc-unknown-linux-gnu
|
|
binary: codewhale-tui
|
|
artifact_name: codewhale-tui-linux-riscv64
|
|
- os: macos-latest
|
|
target: x86_64-apple-darwin
|
|
binary: codewhale-tui
|
|
artifact_name: codewhale-tui-macos-x64
|
|
- os: macos-latest
|
|
target: aarch64-apple-darwin
|
|
binary: codewhale-tui
|
|
artifact_name: codewhale-tui-macos-arm64
|
|
- os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
binary: codewhale-tui.exe
|
|
artifact_name: codewhale-tui-windows-x64.exe
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: ${{ matrix.target }}
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-bin: false
|
|
- name: Install Linux system dependencies
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
for i in 1 2 3 4 5; do
|
|
sudo apt-get update && break
|
|
echo "apt-get update failed (attempt $i); retrying in 15s"
|
|
sleep 15
|
|
done
|
|
sudo apt-get install -y libdbus-1-dev pkg-config
|
|
- name: Install RISC-V cross-compilation toolchain
|
|
if: matrix.target == 'riscv64gc-unknown-linux-gnu'
|
|
run: |
|
|
# Install cross-compiler (available in standard repos)
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-riscv64-linux-gnu libc6-dev-riscv64-cross
|
|
|
|
# Add Ubuntu ports for riscv64 packages
|
|
. /etc/os-release
|
|
sudo tee /etc/apt/sources.list.d/riscv64.sources <<SRC
|
|
Types: deb
|
|
URIs: http://ports.ubuntu.com/
|
|
Suites: ${UBUNTU_CODENAME} ${UBUNTU_CODENAME}-updates
|
|
Components: main universe
|
|
Architectures: riscv64
|
|
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
|
|
SRC
|
|
sudo dpkg --add-architecture riscv64
|
|
sudo apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/riscv64.sources -o Dir::Etc::sourceparts=- -o APT::Get::List-Cleanup=0
|
|
sudo apt-get install -y libdbus-1-dev:riscv64
|
|
- name: Build
|
|
shell: bash
|
|
env:
|
|
CC_riscv64gc_unknown_linux_gnu: riscv64-linux-gnu-gcc
|
|
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER: riscv64-linux-gnu-gcc
|
|
PKG_CONFIG_ALLOW_CROSS: 1
|
|
PKG_CONFIG_LIBDIR_riscv64gc_unknown_linux_gnu: /usr/lib/riscv64-linux-gnu/pkgconfig
|
|
run: cargo build --release --locked --target ${{ matrix.target }}
|
|
- name: Stage artifact
|
|
id: stage
|
|
shell: bash
|
|
run: |
|
|
short_sha="${GITHUB_SHA::12}"
|
|
bin_path="target/${{ matrix.target }}/release/${{ matrix.binary }}"
|
|
if [ ! -f "${bin_path}" ]; then
|
|
echo "Binary not at ${bin_path}; searching target/ for ${{ matrix.binary }}:"
|
|
find target -name "${{ matrix.binary }}" -type f
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p nightly
|
|
cp "${bin_path}" "nightly/${{ matrix.artifact_name }}"
|
|
cat > nightly/nightly-build-info.txt <<INFO
|
|
repository=${GITHUB_REPOSITORY}
|
|
ref=${GITHUB_REF_NAME}
|
|
commit=${GITHUB_SHA}
|
|
artifact=${{ matrix.artifact_name }}
|
|
INFO
|
|
echo "name=${{ matrix.artifact_name }}-${short_sha}" >> "${GITHUB_OUTPUT}"
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ steps.stage.outputs.name }}
|
|
path: nightly/*
|
|
retention-days: 14
|