|
65 | 65 | # gcflags -std is necessary to make fakecgo the Cgo for
|
66 | 66 | # FreeBSD to add the symbols that libc.so depends on.
|
67 | 67 | env GOOS=freebsd GOARCH=amd64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./...
|
68 |
| - env GOOS=freebsd GOARCH=arm64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./... |
| 68 | + env GOOS=freebsd GOARCH=arm64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./... |
| 69 | + |
| 70 | + # Check cross-compiling NetBSD binaries. |
| 71 | + env GOOS=netbsd GOARCH=amd64 go build -v ./... |
| 72 | + env GOOS=netbsd GOARCH=arm64 go build -v ./... |
69 | 73 |
|
70 | 74 | - name: go build (plugin)
|
71 | 75 | if: runner.os == 'Linux' || runner.os == 'macOS'
|
@@ -134,93 +138,40 @@ jobs:
|
134 | 138 | run: |
|
135 | 139 | go test -race -shuffle=on -v -count=10 ./...
|
136 | 140 |
|
137 |
| - freebsd: |
| 141 | + bsd: |
138 | 142 | strategy:
|
139 | 143 | matrix:
|
| 144 | + os: ['FreeBSD', 'NetBSD'] |
140 | 145 | go: ['1.18.10', '1.19.13', '1.20.14', '1.21.13', '1.22.12', '1.23.6', '1.24.0']
|
141 |
| - name: Test with Go ${{ matrix.go }} on FreeBSD |
| 146 | + name: Test with Go ${{ matrix.go }} on ${{ matrix.os }} |
142 | 147 | runs-on: ubuntu-22.04
|
143 | 148 | defaults:
|
144 | 149 | run:
|
145 | 150 | shell: bash
|
146 | 151 | steps:
|
147 | 152 | - uses: actions/checkout@v4
|
148 | 153 | - name: Run in freebsd
|
| 154 | + if: matrix.os == 'FreeBSD' |
149 | 155 | uses: vmactions/freebsd-vm@v1
|
150 | 156 | with:
|
151 | 157 | usesh: true
|
152 | 158 | prepare: |
|
153 | 159 | fetch https://go.dev/dl/go${{matrix.go}}.freebsd-amd64.tar.gz
|
154 | 160 | rm -fr /usr/local/go && tar -C /usr/local -xf go${{matrix.go}}.freebsd-amd64.tar.gz
|
155 | 161 | ln -s /usr/local/go/bin/go /usr/local/bin
|
156 |
| - run: | |
157 |
| - # FreeBSD tests run within QEMU on Ubuntu. |
158 |
| - # vmactions/freebsd-vm only supports a single "step" where it |
159 |
| - # brings down the VM at the end of the step, so all |
160 |
| - # the commands to run need to be put into this single block. |
161 |
| -
|
162 |
| - echo "Running tests on $(uname -a) at $PWD" |
163 |
| -
|
164 |
| - # verify Go is available |
165 |
| - go version |
166 |
| -
|
167 |
| - echo "=> go build" |
168 |
| - go build -v ./... |
169 |
| - # Compile without optimization to check potential stack overflow. |
170 |
| - # The option '-gcflags=all=-N -l' is often used at Visual Studio Code. |
171 |
| - # See also https://go.googlesource.com/vscode-go/+/HEAD/docs/debugging.md#launch and the issue hajimehoshi/ebiten#2120. |
172 |
| - go build "-gcflags=all=-N -l" -v ./... |
173 |
| -
|
174 |
| - # Check cross-compiling Windows binaries. |
175 |
| - env GOOS=windows GOARCH=386 go build -v ./... |
176 |
| - env GOOS=windows GOARCH=amd64 go build -v ./... |
177 |
| - env GOOS=windows GOARCH=arm go build -v ./... |
178 |
| - env GOOS=windows GOARCH=arm64 go build -v ./... |
179 |
| -
|
180 |
| - # Check cross-compiling macOS binaries. |
181 |
| - env GOOS=darwin GOARCH=amd64 go build -v ./... |
182 |
| - env GOOS=darwin GOARCH=arm64 go build -v ./... |
183 |
| -
|
184 |
| - # Check cross-compiling Linux binaries. |
185 |
| - env GOOS=linux GOARCH=amd64 go build -v ./... |
186 |
| - env GOOS=linux GOARCH=arm64 go build -v ./... |
187 |
| -
|
188 |
| - # Check cross-compiling FreeBSD binaries. |
189 |
| - env GOOS=freebsd GOARCH=amd64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./... |
190 |
| - env GOOS=freebsd GOARCH=arm64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./... |
191 |
| -
|
192 |
| - echo "=> go build (plugin)" |
193 |
| - # Make sure that plugin buildmode works since we save the R15 register (#254) |
194 |
| - go build -buildmode=plugin ./examples/libc |
195 |
| -
|
196 |
| - echo "=> go mod vendor" |
197 |
| - mkdir /tmp/vendoring |
198 |
| - cd /tmp/vendoring |
199 |
| - go mod init foo |
200 |
| - echo 'package main' > main.go |
201 |
| - echo 'import (' >> main.go |
202 |
| - echo ' _ "github.com/ebitengine/purego"' >> main.go |
203 |
| - echo ')' >> main.go |
204 |
| - echo 'func main() {}' >> main.go |
205 |
| - go mod edit -replace github.com/ebitengine/purego=$GITHUB_WORKSPACE |
206 |
| - go mod tidy |
207 |
| - go mod vendor |
208 |
| - go build -v . |
209 |
| -
|
210 |
| - cd $GITHUB_WORKSPACE |
211 |
| - echo "=> go test CGO_ENABLED=0" |
212 |
| - env CGO_ENABLED=0 go test -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -shuffle=on -v -count=10 ./... |
213 |
| -
|
214 |
| - echo "=> go test CGO_ENABLED=1" |
215 |
| - env CGO_ENABLED=1 go test -shuffle=on -v -count=10 ./... |
216 |
| -
|
217 |
| - echo "=> go test CGO_ENABLED=0 w/o optimization" |
218 |
| - env CGO_ENABLED=0 go test "-gcflags=all=-N -l" -v ./... |
219 |
| -
|
220 |
| - echo "=> go test CGO_ENABLED=1 w/o optimization" |
221 |
| - env CGO_ENABLED=1 go test "-gcflags=all=-N -l" -v ./... |
222 |
| -
|
223 |
| - if [ -z "$(echo ${{matrix.go}} | grep '^1.1')" ]; then |
224 |
| - echo "=> go test race" |
225 |
| - go test -race -shuffle=on -v -count=10 ./... |
226 |
| - fi |
| 162 | + chmod +x $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh |
| 163 | + run: $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh |
| 164 | + - name: Run in netbsd |
| 165 | + # there are no prebuilt download links for these versions of Go for NetBSD |
| 166 | + if: matrix.os == 'NetBSD' && !startsWith(matrix.go, '1.18.') && !startsWith(matrix.go, '1.19.') && !startsWith(matrix.go, '1.20.') |
| 167 | + uses: vmactions/netbsd-vm@v1 |
| 168 | + with: |
| 169 | + usesh: true |
| 170 | + prepare: | |
| 171 | + /usr/sbin/pkg_add -v bash |
| 172 | + ftp https://go.dev/dl/go${{matrix.go}}.netbsd-amd64.tar.gz |
| 173 | + mkdir /usr/local |
| 174 | + rm -fr /usr/local/go && tar -C /usr/local -xf go${{matrix.go}}.netbsd-amd64.tar.gz |
| 175 | + ln -s /usr/local/go/bin/go /usr/local/bin |
| 176 | + chmod +x $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh |
| 177 | + run: $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh |
0 commit comments