Merge pull request #54 from dylanmtaylor/feat/riscv-build
ci: Add RISC-V Linux build
This commit is contained in:
3 files changed
+93
-3
No files matched your search
@@ -25,3 +25,36 @@ jobs:
|
|||||||
components: rustfmt, clippy
|
components: rustfmt, clippy
|
||||||
- uses: Swatinem/rust-cache@v2
|
- uses: Swatinem/rust-cache@v2
|
||||||
- run: cargo xtask ci
|
- run: cargo xtask ci
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
riscv64-gates:
|
||||||
|
name: gates (riscv64)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check out craft-fonts
|
||||||
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
||||||
|
with:
|
||||||
|
repository: storytold/craft-fonts
|
||||||
|
ref: ${{ env.CRAFT_FONTS_REF }}
|
||||||
|
path: craft-fonts
|
||||||
|
- uses: dtolnay/rust-toolchain@stable
|
||||||
|
with:
|
||||||
|
targets: riscv64gc-unknown-linux-gnu
|
||||||
|
- name: Install cross-compilation dependencies
|
||||||
|
run: |
|
||||||
|
sudo dpkg --add-architecture riscv64
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y gcc-riscv64-linux-gnu libasound2-dev:riscv64 libxkbcommon-dev:riscv64 \
|
||||||
|
libwayland-dev:riscv64 libx11-dev:riscv64 libxrandr-dev:riscv64 libxi-dev:riscv64 libgl1-mesa-dev:riscv64
|
||||||
|
- name: Cargo check on RISC-V
|
||||||
|
env:
|
||||||
|
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER: riscv64-linux-gnu-gcc
|
||||||
|
PKG_CONFIG_SYSROOT_DIR: /
|
||||||
|
PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfig
|
||||||
|
PKG_CONFIG_ALLOW_CROSS: 1
|
||||||
|
run: |
|
||||||
|
. "$HOME/.cargo/env"
|
||||||
|
export CRAFT_FONTS_DIR="$PWD/craft-fonts"
|
||||||
|
cargo check --all-targets --locked --target riscv64gc-unknown-linux-gnu
|
||||||
@@ -167,6 +167,51 @@ jobs:
|
|||||||
path: dist/release/*.flatpak
|
path: dist/release/*.flatpak
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
linux-riscv64:
|
||||||
|
name: Linux riscv64
|
||||||
|
needs: version
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
SOLVECRAFT_VERSION: ${{ needs.version.outputs.version }}
|
||||||
|
SOLVECRAFT_BUILD_DATE: ${{ needs.version.outputs.date }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check out craft-fonts
|
||||||
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
||||||
|
with:
|
||||||
|
repository: storytold/craft-fonts
|
||||||
|
ref: ${{ env.CRAFT_FONTS_REF }}
|
||||||
|
path: craft-fonts
|
||||||
|
- uses: dtolnay/rust-toolchain@stable
|
||||||
|
with:
|
||||||
|
targets: riscv64gc-unknown-linux-gnu
|
||||||
|
- name: Install cross-compilation dependencies
|
||||||
|
run: |
|
||||||
|
sudo dpkg --add-architecture riscv64
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y gcc-riscv64-linux-gnu libasound2-dev:riscv64 libxkbcommon-dev:riscv64 \
|
||||||
|
libwayland-dev:riscv64 libx11-dev:riscv64 libxrandr-dev:riscv64 libxi-dev:riscv64 libgl1-mesa-dev:riscv64
|
||||||
|
- name: Build and package
|
||||||
|
env:
|
||||||
|
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER: riscv64-linux-gnu-gcc
|
||||||
|
PKG_CONFIG_SYSROOT_DIR: /
|
||||||
|
PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfig
|
||||||
|
PKG_CONFIG_ALLOW_CROSS: 1
|
||||||
|
run: |
|
||||||
|
. "$HOME/.cargo/env"
|
||||||
|
export CRAFT_FONTS_DIR="$PWD/craft-fonts" CRAFT_FONTS_REQUIRED=1
|
||||||
|
export CROSS_ARCH=riscv64
|
||||||
|
export CROSS_TARGET=riscv64gc-unknown-linux-gnu
|
||||||
|
export DEB_ARCH=riscv64
|
||||||
|
# We skip nfpm (deb/rpm) and AppImage for now on riscv64
|
||||||
|
bash packaging/linux/package.sh --formats "tar"
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: release-linux-riscv64
|
||||||
|
path: dist/release/*.tar.gz
|
||||||
|
if-no-files-found: error
|
||||||
freebsd:
|
freebsd:
|
||||||
name: FreeBSD x86_64
|
name: FreeBSD x86_64
|
||||||
needs: version
|
needs: version
|
||||||
|
|||||||
@@ -30,8 +30,9 @@ while [ $# -gt 0 ]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
ARCH="$(uname -m)"
|
ARCH="${CROSS_ARCH:-$(uname -m)}"
|
||||||
case "$ARCH" in
|
case "$ARCH" in
|
||||||
|
riscv64) DEB_ARCH=riscv64 ;;
|
||||||
x86_64) DEB_ARCH=amd64 ;;
|
x86_64) DEB_ARCH=amd64 ;;
|
||||||
aarch64 | arm64) ARCH=aarch64; DEB_ARCH=arm64 ;;
|
aarch64 | arm64) ARCH=aarch64; DEB_ARCH=arm64 ;;
|
||||||
*) echo "unsupported architecture $ARCH" >&2; exit 2 ;;
|
*) echo "unsupported architecture $ARCH" >&2; exit 2 ;;
|
||||||
@@ -42,9 +43,20 @@ BASENAME="solvecraft-$VERSION-linux-$ARCH"
|
|||||||
echo "==> SolveCraft $VERSION for Linux $ARCH ($FORMATS)"
|
echo "==> SolveCraft $VERSION for Linux $ARCH ($FORMATS)"
|
||||||
|
|
||||||
if [ "$SKIP_BUILD" = 0 ]; then
|
if [ "$SKIP_BUILD" = 0 ]; then
|
||||||
(cd "$ROOT" && cargo build --release --locked -p solvecraft -p solvecraft-cli)
|
if [ -n "${CROSS_TARGET:-}" ]; then
|
||||||
|
(cd "$ROOT" && cargo build --release --locked -p solvecraft -p solvecraft-cli --target "$CROSS_TARGET")
|
||||||
|
BIN="$CARGO_TARGET_DIR/$CROSS_TARGET/release"
|
||||||
|
else
|
||||||
|
(cd "$ROOT" && cargo build --release --locked -p solvecraft -p solvecraft-cli)
|
||||||
|
BIN="$CARGO_TARGET_DIR/release"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -n "${CROSS_TARGET:-}" ]; then
|
||||||
|
BIN="$CARGO_TARGET_DIR/$CROSS_TARGET/release"
|
||||||
|
else
|
||||||
|
BIN="$CARGO_TARGET_DIR/release"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
BIN="$CARGO_TARGET_DIR/release"
|
|
||||||
WORK="$CARGO_TARGET_DIR/linux-package"
|
WORK="$CARGO_TARGET_DIR/linux-package"
|
||||||
STAGE="$WORK/root"
|
STAGE="$WORK/root"
|
||||||
rm -rf "$WORK"
|
rm -rf "$WORK"
|
||||||
|
|||||||
Reference in new issue
Block a user