2021-09-03 05:55:51 +10:00
|
|
|
//go:build linux
|
2020-09-15 19:52:54 -05:00
|
|
|
// +build linux
|
|
|
|
|
|
|
|
|
|
package system
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/wailsapp/wails/v2/internal/system/operatingsystem"
|
|
|
|
|
"github.com/wailsapp/wails/v2/internal/system/packagemanager"
|
|
|
|
|
)
|
|
|
|
|
|
2022-07-12 22:29:41 +01:00
|
|
|
func checkGCC() *packagemanager.Dependency {
|
2022-03-16 08:41:34 +11:00
|
|
|
|
|
|
|
|
version := packagemanager.AppVersion("gcc")
|
|
|
|
|
|
2022-07-12 22:29:41 +01:00
|
|
|
return &packagemanager.Dependency{
|
2022-03-16 08:41:34 +11:00
|
|
|
Name: "gcc ",
|
|
|
|
|
PackageName: "N/A",
|
|
|
|
|
Installed: version != "",
|
|
|
|
|
InstallCommand: "Install via your package manager",
|
|
|
|
|
Version: version,
|
|
|
|
|
Optional: false,
|
|
|
|
|
External: false,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-12 22:29:41 +01:00
|
|
|
func checkPkgConfig() *packagemanager.Dependency {
|
2022-03-16 08:41:34 +11:00
|
|
|
|
|
|
|
|
version := packagemanager.AppVersion("pkg-config")
|
|
|
|
|
|
2022-07-12 22:29:41 +01:00
|
|
|
return &packagemanager.Dependency{
|
2022-03-16 08:41:34 +11:00
|
|
|
Name: "pkg-config ",
|
|
|
|
|
PackageName: "N/A",
|
|
|
|
|
Installed: version != "",
|
|
|
|
|
InstallCommand: "Install via your package manager",
|
|
|
|
|
Version: version,
|
|
|
|
|
Optional: false,
|
|
|
|
|
External: false,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-12 22:29:41 +01:00
|
|
|
func checkLocallyInstalled(checker func() *packagemanager.Dependency, dependency *packagemanager.Dependency) {
|
2022-03-15 20:25:23 +11:00
|
|
|
if !dependency.Installed {
|
|
|
|
|
locallyInstalled := checker()
|
|
|
|
|
if locallyInstalled.Installed {
|
|
|
|
|
dependency.Installed = true
|
|
|
|
|
dependency.Version = locallyInstalled.Version
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-12 22:29:41 +01:00
|
|
|
var checkerFunctions = map[string]func() *packagemanager.Dependency{
|
2023-04-12 05:11:37 +08:00
|
|
|
"Nodejs": checkNodejs,
|
2022-03-15 20:25:23 +11:00
|
|
|
"npm": checkNPM,
|
|
|
|
|
"docker": checkDocker,
|
|
|
|
|
"upx": checkUPX,
|
|
|
|
|
"gcc": checkGCC,
|
|
|
|
|
"pkg-config": checkPkgConfig,
|
|
|
|
|
"libgtk-3": checkLibrary("libgtk-3"),
|
|
|
|
|
"libwebkit": checkLibrary("libwebkit"),
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-15 19:52:54 -05:00
|
|
|
func (i *Info) discover() error {
|
|
|
|
|
|
|
|
|
|
var err error
|
|
|
|
|
osinfo, err := operatingsystem.Info()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
i.OS = osinfo
|
|
|
|
|
|
|
|
|
|
i.PM = packagemanager.Find(osinfo.ID)
|
|
|
|
|
if i.PM != nil {
|
2022-07-12 22:29:41 +01:00
|
|
|
dependencies, err := packagemanager.Dependencies(i.PM)
|
2020-09-15 19:52:54 -05:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2022-02-23 07:11:27 +11:00
|
|
|
for _, dep := range dependencies {
|
2022-03-15 20:25:23 +11:00
|
|
|
checker := checkerFunctions[dep.Name]
|
|
|
|
|
if checker != nil {
|
|
|
|
|
checkLocallyInstalled(checker, dep)
|
2022-02-23 07:11:27 +11:00
|
|
|
}
|
2022-03-02 09:44:31 +01:00
|
|
|
if dep.Name == "nsis" {
|
|
|
|
|
locallyInstalled := checkNSIS()
|
|
|
|
|
if locallyInstalled.Installed {
|
|
|
|
|
dep.Installed = true
|
|
|
|
|
dep.Version = locallyInstalled.Version
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-02-23 07:11:27 +11:00
|
|
|
}
|
2020-09-15 19:52:54 -05:00
|
|
|
i.Dependencies = dependencies
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|