diff options
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | plugin.go | 75 |
2 files changed, 38 insertions, 41 deletions
@@ -1,10 +1,12 @@ -all: +all: goimports vet @echo @echo This is the core gui package 'go.wit.com/gui/gui' @echo @echo It creates a binary tree of widgets @echo The widgets are things like Windows, Buttons, Labels, etc @echo + +vet: @GO111MODULE=off go vet @echo go vet: this go library package builds okay @@ -9,6 +9,7 @@ import ( "embed" "errors" "os" + "path/filepath" "plugin" "go.wit.com/log" @@ -126,76 +127,70 @@ func searchPaths(name string) *aplug { var err error // first try to load the embedded plugin file - filename = "resources/" + name + ".so" - pfile, err = me.resFS.ReadFile(filename) + // always try this first as it should have been + // tested by whomever compiled your binary + // todo: fix this so it does not have to be written to /tmp/ + resname := filepath.Join("resources/", name+".so") + pfile, err = me.resFS.ReadFile(resname) if err == nil { - filename = "/tmp/" + name + ".so" + tmpname := filepath.Join("/tmp/", name+".so") log.Log(WARN, "searchPaths() using toolkit embedded in executable") - log.Log(WARN, "searchPaths() resource file", name, filename, len(pfile)) - f, _ := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + log.Log(WARN, "searchPaths() resource file", tmpname, resname, len(pfile)) + f, _ := os.OpenFile(tmpname, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) f.Write(pfile) f.Close() - p := initToolkit(name, filename) + p := initToolkit(name, tmpname) if p != nil { + log.Log(NOW, "gui.Init() loaded", resname, "ok!") return p } } else { - log.Log(INFO, "searchPaths()", filename, "was not embedded in the binary") + log.Log(INFO, "searchPaths()", resname, "was not embedded in the binary") } // attempt to write out the file from the internal resource + // is this the same as above. todo: sort this out. filename = "resources/" + name + ".so" p := initToolkit(name, filename) if p != nil { + log.Log(NOW, "gui.Init() loaded", filename, "ok!") return p } + // first check the user's home dir homeDir, err := os.UserHomeDir() if err != nil { - log.Error(err, "os.UserHomeDir() error. giving up") - return nil - } - - filename = homeDir + "/go/src/go.wit.com/toolkits/" + name + ".so" - p = initToolkit(name, filename) - if p != nil { - return p - } - - filename = homeDir + "/go/src/go.wit.com/toolkits/" + name + "/" + name + ".so" - p = initToolkit(name, filename) - if p != nil { - return p - } - - // this is the "default" location when built with the autotypist - filename = homeDir + "/go/lib/" + name + ".so" - p = initToolkit(name, filename) - if p != nil { - return p - } + log.Error(err, "os.UserHomeDir() error", err) + } else { + // first look in the toolkit build directory + filename = homeDir + "/go/src/go.wit.com/toolkits/" + name + "/" + name + ".so" + p = initToolkit(name, filename) + if p != nil { + log.Log(NOW, "gui.Init() loaded", filename, "ok!") + return p + } - filename = homeDir + "/go/lib/toolkits/" + name + ".so" - p = initToolkit(name, filename) - if p != nil { - return p + // this is the "default" location when built and installed locally + filename = homeDir + "/go/lib/go-gui/" + name + ".so" + p = initToolkit(name, filename) + if p != nil { + log.Log(NOW, "gui.Init() loaded", filename, "ok!") + return p + } } + // fall back to the system packages filename = "/usr/lib/go-gui/" + name + ".so" p = initToolkit(name, filename) if p != nil { + log.Log(NOW, "gui.Init() loaded", filename, "ok!") return p } - filename = "/usr/lib/go-gui/latest/" + name + ".so" - p = initToolkit(name, filename) - if p != nil { - return p - } - - filename = "/usr/local/lib/gui/toolkits/" + name + ".so" + filename = "/usr/local/lib/go-gui/" + name + ".so" p = initToolkit(name, filename) if p != nil { + log.Log(NOW, "gui.Init() loaded", filename, "ok!") return p } return nil |
