mirror of
https://github.com/bluszcz/cutego.git
synced 2024-09-28 21:25:16 +03:00
better linux distro detection + pkg-config env variables
This commit is contained in:
parent
371bac8e0a
commit
0aebd065bf
4 changed files with 66 additions and 64 deletions
|
@ -49,27 +49,7 @@ func GetModule(s string) *Module {
|
|||
|
||||
var m = new(Module)
|
||||
if utils.UsePkgConfig() {
|
||||
switch utils.LinuxDistro() {
|
||||
case "arch":
|
||||
{
|
||||
xml.Unmarshal([]byte(utils.Load(filepath.Join("/usr", "share", "doc", "qt", fmt.Sprintf("qt%v", s), fmt.Sprintf("qt%v.index", s)))), &m)
|
||||
}
|
||||
|
||||
case "fedora":
|
||||
{
|
||||
xml.Unmarshal([]byte(utils.Load(filepath.Join("/usr", "share", "doc", "qt5", fmt.Sprintf("qt%v", s), fmt.Sprintf("qt%v.index", s)))), &m)
|
||||
}
|
||||
|
||||
case "suse":
|
||||
{
|
||||
xml.Unmarshal([]byte(utils.Load(filepath.Join("/usr", "share", "doc", "packages", "qt5", fmt.Sprintf("qt%v", s), fmt.Sprintf("qt%v.index", s)))), &m)
|
||||
}
|
||||
|
||||
case "ubuntu":
|
||||
{
|
||||
xml.Unmarshal([]byte(utils.Load(filepath.Join("/usr", "share", "qt5", "doc", fmt.Sprintf("qt%v", s), fmt.Sprintf("qt%v.index", s)))), &m)
|
||||
}
|
||||
}
|
||||
xml.Unmarshal([]byte(utils.Load(filepath.Join(utils.QT_DOC_DIR(), fmt.Sprintf("qt%v", s), fmt.Sprintf("qt%v.index", s)))), &m)
|
||||
} else {
|
||||
xml.Unmarshal([]byte(utils.Load(filepath.Join(utils.QT_DIR(), "Docs", "Qt-5.7", fmt.Sprintf("qt%v", s), fmt.Sprintf("qt%v.index", s)))), &m)
|
||||
}
|
||||
|
|
|
@ -249,21 +249,9 @@ func cgoLinuxPkgConfig(module string) {
|
|||
var (
|
||||
includeDir = strings.TrimSpace(utils.RunCmd(exec.Command("pkg-config", "--variable=includedir", "Qt5Core"), "cgo.LinuxPkgConfig_includeDir"))
|
||||
libDir = strings.TrimSpace(utils.RunCmd(exec.Command("pkg-config", "--variable=libdir", "Qt5Core"), "cgo.LinuxPkgConfig_libDir"))
|
||||
miscDir string
|
||||
miscDir = utils.QT_MISC_DIR()
|
||||
)
|
||||
|
||||
switch utils.LinuxDistro() {
|
||||
case "arch":
|
||||
{
|
||||
miscDir = filepath.Join(libDir, "qt")
|
||||
}
|
||||
|
||||
case "fedora", "suse", "ubuntu":
|
||||
{
|
||||
miscDir = strings.TrimSuffix(strings.TrimSpace(utils.RunCmd(exec.Command("pkg-config", "--variable=host_bins", "Qt5Core"), "cgo.LinuxPkgConfig_hostBins")), "/bin")
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprintf(bb, "#cgo CXXFLAGS: -I%v -I%v/mkspecs/linux-g++\n", includeDir, miscDir)
|
||||
|
||||
fmt.Fprint(bb, "#cgo CXXFLAGS:")
|
||||
|
|
|
@ -113,7 +113,7 @@ func args() {
|
|||
|
||||
default:
|
||||
{
|
||||
fmt.Println("usage:", "qtdeploy", "[ build | run | test ]", "[ desktop | android | ios | ios-simulator | sailfish | sailfish-emulator | rpi1 | rpi2 | rpi3 ]", fmt.Sprintf("[ %v ]", filepath.Join("path", "to", "project")), "[ minimal ]")
|
||||
fmt.Println("usage:", "qtdeploy", "[ build | run | test ]", "[ desktop | android | ios | ios-simulator | sailfish | sailfish-emulator | rpi1 | rpi2 | rpi3 ]", fmt.Sprintf("[ %v ]", filepath.Join("path", "to", "project")))
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ func args() {
|
|||
|
||||
default:
|
||||
{
|
||||
fmt.Println("usage:", "qtdeploy", "[ build | run | test ]", "[ desktop | android | ios | ios-simulator | sailfish | sailfish-emulator | rpi1 | rpi2 | rpi3 ]", fmt.Sprintf("[ %v ]", filepath.Join("path", "to", "project")), "[ minimal ]")
|
||||
fmt.Println("usage:", "qtdeploy", "[ build | run | test ]", "[ desktop | android | ios | ios-simulator | sailfish | sailfish-emulator | rpi1 | rpi2 | rpi3 ]", fmt.Sprintf("[ %v ]", filepath.Join("path", "to", "project")))
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
@ -1085,24 +1085,10 @@ func linuxSH() string {
|
|||
}
|
||||
|
||||
if utils.UsePkgConfig() {
|
||||
|
||||
var (
|
||||
libDir = strings.TrimSpace(utils.RunCmd(exec.Command("pkg-config", "--variable=libdir", "Qt5Core"), "linux.sh_libDir"))
|
||||
miscDir string
|
||||
miscDir = utils.QT_MISC_DIR()
|
||||
)
|
||||
|
||||
switch utils.LinuxDistro() {
|
||||
case "arch":
|
||||
{
|
||||
miscDir = filepath.Join(libDir, "qt")
|
||||
}
|
||||
|
||||
case "fedora", "suse", "ubuntu":
|
||||
{
|
||||
miscDir = strings.TrimSuffix(strings.TrimSpace(utils.RunCmd(exec.Command("pkg-config", "--variable=host_bins", "Qt5Core"), "cgo.LinuxPkgConfig_hostBins")), "/bin")
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprintf(bb, "export LD_LIBRARY_PATH=%v\n", libDir)
|
||||
fmt.Fprintf(bb, "export QT_PLUGIN_PATH=$%v\n", filepath.Join(miscDir, "plugins"))
|
||||
fmt.Fprintf(bb, "export QML_IMPORT_PATH=%v\n", filepath.Join(miscDir, "qml"))
|
||||
|
|
|
@ -207,37 +207,85 @@ func UsePkgConfig() bool {
|
|||
return strings.ToLower(os.Getenv("QT_PKG_CONFIG")) == "true"
|
||||
}
|
||||
|
||||
func LinuxDistro() string {
|
||||
switch out, _ := exec.Command("uname", "-a").Output(); {
|
||||
case strings.Contains(strings.ToLower(string(out)), "-arch "):
|
||||
func QT_DOC_DIR() string {
|
||||
if dir := os.Getenv("QT_DOC_DIR"); dir != "" {
|
||||
return filepath.Clean(dir)
|
||||
}
|
||||
|
||||
switch LinuxDistro() {
|
||||
case "arch":
|
||||
{
|
||||
return "arch"
|
||||
return filepath.Join("/usr", "share", "doc", "qt")
|
||||
}
|
||||
|
||||
case strings.Contains(strings.ToLower(string(out)), ".fc2"):
|
||||
case "fedora":
|
||||
{
|
||||
return "fedora"
|
||||
return filepath.Join("/usr", "share", "doc", "qt5")
|
||||
}
|
||||
|
||||
case strings.Contains(strings.ToLower(string(out)), ".suse "):
|
||||
case "suse":
|
||||
{
|
||||
return "suse"
|
||||
return filepath.Join("/usr", "share", "doc", "packages", "qt5")
|
||||
}
|
||||
|
||||
case strings.Contains(strings.ToLower(string(out)), "-ubuntu "):
|
||||
case "ubuntu":
|
||||
{
|
||||
return "ubuntu"
|
||||
return filepath.Join("/usr", "share", "qt5", "doc")
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
fmt.Println("couldn't detect distro:", string(out))
|
||||
os.Exit(1)
|
||||
return "undefined"
|
||||
return ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func QT_MISC_DIR() string {
|
||||
if dir := os.Getenv("QT_MISC_DIR"); dir != "" {
|
||||
return filepath.Clean(dir)
|
||||
}
|
||||
|
||||
switch LinuxDistro() {
|
||||
case "arch":
|
||||
{
|
||||
return filepath.Join(strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--variable=libdir", "Qt5Core"), "cgo.LinuxPkgConfig_libDir")), "qt")
|
||||
}
|
||||
|
||||
case "fedora", "suse", "ubuntu":
|
||||
{
|
||||
return strings.TrimSuffix(strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--variable=host_bins", "Qt5Core"), "cgo.LinuxPkgConfig_hostBins")), "/bin")
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func LinuxDistro() string {
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
fmt.Println("couldn't detect distro")
|
||||
os.Exit(1)
|
||||
return ""
|
||||
}
|
||||
|
||||
func RunCmd(cmd *exec.Cmd, name string) string {
|
||||
var out, err = cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue