# 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: download-model: runs-on: ubuntu-latest steps: - name: Download model file run: | mkdir -p ./_demo/llama2-c wget -P ./_demo/llama2-c https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin - name: Upload model as artifact uses: actions/upload-artifact@v4 with: name: llama2-model path: ./_demo/llama2-c/stories15M.bin retention-days: 1 llgo: needs: download-model continue-on-error: true strategy: matrix: os: - macos-latest - ubuntu-24.04 llvm: [19] go: ["1.21.13", "1.22.12", "1.23.6", "1.24.2"] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Install dependencies uses: ./.github/actions/setup-deps with: llvm-version: ${{matrix.llvm}} - name: Download model artifact uses: actions/download-artifact@v4 with: name: llama2-model path: ./_demo/llama2-c/ - 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@v5 with: go-version: ${{matrix.go}} - name: _xtool build tests run: | cd _xtool llgo build -v ./... - 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')}} 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: [19] go: ["1.24.2"] 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: | 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@v5 with: go-version: ${{matrix.go}} - name: run llgo test run: | llgo test ./... hello: continue-on-error: true strategy: matrix: os: [ubuntu-24.04, 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@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.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 strategy: matrix: os: [macos-latest] llvm: [19] 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 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 wasi-libc run: | wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/libclang_rt.builtins-wasm32-wasi-25.0.tar.gz tar -xvf libclang_rt.builtins-wasm32-wasi-25.0.tar.gz mkdir -p `llvm-config --libdir`/clang/19/lib/wasi/ mv libclang_rt.builtins-wasm32-wasi-25.0/libclang_rt.builtins-wasm32.a `llvm-config --libdir`/clang/19/lib/wasi/ - name: Install llgo run: | go install ./... echo "LLGO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV - name: Test Cross Compilation (wasm) shell: bash working-directory: _demo run: | echo "Testing cross-compilation wasm with Go 1.24.2" # Compile for wasm architecture GOOS=wasip1 GOARCH=wasm llgo build -o hello -v ./helloc # Check file type file hello.wasm # Run the wasm binary using llgo_wasm iwasm hello.wasm