mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-31 16:13:45 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // +build !windows
 | |
| 
 | |
| package appdefaults
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| const (
 | |
| 	Address   = "unix:///run/buildkit/buildkitd.sock"
 | |
| 	Root      = "/var/lib/buildkit"
 | |
| 	ConfigDir = "/etc/buildkit"
 | |
| )
 | |
| 
 | |
| // UserAddress typically returns /run/user/$UID/buildkit/buildkitd.sock
 | |
| func UserAddress() string {
 | |
| 	//  pam_systemd sets XDG_RUNTIME_DIR but not other dirs.
 | |
| 	xdgRuntimeDir := os.Getenv("XDG_RUNTIME_DIR")
 | |
| 	if xdgRuntimeDir != "" {
 | |
| 		dirs := strings.Split(xdgRuntimeDir, ":")
 | |
| 		return "unix://" + filepath.Join(dirs[0], "buildkit", "buildkitd.sock")
 | |
| 	}
 | |
| 	return Address
 | |
| }
 | |
| 
 | |
| // EnsureUserAddressDir sets sticky bit on XDG_RUNTIME_DIR if XDG_RUNTIME_DIR is set.
 | |
| // See https://github.com/opencontainers/runc/issues/1694
 | |
| func EnsureUserAddressDir() error {
 | |
| 	xdgRuntimeDir := os.Getenv("XDG_RUNTIME_DIR")
 | |
| 	if xdgRuntimeDir != "" {
 | |
| 		dirs := strings.Split(xdgRuntimeDir, ":")
 | |
| 		dir := filepath.Join(dirs[0], "buildkit")
 | |
| 		if err := os.MkdirAll(dir, 0700); err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		return os.Chmod(dir, 0700|os.ModeSticky)
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // UserRoot typically returns /home/$USER/.local/share/buildkit
 | |
| func UserRoot() string {
 | |
| 	//  pam_systemd sets XDG_RUNTIME_DIR but not other dirs.
 | |
| 	xdgDataHome := os.Getenv("XDG_DATA_HOME")
 | |
| 	if xdgDataHome != "" {
 | |
| 		dirs := strings.Split(xdgDataHome, ":")
 | |
| 		return filepath.Join(dirs[0], "buildkit")
 | |
| 	}
 | |
| 	home := os.Getenv("HOME")
 | |
| 	if home != "" {
 | |
| 		return filepath.Join(home, ".local", "share", "buildkit")
 | |
| 	}
 | |
| 	return Root
 | |
| }
 | |
| 
 | |
| // UserConfigDir returns dir for storing config. /home/$USER/.config/buildkit/
 | |
| func UserConfigDir() string {
 | |
| 	xdgConfigHome := os.Getenv("XDG_CONFIG_HOME")
 | |
| 	if xdgConfigHome != "" {
 | |
| 		return filepath.Join(xdgConfigHome, "buildkit")
 | |
| 	}
 | |
| 	home := os.Getenv("HOME")
 | |
| 	if home != "" {
 | |
| 		return filepath.Join(home, ".config", "buildkit")
 | |
| 	}
 | |
| 	return ConfigDir
 | |
| }
 | 
