Skip to content

Fix/concurrent env setup #615

Fix/concurrent env setup

Fix/concurrent env setup #615

Workflow file for this run

on:
push:
branches: [ "main" ]
pull_request:
name: Rust
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_LOG: info
RUST_BACKTRACE: 1
RUSTFLAGS: "-D warnings"
CARGO_TERM_COLOR: always
jobs:
check-rustdoc-links:
name: Check intra-doc links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: |
cargo rustdoc -p rattler_installs_packages --all-features -- -D warnings -W unreachable-pub
cargo rustdoc -p rip_bin --bin rip --all-features -- -D warnings -W unreachable-pub
cargo rustdoc -p rip_bin --lib --all-features -- -D warnings -W unreachable-pub
format_and_lint:
name: Format and Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy, rustfmt
- name: Run rustfmt
uses: actions-rust-lang/rustfmt@v1
- name: Run clippy
run: cargo clippy
build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
needs: [ format_and_lint ]
strategy:
fail-fast: false
matrix:
include:
- { name: "Linux-x86_64", target: x86_64-unknown-linux-musl, os: ubuntu-latest }
# - { name: "Linux-aarch64", target: aarch64-unknown-linux-musl, os: ubuntu-latest, skip-tests: true }
# - { name: "Linux-arm", target: arm-unknown-linux-musleabi, os: ubuntu-latest, use-cross: true }
# - { name: "Linux-mips", target: mips-unknown-linux-musl, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-mipsel", target: mipsel-unknown-linux-musl, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-mips64", target: mips64-unknown-linux-muslabi64, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-mips64el", target: mips64el-unknown-linux-muslabi64, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-powerpc", target: powerpc-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-powerpc64", target: powerpc64-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-powerpc64le", target: powerpc-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-s390x", target: s390x-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }
- { name: "macOS-x86_64", target: x86_64-apple-darwin, os: macOS-latest }
# - { name: "macOS-aarch64", target: aarch64-apple-darwin, os: macOS-latest, skip-tests: true }
- { name: "Windows-x86_64", target: x86_64-pc-windows-msvc, os: windows-latest }
# - { name: "Windows-aarch64", target: aarch64-pc-windows-msvc, os: windows-latest, skip-tests: true }
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
submodules: ${{ contains(matrix.name, 'Linux' ) }}
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: ${{ matrix.target }}
components: rustfmt
cache: false
- uses: taiki-e/setup-cross-toolchain-action@v1
with:
target: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
- name: Show version information (Rust, cargo, GCC)
shell: bash
run: |
gcc --version || true
rustup -V
rustup toolchain list
cargo -V
rustc -V
- name: Use rustls on musl targets.
id: build-options
if: contains(matrix.target, '-musl')
run: |
echo "CARGO_BUILD_OPTIONS=${CARGO_BUILD_OPTIONS} --no-default-features --features rustls-tls" >> $GITHUB_OUTPUT
- name: Build
run: >
cargo build
--all-targets
${{ steps.build-options.outputs.CARGO_BUILD_OPTIONS}}
- name: Disable testing the tools crate if cross compiling
id: test-options
if: ${{ !matrix.skip-tests }}
run: |
echo "CARGO_TEST_OPTIONS=${CARGO_TEST_OPTIONS} --exclude tools" >> $GITHUB_OUTPUT
- name: Run tests
if: ${{ !matrix.skip-tests }}
run: >
cargo test
--workspace
${{ steps.build-options.outputs.CARGO_BUILD_OPTIONS}}
${{ steps.test-options.outputs.CARGO_TEST_OPTIONS}}
--
--nocapture
# test if venv works properly on windows
# using old and newest python version
# our implementation will fail on 3.7.4
# and we emit warning
- name: Install pixi
uses: prefix-dev/setup-pixi@v0.5.1
with:
run-install: ${{ contains(matrix.name, 'Linux') }}
- name: Run end-to-end tests
if: contains(matrix.name, 'Linux')
shell: bash
run: |
pixi run install_packse
pixi run end_to_end_tests -v -s
- name: Run pixi python==3.7.5 test
if: contains(matrix.name, 'Windows')
shell: bash
run: |
mkdir pixi_old
cd pixi_old
pixi init
pixi add "python==3.7.5"
cd ../
cargo run -- resolve boltons --only-sdists -p /d/a/rip/rip/pixi_old/.pixi/env/python.exe
- name: Run pixi latest python test
if: contains(matrix.name, 'Windows')
shell: bash
run: |
mkdir pixi_new
cd pixi_new
pixi init
pixi add python
cd ../
cargo run -- resolve boltons --only-sdists -p /d/a/rip/rip/pixi_new/.pixi/env/python.exe