better linux distro detection + pkg-config env variables

This commit is contained in:
therecipe 2016-10-15 16:28:46 +02:00
parent 371bac8e0a
commit 0aebd065bf
4 changed files with 66 additions and 64 deletions

View file

@ -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)
}

View file

@ -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:")

View file

@ -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"))

View file

@ -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 {