build(netgo): make sure the project is always compiled with netgo build tag (#3428)

* build(netgo): make sure the project is always compiled with `netgo` build tag

* docs(netgo): better comments
This commit is contained in:
Deluan Quintão 2024-10-26 13:28:23 -04:00 committed by GitHub
parent 15b2dc6b48
commit 69e2a6d620
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 30 additions and 3 deletions

View file

@ -102,7 +102,7 @@ jobs:
- name: Test
run: |
pkg-config --define-prefix --cflags --libs taglib # for debugging
go test -shuffle=on -race -cover ./... -v
go test -shuffle=on -tags netgo -race -cover ./... -v
js:
name: Test JS code

View file

@ -1,3 +1,7 @@
run:
build-tags:
- netgo
linters:
enable:
- asasalint

View file

@ -33,11 +33,11 @@ server: check_go_env buildjs ##@Development Start the backend in development mod
.PHONY: server
watch: ##@Development Start Go tests in watch mode (re-run when code changes)
go run github.com/onsi/ginkgo/v2/ginkgo@latest watch -notify ./...
go run github.com/onsi/ginkgo/v2/ginkgo@latest watch -tags netgo -notify ./...
.PHONY: watch
test: ##@Development Run Go tests
go test -race -shuffle=on ./...
go test -tags netgo -race -shuffle=on ./...
.PHONY: test
testall: test ##@Development Run Go and JS tests

View file

@ -0,0 +1,4 @@
package buildtags
// This file is left intentionally empty. It is used to make sure the package is not empty, in the case all
// required build tags are disabled.

11
conf/buildtags/netgo.go Normal file
View file

@ -0,0 +1,11 @@
//go:build netgo
package buildtags
// NOTICE: This file was created to force the inclusion of the `netgo` tag when compiling the project.
// If the tag is not included, the compilation will fail because this variable won't be defined, and the `main.go`
// file requires it.
// Why this tag is required? See https://github.com/navidrome/navidrome/issues/700
var NETGO = true

View file

@ -4,8 +4,16 @@ import (
_ "net/http/pprof" //nolint:gosec
"github.com/navidrome/navidrome/cmd"
"github.com/navidrome/navidrome/conf/buildtags"
)
//goland:noinspection GoBoolExpressions
func main() {
// This import is used to force the inclusion of the `netgo` tag when compiling the project.
// If you get compilation errors like "undefined: buildtags.NETGO", this means you forgot to specify
// the `netgo` build tag when compiling the project.
// To avoid these kind of errors, you should use `make build` to compile the project.
_ = buildtags.NETGO
cmd.Execute()
}