diff --git a/Makefile b/Makefile index 229e27319a0..e76e5a18940 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ GO_RACE_FLAG := $(if $(GO_RACE),-race) GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev) GO_BUILD_FLAGS += $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS)) GO_BUILD_FLAGS += $(GO_RACE_FLAG) +GO_BUILD_FLAGS += $(if $(GO_BUILD_CGO),-cgo-enabled=$(GO_BUILD_CGO)) GO_TEST_FLAGS += $(if $(GO_BUILD_TAGS),-tags=$(GO_BUILD_TAGS)) GIT_BASE = remotes/origin/main diff --git a/pkg/build/cmd.go b/pkg/build/cmd.go index 1bad7828946..c3b9ec0bc50 100644 --- a/pkg/build/cmd.go +++ b/pkg/build/cmd.go @@ -18,6 +18,7 @@ import ( const ( GoOSWindows = "windows" GoOSLinux = "linux" + GoOSDarwin = "darwin" BackendBinary = "grafana" ServerBinary = "grafana-server" @@ -288,8 +289,9 @@ func setBuildEnv(opts BuildOpts) error { } } - if opts.goarch != "amd64" || opts.goos != GoOSLinux { - // needed for all other archs + if (opts.goos != GoOSLinux || opts.goarch != "amd64") && + opts.goos != GoOSDarwin { + // needed for archs other than linux/amd64 and darwin/arm64 + darwin/amd64 opts.cgo = true } @@ -307,10 +309,12 @@ func setBuildEnv(opts BuildOpts) error { } } + cgoEnabled := "0" if opts.cgo { - if err := os.Setenv("CGO_ENABLED", "1"); err != nil { - return err - } + cgoEnabled = "1" + } + if err := os.Setenv("CGO_ENABLED", cgoEnabled); err != nil { + return err } if opts.gocc == "" { diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index b54a177cf02..d4842bee884 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -16,6 +16,7 @@ import ( _ "github.com/lib/pq" "github.com/prometheus/client_golang/prometheus" + "github.com/grafana/grafana/pkg/util/sqlite" "github.com/grafana/grafana/pkg/util/xorm" "github.com/grafana/grafana/pkg/util/xorm/core" @@ -248,6 +249,9 @@ func (ss *SQLStore) initEngine(engine *xorm.Engine) error { } ss.log.Info("Connecting to DB", "dbtype", ss.dbCfg.Type) + if ss.dbCfg.Type == migrator.SQLite { + ss.log.Info("Using SQLite driver", "driver", sqlite.DriverType()) + } if ss.dbCfg.Type == migrator.SQLite && strings.HasPrefix(ss.dbCfg.ConnectionString, "file:") && !strings.HasPrefix(ss.dbCfg.ConnectionString, "file::memory:") { exists, err := fs.Exists(ss.dbCfg.Path) diff --git a/pkg/util/sqlite/sqlite_cgo.go b/pkg/util/sqlite/sqlite_cgo.go index de18511741d..a52a4d5e2d7 100644 --- a/pkg/util/sqlite/sqlite_cgo.go +++ b/pkg/util/sqlite/sqlite_cgo.go @@ -35,12 +35,13 @@ func IsUniqueConstraintViolation(err error) bool { } func ErrorMessage(err error) string { - if err == nil { - return "" - } var sqliteErr sqlite3.Error if errors.As(err, &sqliteErr) { return sqliteErr.Error() } return err.Error() } + +func DriverType() string { + return "mattn/go-sqlite3 (CGO enabled)" +} diff --git a/pkg/util/sqlite/sqlite_nocgo.go b/pkg/util/sqlite/sqlite_nocgo.go index ec77078ea20..d4bf68f0227 100644 --- a/pkg/util/sqlite/sqlite_nocgo.go +++ b/pkg/util/sqlite/sqlite_nocgo.go @@ -112,6 +112,10 @@ func init() { sql.Register("sqlite3", &moderncDriver{Driver: &Driver{}}) } +func DriverType() string { + return "modernc.org/sqlite (CGO disabled)" +} + func IsBusyOrLocked(err error) bool { var sqliteErr *sqlite.Error if errors.As(err, &sqliteErr) {