github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/internal/system/system_linux.go (about) 1 //go:build linux 2 // +build linux 3 4 package system 5 6 import ( 7 "github.com/AlpineAIO/wails/v2/internal/system/operatingsystem" 8 "github.com/AlpineAIO/wails/v2/internal/system/packagemanager" 9 ) 10 11 func checkGCC() *packagemanager.Dependency { 12 13 version := packagemanager.AppVersion("gcc") 14 15 return &packagemanager.Dependency{ 16 Name: "gcc ", 17 PackageName: "N/A", 18 Installed: version != "", 19 InstallCommand: "Install via your package manager", 20 Version: version, 21 Optional: false, 22 External: false, 23 } 24 } 25 26 func checkPkgConfig() *packagemanager.Dependency { 27 28 version := packagemanager.AppVersion("pkg-config") 29 30 return &packagemanager.Dependency{ 31 Name: "pkg-config ", 32 PackageName: "N/A", 33 Installed: version != "", 34 InstallCommand: "Install via your package manager", 35 Version: version, 36 Optional: false, 37 External: false, 38 } 39 } 40 41 func checkLocallyInstalled(checker func() *packagemanager.Dependency, dependency *packagemanager.Dependency) { 42 if !dependency.Installed { 43 locallyInstalled := checker() 44 if locallyInstalled.Installed { 45 dependency.Installed = true 46 dependency.Version = locallyInstalled.Version 47 } 48 } 49 } 50 51 var checkerFunctions = map[string]func() *packagemanager.Dependency{ 52 "Nodejs": checkNodejs, 53 "npm": checkNPM, 54 "docker": checkDocker, 55 "upx": checkUPX, 56 "gcc": checkGCC, 57 "pkg-config": checkPkgConfig, 58 "libgtk-3": checkLibrary("libgtk-3"), 59 "libwebkit": checkLibrary("libwebkit"), 60 } 61 62 func (i *Info) discover() error { 63 64 var err error 65 osinfo, err := operatingsystem.Info() 66 if err != nil { 67 return err 68 } 69 i.OS = osinfo 70 71 i.PM = packagemanager.Find(osinfo.ID) 72 if i.PM != nil { 73 dependencies, err := packagemanager.Dependencies(i.PM) 74 if err != nil { 75 return err 76 } 77 for _, dep := range dependencies { 78 checker := checkerFunctions[dep.Name] 79 if checker != nil { 80 checkLocallyInstalled(checker, dep) 81 } 82 if dep.Name == "nsis" { 83 locallyInstalled := checkNSIS() 84 if locallyInstalled.Installed { 85 dep.Installed = true 86 dep.Version = locallyInstalled.Version 87 } 88 } 89 } 90 i.Dependencies = dependencies 91 } 92 93 return nil 94 }