Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
312 lines
9.5 KiB
YAML
312 lines
9.5 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: LLGo
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "**"
|
|
- "!dependabot/**"
|
|
- "!xgopilot/**"
|
|
pull_request:
|
|
branches: ["**"]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
download-model:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- name: Download model file
|
|
run: |
|
|
mkdir -p ./_demo/c/llama2-c
|
|
wget -P ./_demo/c/llama2-c https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin
|
|
|
|
- name: Upload model as artifact
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: llama2-model
|
|
path: ./_demo/c/llama2-c/stories15M.bin
|
|
retention-days: 1
|
|
|
|
llgo:
|
|
needs: download-model
|
|
continue-on-error: true
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-latest
|
|
- ubuntu-latest
|
|
llvm: [19]
|
|
go: ["1.21.13", "1.22.12", "1.23.6", "1.24.2"]
|
|
runs-on: ${{matrix.os}}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install dependencies
|
|
uses: ./.github/actions/setup-deps
|
|
with:
|
|
llvm-version: ${{matrix.llvm}}
|
|
- name: Download model artifact
|
|
uses: actions/download-artifact@v6
|
|
with:
|
|
name: llama2-model
|
|
path: ./_demo/c/llama2-c/
|
|
- name: Download platform-specific demo libs
|
|
run: |
|
|
if ${{ startsWith(matrix.os, 'macos') }}; then
|
|
DEMO_PKG="cargs_darwin_arm64.zip"
|
|
else
|
|
DEMO_PKG="cargs_linux_amd64.zip"
|
|
fi
|
|
|
|
mkdir -p ./_demo/c/cargs/libs
|
|
cd ./_demo/c/cargs/libs
|
|
wget https://github.com/goplus/llpkg/releases/download/cargs/v1.0.0/${DEMO_PKG}
|
|
unzip ${DEMO_PKG}
|
|
|
|
# Process pc template files - replace {{.Prefix}} with actual path
|
|
ACTUAL_PREFIX="$(pwd)"
|
|
for tmpl in lib/pkgconfig/*.pc.tmpl; do
|
|
pc_file="${tmpl%.tmpl}"
|
|
sed "s|{{.Prefix}}|${ACTUAL_PREFIX}|g" "$tmpl" > "$pc_file"
|
|
done
|
|
|
|
echo "PKG_CONFIG_PATH=${ACTUAL_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}" >> $GITHUB_ENV
|
|
- name: Install further optional dependencies for demos
|
|
run: |
|
|
py_deps=(
|
|
numpy # for github.com/goplus/lib/py/numpy
|
|
torch # for github.com/goplus/lib/py/torch
|
|
)
|
|
pip3.12 install --break-system-packages "${py_deps[@]}"
|
|
|
|
- name: Set up Go for build
|
|
uses: ./.github/actions/setup-go
|
|
with:
|
|
go-version: "1.24.2"
|
|
|
|
- name: Install
|
|
run: |
|
|
go install ./...
|
|
echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
|
|
|
- name: Set up Go for testing
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
|
|
- name: Test demo without RPATH (expect failure)
|
|
run: |
|
|
echo "Testing demo without RPATH (should fail)..."
|
|
export LLGO_FULL_RPATH=false
|
|
pkg-config --libs cargs
|
|
if (cd ./_demo/c/cargs && llgo run .); then
|
|
echo "ERROR: cargs demo should have failed without RPATH!"
|
|
exit 1
|
|
else
|
|
echo "✓ cargs demo correctly failed without RPATH"
|
|
fi
|
|
|
|
- name: Test demos
|
|
run: |
|
|
# TODO(lijie): force python3-embed to be linked with python-3.12-embed
|
|
# Currently, python3-embed is python-3.13-embed, doesn't work with pytorch
|
|
# Will remove this after pytorch is fixed.
|
|
pcdir=$HOME/pc
|
|
mkdir -p $pcdir
|
|
libdir=$(pkg-config --variable=libdir python-3.12-embed)
|
|
echo "libdir: $libdir"
|
|
ln -s $libdir/pkgconfig/python-3.12-embed.pc $pcdir/python3-embed.pc
|
|
export PKG_CONFIG_PATH=$pcdir:${PKG_CONFIG_PATH}
|
|
export LLGO_FULL_RPATH=true
|
|
bash .github/workflows/test_demo.sh
|
|
|
|
- name: Test C header generation
|
|
run: |
|
|
echo "Testing C header generation in different build modes..."
|
|
cd _demo/go/export
|
|
chmod +x test.sh
|
|
./test.sh
|
|
|
|
- name: Test export with different symbol names on embedded targets
|
|
run: |
|
|
echo "Testing //export with different symbol names on embedded targets..."
|
|
cd _demo/embed/export
|
|
chmod +x verify_export.sh
|
|
./verify_export.sh
|
|
|
|
- name: _xtool build tests
|
|
run: |
|
|
cd _xtool
|
|
llgo build -v ./...
|
|
|
|
- name: Show test result
|
|
run: cat result.md
|
|
|
|
- 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
|
|
|
|
test:
|
|
continue-on-error: true
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-latest
|
|
- ubuntu-latest
|
|
llvm: [19]
|
|
go: ["1.24.2"]
|
|
runs-on: ${{matrix.os}}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install dependencies
|
|
uses: ./.github/actions/setup-deps
|
|
with:
|
|
llvm-version: ${{matrix.llvm}}
|
|
- name: Install further optional dependencies for demos
|
|
run: |
|
|
py_deps=(
|
|
numpy # for github.com/goplus/lib/py/numpy
|
|
torch # for github.com/goplus/lib/py/torch
|
|
)
|
|
pip3.12 install --break-system-packages "${py_deps[@]}"
|
|
|
|
- name: Set up Go for build
|
|
uses: ./.github/actions/setup-go
|
|
with:
|
|
go-version: "1.24.2"
|
|
|
|
- name: Install
|
|
run: |
|
|
go install ./...
|
|
echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
|
|
|
- name: Set up Go for testing
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
- name: Test Baremetal GC
|
|
if: ${{!startsWith(matrix.os, 'macos')}}
|
|
working-directory: runtime/internal/runtime/tinygogc
|
|
run: llgo test -tags testGC .
|
|
- name: run llgo test
|
|
run: |
|
|
llgo test ./...
|
|
|
|
|
|
hello:
|
|
continue-on-error: true
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest]
|
|
llvm: [19]
|
|
go: ["1.21.13", "1.22.12", "1.23.6", "1.24.2"]
|
|
runs-on: ${{matrix.os}}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install dependencies
|
|
uses: ./.github/actions/setup-deps
|
|
with:
|
|
llvm-version: ${{matrix.llvm}}
|
|
|
|
- name: Set up Go 1.23 for building llgo
|
|
uses: ./.github/actions/setup-go
|
|
with:
|
|
go-version: "1.24.2"
|
|
|
|
- name: Install llgo
|
|
run: |
|
|
go install ./...
|
|
echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
|
|
|
- name: Set up Go for testing
|
|
uses: ./.github/actions/setup-go
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
|
|
- name: Test Hello World with go.mod 1.21
|
|
if: startsWith(matrix.go, '1.21') || startsWith(matrix.go, '1.22') || startsWith(matrix.go, '1.23') || startsWith(matrix.go, '1.24')
|
|
uses: ./.github/actions/test-helloworld
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
mod-version: "1.21"
|
|
|
|
- name: Test Hello World with go.mod 1.22
|
|
if: startsWith(matrix.go, '1.22') || startsWith(matrix.go, '1.23') || startsWith(matrix.go, '1.24')
|
|
uses: ./.github/actions/test-helloworld
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
mod-version: "1.22"
|
|
|
|
- name: Test Hello World with go.mod 1.23
|
|
if: startsWith(matrix.go, '1.23') || startsWith(matrix.go, '1.24')
|
|
uses: ./.github/actions/test-helloworld
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
mod-version: "1.23"
|
|
|
|
- name: Test Hello World with go.mod 1.24
|
|
if: startsWith(matrix.go, '1.24')
|
|
uses: ./.github/actions/test-helloworld
|
|
with:
|
|
go-version: ${{matrix.go}}
|
|
mod-version: "1.24"
|
|
|
|
cross-compile:
|
|
continue-on-error: true
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
os: [macos-latest]
|
|
llvm: [19]
|
|
runs-on: ${{matrix.os}}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install dependencies
|
|
uses: ./.github/actions/setup-deps
|
|
with:
|
|
llvm-version: ${{matrix.llvm}}
|
|
|
|
- name: Set up Go for building llgo
|
|
uses: ./.github/actions/setup-go
|
|
with:
|
|
go-version: "1.24.2"
|
|
|
|
- name: Install wamr
|
|
run: |
|
|
git clone https://github.com/bytecodealliance/wasm-micro-runtime.git
|
|
mkdir wasm-micro-runtime/product-mini/platforms/darwin/build
|
|
cd wasm-micro-runtime/product-mini/platforms/darwin/build
|
|
cmake -D WAMR_BUILD_EXCE_HANDLING=1 -D WAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_SHARED_MEMORY=1 -DWAMR_BUILD_LIB_WASI_THREADS=1 -DWAMR_BUILD_LIB_PTHREAD=1 -DCMAKE_BUILD_TYPE=Debug -DWAMR_BUILD_DEBUG_INTERP=1 ..
|
|
make -j8
|
|
echo "$PWD" >> $GITHUB_PATH
|
|
|
|
- name: Install llgo
|
|
run: |
|
|
go install ./...
|
|
echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
|
|
|
- name: Test Cross Compilation (wasm)
|
|
shell: bash
|
|
working-directory: _demo/c
|
|
run: |
|
|
echo "Testing cross-compilation wasm with Go 1.24.2"
|
|
|
|
# Compile for wasm architecture
|
|
GOOS=wasip1 GOARCH=wasm llgo build -o hello -tags=nogc -v ./helloc
|
|
|
|
# Check file type
|
|
file hello.wasm
|
|
|
|
# Run the wasm binary using llgo_wasm
|
|
iwasm --stack-size=819200000 --heap-size=800000000 hello.wasm
|