mirror of
https://github.com/bluszcz/cutego.git
synced 2024-09-28 13:15:17 +03:00
various fixes for wasm, raspberry, go 1.12 and minor issues + initial support for Felgo (former V-Play)
* js/wasm GOCACHE fix for Go 1.12+ * make use of the official Go 1.12 wasm build and replace js.NewCallback with js.FuncOf * update docker images to Go 1.12.4 * revive raspberry images * fix raspberry related bundling issue * add the multimedia module to the raspberry images * fix raspberry related QT_API issue * remove unecessary *char to []byte copy overhead in some unlikely cases * fix Qt install script * initial partially support for Felgo (former V-Play) on darwin * fix charts/audio example and darwin * fix common/widgets_demo example on iOS (issue #451) * fix widgets/renderer memory leak * fix possible QT_PKG_CONFIG + QT_VERSION race condition * fix static linux docker image
This commit is contained in:
parent
18d257176d
commit
47435cc1dd
87 changed files with 317 additions and 196 deletions
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtAndroidExtras_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtAndroidExtras_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtBluetooth_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtBluetooth_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtCharts_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtCharts_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -129,9 +129,5 @@ func main() {
|
|||
fast = false
|
||||
}
|
||||
|
||||
if target == "js" || target == "wasm" { //TODO: remove for module support + resolve dependencies
|
||||
os.Setenv("GOCACHE", "off")
|
||||
}
|
||||
|
||||
deploy.Deploy(mode, target, path, docker, ldFlags, tags, fast, device, vagrant, vagrant_system, comply)
|
||||
}
|
||||
|
|
|
@ -89,10 +89,6 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
if target == "js" || target == "wasm" { //TODO: remove for module support + resolve dependencies
|
||||
os.Setenv("GOCACHE", "off")
|
||||
}
|
||||
|
||||
switch {
|
||||
case docker:
|
||||
cmd.Docker([]string{"qtminimal", "-debug", "-tags=" + tags}, target, path, false)
|
||||
|
|
|
@ -95,10 +95,6 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
if target == "js" || target == "wasm" { //TODO: remove for module support + resolve dependencies
|
||||
os.Setenv("GOCACHE", "off")
|
||||
}
|
||||
|
||||
switch {
|
||||
case docker:
|
||||
cmd.Docker([]string{"qtmoc", "-debug", "-tags=" + tags}, target, path, false)
|
||||
|
|
|
@ -98,10 +98,6 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
if target == "js" || target == "wasm" { //TODO: remove for module support + resolve dependencies
|
||||
os.Setenv("GOCACHE", "off")
|
||||
}
|
||||
|
||||
switch {
|
||||
case docker:
|
||||
cmd.Docker([]string{"qtrcc", "-debug"}, target, path, false)
|
||||
|
|
|
@ -92,10 +92,6 @@ func main() {
|
|||
os.Setenv("QT_DYNAMIC_SETUP", "true")
|
||||
}
|
||||
|
||||
if target == "js" || target == "wasm" { //TODO: remove for module support + resolve dependencies
|
||||
os.Setenv("GOCACHE", "off")
|
||||
}
|
||||
|
||||
switch mode {
|
||||
case "prep":
|
||||
setup.Prep()
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtCore_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtCore_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtDataVisualization_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtDataVisualization_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtDBus_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtDBus_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtDesigner_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtDesigner_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -22,7 +22,8 @@ func cGoUnpackString(s C.struct_QtGamepad_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtGamepad_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtGui_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtGui_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtHelp_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtHelp_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -230,9 +230,7 @@ func IsPrivateSignal(f *parser.Function) bool {
|
|||
switch runtime.GOOS {
|
||||
case "darwin":
|
||||
{
|
||||
if utils.QT_HOMEBREW() || utils.QT_MACPORTS() {
|
||||
fData = utils.LoadOptional(filepath.Join(utils.QT_DARWIN_DIR(), "lib", fmt.Sprintf("%v.framework", strings.Title(parser.State.ClassMap[f.ClassName()].DocModule)), "Versions", "5", "Headers", fPath))
|
||||
} else if utils.QT_NIX() {
|
||||
if utils.QT_NIX() {
|
||||
for _, qmakepath := range strings.Split(os.Getenv("QMAKEPATH"), string(filepath.ListSeparator)) {
|
||||
if strings.Contains(qmakepath, "qtbase") {
|
||||
fData = utils.Load(filepath.Join(qmakepath, "include", strings.Title(parser.State.ClassMap[f.ClassName()].DocModule), fPath))
|
||||
|
|
|
@ -294,13 +294,6 @@ func (f *Function) IsSupported() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
//https://github.com/therecipe/qt/issues/451
|
||||
if strings.Contains(State.Target, "ios") &&
|
||||
(f.Fullname == "QLayoutItem::widget" || (strings.Contains(f.ClassName(), "Layout") && (f.Name == "itemAt" || f.Name == "geometry"))) {
|
||||
f.Access = "unsupported_isBlockedFunction"
|
||||
return false
|
||||
}
|
||||
|
||||
switch {
|
||||
case
|
||||
f.Fullname == "QOcspResponse::certificateStatus", f.Fullname == "QOcspResponse::revocationReason",
|
||||
|
|
|
@ -325,7 +325,7 @@ func IsWhiteListedJsLib(name string) bool {
|
|||
|
||||
func IsWhiteListedRaspberryLib(name string) bool {
|
||||
switch name {
|
||||
case "Core", "Gui", "Widgets", "PrintSupport", "Sql", "Qml", "Quick", "QuickControls2", "Svg", "SerialPort":
|
||||
case "Core", "Gui", "Widgets", "PrintSupport", "Sql", "Qml", "Quick", "QuickControls2", "Svg", "SerialPort", "Multimedia":
|
||||
return true
|
||||
|
||||
default:
|
||||
|
@ -409,6 +409,9 @@ func GetLibs() []string {
|
|||
|
||||
case (utils.QT_MSYS2() || utils.QT_PKG_CONFIG()) && libs[i] == "Purchasing":
|
||||
libs = append(libs[:i], libs[i+1:]...)
|
||||
|
||||
case utils.QT_FELGO() && strings.HasPrefix(libs[i], "Script"):
|
||||
libs = append(libs[:i], libs[i+1:]...)
|
||||
}
|
||||
}
|
||||
return libs
|
||||
|
|
|
@ -77,7 +77,7 @@ func LoadModule(m string) *Module {
|
|||
case utils.QT_HOMEBREW():
|
||||
err = xml.Unmarshal([]byte(utils.LoadOptional(filepath.Join(strings.TrimSpace(utils.GoListOptional("{{.Dir}}", "github.com/therecipe/qt/internal/binding/files/docs/"+utils.QT_API("5.12.0"), "get doc dir")), fmt.Sprintf("qt%v.index", strings.ToLower(m))))), &module)
|
||||
|
||||
case utils.QT_MACPORTS(), utils.QT_NIX():
|
||||
case utils.QT_MACPORTS(), utils.QT_NIX(), utils.QT_FELGO():
|
||||
err = xml.Unmarshal([]byte(utils.LoadOptional(filepath.Join(strings.TrimSpace(utils.GoListOptional("{{.Dir}}", "github.com/therecipe/qt/internal/binding/files/docs/"+utils.QT_API("5.11.1"), "get doc dir")), fmt.Sprintf("qt%v.index", strings.ToLower(m))))), &module)
|
||||
|
||||
case utils.QT_MSYS2():
|
||||
|
@ -107,7 +107,10 @@ func LoadModule(m string) *Module {
|
|||
if !utils.ExistsDir(filepath.Join(utils.QT_DIR(), "Docs", fmt.Sprintf("Qt-%v", utils.QT_VERSION_MAJOR()))) {
|
||||
path = filepath.Join(utils.QT_DIR(), "Docs", fmt.Sprintf("Qt-%v", utils.QT_VERSION()), fmt.Sprintf("qt%v", strings.ToLower(m)), fmt.Sprintf("qt%v.index", strings.ToLower(m)))
|
||||
}
|
||||
err = xml.Unmarshal([]byte(utils.Load(path)), &module)
|
||||
err = xml.Unmarshal([]byte(utils.LoadOptional(path)), &module)
|
||||
if err != nil {
|
||||
err = xml.Unmarshal([]byte(utils.LoadOptional(filepath.Join(strings.TrimSpace(utils.GoListOptional("{{.Dir}}", "github.com/therecipe/qt/internal/binding/files/docs/"+utils.QT_API(utils.QT_VERSION()), "get doc dir")), fmt.Sprintf("qt%v.index", strings.ToLower(m))))), &module)
|
||||
}
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
|
|
|
@ -173,7 +173,7 @@ func isAlreadyCached(module, path, target string, mode int, libs []string) bool
|
|||
case "darwin", "linux", "windows", "ubports":
|
||||
//TODO: msys pkg-config mxe brew
|
||||
switch {
|
||||
case utils.QT_HOMEBREW(), utils.QT_MACPORTS(), utils.QT_NIX():
|
||||
case utils.QT_HOMEBREW(), utils.QT_MACPORTS(), utils.QT_NIX(), utils.QT_FELGO():
|
||||
return containsPath(file, utils.QT_DARWIN_DIR())
|
||||
case utils.QT_MSYS2():
|
||||
return containsPath(file, utils.QT_MSYS2_DIR())
|
||||
|
|
|
@ -24,7 +24,7 @@ func GoTemplate(module string, stub bool, mode int, pkg, target, tags string) []
|
|||
|
||||
if !(UseStub(stub, module, mode) || UseJs()) {
|
||||
fmt.Fprintf(bb, "func cGoUnpackString(s C.struct_%v_PackedString) string { if int(s.len) == -1 {\n return C.GoString(s.data)\n }\n return C.GoStringN(s.data, C.int(s.len)) }\n", strings.Title(module))
|
||||
fmt.Fprintf(bb, "func cGoUnpackBytes(s C.struct_%v_PackedString) []byte { if int(s.len) == -1 {\n return []byte(C.GoString(s.data))\n }\n return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len)) }\n", strings.Title(module))
|
||||
fmt.Fprintf(bb, "func cGoUnpackBytes(s C.struct_%v_PackedString) []byte { if int(s.len) == -1 {\n gs := C.GoString(s.data)\n return *(*[]byte)(unsafe.Pointer(&gs))\n }\n return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len)) }\n", strings.Title(module))
|
||||
}
|
||||
|
||||
if UseJs() {
|
||||
|
@ -480,7 +480,7 @@ func (ptr *%[1]v) Destroy%[1]v() {
|
|||
for _, l := range strings.Split(bb.String(), "\n") {
|
||||
if strings.HasPrefix(l, "//export") {
|
||||
if parser.UseWasm() {
|
||||
fmt.Fprintf(bb, "qt.WASM.Set(\"_%[1]v\", js.NewCallback(%[1]v))\n", strings.TrimPrefix(l, "//export "))
|
||||
fmt.Fprintf(bb, "qt.WASM.Set(\"_%[1]v\", js.FuncOf(%[1]v))\n", strings.TrimPrefix(l, "//export "))
|
||||
} else {
|
||||
fmt.Fprintf(bb, "qt.WASM.Set(\"_%[1]v\", %[1]v)\n", strings.TrimPrefix(l, "//export "))
|
||||
}
|
||||
|
|
|
@ -34,6 +34,22 @@ Controller.prototype.TargetDirectoryPageCallback = function()
|
|||
|
||||
Controller.prototype.ComponentSelectionPageCallback = function()
|
||||
{
|
||||
var cBoxes = ["Archive", "LTS", "Latest releases", "Preview"];
|
||||
for (var i in cBoxes)
|
||||
{
|
||||
var box = gui.currentPageWidget().findChild(cBoxes[i]);
|
||||
if (box)
|
||||
{
|
||||
box.checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
var refButton = gui.currentPageWidget().findChild("FetchCategoryButton");
|
||||
if (refButton)
|
||||
{
|
||||
refButton.click();
|
||||
}
|
||||
|
||||
var version = "qt5.5120";
|
||||
if (installer.value("VERSION") != "")
|
||||
{
|
||||
|
|
|
@ -83,7 +83,7 @@ func InitEnv(target string) {
|
|||
return
|
||||
}
|
||||
case "darwin":
|
||||
if utils.QT_HOMEBREW() || utils.QT_MACPORTS() || utils.QT_NIX() {
|
||||
if utils.QT_HOMEBREW() || utils.QT_MACPORTS() || utils.QT_NIX() || utils.QT_FELGO() {
|
||||
return
|
||||
}
|
||||
case "windows":
|
||||
|
@ -129,9 +129,6 @@ func InitEnv(target string) {
|
|||
switch runtime.GOOS {
|
||||
case "linux", "darwin", "windows":
|
||||
os.Setenv("QT_DIR", qt_dir)
|
||||
if api := utils.QT_API(""); api == "" {
|
||||
os.Setenv("QT_API", utils.QT_VERSION())
|
||||
}
|
||||
}
|
||||
|
||||
var err error
|
||||
|
@ -590,20 +587,20 @@ func BuildEnv(target, name, depPath string) (map[string]string, []string, []stri
|
|||
"CGO_ENABLED": "1",
|
||||
}
|
||||
|
||||
if utils.QT_VERSION_NUM() >= 5120 {
|
||||
env["GOARCH"] = "amd64"
|
||||
|
||||
if utils.QT_VERSION_NUM() >= 5122 {
|
||||
env["GOARCH"] = utils.GOARCH()
|
||||
}
|
||||
|
||||
//TODO: support 32 and 64 bit support; fix InitEnv as well
|
||||
if strings.Contains(utils.QT_DIR(), "env_windows_amd64") {
|
||||
env["CGO_LDFLAGS"] = filepath.Join("C:\\", "Users", "Public", "env_windows_amd64", "Tools", "mingw730_64", "x86_64-w64-mingw32", "lib", "libmsvcrt.a")
|
||||
}
|
||||
}
|
||||
|
||||
if runtime.GOOS == target {
|
||||
if utils.QT_VERSION_NUM() >= 5120 {
|
||||
env["GOARCH"] = "amd64"
|
||||
|
||||
if utils.QT_VERSION_NUM() >= 5122 {
|
||||
env["GOARCH"] = utils.GOARCH()
|
||||
}
|
||||
|
||||
//TODO: support 32 and 64 bit support; fix InitEnv as well
|
||||
if strings.Contains(utils.QT_DIR(), "env_windows_amd64") {
|
||||
env["CGO_LDFLAGS"] = filepath.Join("C:\\", "Users", "Public", "env_windows_amd64", "Tools", "mingw730_64", "x86_64-w64-mingw32", "lib", "libmsvcrt.a")
|
||||
}
|
||||
}
|
||||
|
||||
if utils.QT_MSYS2() {
|
||||
env["GOARCH"] = utils.QT_MSYS2_ARCH()
|
||||
// use gcc shipped with msys2
|
||||
|
|
|
@ -87,6 +87,12 @@ func bundle(mode, target, path, name, depPath string, tagsCustom string, fast bo
|
|||
utils.RunCmd(dep, fmt.Sprintf("deploy for %v on %v", target, runtime.GOOS))
|
||||
|
||||
case "linux", "rpi1", "rpi2", "rpi3":
|
||||
var rpiToolPath string
|
||||
if strings.HasPrefix(target, "rpi") {
|
||||
env, _, _, _ := cmd.BuildEnv(target, "", "")
|
||||
rpiToolPath = strings.TrimSuffix(env["CC"], "gcc")
|
||||
}
|
||||
|
||||
defer func() {
|
||||
filepath.Walk(depPath, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
|
@ -96,7 +102,11 @@ func bundle(mode, target, path, name, depPath string, tagsCustom string, fast bo
|
|||
return nil
|
||||
}
|
||||
if strings.HasPrefix(filepath.Base(path), "lib") {
|
||||
utils.RunCmd(exec.Command("strip", "-s", path), "strip binaries on linux")
|
||||
if strings.HasPrefix(target, "rpi") {
|
||||
utils.RunCmd(exec.Command(rpiToolPath+"strip", "-s", path), "strip binaries on linux")
|
||||
} else {
|
||||
utils.RunCmd(exec.Command("strip", "-s", path), "strip binaries on linux")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
@ -130,20 +140,15 @@ func bundle(mode, target, path, name, depPath string, tagsCustom string, fast bo
|
|||
|
||||
var (
|
||||
libraryPath = strings.TrimSpace(utils.RunCmd(exec.Command(utils.ToolPath("qmake", target), "-query", "QT_INSTALL_LIBS"), fmt.Sprintf("query lib path for %v on %v", target, runtime.GOOS)))
|
||||
lddPath = "ldd"
|
||||
lddExtra string
|
||||
lddOutput string
|
||||
usesWebEngine bool
|
||||
usesQml bool
|
||||
)
|
||||
|
||||
if strings.HasPrefix(target, "rpi") {
|
||||
//libraryPath = fmt.Sprintf("%v/%v/%v/lib/", utils.QT_DIR(), utils.QT_VERSION_MAJOR(), target)
|
||||
lddPath = fmt.Sprintf("%v/arm-bcm2708/%v/bin/arm-linux-gnueabihf-ldd", utils.RPI_TOOLS_DIR(), utils.RPI_COMPILER())
|
||||
lddExtra = "--root=/"
|
||||
lddOutput = utils.RunCmd(exec.Command(lddPath, lddExtra, filepath.Join(depPath, name)), fmt.Sprintf("ldd binary for %v on %v", target, runtime.GOOS))
|
||||
lddOutput = utils.RunCmd(exec.Command(rpiToolPath+"ldd", "--root=/", filepath.Join(depPath, name)), fmt.Sprintf("ldd binary for %v on %v", target, runtime.GOOS))
|
||||
} else {
|
||||
lddOutput = utils.RunCmd(exec.Command(lddPath, filepath.Join(depPath, name)), fmt.Sprintf("ldd binary for %v on %v", target, runtime.GOOS))
|
||||
lddOutput = utils.RunCmd(exec.Command("ldd", filepath.Join(depPath, name)), fmt.Sprintf("ldd binary for %v on %v", target, runtime.GOOS))
|
||||
}
|
||||
|
||||
for _, dep := range strings.Split(lddOutput, "\n") {
|
||||
|
@ -419,7 +424,7 @@ func bundle(mode, target, path, name, depPath string, tagsCustom string, fast bo
|
|||
copy(assets+string(filepath.Separator)+".", filepath.Join(depPath, "build"))
|
||||
|
||||
//wrap exported go main inside c main
|
||||
env, _, _, _ := cmd.BuildEnv(target, name, depPath)
|
||||
env, _, _, _ := cmd.BuildEnv(target, "", "")
|
||||
compiler := env["CXX"]
|
||||
|
||||
wrapper := filepath.Join(depPath, "c_main_wrapper.cpp")
|
||||
|
@ -683,7 +688,7 @@ func bundle(mode, target, path, name, depPath string, tagsCustom string, fast bo
|
|||
moc.ResourceNames = make(map[string]string)
|
||||
|
||||
//TODO: use "go list" deps instead ? and get rid of "build_static" ->
|
||||
//also re-enable GOCACHE support once done
|
||||
//also remove GOCACHE stale trickery once done
|
||||
for _, l := range parser.LibDeps["build_static"] {
|
||||
for _, ml := range parser.GetLibs() {
|
||||
if strings.ToLower(l) == strings.ToLower(ml) {
|
||||
|
|
|
@ -28,28 +28,30 @@ func Minimal(path, target, tags string) {
|
|||
}
|
||||
}
|
||||
|
||||
env, tagsEnv, _, _ := cmd.BuildEnv(target, "", "")
|
||||
scmd := utils.GoList("'{{.Stale}}':'{{.StaleReason}}'")
|
||||
scmd.Dir = path
|
||||
if !(target == "js" || target == "wasm") { //TODO: remove for module support + resolve dependencies
|
||||
env, tagsEnv, _, _ := cmd.BuildEnv(target, "", "")
|
||||
scmd := utils.GoList("'{{.Stale}}':'{{.StaleReason}}'")
|
||||
scmd.Dir = path
|
||||
|
||||
tagsEnv = append(tagsEnv, "minimal")
|
||||
tagsEnv = append(tagsEnv, "minimal")
|
||||
|
||||
if tags != "" {
|
||||
tagsEnv = append(tagsEnv, strings.Split(tags, " ")...)
|
||||
}
|
||||
scmd.Args = append(scmd.Args, fmt.Sprintf("-tags=\"%v\"", strings.Join(tagsEnv, "\" \"")))
|
||||
if tags != "" {
|
||||
tagsEnv = append(tagsEnv, strings.Split(tags, " ")...)
|
||||
}
|
||||
scmd.Args = append(scmd.Args, fmt.Sprintf("-tags=\"%v\"", strings.Join(tagsEnv, "\" \"")))
|
||||
|
||||
if target != runtime.GOOS {
|
||||
scmd.Args = append(scmd.Args, []string{"-pkgdir", filepath.Join(utils.MustGoPath(), "pkg", fmt.Sprintf("%v_%v_%v", strings.Replace(target, "-", "_", -1), env["GOOS"], env["GOARCH"]))}...)
|
||||
}
|
||||
if target != runtime.GOOS {
|
||||
scmd.Args = append(scmd.Args, []string{"-pkgdir", filepath.Join(utils.MustGoPath(), "pkg", fmt.Sprintf("%v_%v_%v", strings.Replace(target, "-", "_", -1), env["GOOS"], env["GOARCH"]))}...)
|
||||
}
|
||||
|
||||
for key, value := range env {
|
||||
scmd.Env = append(scmd.Env, fmt.Sprintf("%v=%v", key, value))
|
||||
}
|
||||
for key, value := range env {
|
||||
scmd.Env = append(scmd.Env, fmt.Sprintf("%v=%v", key, value))
|
||||
}
|
||||
|
||||
if out := utils.RunCmdOptional(scmd, fmt.Sprintf("go check stale for %v on %v", target, runtime.GOOS)); strings.Contains(out, "but available in build cache") || strings.Contains(out, "false") {
|
||||
utils.Log.WithField("path", path).Debug("skipping already cached minimal")
|
||||
return
|
||||
if out := utils.RunCmdOptional(scmd, fmt.Sprintf("go check stale for %v on %v", target, runtime.GOOS)); strings.Contains(out, "but available in build cache") || strings.Contains(out, "false") {
|
||||
utils.Log.WithField("path", path).Debug("skipping already cached minimal")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
utils.Log.WithField("path", path).WithField("target", target).Debug("start Minimal")
|
||||
|
|
|
@ -65,6 +65,10 @@ func Moc(path, target, tags string, fast, slow bool) {
|
|||
func moc(path, target, tags string, fast, slow, root bool, l int, dirty bool) {
|
||||
utils.Log.WithField("path", path).WithField("target", target).Debug("start Moc")
|
||||
|
||||
if target == "js" || target == "wasm" { //TODO: remove for module support + resolve dependencies
|
||||
dirty = true
|
||||
}
|
||||
|
||||
if !dirty {
|
||||
env, tagsEnv, _, _ := cmd.BuildEnv(target, "", "")
|
||||
scmd := utils.GoList("'{{.Stale}}':'{{.StaleReason}}'")
|
||||
|
@ -331,27 +335,31 @@ func moc(path, target, tags string, fast, slow, root bool, l int, dirty bool) {
|
|||
ResourceNames[filepath.Join(path, "moc.cpp")] = ""
|
||||
ResourceNamesMutex.Unlock()
|
||||
|
||||
env, tagsEnv, _, _ := cmd.BuildEnv(target, "", "")
|
||||
scmd := utils.GoList("'{{.Stale}}':'{{.StaleReason}}'")
|
||||
scmd.Dir = path
|
||||
var staleCheck string
|
||||
if !(target == "js" || target == "wasm") { //TODO: remove for module support + resolve dependencies
|
||||
env, tagsEnv, _, _ := cmd.BuildEnv(target, "", "")
|
||||
scmd := utils.GoList("'{{.Stale}}':'{{.StaleReason}}'")
|
||||
scmd.Dir = path
|
||||
|
||||
if !fast && !utils.QT_FAT() {
|
||||
tagsEnv = append(tagsEnv, "minimal")
|
||||
}
|
||||
if tags != "" {
|
||||
tagsEnv = append(tagsEnv, strings.Split(tags, " ")...)
|
||||
}
|
||||
scmd.Args = append(scmd.Args, fmt.Sprintf("-tags=\"%v\"", strings.Join(tagsEnv, "\" \"")))
|
||||
if !fast && !utils.QT_FAT() {
|
||||
tagsEnv = append(tagsEnv, "minimal")
|
||||
}
|
||||
if tags != "" {
|
||||
tagsEnv = append(tagsEnv, strings.Split(tags, " ")...)
|
||||
}
|
||||
scmd.Args = append(scmd.Args, fmt.Sprintf("-tags=\"%v\"", strings.Join(tagsEnv, "\" \"")))
|
||||
|
||||
if target != runtime.GOOS {
|
||||
scmd.Args = append(scmd.Args, []string{"-pkgdir", filepath.Join(utils.MustGoPath(), "pkg", fmt.Sprintf("%v_%v_%v", strings.Replace(target, "-", "_", -1), env["GOOS"], env["GOARCH"]))}...)
|
||||
if target != runtime.GOOS {
|
||||
scmd.Args = append(scmd.Args, []string{"-pkgdir", filepath.Join(utils.MustGoPath(), "pkg", fmt.Sprintf("%v_%v_%v", strings.Replace(target, "-", "_", -1), env["GOOS"], env["GOARCH"]))}...)
|
||||
}
|
||||
|
||||
for key, value := range env {
|
||||
scmd.Env = append(scmd.Env, fmt.Sprintf("%v=%v", key, value))
|
||||
}
|
||||
staleCheck = utils.RunCmdOptional(scmd, fmt.Sprintf("go check stale for %v on %v", target, runtime.GOOS))
|
||||
}
|
||||
|
||||
for key, value := range env {
|
||||
scmd.Env = append(scmd.Env, fmt.Sprintf("%v=%v", key, value))
|
||||
}
|
||||
|
||||
if out := utils.RunCmdOptional(scmd, fmt.Sprintf("go check stale for %v on %v", target, runtime.GOOS)); strings.Contains(out, "but available in build cache") || strings.Contains(out, "false") {
|
||||
if strings.Contains(staleCheck, "but available in build cache") || strings.Contains(staleCheck, "false") {
|
||||
utils.Log.WithField("path", path).Debug("skipping already cached moc")
|
||||
} else {
|
||||
if err := utils.SaveBytes(filepath.Join(path, "moc.cpp"), templater.CppTemplate(parser.MOC, templater.MOC, target, tags)); err != nil {
|
||||
|
@ -503,7 +511,7 @@ func parse(path string) ([]*parser.Class, string, error) {
|
|||
}
|
||||
|
||||
//TODO: sync, async, lazy, ...
|
||||
//TODO: whole class shims
|
||||
//TODO: whole class shims (generation of skeletons?)
|
||||
//TODO: multi targets
|
||||
//TODO: private
|
||||
//TODO: qml register tag
|
||||
|
|
|
@ -64,6 +64,7 @@ func Check(target string, docker, vagrant bool) {
|
|||
{"QT_HOMEBREW", fmt.Sprint(utils.QT_HOMEBREW())},
|
||||
{"QT_MACPORTS", fmt.Sprint(utils.QT_MACPORTS())},
|
||||
{"QT_NIX", fmt.Sprint(utils.QT_NIX())},
|
||||
{"QT_FELGO", fmt.Sprint(utils.QT_FELGO())},
|
||||
{"XCODE_DIR", utils.XCODE_DIR()},
|
||||
//{"IPHONEOS_SDK_DIR", utils.IPHONEOS_SDK_DIR()}, //TODO: re-add with absolute path
|
||||
//{"IPHONESIMULATOR_SDK_DIR", utils.IPHONESIMULATOR_SDK_DIR()}, //TODO: re-add with absolute path
|
||||
|
@ -145,7 +146,7 @@ func Check(target string, docker, vagrant bool) {
|
|||
if !strings.HasSuffix(v[0], "_DIR") {
|
||||
continue
|
||||
}
|
||||
if v[0] == "QT_DIR" && (utils.QT_HOMEBREW() || utils.QT_MACPORTS() || utils.QT_NIX() || utils.QT_MSYS2() || utils.QT_PKG_CONFIG() || utils.MSYS_DOCKER()) {
|
||||
if v[0] == "QT_DIR" && (utils.QT_HOMEBREW() || utils.QT_MACPORTS() || utils.QT_NIX() || utils.QT_FELGO() || utils.QT_MSYS2() || utils.QT_PKG_CONFIG() || utils.MSYS_DOCKER()) {
|
||||
continue
|
||||
}
|
||||
if _, err := ioutil.ReadDir(v[1]); err != nil && v[1] != "" {
|
||||
|
|
|
@ -11,20 +11,20 @@ jobs:
|
|||
file: js/Dockerfile
|
||||
tag: js
|
||||
dep:
|
||||
# - js_base
|
||||
- js_base
|
||||
- linux
|
||||
# -
|
||||
# template: docker_job_template.yml
|
||||
# parameters:
|
||||
# file: js/Dockerfile.base
|
||||
# tag: js_base
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
file: js/Dockerfile.base
|
||||
tag: js_base
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
file: js/Dockerfile.wasm
|
||||
tag: wasm
|
||||
dep:
|
||||
# - js_base
|
||||
- js_base
|
||||
- linux
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
|
@ -69,6 +69,30 @@ jobs:
|
|||
parameters:
|
||||
file: linux/Dockerfile.ubuntu_18_04
|
||||
tag: linux_ubuntu_18_04
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
file: rpi/Dockerfile.base
|
||||
tag: rpi_base
|
||||
dep: linux
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
file: rpi/Dockerfile.rpi1
|
||||
tag: rpi1
|
||||
dep: rpi_base
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
file: rpi/Dockerfile.rpi2
|
||||
tag: rpi2
|
||||
dep: rpi_base
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
file: rpi/Dockerfile.rpi3
|
||||
tag: rpi3
|
||||
dep: rpi_base
|
||||
-
|
||||
template: docker_job_template.yml
|
||||
parameters:
|
||||
|
|
|
@ -9,7 +9,7 @@ RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install python2
|
|||
RUN ln -s /usr/bin/python2.7 /usr/bin/python
|
||||
RUN git clone -q --depth 1 https://github.com/juj/emsdk.git $HOME/emsdk && cd $HOME/emsdk && ./emsdk install latest && ./emsdk activate latest
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.12.0 --recursive https://code.qt.io/qt/qt5.git /opt/qt5
|
||||
RUN git clone -q --depth 1 -b 5.12.3 --recursive https://code.qt.io/qt/qt5.git /opt/qt5
|
||||
|
||||
RUN echo "#!/bin/bash\nsource $HOME/emsdk/emsdk_env.sh \
|
||||
&& cd /opt/qt5 && ./configure -xplatform wasm-emscripten -optimize-size -nomake tests -nomake examples -skip qtpim -skip qtfeedback -skip qtwinextras -skip qttools -confirm-license -opensource && make && make install" > $HOME/build.sh \
|
||||
|
@ -21,4 +21,4 @@ LABEL maintainer therecipe
|
|||
|
||||
COPY --from=base $HOME/emsdk $HOME/emsdk
|
||||
COPY --from=base $HOME/.emscripten $HOME/.emscripten
|
||||
COPY --from=base /usr/local/Qt-5.12.0 /usr/local/Qt-5.12.0
|
||||
COPY --from=base /usr/local/Qt-5.12.3 /usr/local/Qt-5.12.0
|
||||
|
|
|
@ -1,12 +1,3 @@
|
|||
FROM therecipe/qt:linux as base
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates git
|
||||
|
||||
RUN mv /usr/local/go /usr/local/go_orig
|
||||
RUN git clone -q --depth 1 -b wasm-sync-callbacks https://github.com/neelance/go.git /usr/local/go
|
||||
RUN cd /usr/local/go/src && GOROOT_BOOTSTRAP=/usr/local/go_orig ./make.bash
|
||||
|
||||
|
||||
FROM ubuntu:16.04
|
||||
LABEL maintainer therecipe
|
||||
|
||||
|
@ -18,7 +9,7 @@ ENV QT_DIR /opt/Qt
|
|||
ENV QT_DOCKER true
|
||||
ENV QT_QMAKE_DIR /usr/local/Qt-5.12.0/bin
|
||||
|
||||
COPY --from=base /usr/local/go /usr/local/go
|
||||
COPY --from=therecipe/qt:linux /usr/local/go /usr/local/go
|
||||
COPY --from=therecipe/qt:linux $GOPATH/bin $GOPATH/bin
|
||||
COPY --from=therecipe/qt:linux $GOPATH/src/github.com/therecipe/qt $GOPATH/src/github.com/therecipe/qt
|
||||
COPY --from=therecipe/qt:linux /opt/Qt/5.12.0/gcc_64/include /opt/Qt/5.12.0/gcc_64/include
|
||||
|
|
|
@ -5,11 +5,11 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install dbus fontconfig libx11-6 libx11-xcb1
|
||||
RUN QT=qt-unified-linux-x64-online.run && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/online_installers/$QT && chmod +x $QT && QT_QPA_PLATFORM=minimal ./$QT --script $GOPATH/src/github.com/therecipe/qt/internal/ci/iscript.qs LINUX=true
|
||||
RUN QT=qt-unified-linux-x64-online.run && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/online_installers/$QT && chmod +x $QT && QT_QPA_PLATFORM=minimal ./$QT --no-force-installations --script $GOPATH/src/github.com/therecipe/qt/internal/ci/iscript.qs LINUX=true
|
||||
RUN find /opt/Qt/5.12.0 -type f -name "*.debug" -delete
|
||||
RUN find /opt/Qt/Docs -type f ! -name "*.index" -delete
|
||||
RUN find /opt/Qt/5.12.0/gcc_64 -type f ! -name "*.a" -name "lib*" -exec strip -s {} \;
|
||||
|
|
|
@ -5,11 +5,11 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install dbus fontconfig libx11-6 libx11-xcb1
|
||||
RUN QT=qt-unified-linux-x64-online.run && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/online_installers/$QT && chmod +x $QT && QT_QPA_PLATFORM=minimal ./$QT --script $GOPATH/src/github.com/therecipe/qt/internal/ci/iscript.qs LINUX=true VERSION=563
|
||||
RUN QT=qt-opensource-linux-x64-5.6.3.run && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/qt/5.6/5.6.3/$QT && chmod +x $QT && QT_QPA_PLATFORM=minimal ./$QT --no-force-installations --script $GOPATH/src/github.com/therecipe/qt/internal/ci/iscript.qs LINUX=true VERSION=563
|
||||
RUN find /opt/Qt/5.6.3 -type f -name "*.debug" -delete
|
||||
RUN find /opt/Qt/Docs -type f ! -name "*.index" -delete
|
||||
|
||||
|
|
|
@ -5,11 +5,11 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install dbus fontconfig libx11-6 libx11-xcb1
|
||||
RUN QT=qt-unified-linux-x64-online.run && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/online_installers/$QT && chmod +x $QT && QT_QPA_PLATFORM=minimal ./$QT --script $GOPATH/src/github.com/therecipe/qt/internal/ci/iscript.qs LINUX=true VERSION=596
|
||||
RUN QT=qt-unified-linux-x64-online.run && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/online_installers/$QT && chmod +x $QT && QT_QPA_PLATFORM=minimal ./$QT --no-force-installations --script $GOPATH/src/github.com/therecipe/qt/internal/ci/iscript.qs LINUX=true VERSION=596
|
||||
RUN find /opt/Qt/5.9.6 -type f -name "*.debug" -delete
|
||||
RUN find /opt/Qt/Docs -type f ! -name "*.index" -delete
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ ENV GOPATH $HOME/work
|
|||
|
||||
RUN pacman -Syyu --quiet || true
|
||||
RUN pacman -S --noconfirm --needed --noprogressbar --quiet ca-certificates curl git tar
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
FROM archlinux/base
|
||||
|
|
|
@ -5,7 +5,7 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install libdbus
|
|||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxkbcommon-dev
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.12 --recursive https://code.qt.io/qt/qt5.git /opt/qt5
|
||||
RUN cd /opt/qt5 && ./configure -prefix /opt/Qt/5.12.0/gcc_64 -confirm-license -opensource -static -qt-zlib -qt-libpng -qt-libjpeg -qpa xcb -dbus-runtime -openssl-runtime -opengl -optimize-size -skip qtwebengine -skip qtfeedback -nomake tests -nomake examples && make && make install
|
||||
RUN git clone -q --depth 1 -b 5.12.3 --recursive https://code.qt.io/qt/qt5.git /opt/qt5
|
||||
RUN cd /opt/qt5 && ./configure -prefix /opt/Qt/5.12.0/gcc_64 -confirm-license -opensource -static -qt-zlib -qt-libpng -qt-libjpeg -system-xcb -dbus-runtime -openssl-runtime -opengl -optimize-size -skip qtwebengine -skip qtfeedback -nomake tests -nomake examples && make && make install
|
||||
|
||||
|
||||
FROM ubuntu:16.04
|
||||
|
|
|
@ -5,7 +5,7 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
FROM ubuntu:16.04
|
||||
|
|
|
@ -5,7 +5,7 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
FROM ubuntu:18.04
|
||||
|
|
|
@ -9,19 +9,18 @@ ENV QT_DIR /opt/Qt
|
|||
ENV QT_DOCKER true
|
||||
ENV QT_RPI true
|
||||
ENV QT_QMAKE_DIR /opt/qtrpi/raspi/qt5/bin
|
||||
ENV QT_VERSION 5.7.0
|
||||
ENV RPI_TOOLS_DIR /opt/qtrpi/raspi/tools
|
||||
ENV RPI_COMPILER gcc-linaro-arm-linux-gnueabihf-raspbian-x64
|
||||
|
||||
|
||||
COPY --from=therecipe/qt:linux /usr/local/go /usr/local/go
|
||||
COPY --from=therecipe/qt:linux $GOPATH/bin $GOPATH/bin
|
||||
COPY --from=therecipe/qt:linux $GOPATH/src/github.com/therecipe/qt $GOPATH/src/github.com/therecipe/qt
|
||||
COPY --from=therecipe/qt:linux /opt/Qt/5.12.0/gcc_64/include /opt/Qt/5.12.0/gcc_64/include
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git make unzip && apt-get -qq clean
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git make && apt-get -qq clean
|
||||
|
||||
RUN SYSROOT=qtrpi-sysroot-minimal-latest.zip && curl -sL --retry 10 --retry-delay 60 -O http://www.qtrpi.com/downloads/sysroot/$SYSROOT && unzip -qq $SYSROOT -d /opt/qtrpi && rm -f $SYSROOT
|
||||
RUN SYSROOT=qtrpi-sysroot-minimal-latest.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://github.com/therecipe/files/releases/download/v0.0.0/$SYSROOT && tar -xzf $SYSROOT -C / && rm -f $SYSROOT
|
||||
RUN ln -s /opt/qtrpi/raspbian/sysroot-minimal /opt/qtrpi/raspbian/sysroot
|
||||
|
||||
RUN git clone -q --depth 1 https://github.com/raspberrypi/tools.git /opt/qtrpi/raspi/tools
|
||||
|
||||
RUN $GOPATH/bin/qtsetup prep
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
FROM therecipe/qt:rpi_base
|
||||
LABEL maintainer therecipe
|
||||
|
||||
RUN QT=qtrpi-rpi1_qt-5.7.0.zip && curl -sL --retry 10 --retry-delay 60 -O http://www.qtrpi.com/downloads/qtrpi/rpi1/$QT && unzip -qq $QT -d /opt/qtrpi && rm -f $QT
|
||||
|
||||
RUN QT=qtrpi-rpi1_qt-5.7.0.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://github.com/therecipe/files/releases/download/v0.0.0/$QT && tar -xzf $QT -C / && rm -f $QT
|
||||
#TODO: remove and replace with proper include dir lookup
|
||||
RUN mkdir -p /opt/Qt/5.7.0/ && ln -s /opt/qtrpi/raspi/qt5pi/ /opt/Qt/5.7.0/gcc_64
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.7 https://code.qt.io/qt/qtvirtualkeyboard.git /opt/qtrpi/raspi/qtvirtualkeyboard && cd /opt/qtrpi/raspi/qtvirtualkeyboard && ../qt5/bin/qmake qtvirtualkeyboard.pro CONFIG+=lang-all && make && make install && rm -rf /opt/qtrpi/raspi/qtvirtualkeyboard
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.7 https://code.qt.io/qt/qtmultimedia.git /opt/qtrpi/raspi/qtmultimedia && cd /opt/qtrpi/raspi/qtmultimedia && ../qt5/bin/qmake qtmultimedia.pro && make && make install && rm -rf /opt/qtrpi/raspi/qtmultimedia
|
||||
|
||||
|
||||
RUN $GOPATH/bin/qtsetup prep
|
||||
RUN $GOPATH/bin/qtsetup check rpi1
|
||||
RUN $GOPATH/bin/qtsetup generate rpi1
|
||||
RUN $GOPATH/bin/qtsetup install rpi1
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
FROM therecipe/qt:rpi_base
|
||||
LABEL maintainer therecipe
|
||||
|
||||
RUN QT=qtrpi-rpi2_qt-5.7.0.zip && curl -sL --retry 10 --retry-delay 60 -O http://www.qtrpi.com/downloads/qtrpi/rpi2/$QT && unzip -qq $QT -d /opt/qtrpi && rm -f $QT
|
||||
|
||||
RUN QT=qtrpi-rpi2_qt-5.7.0.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://github.com/therecipe/files/releases/download/v0.0.0/$QT && tar -xzf $QT -C / && rm -f $QT
|
||||
#TODO: remove and replace with proper include dir lookup
|
||||
RUN mkdir -p /opt/Qt/5.7.0/ && ln -s /opt/qtrpi/raspi/qt5pi/ /opt/Qt/5.7.0/gcc_64
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.7 https://code.qt.io/qt/qtvirtualkeyboard.git /opt/qtrpi/raspi/qtvirtualkeyboard && cd /opt/qtrpi/raspi/qtvirtualkeyboard && ../qt5/bin/qmake qtvirtualkeyboard.pro CONFIG+=lang-all && make && make install && rm -rf /opt/qtrpi/raspi/qtvirtualkeyboard
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.7 https://code.qt.io/qt/qtmultimedia.git /opt/qtrpi/raspi/qtmultimedia && cd /opt/qtrpi/raspi/qtmultimedia && ../qt5/bin/qmake qtmultimedia.pro && make && make install && rm -rf /opt/qtrpi/raspi/qtmultimedia
|
||||
|
||||
|
||||
RUN $GOPATH/bin/qtsetup prep
|
||||
RUN $GOPATH/bin/qtsetup check rpi2
|
||||
RUN $GOPATH/bin/qtsetup generate rpi2
|
||||
RUN $GOPATH/bin/qtsetup install rpi2
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
FROM therecipe/qt:rpi_base
|
||||
LABEL maintainer therecipe
|
||||
|
||||
RUN QT=qtrpi-rpi3_qt-5.7.0.zip && curl -sL --retry 10 --retry-delay 60 -O http://www.qtrpi.com/downloads/qtrpi/rpi3/$QT && unzip -qq $QT -d /opt/qtrpi && rm -f $QT
|
||||
|
||||
RUN QT=qtrpi-rpi3_qt-5.7.0.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://github.com/therecipe/files/releases/download/v0.0.0/$QT && tar -xzf $QT -C / && rm -f $QT
|
||||
#TODO: remove and replace with proper include dir lookup
|
||||
RUN mkdir -p /opt/Qt/5.7.0/ && ln -s /opt/qtrpi/raspi/qt5pi/ /opt/Qt/5.7.0/gcc_64
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.7 https://code.qt.io/qt/qtvirtualkeyboard.git /opt/qtrpi/raspi/qtvirtualkeyboard && cd /opt/qtrpi/raspi/qtvirtualkeyboard && ../qt5/bin/qmake qtvirtualkeyboard.pro CONFIG+=lang-all && make && make install && rm -rf /opt/qtrpi/raspi/qtvirtualkeyboard
|
||||
|
||||
RUN git clone -q --depth 1 -b 5.7 https://code.qt.io/qt/qtmultimedia.git /opt/qtrpi/raspi/qtmultimedia && cd /opt/qtrpi/raspi/qtmultimedia && ../qt5/bin/qmake qtmultimedia.pro && make && make install && rm -rf /opt/qtrpi/raspi/qtmultimedia
|
||||
|
||||
|
||||
RUN $GOPATH/bin/qtsetup prep
|
||||
RUN $GOPATH/bin/qtsetup check rpi3
|
||||
RUN $GOPATH/bin/qtsetup generate rpi3
|
||||
RUN $GOPATH/bin/qtsetup install rpi3
|
||||
|
|
|
@ -5,7 +5,7 @@ ENV HOME /home/$USER
|
|||
ENV GOPATH $HOME/work
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
RUN GO=go1.11.2.linux-386.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN GO=go1.12.4.linux-386.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local
|
||||
RUN /usr/local/go/bin/go get -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
FROM therecipe/qt:wine_base as base
|
||||
|
||||
RUN QT=qt-opensource-windows-x86-5.12.0.exe && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/qt/5.12/5.12.0/$QT \
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true && rm -f $QT
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --no-force-installations --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true && rm -f $QT
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.12.0/5.12.0/mingw73_64 -name "*d.a" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.12.0/5.12.0/mingw73_64 -name "*d.dll" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.12.0/5.12.0/mingw73_64 -name "*d.dll.a" -exec grep -l "gnu_debug" {} \+)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
FROM therecipe/qt:wine_base as base
|
||||
|
||||
RUN QT=qt-opensource-windows-x86-5.12.2.exe && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/qt/5.12/5.12.2/$QT \
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=qt5.5122 ARCH=32 && rm -f $QT
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --no-force-installations --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=qt5.5122 ARCH=32 && rm -f $QT
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.12.2/5.12.2/mingw73_32 -name "*d.a" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.12.2/5.12.2/mingw73_32 -name "*d.dll" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.12.2/5.12.2/mingw73_32 -name "*d.dll.a" -exec grep -l "gnu_debug" {} \+)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
FROM therecipe/qt:wine_base as base
|
||||
|
||||
RUN QT=qt-opensource-windows-x86-mingw492-5.6.3.exe && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/qt/5.6/5.6.3/$QT \
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=563 && rm -f $QT
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --no-force-installations --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=563 && rm -f $QT
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.6.3/5.6.3/mingw49_32 -name "*d.a" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.6.3/5.6.3/mingw49_32 -name "*d.dll" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.6.3/5.6.3/mingw49_32 -name "*d.dll.a" -exec grep -l "gnu_debug" {} \+)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
FROM therecipe/qt:wine_base_xp as base
|
||||
|
||||
RUN QT=qt-opensource-windows-x86-mingw492-5.6.3.exe && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/qt/5.6/5.6.3/$QT \
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=563 && rm -f $QT
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --no-force-installations --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=563 && rm -f $QT
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.6.3/5.6.3/mingw49_32 -name "*d.a" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.6.3/5.6.3/mingw49_32 -name "*d.dll" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.6.3/5.6.3/mingw49_32 -name "*d.dll.a" -exec grep -l "gnu_debug" {} \+)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
FROM therecipe/qt:wine_base as base
|
||||
|
||||
RUN QT=qt-opensource-windows-x86-5.9.6.exe && curl -sL --retry 10 --retry-delay 60 -O https://download.qt.io/official_releases/qt/5.9/5.9.6/$QT \
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=596 && rm -f $QT
|
||||
&& QT_QPA_PLATFORM=minimal xvfb-run wine Z:\\$QT --no-force-installations --script=C:\\gopath\\src\\github.com\\therecipe\\qt\\internal\\ci\\iscript.qs WINDOWS=true VERSION=596 && rm -f $QT
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.9.6/5.9.6/mingw53_32 -name "*d.a" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.9.6/5.9.6/mingw53_32 -name "*d.dll" -exec grep -l "gnu_debug" {} \+)
|
||||
RUN rm -f $(find $HOME/.wine/drive_c/Qt/Qt5.9.6/5.9.6/mingw53_32 -name "*d.dll.a" -exec grep -l "gnu_debug" {} \+)
|
||||
|
|
|
@ -7,7 +7,7 @@ ENV GOPATH $HOME/.wine/drive_c/gopath
|
|||
ENV WINEDEBUG -all
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git && apt-get -qq clean
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local && rm -f $GO
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local && rm -f $GO
|
||||
RUN GOOS=windows /usr/local/go/bin/go get -d -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install software-properties-common apt-transport-https && apt-get -qq clean
|
||||
|
@ -20,5 +20,5 @@ RUN WINEDLLOVERRIDES="mscoree,mshtml=" xvfb-run wineboot && wineserver -w
|
|||
RUN curl -sL --retry 10 --retry-delay 60 -O https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks && chmod +x winetricks && mv winetricks /usr/bin && xvfb-run winetricks -q vcrun2015 && rm -f winetricks
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install unzip && apt-get -qq clean
|
||||
RUN GO=go1.11.2.windows-amd64.zip && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && unzip -qq $GO -d $HOME/.wine/drive_c && rm -f $GO
|
||||
RUN GO=go1.12.4.windows-amd64.zip && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && unzip -qq $GO -d $HOME/.wine/drive_c && rm -f $GO
|
||||
RUN GOPATH=C:\\gopath wine C:\\go\\bin\\go install -ldflags="-s -w" -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
|
|
@ -7,7 +7,7 @@ ENV GOPATH $HOME/.wine/drive_c/gopath
|
|||
ENV WINEDEBUG -all
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git && apt-get -qq clean
|
||||
RUN GO=go1.11.2.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local && rm -f $GO
|
||||
RUN GO=go1.12.4.linux-amd64.tar.gz && curl -sL --retry 10 --retry-delay 60 -O https://dl.google.com/go/$GO && tar -xzf $GO -C /usr/local && rm -f $GO
|
||||
RUN GOOS=windows /usr/local/go/bin/go get -d -tags=no_env github.com/therecipe/qt/cmd/...
|
||||
|
||||
RUN apt-get -qq update && apt-get --no-install-recommends -qq -y install software-properties-common apt-transport-https && apt-get -qq clean
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>audio</string>
|
||||
<string>audio_project</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>Created by Qt/QMake</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
|
|
|
@ -37,6 +37,14 @@ func main() {
|
|||
mainWindow.SetCentralWidget(scrollWidget)
|
||||
mainWindow.ShowMaximized()
|
||||
|
||||
//->needed to work around some iOS issue: https://github.com/therecipe/qt/issues/451
|
||||
gui.QGuiApplication_Screens()[0].SetOrientationUpdateMask(core.Qt__PrimaryOrientation | core.Qt__LandscapeOrientation | core.Qt__PortraitOrientation | core.Qt__InvertedLandscapeOrientation | core.Qt__InvertedPortraitOrientation)
|
||||
gui.QGuiApplication_Screens()[0].ConnectOrientationChanged(func(core.Qt__ScreenOrientation) {
|
||||
mainWindow.Hide()
|
||||
go mainWindow.Show()
|
||||
})
|
||||
//<-
|
||||
|
||||
widgets.QApplication_Exec()
|
||||
}
|
||||
|
||||
|
|
|
@ -144,6 +144,8 @@ func render(scene *widgets.QGraphicsScene) []byte {
|
|||
return renderWith(scene, sliderX.Value(), sliderY.Value(), sliderZ.Value())
|
||||
}
|
||||
|
||||
var pix *gui.QPixmap
|
||||
|
||||
func renderWith(scene *widgets.QGraphicsScene, frameX, frameY, frameZ int) []byte {
|
||||
scene.Clear()
|
||||
|
||||
|
@ -175,7 +177,9 @@ func renderWith(scene *widgets.QGraphicsScene, frameX, frameY, frameZ int) []byt
|
|||
}
|
||||
}
|
||||
|
||||
var pix = gui.NewQPixmap()
|
||||
if pix == nil {
|
||||
pix = gui.NewQPixmap()
|
||||
}
|
||||
pix.LoadFromData(data, uint(len(data)), "", 0)
|
||||
|
||||
scene.AddPixmap(pix)
|
||||
|
|
|
@ -116,6 +116,10 @@ func QT_NIX() bool {
|
|||
return ok
|
||||
}
|
||||
|
||||
func QT_FELGO() bool {
|
||||
return os.Getenv("QT_FELGO") == "true"
|
||||
}
|
||||
|
||||
func isHomeBrewQtDir() bool {
|
||||
return ExistsFile(filepath.Join(QT_DIR(), "INSTALL_RECEIPT.json"))
|
||||
}
|
||||
|
@ -131,6 +135,9 @@ func QT_DARWIN_DIR() string {
|
|||
var qt_darwin_dir_nix string
|
||||
|
||||
func qT_DARWIN_DIR() string {
|
||||
if QT_FELGO() {
|
||||
return filepath.Join(QT_DIR(), "Felgo/clang_64")
|
||||
}
|
||||
if QT_HOMEBREW() {
|
||||
if isHomeBrewQtDir() {
|
||||
return QT_DIR()
|
||||
|
|
|
@ -10,17 +10,30 @@ import (
|
|||
"sync"
|
||||
)
|
||||
|
||||
var qT_VERSION_CACHE string
|
||||
var (
|
||||
qtVersionCache string
|
||||
qtVersionCacheMutex = new(sync.Mutex)
|
||||
)
|
||||
|
||||
func QT_VERSION() string {
|
||||
if version, ok := os.LookupEnv("QT_VERSION"); ok {
|
||||
return version
|
||||
}
|
||||
if QT_PKG_CONFIG() {
|
||||
if qT_VERSION_CACHE == "" {
|
||||
qT_VERSION_CACHE = strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--modversion", "Qt5Core"), "cgo.LinuxPkgConfig_modVersion"))
|
||||
var r string
|
||||
qtVersionCacheMutex.Lock()
|
||||
if qtVersionCache == "" {
|
||||
qtVersionCache = strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--modversion", "Qt5Core"), "cgo.LinuxPkgConfig_modVersion"))
|
||||
}
|
||||
return qT_VERSION_CACHE
|
||||
r = qtVersionCache
|
||||
qtVersionCacheMutex.Unlock()
|
||||
return r
|
||||
}
|
||||
|
||||
//TODO: proper def version for macports, mxe, msys, homebrew, ...
|
||||
|
||||
if QT_FELGO() {
|
||||
return "5.11.1"
|
||||
}
|
||||
return "5.12.0"
|
||||
}
|
||||
|
@ -74,6 +87,10 @@ func qT_DIR() string {
|
|||
prefix = windowsSystemDrive() + "\\"
|
||||
}
|
||||
|
||||
if QT_FELGO() {
|
||||
return filepath.Join(prefix, "Felgo")
|
||||
}
|
||||
|
||||
if dir := filepath.Join(prefix, "Qt", "Qt"+QT_VERSION()); ExistsDir(dir) {
|
||||
return dir
|
||||
}
|
||||
|
@ -123,7 +140,7 @@ func CheckBuildTarget(buildTarget string, docker bool) {
|
|||
switch {
|
||||
case QT_MSYS2():
|
||||
Log.Fatalf("%v is not supported as a deploy target on %v with MSYS2 -> install the official Qt version instead and try again", buildTarget, runtime.GOOS)
|
||||
case QT_HOMEBREW(), QT_MACPORTS(), QT_NIX():
|
||||
case QT_HOMEBREW(), QT_MACPORTS(), QT_NIX(), QT_FELGO():
|
||||
Log.Fatalf("%v is not supported as a deploy target on %v with HomeBrew/MacPorts/Nix -> install the official Qt version instead and try again", buildTarget, runtime.GOOS)
|
||||
case QT_PKG_CONFIG() && !QT_UBPORTS():
|
||||
Log.Fatalf("%v is not supported as a deploy target on %v with PkgConfig -> install the official Qt version instead and try again", buildTarget, runtime.GOOS)
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtLocation_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtLocation_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtMacExtras_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtMacExtras_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -26,7 +26,8 @@ func cGoUnpackString(s C.struct_QtMultimedia_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtMultimedia_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtNetwork_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtNetwork_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -22,7 +22,8 @@ func cGoUnpackString(s C.struct_QtNfc_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtNfc_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtPositioning_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtPositioning_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtPrintSupport_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtPrintSupport_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -22,7 +22,8 @@ func cGoUnpackString(s C.struct_QtPurchasing_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtPurchasing_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtQml_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtQml_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
)
|
||||
|
||||
func init() {
|
||||
WASM.Set("_callbackReleaseTypedArray", js.NewCallback(func(_ js.Value, args []js.Value) interface{} {
|
||||
WASM.Set("_callbackReleaseTypedArray", js.FuncOf(func(_ js.Value, args []js.Value) interface{} {
|
||||
(*js.TypedArray)(unsafe.Pointer(uintptr(args[0].Int()))).Release()
|
||||
return nil
|
||||
}))
|
||||
|
|
|
@ -26,7 +26,8 @@ func cGoUnpackString(s C.struct_QtQuick_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtQuick_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -21,7 +21,8 @@ func cGoUnpackString(s C.struct_QtQuickControls2_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtQuickControls2_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtRemoteObjects_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtRemoteObjects_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtSailfish_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSailfish_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtScript_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtScript_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtScriptTools_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtScriptTools_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtScxml_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtScxml_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtSensors_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSensors_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtSerialBus_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSerialBus_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtSerialPort_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSerialPort_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtSpeech_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSpeech_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ func cGoUnpackString(s C.struct_QtSql_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSql_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtSvg_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtSvg_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtTestLib_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtTestLib_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtUiTools_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtUiTools_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -22,7 +22,8 @@ func cGoUnpackString(s C.struct_QtWebChannel_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtWebChannel_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -28,7 +28,8 @@ func cGoUnpackString(s C.struct_QtWebEngine_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtWebEngine_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtWebSockets_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtWebSockets_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -20,7 +20,8 @@ func cGoUnpackString(s C.struct_QtWebView_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtWebView_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtWidgets_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtWidgets_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ func cGoUnpackString(s C.struct_QtXml_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtXml_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
|
@ -24,7 +24,8 @@ func cGoUnpackString(s C.struct_QtXmlPatterns_PackedString) string {
|
|||
}
|
||||
func cGoUnpackBytes(s C.struct_QtXmlPatterns_PackedString) []byte {
|
||||
if int(s.len) == -1 {
|
||||
return []byte(C.GoString(s.data))
|
||||
gs := C.GoString(s.data)
|
||||
return *(*[]byte)(unsafe.Pointer(&gs))
|
||||
}
|
||||
return C.GoBytes(unsafe.Pointer(s.data), C.int(s.len))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue