Skip to content

Merge pull request #1083 from hylo-lang/parse-binding-decl #2375

Merge pull request #1083 from hylo-lang/parse-binding-decl

Merge pull request #1083 from hylo-lang/parse-binding-decl #2375

name: Build and test
# README:
#
# The semantics for running shell commands in GitHub actions is non-obvious. Please read
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
# before modifying this file. Our strategy is to rely on the built-in (unspecified) shell, and
# explicitly set the shell settings we want (with `set -eo pipefail`) at the beginning of any
# bash script. For more information on these settings, see `man bash`.
#
# GitHub Actions files can be difficult to modify with confidence, because testing changes often
# requires pushing to a branch and running CI remotely. To make this process easier, consider
# the following:
#
# 1) Use Visual Studio Code with the GitHub Actions Extension (github.vscode-github-actions).
# This allows you to check the validity of your action schema and syntax without pushing to a
# branch.
# 2) Use https://github.com/nektos/act to run your CI steps locally. Note this will only work with
# steps run on Linux platforms, as `act` is implemented with Docker containers.
on:
push:
branches: [ main, rewrite ]
paths-ignore:
- "Docs/**"
- "**.md"
- "README.md"
- "LICENSE"
- ".gitignore"
pull_request:
branches: [ "**" ]
paths-ignore:
- "Docs/**"
- "**.md"
- "README.md"
- "LICENSE"
- ".gitignore"
jobs:
build-devcontainer:
name: "Devcontainer: ${{ matrix.host.os }}/${{ matrix.configuration }}"
strategy:
fail-fast: false
matrix:
host: [
{ type: linux, os: ubuntu-latest,
build-options: "-v --build-tests -Xswiftc -enable-testing",
test-options: "-v --enable-code-coverage"
}
]
configuration: [ "debug", "release" ]
runs-on: ${{ matrix.host.os }}
steps:
- uses: actions/checkout@v3
- name: Build and Test
uses: devcontainers/[email protected]
with:
runCmd: |
set -eo pipefail
swift package resolve
.build/checkouts/Swifty-LLVM/Tools/make-pkgconfig.sh llvm.pc
export PKG_CONFIG_PATH=$PWD
swift build -c ${{ matrix.configuration }} ${{ matrix.host.build-options }}
swift test -c ${{ matrix.configuration }} ${{ matrix.host.test-options }} |
tee testoutput.txt && (
(grep -q "[.']EndToEndTests[/. ]test_" testoutput.txt && grep -q "[.']HyloTests[/. ]test_" testoutput.txt) ||
(echo "error: generated tests failed to run; see
https://github.com/apple/swift-package-manager/issues/6595" && false) )
- name: Check code coverage
uses: mattpolzin/[email protected]
with:
SORT_ORDER: +cov
MINIMUM_COVERAGE: 84
CODECOV_JSON: .build/${{ matrix.configuration }}/codecov/*.json
build-native-macos:
name: "Native: ${{ matrix.host.os }}/${{ matrix.configuration }}"
strategy:
fail-fast: false
matrix:
host: [
{
type: macos, os: macos-13,
build-options: "-v --build-tests -Xswiftc -enable-testing",
# No coverage support on MacOS
test-options: "-v"
}
]
swift: [
{ version: "5.8" }
]
configuration: [ "debug", "release" ]
runs-on: ${{ matrix.host.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup swift
uses: swift-actions/setup-swift@v1
with:
swift-version: ${{ matrix.swift.version }}
- run: swift --version
- name: Setup LLVM
uses: KyleMayes/install-llvm-action@v1
with:
version: "15.0"
- run: llvm-config --version
- name: Generate LLVM pkgconfig file
run: |
set -eo pipefail
swift package resolve
.build/checkouts/Swifty-LLVM/Tools/make-pkgconfig.sh llvm.pc
cat llvm.pc
- name: Build (${{ matrix.configuration }})
run: |
set -eo pipefail
export PKG_CONFIG_PATH=$PWD
swift build -c ${{ matrix.configuration }} ${{ matrix.host.build-options }}
- name: Test (${{ matrix.configuration }})
run: |
set -eo pipefail
export PKG_CONFIG_PATH=$PWD
swift test -c ${{ matrix.configuration }} ${{ matrix.host.test-options }} |
tee testoutput.txt && (
(grep -q "[.']EndToEndTests[/. ]test_" testoutput.txt && grep -q "[.']HyloTests[/. ]test_" testoutput.txt) ||
(echo "error: generated tests failed to run; see
https://github.com/apple/swift-package-manager/issues/6595" && false) )
build-native-windows:
name: "Native, no testing: windows-latest/release"
strategy:
fail-fast: false
runs-on: windows-latest
steps:
- name: Setup swift
uses: compnerd/gha-setup-swift@main
with:
branch: swift-5.8.1-release
tag: 5.8.1-RELEASE
- uses: actions/checkout@v3
- name: Swift version
run: swift --version
- name: Set up LLVM 15.0.6
run: |
curl.exe -L -O -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}"https://github.com/c3lang/win-llvm/releases/download/llvm_15_0_6/llvm-15.0.6-windows-x86-msvc17-msvcrt.7z
7z x llvm-15.0.6-windows-x86-msvc17-msvcrt.7z -oC:\
Add-Content $env:GITHUB_PATH 'C:\llvm-15.0.6-windows-x86-msvc17-msvcrt\bin'
- name: Copy LLVM's include and lib to include and lib folder of MSVC
run: |
xcopy c:\llvm-15.0.6-windows-x86-msvc17-msvcrt\include\*.* c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\include\ /s /h
xcopy c:\llvm-15.0.6-windows-x86-msvc17-msvcrt\lib\*.* c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\lib\x64\ /s /h
- run: llvm-config --version
- name: Build support library
run: clang -c ./Library/Hylo/LibC.c -o HyloLibC.lib
- name: Copy support library
run: xcopy HyloLibC.lib c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\lib\x64\
- name: Build (Release)
id: build
continue-on-error: true
run: swift build -v -c release
- name: Retry on failure
continue-on-error: false
if: steps.build.outcome != 'success'
run: swift build -v -c release