diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000000..e8514b48ef --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,65 @@ +# https://github.com/actions-rs/meta/blob/master/recipes/quickstart.md + +on: [pull_request, push] + +name: debug build + test + +jobs: + check: + name: c2rust + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v2 + + # https://github.com/marketplace/actions/rust-toolchain + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly-2019-12-05 # rust-toolchain + default: true # set as default toolchain + override: true # set toolchain for workdir + profile: minimal # TODO? rustup set profile {value} + #components: rustfmt, clippy + components: rustfmt-preview, rustc-dev # scripts/provision_rust.sh + + # https://github.com/marketplace/actions/rust-cache + - name: Enable Rust cache + uses: Swatinem/rust-cache@v1 + with: + cache-on-failure: true # Cache even if the build fails + + # https://github.com/actions/setup-python + # python is needed for build + test + #- name: Install python + # uses: actions/setup-python@v2 + # with: + # python-version: '3.x' + + # scripts/provision_deb.sh + - name: Install dependencies + run: sudo apt-get install -y cmake clang curl dirmngr git gnupg2 gperf htop libssl-dev ninja-build pkg-config python-dev python3-pip python3-setuptools software-properties-common unzip libncurses5-dev # luarocks + + - name: Install python dependencies + run: pip install -r scripts/requirements.txt + + # https://github.com/marketplace/actions/install-luarocks + - uses: leafo/gh-actions-lua@v8 + - uses: leafo/gh-actions-luarocks@v4 + - name: install lua dependencies + run: luarocks install penlight + + # https://github.com/actions-rs/cargo + - name: build + uses: actions-rs/cargo@v1 + with: + command: build + #args: --release --all-features # release build is much slower + + - name: test + run: python3 ./scripts/test_translator.py --debug ./tests + +# - name: Run cargo check +# uses: actions-rs/cargo@v1 +# with: +# command: check diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2b744a1e3d..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,59 +0,0 @@ -language: generic -sudo: required - -# TODO: figure out why submodule checkout fails -git: - submodules: false - -branches: - only: - - master - - feature/ci-dev - - -matrix: - fast_finish: true - include: - - os: osx - osx_image: xcode12.2 # macOS 10.15.7 - env: >- - CACHE_NAME=OSX_FAST_BUILD - - - os: linux - dist: xenial - env: >- - CACHE_NAME=LINUX_FAST_BUILD - -cache: - # https://docs.travis-ci.com/user/caching/#Rust-Cargo-cache - directories: - - $HOME/.rustup - - $HOME/.cargo - - $TRAVIS_BUILD_DIR/c2rust-ast-importer/target.travis - - $TRAVIS_BUILD_DIR/c2rust-refactor/target - -install: - - /usr/bin/env python3 --version - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - # HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade python - ./scripts/provision_mac.sh - export LLVM_CONFIG_PATH=$(brew --prefix llvm@11)/bin/llvm-config - echo $LLVM_CONFIG_PATH - ls -la $LLVM_CONFIG_PATH - else - sudo -H ./scripts/provision_deb.sh - ./scripts/provision_rust.sh - fi - - . ~/.cargo/env - -# NOTE: travis doesn't automatically terminate if command fails. -script: - - | - cargo build || travis_terminate 1 - python3 ./scripts/test_translator.py --debug ./tests || travis_terminate 1 - -notifications: - slack: - secure: tSmfSUIJJdTUf+UH5iMvwFs5QIwMtoyqUqOaVN4RyBTxhOJ9BesDFAqAY2urDSGnRV5zzkHa29GavYQJc+Gfjw6++Op+4h0cWrNk6k/I204LY4+TCVsx5zBo77Qt6NdPtP1ym78jvKxkct7yZLxc6RKu+eaLYFNgVryURPdVs8qjLtkcYoo6RYZ9841R6ZR9k/tTuL8binWGLelQTFALTiJJl8C0gDE03t35snxlkKAAOdZM5n5O+fA7h/PfZUvLtVAQwOMgynQG/uj7AZAFHaVvmPw4VhYqr55dOyLfuD176ZLNE4Tt4GDO6nm+MqQAVBLb72D1c7h4MsFGOEFGLiR+Z77w748M4BYeowZILbVXko0H5BYvVae/Alh2SQiD/f+JNe2SKCTl4uKzHErWLnFbJmz0TsCZHUhkZHQ4lY+3jmRffUetHRbJ+sS0jB1a7vigWivrkDSPJmIphLdVnqgKQlRnTvj3/oKKnm1GFUUvgwEWHES7I1+IPuYYk3bI2/XDKqbTFYf1+DoLYl8tTe2DQDIUMasmy+A72pLImKN0gY6klQpPmHdtBmsaJrIajsYG2rsrEnvsVdxfc9YEE2jeY67l0HHoWeoH/YCVay2f3PQmzMbjd8cRMFgJRz9yjvgw5mquydOnAPvrot6orU2hY2/PBUv43ZmVbb6bvMA= - email: false diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index 2a5b534f5f..0000000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,135 +0,0 @@ -trigger: - branches: - include: - - master - - feature/ci-dev - paths: - exclude: - - README.md - - LICENSE - - .travis.yml - - book.toml - - docker/* - - vagrant/* - - manual/* - - docs/* - -jobs: -- job: Linux - timeoutInMinutes: 120 - pool: - vmImage: 'ubuntu-latest' - strategy: - matrix: - arch: - containerImage: immunant/c2rust:archlinux-base-latest - debian9: - containerImage: immunant/c2rust:debian-stretch-latest - debian10: - containerImage: immunant/c2rust:debian-buster-latest - fedora29: - containerImage: immunant/c2rust:fedora-29-latest - ubuntu16: - containerImage: immunant/c2rust:ubuntu-xenial-latest - ubuntu18: - containerImage: immunant/c2rust:ubuntu-bionic-latest - container: $[ variables['containerImage'] ] - steps: - - script: | - # rust was installed for the `docker` user, not the user azure creates - # but cargo and rustup can be controlled via $CARGO_HOME and $RUSTUP_HOME. - # NOTE: $HOME is not set correctly for the azure user; don't rely on it. - export PATH="/home/docker/.cargo/bin:$PATH" - export RUSTUP_HOME=/home/docker/.rustup - export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - cargo build --release - displayName: 'Fast build against host clang/LLVM' - - - script: | - export PATH="/home/docker/.cargo/bin:$PATH" - export RUSTUP_HOME=/home/docker/.rustup - export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - python3 ./scripts/test_translator.py ./tests - displayName: 'Test translator (fast build)' - - - script: | - export PATH="/home/docker/.cargo/bin:$PATH" - export RUSTUP_HOME=/home/docker/.rustup - export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - cargo clean - displayName: 'Cargo clean' - - - script: | - export PATH="/home/docker/.cargo/bin:$PATH" - export RUSTUP_HOME=/home/docker/.rustup - export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - python3 ./scripts/build_translator.py --with-llvm-version=10.0.1 - displayName: 'Developer build against local LLVM 10' - - - script: | - export PATH="/home/docker/.cargo/bin:$PATH" - export RUSTUP_HOME=/home/docker/.rustup - export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - python3 ./scripts/test_translator.py ./tests - displayName: 'Test translator against developer build (LLVM 10)' - - # - script: | - # export PATH="/home/docker/.cargo/bin:$PATH" - # export RUSTUP_HOME=/home/docker/.rustup - # export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - # cargo clean && rm -rf build - # displayName: 'Cargo clean && rm -rf build' - - # - script: | - # export PATH="/home/docker/.cargo/bin:$PATH" - # export RUSTUP_HOME=/home/docker/.rustup - # export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - # python3 ./scripts/build_translator.py --with-llvm-version=8.0.0 - # displayName: 'Developer build against local LLVM 8' - - # - script: | - # export PATH="/home/docker/.cargo/bin:$PATH" - # export RUSTUP_HOME=/home/docker/.rustup - # export CARGO_HOME=$AGENT_TEMPDIRECTORY/.cargo - # python3 ./scripts/test_translator.py ./tests - # displayName: 'Test translator against developer build (LLVM 8)' - -- job: Darwin - timeoutInMinutes: 180 - pool: - vmImage: 'macOS-latest' - steps: - - script: | - ./scripts/provision_mac.sh - # speeds up provisioning - export HOMEBREW_NO_AUTO_UPDATE=1 - # helps the `curl-sys` create determine how to link in libcurl. - brew install pkg-config - # we want to use the host curl because it has the `HTTP2` feature - # whereas the brew version does not, this causes curl-sys to - # build its own curl which then fails to link on Azure Devops. - brew remove curl - # prepare environment for the following steps - source $HOME/.cargo/env - brew info llvm - displayName: 'Provision macOS' - - - script: | - export LLVM_CONFIG_PATH=$(brew --prefix llvm)/bin/llvm-config - cargo build --release - displayName: 'Fast build against host clang/LLVM' - - - script: python3 ./scripts/test_translator.py ./tests - displayName: 'Test translator (fast build)' - - - script: cargo clean - displayName: 'Cargo clean' - - # LLVM 10.0.X on macOS 10.15 and fails with a CMake error but later - # LLVM releases do not. See this issue for an example of the error. - # https://github.com/spack/spack/issues/19905#issuecomment-727268589 - - script: python3 ./scripts/build_translator.py --with-llvm-version=11.1.0 - displayName: 'Developer build against local LLVM 11' - - - script: python3 ./scripts/test_translator.py ./tests - displayName: 'Test translator against developer build (LLVM 11)'