mirror of
https://github.com/project-zot/zot.git
synced 2026-06-17 21:17:58 +08:00
feat: build windows binaries (#3047)
Currently zot project doesn't build and ship Windows binaries. This PR adds that support. Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com>
This commit is contained in:
committed by
GitHub
parent
509327da2e
commit
30467e60cf
@@ -8,10 +8,8 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
@@ -120,27 +118,6 @@ func NewController(appConfig *config.Config) *Controller {
|
||||
return &controller
|
||||
}
|
||||
|
||||
func DumpRuntimeParams(log log.Logger) {
|
||||
var rLimit syscall.Rlimit
|
||||
|
||||
evt := log.Info().Int("cpus", runtime.NumCPU()) //nolint: zerologlint
|
||||
|
||||
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
|
||||
if err == nil {
|
||||
evt = evt.Uint64("max. open files", uint64(rLimit.Cur)) //nolint: unconvert // required for *BSD
|
||||
}
|
||||
|
||||
if content, err := os.ReadFile("/proc/sys/net/core/somaxconn"); err == nil {
|
||||
evt = evt.Str("listen backlog", strings.TrimSuffix(string(content), "\n"))
|
||||
}
|
||||
|
||||
if content, err := os.ReadFile("/proc/sys/user/max_inotify_watches"); err == nil {
|
||||
evt = evt.Str("max. inotify watches", strings.TrimSuffix(string(content), "\n"))
|
||||
}
|
||||
|
||||
evt.Msg("runtime params")
|
||||
}
|
||||
|
||||
func (c *Controller) GetPort() int {
|
||||
return c.chosenPort
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
//go:build !windows
|
||||
// +build !windows
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"zotregistry.dev/zot/pkg/log"
|
||||
)
|
||||
|
||||
// DumpRuntimeParams dumps important runtime state such as file and socket limits.
|
||||
func DumpRuntimeParams(log log.Logger) {
|
||||
var rLimit syscall.Rlimit
|
||||
|
||||
evt := log.Info().Int("cpus", runtime.NumCPU()) //nolint: zerologlint
|
||||
|
||||
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
|
||||
if err == nil {
|
||||
evt = evt.Uint64("max. open files", uint64(rLimit.Cur)) //nolint: unconvert // required for *BSD
|
||||
}
|
||||
|
||||
if content, err := os.ReadFile("/proc/sys/net/core/somaxconn"); err == nil {
|
||||
evt = evt.Str("listen backlog", strings.TrimSuffix(string(content), "\n"))
|
||||
}
|
||||
|
||||
if content, err := os.ReadFile("/proc/sys/user/max_inotify_watches"); err == nil {
|
||||
evt = evt.Str("max. inotify watches", strings.TrimSuffix(string(content), "\n"))
|
||||
}
|
||||
|
||||
evt.Msg("runtime params")
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
//go:build windows
|
||||
// +build windows
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"zotregistry.dev/zot/pkg/log"
|
||||
)
|
||||
|
||||
func getCurrentHandleCount() (uint32, error) {
|
||||
kernel32 := syscall.NewLazyDLL("kernel32.dll")
|
||||
|
||||
getProcessHandleCount := kernel32.NewProc("GetProcessHandleCount")
|
||||
getCurrentProcess := kernel32.NewProc("GetCurrentProcess")
|
||||
currentProcess, _, _ := getCurrentProcess.Call()
|
||||
|
||||
var handleCount uint32
|
||||
ret, _, err := getProcessHandleCount.Call(
|
||||
currentProcess,
|
||||
uintptr(unsafe.Pointer(&handleCount)),
|
||||
)
|
||||
|
||||
if ret == 0 {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return handleCount, nil
|
||||
}
|
||||
|
||||
// DumpRuntimeParams dumps important runtime state such as file and socket limits.
|
||||
func DumpRuntimeParams(log log.Logger) {
|
||||
evt := log.Info().Int("cpus", runtime.NumCPU()) //nolint: zerologlint
|
||||
|
||||
nofile, err := getCurrentHandleCount()
|
||||
if err == nil {
|
||||
evt = evt.Uint64("curr. open files", uint64(nofile)) //nolint: unconvert // required for *BSD
|
||||
}
|
||||
|
||||
evt.Msg("runtime params")
|
||||
}
|
||||
Reference in New Issue
Block a user