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:
therecipe 2019-04-16 18:28:55 +02:00
parent 18d257176d
commit 47435cc1dd
87 changed files with 317 additions and 196 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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") != "")
{

View file

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

View file

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

View file

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

View file

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

View file

@ -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] != "" {

View file

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

View file

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

View file

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

View file

@ -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 {} \;

View file

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

View file

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

View file

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

View file

@ -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/...

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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/...

View file

@ -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" {} \+)

View file

@ -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" {} \+)

View file

@ -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" {} \+)

View file

@ -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" {} \+)

View file

@ -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" {} \+)

View file

@ -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/...

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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