From ca5b7cf1b0ae24271cc2b41ccc00d6eacec74f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E7=A2=A7?= <58581151+xuebiya@users.noreply.github.com> Date: Mon, 2 Mar 2026 14:06:42 +0800 Subject: [PATCH 1/2] Delete .github/workflows/rust.yml --- .github/workflows/rust.yml | 282 ------------------------------------- 1 file changed, 282 deletions(-) delete mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index 51c3a56b..00000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,282 +0,0 @@ -name: Rust - -on: - push: - tags: - - '*' - -env: - CARGO_TERM_COLOR: always - -defaults: - run: - # necessary for windows - shell: bash -permissions: - contents: write - packages: write - -jobs: - build: - name: Build ${{ matrix.TARGET }} - strategy: - fail-fast: false - matrix: - include: - - TARGET: x86_64-unknown-linux-musl - OS: ubuntu-latest - - TARGET: aarch64-unknown-linux-musl - OS: ubuntu-latest - - TARGET: armv7-unknown-linux-musleabihf - OS: ubuntu-latest - - TARGET: armv7-unknown-linux-musleabi - OS: ubuntu-latest - - TARGET: arm-unknown-linux-musleabihf - OS: ubuntu-latest - - TARGET: arm-unknown-linux-musleabi - OS: ubuntu-latest - - TARGET: x86_64-apple-darwin - OS: macos-latest - - TARGET: aarch64-apple-darwin - OS: macos-latest - - TARGET: i686-pc-windows-msvc - OS: windows-latest - - TARGET: x86_64-pc-windows-msvc - OS: windows-latest - - TARGET: aarch64-pc-windows-msvc - OS: windows-latest - - TARGET: mipsel-unknown-linux-musl - OS: ubuntu-latest - - TARGET: mips-unknown-linux-musl - OS: ubuntu-latest - - TARGET: x86_64-unknown-freebsd - OS: ubuntu-latest - ARTIFACT_NAME: freebsd-13.2-x86_64 - BSD_VERSION: 13.2 - runs-on: ${{ matrix.OS }} - env: - NAME: Vnt - TARGET: ${{ matrix.TARGET }} - OS: ${{ matrix.OS }} - FEATURES: ${{ matrix.FEATURES }} - steps: - - uses: actions/checkout@v4 - - name: Init submodules - run: git submodule update --init --recursive --remote && git submodule status - - name: Cargo cache - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ./target - key: build-cargo-registry-${{matrix.TARGET}} - - name: Install Protobuf (MacOS) - if: runner.os == 'macOS' - run: brew install protobuf - - name: Install Protobuf (Windows) - if: runner.os == 'Windows' - run: choco install protoc - - name: Use strawberry perl - if: startsWith(matrix.os, 'windows') - run: echo OPENSSL_SRC_PERL=C:/Strawberry/perl/bin/perl >> $GITHUB_ENV - - name: List - run: find ./ - - name: Build Vnt X86_64-FreeBSD - uses: cross-platform-actions/action@v0.23.0 - if: ${{ endsWith(matrix.TARGET, 'freebsd') }} - env: - TARGET: ${{ matrix.TARGET }} - with: - operating_system: freebsd - environment_variables: TARGET - architecture: x86-64 - version: ${{ matrix.BSD_VERSION }} - shell: bash - memory: 5G - cpu_count: 4 - run: | - uname -a - echo $SHELL - pwd - ls -lah - whoami - env | sort - sudo pkg install -y git protobuf llvm15 - curl --proto 'https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - source $HOME/.cargo/env - export CC=clang - export CXX=clang++ - export CARGO_TERM_COLOR=always - cargo build --release --verbose --bin vnt2_web --features vnt-web --target $TARGET - cargo build --release --verbose --bin vnt2_cli --features vnt-ipc --target $TARGET - cargo build --release --verbose --bin vnt2_ctrl --features vnt-ipc --target $TARGET - - name: Install and configure dependencies - if: ${{ ! endsWith(matrix.TARGET, 'freebsd') }} - run: | - # dependencies are only needed on ubuntu as that's the only place where - # we make cross-compilation - - if [[ $OS =~ ^ubuntu.*$ ]]; then - sudo apt-get update && sudo apt-get install protobuf-compiler clang llvm libc6-dev-i386 crossbuild-essential-arm64 crossbuild-essential-armhf musl-tools libboost-all-dev libc6-dev -y - # curl -s musl.cc | grep mipsel - case $TARGET in - mipsel-unknown-linux-musl) - MUSL_URI=mipsel-linux-muslsf-cross - URL=mipsel-linux-muslsf - ;; - aarch64-unknown-linux-musl) - MUSL_URI=aarch64-linux-musl-cross - ;; - armv7-unknown-linux-musleabihf) - MUSL_URI=armv7l-linux-musleabihf-cross - ;; - armv7-unknown-linux-musleabi) - MUSL_URI=armv7m-linux-musleabi-cross - ;; - arm-unknown-linux-musleabihf) - MUSL_URI=arm-linux-musleabihf-cross - ;; - arm-unknown-linux-musleabi) - MUSL_URI=arm-linux-musleabi-cross - ;; - mips-unknown-linux-musl) - MUSL_URI=mips-linux-muslsf-cross - URL=mips-linux-muslsf - ;; - esac - - - if [ -n "$MUSL_URI" ]; then - mkdir -p ./musl_gcc - wget -c https://github.com/rustp2p/musl-cross/releases/download/0.0.1/$MUSL_URI.tgz -P /opt/musl_gcc/ - tar zxf /opt/musl_gcc/$MUSL_URI.tgz -C /opt/musl_gcc/ - sudo ln -s /opt/musl_gcc/$MUSL_URI/bin/*gcc /usr/bin/ - fi - fi - if [[ $TARGET =~ ^mips.*$ ]]; then - cd /opt/musl_gcc/${URL}-cross/lib/gcc/${URL}/11.2.1 - cp libgcc_eh.a libunwind.a - rustup toolchain install nightly-x86_64-unknown-linux-gnu - rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu - RUST_LIB_SRC=$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/ - if [[ -f $RUST_LIB_SRC/library/Cargo.lock && ! -f $RUST_LIB_SRC/Cargo.lock ]]; then - cp -f $RUST_LIB_SRC/library/Cargo.lock $RUST_LIB_SRC/Cargo.lock - fi - fi - rustup -V - - # some additional configuration for cross-compilation on linux - cat >>~/.cargo/config.toml < Date: Mon, 2 Mar 2026 14:07:08 +0800 Subject: [PATCH 2/2] Create rust.yml --- .github/workflows/rust.yml | 282 +++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 00000000..a6f23c76 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,282 @@ +name: Rust + +on: + push: + tags: + - '*' + +env: + CARGO_TERM_COLOR: always + +defaults: + run: + # necessary for windows + shell: bash +permissions: + contents: write + packages: write + +jobs: + build: + name: Build ${{ matrix.TARGET }} + strategy: + fail-fast: false + matrix: + include: + - TARGET: x86_64-unknown-linux-musl + OS: ubuntu-latest + - TARGET: aarch64-unknown-linux-musl + OS: ubuntu-latest + - TARGET: armv7-unknown-linux-musleabihf + OS: ubuntu-latest + - TARGET: armv7-unknown-linux-musleabi + OS: ubuntu-latest + - TARGET: arm-unknown-linux-musleabihf + OS: ubuntu-latest + - TARGET: arm-unknown-linux-musleabi + OS: ubuntu-latest + - TARGET: x86_64-apple-darwin + OS: macos-latest + - TARGET: aarch64-apple-darwin + OS: macos-latest + - TARGET: i686-pc-windows-msvc + OS: windows-latest + - TARGET: x86_64-pc-windows-msvc + OS: windows-latest + - TARGET: aarch64-pc-windows-msvc + OS: windows-latest + - TARGET: mipsel-unknown-linux-musl + OS: ubuntu-latest + - TARGET: mips-unknown-linux-musl + OS: ubuntu-latest + - TARGET: x86_64-unknown-freebsd + OS: ubuntu-latest + ARTIFACT_NAME: freebsd-13.2-x86_64 + BSD_VERSION: 13.2 + runs-on: ${{ matrix.OS }} + env: + NAME: Vnt + TARGET: ${{ matrix.TARGET }} + OS: ${{ matrix.OS }} + FEATURES: ${{ matrix.FEATURES }} + steps: + - uses: actions/checkout@v4 + - name: Init submodules + run: git submodule update --init --recursive --remote && git submodule status + - name: Cargo cache + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ./target + key: build-cargo-registry-${{matrix.TARGET}} + - name: Install Protobuf (MacOS) + if: runner.os == 'macOS' + run: brew install protobuf + - name: Install Protobuf (Windows) + if: runner.os == 'Windows' + run: choco install protoc + - name: Use strawberry perl + if: startsWith(matrix.os, 'windows') + run: echo OPENSSL_SRC_PERL=C:/Strawberry/perl/bin/perl >> $GITHUB_ENV + - name: List + run: find ./ + - name: Build Vnt X86_64-FreeBSD + uses: cross-platform-actions/action@v0.23.0 + if: ${{ endsWith(matrix.TARGET, 'freebsd') }} + env: + TARGET: ${{ matrix.TARGET }} + with: + operating_system: freebsd + environment_variables: TARGET + architecture: x86-64 + version: ${{ matrix.BSD_VERSION }} + shell: bash + memory: 5G + cpu_count: 4 + run: | + uname -a + echo $SHELL + pwd + ls -lah + whoami + env | sort + sudo pkg install -y git protobuf llvm15 + curl --proto 'https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source $HOME/.cargo/env + export CC=clang + export CXX=clang++ + export CARGO_TERM_COLOR=always + cargo build --release --verbose --bin vnt2_web --features vnt-web --target $TARGET + cargo build --release --verbose --bin vnt2_cli --features vnt-ipc --target $TARGET + cargo build --release --verbose --bin vnt2_ctrl --features vnt-ipc --target $TARGET + - name: Install and configure dependencies + if: ${{ ! endsWith(matrix.TARGET, 'freebsd') }} + run: | + # dependencies are only needed on ubuntu as that's the only place where + # we make cross-compilation + + if [[ $OS =~ ^ubuntu.*$ ]]; then + sudo apt-get update && sudo apt-get install protobuf-compiler clang llvm libc6-dev-i386 crossbuild-essential-arm64 crossbuild-essential-armhf musl-tools libboost-all-dev libc6-dev -y + # curl -s musl.cc | grep mipsel + case $TARGET in + mipsel-unknown-linux-musl) + MUSL_URI=mipsel-linux-muslsf-cross + URL=mipsel-linux-muslsf + ;; + aarch64-unknown-linux-musl) + MUSL_URI=aarch64-linux-musl-cross + ;; + armv7-unknown-linux-musleabihf) + MUSL_URI=armv7l-linux-musleabihf-cross + ;; + armv7-unknown-linux-musleabi) + MUSL_URI=armv7m-linux-musleabi-cross + ;; + arm-unknown-linux-musleabihf) + MUSL_URI=arm-linux-musleabihf-cross + ;; + arm-unknown-linux-musleabi) + MUSL_URI=arm-linux-musleabi-cross + ;; + mips-unknown-linux-musl) + MUSL_URI=mips-linux-muslsf-cross + URL=mips-linux-muslsf + ;; + esac + + + if [ -n "$MUSL_URI" ]; then + mkdir -p ./musl_gcc + wget -c https://github.com/rustp2p/musl-cross/releases/download/0.0.1/$MUSL_URI.tgz -P /opt/musl_gcc/ + tar zxf /opt/musl_gcc/$MUSL_URI.tgz -C /opt/musl_gcc/ + sudo ln -s /opt/musl_gcc/$MUSL_URI/bin/*gcc /usr/bin/ + fi + fi + if [[ $TARGET =~ ^mips.*$ ]]; then + cd /opt/musl_gcc/${URL}-cross/lib/gcc/${URL}/11.2.1 + cp libgcc_eh.a libunwind.a + rustup toolchain install nightly-x86_64-unknown-linux-gnu + rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + RUST_LIB_SRC=$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/ + if [[ -f $RUST_LIB_SRC/library/Cargo.lock && ! -f $RUST_LIB_SRC/Cargo.lock ]]; then + cp -f $RUST_LIB_SRC/library/Cargo.lock $RUST_LIB_SRC/Cargo.lock + fi + fi + rustup -V + + # some additional configuration for cross-compilation on linux + cat >>~/.cargo/config.toml <