From d581024ab01235304f47f46d7c358ce5a3eb405c Mon Sep 17 00:00:00 2001 From: Christopher Serr Date: Sun, 22 Oct 2023 21:21:35 +0200 Subject: [PATCH] WIP --- .github/workflows/before_deploy.sh | 33 +++++ .github/workflows/build.sh | 18 +++ .github/workflows/rust.yml | 191 +++++++++++++++++++++++++++++ 3 files changed, 242 insertions(+) create mode 100644 .github/workflows/before_deploy.sh create mode 100644 .github/workflows/build.sh create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/before_deploy.sh b/.github/workflows/before_deploy.sh new file mode 100644 index 0000000..e0dd35c --- /dev/null +++ b/.github/workflows/before_deploy.sh @@ -0,0 +1,33 @@ +set -ex + +main() { + local tag=$(git tag --points-at HEAD) + local src=$(pwd) \ + stage= + + if [ "$OS_NAME" = "macOS-latest" ]; then + stage=$(mktemp -d -t tmp) + else + stage=$(mktemp -d) + fi + + if [ "$OS_NAME" = "ubuntu-latest" ]; then + cp target/$TARGET/max-opt/asr-debugger $stage/. + elif [ "$OS_NAME" = "macOS-latest" ]; then + cp target/$TARGET/max-opt/asr-debugger $stage/. + elif [ "$OS_NAME" = "windows-latest" ]; then + cp target/$TARGET/max-opt/asr-debugger.exe $stage/. + fi + + cd $stage + if [ "$OS_NAME" = "windows-latest" ]; then + 7z a $src/asr-debugger-$tag-$TARGET.zip * + else + tar czf $src/asr-debugger-$tag-$TARGET.tar.gz * + fi + cd $src + + rm -rf $stage +} + +main diff --git a/.github/workflows/build.sh b/.github/workflows/build.sh new file mode 100644 index 0000000..e8f757b --- /dev/null +++ b/.github/workflows/build.sh @@ -0,0 +1,18 @@ +set -ex + +main() { + local cargo=cross + if [ "$SKIP_CROSS" = "skip" ]; then + cargo=cargo + fi + local release_flag="" + local target_folder="debug" + if [ "$IS_DEPLOY" = "true" ]; then + release_flag="--profile max-opt" + target_folder="max-opt" + fi + + $cargo build --target $TARGET $release_flag $FEATURES +} + +main diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..c4beb71 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,191 @@ +name: Rust + +on: + pull_request: + push: + branches: + - 'master' + tags: + - '*' + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + label: + # - Windows aarch64 + # - Windows i686 + - Windows x86_64 + # - Linux arm Hardware Float + # - Linux armv7 Hardware Float + # - Linux aarch64 + # - Linux i686 + - Linux x86_64 + # - macOS aarch64 + - macOS x86_64 + + include: + # - label: Windows aarch64 + # target: aarch64-pc-windows-msvc + # os: windows-latest + # cross: skip + # install_target: true + + # - label: Windows i686 + # target: i686-pc-windows-msvc + # os: windows-latest + # cross: skip + # install_target: true + # bits: 32bit + + - label: Windows x86_64 + target: x86_64-pc-windows-msvc + os: windows-latest + cross: skip + + # - label: Linux arm Hardware Float + # target: arm-unknown-linux-gnueabihf + # os: ubuntu-latest + # features: --no-default-features + # bits: 32bit + + # - label: Linux armv7 Hardware Float + # target: armv7-unknown-linux-gnueabihf + # os: ubuntu-latest + # features: --no-default-features + # bits: 32bit + + # - label: Linux aarch64 + # target: aarch64-unknown-linux-gnu + # os: ubuntu-latest + # features: --no-default-features + + # - label: Linux i686 + # target: i686-unknown-linux-gnu + # os: ubuntu-latest + # features: --no-default-features + # bits: 32bit + + - label: Linux x86_64 + target: x86_64-unknown-linux-gnu + os: ubuntu-latest + cross: skip + + # - label: macOS aarch64 + # target: aarch64-apple-darwin + # os: macOS-latest + # cross: skip + # install_target: true + + - label: macOS x86_64 + target: x86_64-apple-darwin + os: macOS-latest + cross: skip + + steps: + - name: Checkout Commit + uses: actions/checkout@v2 + + - name: Install Rust + uses: hecrj/setup-rust-action@v1 + with: + rust-version: ${{ matrix.toolchain || 'stable' }} + + - name: Install Target + if: matrix.install_target != '' + run: rustup target add ${{ matrix.target }} + + - name: Install cross + if: matrix.cross == '' + run: sh .github/workflows/install.sh + env: + OS_NAME: ${{ matrix.os }} + TARGET: ${{ matrix.target }} + + - name: Download cross + if: matrix.cross == '' && matrix.no_std == '' + uses: robinraju/release-downloader@v1.7 + with: + repository: "cross-rs/cross" + latest: true + fileName: "cross-x86_64-unknown-linux-gnu.tar.gz" + out-file-path: "/home/runner/.cargo/bin" + + - name: Install cross + if: matrix.cross == '' && matrix.no_std == '' + run: | + cd ~/.cargo/bin + tar -xzf cross-x86_64-unknown-linux-gnu.tar.gz + + # - name: Install Dependencies + # if: matrix.os == 'ubuntu-latest' + # run: | + # sudo apt-get install libxkbcommon-dev libwayland-cursor0 libwayland-dev + + - name: Build + run: sh .github/workflows/build.sh + env: + TARGET: ${{ matrix.target }} + SKIP_CROSS: ${{ matrix.cross }} + IS_DEPLOY: ${{ startsWith(github.ref, 'refs/tags/') && (matrix.release_anyway != '' || !(startsWith(matrix.toolchain, 'nightly') || startsWith(matrix.toolchain, 'beta'))) }} + FEATURES: ${{ matrix.features }} + OS_NAME: ${{ matrix.os }} + + - name: Prepare Release + if: startsWith(github.ref, 'refs/tags/') && matrix.release == '' + shell: bash + run: .github/workflows/before_deploy.sh + env: + OS_NAME: ${{ matrix.os }} + TARGET: ${{ matrix.target }} + PLUGIN_BITS: ${{ matrix.bits || '64bit' }} + + - name: Release + if: startsWith(github.ref, 'refs/tags/') && matrix.release == '' + uses: softprops/action-gh-release@v1 + with: + files: asr-debugger-*.* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + clippy: + runs-on: ubuntu-latest + steps: + - name: Checkout Commit + uses: actions/checkout@v2 + + - name: Install Rust + uses: hecrj/setup-rust-action@v1 + with: + components: clippy + + - name: Cache + uses: Swatinem/rust-cache@ce325b60658c1b38465c06cc965b79baf32c1e72 + with: + key: ${{ matrix.target }} + + # - name: Install Dependencies + # run: | + # sudo apt-get install libxkbcommon-dev libwayland-cursor0 libwayland-dev + + - name: Run Clippy + run: cargo clippy --all-features + + format: + runs-on: ubuntu-latest + steps: + - name: Checkout Commit + uses: actions/checkout@v2 + + - name: Install Rust + uses: hecrj/setup-rust-action@v1 + with: + components: rustfmt + + - name: Run cargo fmt + run: cargo fmt -- --check || true