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  }