149 lines
4.7 KiB
YAML
149 lines
4.7 KiB
YAML
# This workflow will build a golang project
|
|
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
|
|
|
|
name: Go
|
|
|
|
on:
|
|
push:
|
|
branches: [ "**" ]
|
|
pull_request:
|
|
branches: [ "**" ]
|
|
|
|
jobs:
|
|
fmt:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.20'
|
|
|
|
- name: Check formatting
|
|
run: |
|
|
if [ -n "$(go fmt ./...)" ]; then
|
|
echo "Some files are not properly formatted. Please run 'go fmt ./...'"
|
|
exit 1
|
|
fi
|
|
|
|
test:
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-latest
|
|
- ubuntu-24.04
|
|
llvm: [18]
|
|
runs-on: ${{matrix.os}}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install dependencies
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: |
|
|
brew uninstall pkg-config@0.29.2
|
|
brew update
|
|
brew install llvm@${{matrix.llvm}} pkg-config bdw-gc openssl libffi
|
|
echo "$(brew --prefix llvm@${{matrix.llvm}})/bin" >> $GITHUB_PATH
|
|
echo "PKG_CONFIG_PATH=/opt/homebrew/opt/libffi/lib/pkgconfig" >> $GITHUB_ENV
|
|
|
|
# Install optional deps for demos.
|
|
#
|
|
# NOTE: Keep this list updated as new deps are introduced.
|
|
opt_deps=(
|
|
cjson # for github.com/goplus/llgo/c/cjson
|
|
sqlite # for github.com/goplus/llgo/c/sqlite
|
|
python@3.12 # for github.com/goplus/llgo/py
|
|
)
|
|
brew install "${opt_deps[@]}"
|
|
|
|
- name: Install dependencies
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${{matrix.llvm}} main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
sudo apt-get update
|
|
sudo apt-get install -y llvm-${{matrix.llvm}}-dev clang-${{matrix.llvm}} libclang-${{matrix.llvm}}-dev lld-${{matrix.llvm}} pkg-config libgc-dev libssl-dev zlib1g-dev libffi-dev libcjson-dev
|
|
echo "/usr/lib/llvm-${{matrix.llvm}}/bin" >> $GITHUB_PATH
|
|
|
|
# Install optional deps for demos.
|
|
#
|
|
# NOTE: Keep this list updated as new deps are introduced.
|
|
opt_deps=(
|
|
libcjson-dev # for github.com/goplus/llgo/c/cjson
|
|
libsqlite3-dev # for github.com/goplus/llgo/c/sqlite
|
|
python3.12-dev # for github.com/goplus/llgo/py
|
|
)
|
|
sudo apt-get install -y "${opt_deps[@]}"
|
|
|
|
- name: Install further optional dependencies for demos
|
|
run: |
|
|
wget -P ./_demo/llama2-c https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin
|
|
py_deps=(
|
|
numpy # for github.com/goplus/llgo/py/numpy
|
|
torch # for github.com/goplus/llgo/py/torch
|
|
)
|
|
pip3.12 install --break-system-packages "${py_deps[@]}"
|
|
|
|
- name: Clang information
|
|
run: |
|
|
echo $PATH
|
|
which clang
|
|
clang --version
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.20'
|
|
|
|
- name: Build
|
|
run: go build -v ./...
|
|
|
|
- name: Test
|
|
if: ${{!startsWith(matrix.os, 'macos')}}
|
|
run: go test -v ./...
|
|
|
|
- name: Test with coverage
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: go test -v -coverprofile="coverage.txt" -covermode=atomic ./...
|
|
|
|
- name: Install
|
|
run: go install ./...
|
|
|
|
- name: LLGO tests
|
|
if: ${{!startsWith(matrix.os, 'ubuntu')}}
|
|
run: |
|
|
echo "Test result on ${{matrix.os}} with LLVM ${{matrix.llvm}}" > result.md
|
|
bash .github/workflows/test_llgo.sh
|
|
|
|
- name: chore/_xtool build tests
|
|
run: |
|
|
cd chore/_xtool
|
|
llgo build -v ./...
|
|
|
|
- name: LLDB tests
|
|
if: ${{startsWith(matrix.os, 'macos')}}
|
|
run: |
|
|
echo "Test lldb with llgo plugin on ${{matrix.os}} with LLVM ${{matrix.llvm}}"
|
|
bash _lldb/runtest.sh -v
|
|
|
|
- name: Test demos
|
|
continue-on-error: true
|
|
run: bash .github/workflows/test_demo.sh
|
|
|
|
- name: Show test result
|
|
run: cat result.md
|
|
|
|
- name: PR comment with test result
|
|
uses: thollander/actions-comment-pull-request@v3
|
|
if: false
|
|
with:
|
|
filePath: result.md
|
|
comment_tag: test-result-on-${{matrix.os}}-with-llvm-${{matrix.llvm}}
|
|
|
|
- name: Upload coverage reports to Codecov
|
|
uses: codecov/codecov-action@v5
|
|
with:
|
|
token: ${{secrets.CODECOV_TOKEN}}
|
|
slug: goplus/llgo
|