cutego/internal/utils/linux.go

133 lines
2.8 KiB
Go

package utils
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
)
func QT_PKG_CONFIG() bool {
return os.Getenv("QT_PKG_CONFIG") == "true"
}
func QT_DOC_DIR() string {
if dir, ok := os.LookupEnv("QT_DOC_DIR"); ok {
return filepath.Clean(dir)
}
switch QT_DISTRO() {
case "arch":
return "/usr/share/doc/qt"
case "fedora":
return "/usr/share/doc/qt5"
case "suse":
return "/usr/share/doc/packages/qt5"
case "ubuntu":
return "/usr/share/qt5/doc"
case "gentoo":
return "/usr/share/doc/qt-" + QT_VERSION()
case "darwin":
return ""
case "freebsd":
return "/usr/local/share/doc/qt5"
default:
Log.Error("failed to detect the Linux distro")
return ""
}
}
func QT_MISC_DIR() string {
if dir, ok := os.LookupEnv("QT_MISC_DIR"); ok {
return filepath.Clean(dir)
}
if QT_DISTRO() == "arch" {
return filepath.Join(strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--variable=libdir", "Qt5Core"), "utils.PKG_CONFIG_libDir")), "qt")
}
//fedora, suse, ubuntu, gentoo, darwin
return strings.TrimSuffix(strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--variable=host_bins", "Qt5Core"), "utils.PKG_CONFIG_hostBins")), "/bin")
}
func QT_DISTRO() string {
if distro, ok := os.LookupEnv("QT_DISTRO"); ok {
return distro
}
if runtime.GOOS == "darwin" || runtime.GOOS == "freebsd" {
return runtime.GOOS
}
if _, err := exec.LookPath("pacman"); err == nil {
return "arch"
}
if _, err := exec.LookPath("yum"); err == nil {
return "fedora"
}
if _, err := exec.LookPath("zypper"); err == nil {
return "suse"
}
if _, err := exec.LookPath("apt-get"); err == nil {
return "ubuntu"
}
if _, err := exec.LookPath("emerge"); err == nil {
return "gentoo"
}
Log.Error("failed to detect the Linux distro")
return ""
}
func QT_MXE_ARCH() string {
if arch := os.Getenv("QT_MXE_ARCH"); arch == "amd64" {
return arch
}
return "386"
}
func QT_MXE_STATIC() bool {
return os.Getenv("QT_MXE_STATIC") == "true"
}
func QT_MXE_TRIPLET() string {
prefix := "i686"
if QT_MXE_ARCH() == "amd64" {
prefix = "x86_64"
}
suffix := "shared"
if QT_MXE_STATIC() {
suffix = "static"
}
return fmt.Sprintf("%v-w64-mingw32.%v", prefix, suffix)
}
func QT_MXE_DIR() string {
if dir, ok := os.LookupEnv("QT_MXE_DIR"); ok {
return filepath.Clean(dir)
}
return filepath.Join("/usr", "lib", "mxe")
}
func QT_MXE_BIN(tool string) string {
return filepath.Join(QT_MXE_DIR(), "usr", "bin", fmt.Sprintf("%v-%v", QT_MXE_TRIPLET(), tool))
}
func QT_MXE() bool {
return os.Getenv("QT_MXE") == "true"
}
func QT_UBPORTS() bool {
return os.Getenv("QT_UBPORTS") == "true"
}
func QT_UBPORTS_ARCH() string {
if arch := os.Getenv("QT_UBPORTS_ARCH"); arch == "amd64" {
return arch
}
return "arm"
}
func QT_UBPORTS_VERSION() string {
if rel := os.Getenv("QT_UBPORTS_VERSION"); rel == "xenial" {
return rel
}
return "vivid"
}