fix recursive bug in qtmoc + remove std installation in qtsetup

This commit is contained in:
therecipe 2016-12-15 19:44:58 +01:00
parent 5751299dd5
commit 8dbcd7aecc
3 changed files with 39 additions and 22 deletions

View file

@ -24,29 +24,19 @@ func install(buildTarget string) {
var env, tagFlags = getEnvAndTagflags(buildTarget)
if buildTarget != "desktop" || (runtime.GOOS == "windows" && buildTarget == "desktop") {
if buildTarget == "sailfish" {
var _, err = ioutil.ReadDir(filepath.Join(runtime.GOROOT(), "bin", "linux_386"))
if err != nil {
var build = exec.Command(filepath.Join(runtime.GOROOT(), "src", func() string {
if runtime.GOOS == "windows" {
return "run.bat"
}
return "run.bash"
}()))
for key, value := range env {
build.Env = append(build.Env, fmt.Sprintf("%v=%v", key, value))
if buildTarget == "sailfish" {
var _, err = ioutil.ReadDir(filepath.Join(runtime.GOROOT(), "bin", "linux_386"))
if err != nil {
var build = exec.Command(filepath.Join(runtime.GOROOT(), "src", func() string {
if runtime.GOOS == "windows" {
return "run.bat"
}
build.Run()
return "run.bash"
}()))
for key, value := range env {
build.Env = append(build.Env, fmt.Sprintf("%v=%v", key, value))
}
}
utils.RunCmd(installPkgCmd(buildTarget, tagFlags, "std", env), "install.std")
//also install armv7 std
if buildTarget == "ios" {
var cmd = installPkgCmd(buildTarget, tagFlags, "std", env)
cmd.Env = append(strings.Split(strings.Replace(strings.Replace(strings.Join(cmd.Env, "|"), "-arch arm64", "-arch armv7", -1), "arm64", "arm", -1), "|"), "GOARM=7")
utils.RunCmd(cmd, "install.std")
build.Run()
}
}

View file

@ -74,6 +74,33 @@ func (c *Class) GetAllBases() []string {
return input
}
func (c *Class) GetAllBasesRecursiveCheckFailed(i int) ([]string, bool) {
var input = make([]string, 0)
i++
if i > 100 {
return input, true
}
for _, b := range c.GetBases() {
var bc, exists = CurrentState.ClassMap[b]
if !exists {
continue
}
input = append(input, b)
var bs, isRecursive = bc.GetAllBasesRecursiveCheckFailed(i)
if isRecursive {
return input, true
}
for _, sbc := range bs {
input = append(input, sbc)
}
}
return input, false
}
func (c *Class) IsSubClassOfQObject() bool {
return c.IsSubClassOf("QObject")
}

View file

@ -57,7 +57,7 @@ func cacheModules() (err error) {
// return how many moc classes are in module, delete those that are not
func (m *appMoc) cleanupClassMap() (size int) {
for _, class := range m.module.Namespace.Classes {
if !class.IsSubClassOfQObject() {
if _, failed := class.GetAllBasesRecursiveCheckFailed(0); failed || !class.IsSubClassOfQObject() {
delete(parser.CurrentState.ClassMap, class.Name)
} else {
size++