windows build compatability
This commit is contained in:
parent
048bbc1e3e
commit
358cd7147b
3 changed files with 137 additions and 29 deletions
78
spitfire/checks.go
Normal file
78
spitfire/checks.go
Normal file
|
@ -0,0 +1,78 @@
|
|||
package spitfire
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
// CheckSystemDependencies ensures that required tools for building are installed.
|
||||
func CheckSystemDependencies() error {
|
||||
requiredTools := map[string]string{
|
||||
"git": "https://git-scm.com/download/win", // Git
|
||||
"python": "https://www.python.org/downloads/", // Python
|
||||
"pip3": "https://pip.pypa.io/en/stable/installing/", // Pip3
|
||||
}
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
// Check for MozillaBuild installation
|
||||
mozBuildPath := os.Getenv("MOZILLABUILD")
|
||||
if mozBuildPath == "" {
|
||||
mozBuildPath = "C:\\mozilla-build" // Default to standard MozillaBuild path
|
||||
}
|
||||
|
||||
// Check if MozillaBuild exists at the specified location
|
||||
if !dirExists(mozBuildPath) {
|
||||
requiredTools["mozbuild"] = "https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe"
|
||||
}
|
||||
}
|
||||
|
||||
missingTools := []string{}
|
||||
|
||||
// Check for each required tool
|
||||
for tool, downloadLink := range requiredTools {
|
||||
if !isCommandAvailable(tool) {
|
||||
missingTools = append(missingTools, fmt.Sprintf("%s (Download: %s)", tool, downloadLink))
|
||||
}
|
||||
}
|
||||
|
||||
// Special check for mach in the local source directory (mozilla-central)
|
||||
machPath := filepath.Join("mozilla-central", "mach")
|
||||
if !fileExists(machPath) {
|
||||
missingTools = append(missingTools, fmt.Sprintf("mach (run from mozilla-central directory)"))
|
||||
}
|
||||
|
||||
if len(missingTools) > 0 {
|
||||
fmt.Println("The following tools are missing and are required for the build:")
|
||||
for _, tool := range missingTools {
|
||||
fmt.Println(" - " + tool)
|
||||
}
|
||||
return fmt.Errorf("missing required tools")
|
||||
}
|
||||
|
||||
fmt.Println("All required system dependencies are installed.")
|
||||
return nil
|
||||
}
|
||||
|
||||
// isCommandAvailable checks if a command/tool is available on the system.
|
||||
func isCommandAvailable(command string) bool {
|
||||
_, err := exec.LookPath(command)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// fileExists checks if a file exists at the given path.
|
||||
func fileExists(path string) bool {
|
||||
_, err := os.Stat(path)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// dirExists checks if a directory exists at the given path.
|
||||
func dirExists(path string) bool {
|
||||
info, err := os.Stat(path)
|
||||
if os.IsNotExist(err) {
|
||||
return false
|
||||
}
|
||||
return info.IsDir()
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue