github.com/containers/podman/v4@v4.9.4/pkg/machine/qemu/claim_darwin.go (about) 1 package qemu 2 3 import ( 4 "fmt" 5 "io" 6 "net" 7 "os" 8 "os/user" 9 "path/filepath" 10 "time" 11 ) 12 13 func dockerClaimSupported() bool { 14 return true 15 } 16 17 func dockerClaimHelperInstalled() bool { 18 u, err := user.Current() 19 if err != nil { 20 return false 21 } 22 23 labelName := fmt.Sprintf("com.github.containers.podman.helper-%s", u.Username) 24 fileName := filepath.Join("/Library", "LaunchDaemons", labelName+".plist") 25 info, err := os.Stat(fileName) 26 return err == nil && info.Mode().IsRegular() 27 } 28 29 func claimDockerSock() bool { 30 u, err := user.Current() 31 if err != nil { 32 return false 33 } 34 35 helperSock := fmt.Sprintf("/var/run/podman-helper-%s.socket", u.Username) 36 con, err := net.DialTimeout("unix", helperSock, time.Second*5) 37 if err != nil { 38 return false 39 } 40 _ = con.SetWriteDeadline(time.Now().Add(time.Second * 5)) 41 _, err = fmt.Fprintln(con, "GO") 42 if err != nil { 43 return false 44 } 45 _ = con.SetReadDeadline(time.Now().Add(time.Second * 5)) 46 read, err := io.ReadAll(con) 47 48 return err == nil && string(read) == "OK" 49 } 50 51 func findClaimHelper() string { 52 exe, err := os.Executable() 53 if err != nil { 54 return "" 55 } 56 57 exe, err = filepath.EvalSymlinks(exe) 58 if err != nil { 59 return "" 60 } 61 62 return filepath.Join(filepath.Dir(exe), "podman-mac-helper") 63 }