Fix building zot natively on FreeBSD (#3247)

fix: allow zot to build on a FreeBSD host (#3246)

The build works as long as the protoc package is installed on the build
host. This also fixes lint checks when building on FreeBSD, working
around common lint complaints caused by the fact that rlim_t is int64 on
FreeBSD.

Signed-off-by: Doug Rabson <dfr@rabson.org>
This commit is contained in:
Doug Rabson
2025-07-08 13:12:15 +01:00
committed by GitHub
parent e33a937b38
commit 432fde45af
5 changed files with 9 additions and 9 deletions
+1 -7
View File
@@ -123,7 +123,7 @@ build-metadata: $(if $(findstring ui,$(BUILD_LABELS)), ui)
go list $(GO_CMD_TAGS) -f '{{ join .GoFiles "\n" }}' ./... | sort -u
.PHONY: gen-protobuf
gen-protobuf: check-not-freebds $(PROTOC)
gen-protobuf: $(PROTOC)
$(PROTOC) --experimental_allow_proto3_optional \
--proto_path=$(TOP_LEVEL)/pkg/meta/proto \
--go_out=$(TOP_LEVEL)/pkg/meta/proto \
@@ -612,12 +612,6 @@ ifneq ($(shell go env GOOS),linux)
$(error makefile target can be run only on linux)
endif
.PHONY: check-not-freebds
check-not-freebds:
ifeq ($(shell go env GOOS),freebsd)
$(error makefile target can't be run on freebsd)
endif
.PHONY: check-compatibility
check-compatibility:
ifeq ($(OS),freebsd)
+1 -1
View File
@@ -20,7 +20,7 @@ func DumpRuntimeParams(log log.Logger) {
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err == nil {
evt = evt.Uint64("max. open files", uint64(rLimit.Cur)) //nolint: unconvert // required for *BSD
evt = evt.Uint64("max. open files", uint64(rLimit.Cur)) //nolint: unconvert,gosec // required for *BSD
}
if content, err := os.ReadFile("/proc/sys/net/core/somaxconn"); err == nil {
+1 -1
View File
@@ -193,7 +193,7 @@ func worker(id int, zotPort, rootDir string) {
}
}
func setMaxOpenFilesLimit(limit uint64) (uint64, error) {
func setMaxOpenFilesLimit(limit test.RlimT) (test.RlimT, error) {
var rLimit syscall.Rlimit
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
+3
View File
@@ -0,0 +1,3 @@
package common
type RlimT = int64
+3
View File
@@ -0,0 +1,3 @@
package common
type RlimT = uint64