# 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: [ "**" ] pull_request: branches: [ "**" ] jobs: llgo: continue-on-error: true strategy: matrix: os: - macos-latest - ubuntu-24.04 llvm: [18] go: ['1.20.14', '1.21.13', '1.22.12', '1.23.6', '1.24.0'] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Install dependencies uses: ./.github/actions/setup-deps with: llvm-version: ${{matrix.llvm}} - 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: Set up Go for build uses: ./.github/actions/setup-go with: go-version: '1.24.0' - name: Install working-directory: compiler run: | go install ./... echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV - name: Set up Go for testing uses: actions/setup-go@v5 with: go-version: ${{matrix.go}} - name: Verify Go version run: | go_version=$(go version | cut -d' ' -f3 | sed 's/go//') if [[ "$go_version" != "${{matrix.go}}"* ]]; then echo "Expected Go version ${{matrix.go}}, but got $go_version" exit 1 fi echo "Using Go version: $go_version" - name: _xtool build tests run: | cd _xtool llgo build -v ./... - 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: 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 bash .github/workflows/test_demo.sh - name: Show test result run: cat result.md - name: LLDB tests if: ${{startsWith(matrix.os, 'macos')}} working-directory: compiler run: | echo "Test lldb with llgo plugin on ${{matrix.os}} with LLVM ${{matrix.llvm}}" bash _lldb/runtest.sh -v test: continue-on-error: true strategy: matrix: os: - macos-latest - ubuntu-24.04 llvm: [18] go: ['1.24.0'] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Install dependencies uses: ./.github/actions/setup-deps with: llvm-version: ${{matrix.llvm}} - 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: Set up Go for build uses: ./.github/actions/setup-go with: go-version: '1.24.0' - name: Install working-directory: compiler run: | go install ./... echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV - name: Set up Go for testing uses: actions/setup-go@v5 with: go-version: ${{matrix.go}} - name: Verify Go version run: | go_version=$(go version | cut -d' ' -f3 | sed 's/go//') if [[ "$go_version" != "${{matrix.go}}"* ]]; then echo "Expected Go version ${{matrix.go}}, but got $go_version" exit 1 fi echo "Using Go version: $go_version" - name: run llgo test run: | cd _demo llgo test -v ./runtest hello: continue-on-error: true strategy: matrix: os: [ubuntu-24.04, macos-latest] llvm: [18] go: ['1.20.14', '1.21.13', '1.22.12', '1.23.6', '1.24.0'] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - 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.0' - name: Install llgo working-directory: compiler 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.20 if: startsWith(matrix.go, '1.20') || 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.20' - 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'