Qt 5.2 errors

698 views
Skip to first unread message

Xiaoyue Cheng

unread,
Dec 3, 2013, 12:15:37 PM12/3/13
to Michael Lawrence, cra...@googlegroups.com
Hi Michael,

I was trying to install qtbase with Qt 5.2.0 beta1 on Ubuntu 13.10, but got some errors. Do you have any idea on that?

Thanks,
Xiaoyue
qt5-qtbase-error.txt

Michael Lawrence

unread,
Dec 3, 2013, 1:15:13 PM12/3/13
to Xiaoyue Cheng, Michael Lawrence, cra...@googlegroups.com
Thanks for sending this. I didn't bother to test the QtSensors module, because my distribution (gentoo) has not yet provided a package for it (probably only makes sense for mobile devices). It looks like we need to mask some things from the generator. We could probably get there if you were to send me your x_1.cpp from kdebindings-build/smoke/qt. Other options would include you disabling the sensors module from your Qt build, or me removing support for sensors from qtbase. But I'd prefer to get it working.

Michael

Xiaoyue Cheng

unread,
Dec 3, 2013, 2:03:46 PM12/3/13
to Michael Lawrence, cra...@googlegroups.com
Thanks.
Attached is x_1.cpp.
Xiaoyue
x_1.cpp

Michael Lawrence

unread,
Dec 3, 2013, 11:30:14 PM12/3/13
to cra...@googlegroups.com, Michael Lawrence
Pushed a potential fix. I made the generator more conservative when generating setters for public fields. It assumes that any field with a 'const' modifier is read-only. While that's unnecessarily strict, there did not seem to be an easy way (short of really digging into it and changing things) to distinguish 'const * const' from 'const *'. We only lose about 4 field setters, and all the fields were undocumented anyway. Sorry for being lazy.

Michael



--
You received this message because you are subscribed to the Google Groups "cranvas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cranvas+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Tomas Sieger

unread,
Dec 4, 2013, 9:35:59 AM12/4/13
to cra...@googlegroups.com, Michael Lawrence
It seems that the issue is still there.

The problem is that calling
  field.type()->isConst()
in Util::addAccessorMethods()
in qtbase/kdebindings/generator/generators/smoke/helpers.cpp
for
  [QAccelerometer::] static char const * const type
returns false, such that the fix of
  if (field.type()->isConst()) {
          return;
  }
does not apply.

Tomas

Michael Lawrence

unread,
Dec 5, 2013, 8:24:38 AM12/5/13
to Tomas Sieger, cra...@googlegroups.com, Michael Lawrence
Ok, thanks for clarifying that. I reverted the previous change and just masked that field manually from the generator. Since it is undocumented, it seems unjustified to even have a getter. I honestly don't understand why Qt marked those fields as public. They're just used as a constant that is passed up to the QSensor super constructor (which has an instance-level accessor for the type).

Anyway, please try again.

Btw, I added support for bluetooth, NFC and positioning, which might cause more breakage. On the bright side, we're fully mobile-enabled. Anyone want to try getting R and qtbase running on Android? ;) Collect and analyze sensor data on the fly?

Xiaoyue Cheng

unread,
Dec 5, 2013, 12:57:45 PM12/5/13
to cra...@googlegroups.com, Michael Lawrence
Got stuck in the last step. In the first two attempts I got

Error : .onLoad failed in loadNamespace() for 'qtbase', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/xiaoyue/R/library/qtbase/libs/qtbase.so':
libQt5Multimedia.so.5: cannot open shared object file: No such file or directory


and

libudev.so.0: cannot open shared object file: No such file or directory

So I included the directories to LD_LIBRARY_PATH. Then I got the following, which seems related to the bluetooth. Not sure what to do now.


** R
** demo
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'qtbase', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/xiaoyue/R/library/qtbase/libs/qtbase.so':
  /home/xiaoyue/R/library/qtbase/libs/qtbase.so: undefined symbol: _ZTI23QBluetoothTransferReply
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/xiaoyue/R/library/qtbase’
* restoring previous ‘/home/xiaoyue/R/library/qtbase’


Best,
Xiaoyue

Tomas Sieger

unread,
Dec 5, 2013, 3:29:38 PM12/5/13
to cra...@googlegroups.com, Michael Lawrence
It is a similar story for me:

i) pure 'R CMD install qtbase' results in missing libQt5Widgets.so.5

ii) adding Qt5 libs to LD_LIBRARY_PATH helps, but R CMD install qtbase then results in:

** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'qtbase', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/user/R/i686-redhat-linux-gnu-library/2.15/qtbase/libs/qtbase.so':
  /home/user/R/i686-redhat-linux-gnu-library/2.15/qtbase/libs/qtbase.so: undefined symbol: _ZTI9QUiLoader
Error: loading failed

I can't find the _ZTI9QUiLoader symbol in Qt5 shared libs.

Creating a fake shared lib with _ZTI9QUiLoader (and some more symbols) defined and forcing it to be loaded via LD_PRELOAD works - R CMD install succeeds. However, I can't load the qtbase lib in R for the very same problem (_ZTI9QUiLoader missing).

Any more ideas?

cheers,
 Tomas

Michael Lawrence

unread,
Dec 5, 2013, 4:01:01 PM12/5/13
to cra...@googlegroups.com, Michael Lawrence
On Thu, Dec 5, 2013 at 12:29 PM, Tomas Sieger <tomas....@seznam.cz> wrote:
It is a similar story for me:

i) pure 'R CMD install qtbase' results in missing libQt5Widgets.so.5


This seems like an Ubuntu issue. Why would the Qt5 libs not be in the LD_LIBRARY_PATH by default? Is Qt5 not officially supported?
 
ii) adding Qt5 libs to LD_LIBRARY_PATH helps, but R CMD install qtbase then results in:

** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'qtbase', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/user/R/i686-redhat-linux-gnu-library/2.15/qtbase/libs/qtbase.so':
  /home/user/R/i686-redhat-linux-gnu-library/2.15/qtbase/libs/qtbase.so: undefined symbol: _ZTI9QUiLoader
Error: loading failed

I can't find the _ZTI9QUiLoader symbol in Qt5 shared libs.


That's the QUiLoader typeinfo. If you do a R CMD ldd on the qtbase.so, do you see it linking to QtUiTools?
 
Creating a fake shared lib with _ZTI9QUiLoader (and some more symbols) defined and forcing it to be loaded via LD_PRELOAD works - R CMD install succeeds. However, I can't load the qtbase lib in R for the very same problem (_ZTI9QUiLoader missing).



Would be very helpful to get a list of those symbols.

Thanks!
Michael

Tomas Sieger

unread,
Dec 6, 2013, 7:54:27 AM12/6/13
to cra...@googlegroups.com, Michael Lawrence
On Thu, Dec 5, 2013 at 10:01 PM, Michael Lawrence <lawrence...@gene.com> wrote:



On Thu, Dec 5, 2013 at 12:29 PM, Tomas Sieger <tomas....@seznam.cz> wrote:
It is a similar story for me:

i) pure 'R CMD install qtbase' results in missing libQt5Widgets.so.5


This seems like an Ubuntu issue. Why would the Qt5 libs not be in the LD_LIBRARY_PATH by default? Is Qt5 not officially supported?

I'm running Fedora 17. Anyway, I installed Qt5 manually in a non-standard location, so that's probably my fault, unless Qt provides some "configure" tool that specifies where libs are located, such that apps being built against Qt could determine where to find the libs).
Not sure if Qt provides something like that, just noticed that there is "qtpaths" tool in bin, which, however, does not seem to provide paths to libs (only to bins and plugins).

 
ii) adding Qt5 libs to LD_LIBRARY_PATH helps, but R CMD install qtbase then results in:

** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'qtbase', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/user/R/i686-redhat-linux-gnu-library/2.15/qtbase/libs/qtbase.so':
  /home/user/R/i686-redhat-linux-gnu-library/2.15/qtbase/libs/qtbase.so: undefined symbol: _ZTI9QUiLoader
Error: loading failed

I can't find the _ZTI9QUiLoader symbol in Qt5 shared libs.


That's the QUiLoader typeinfo. If you do a R CMD ldd on the qtbase.so, do you see it linking to QtUiTools?

No.
You can find the list of libs qtbase.so is linking to attached (qtbase.so.ldd.txt).
 
 
Creating a fake shared lib with _ZTI9QUiLoader (and some more symbols) defined and forcing it to be loaded via LD_PRELOAD works - R CMD install succeeds. However, I can't load the qtbase lib in R for the very same problem (_ZTI9QUiLoader missing).



Would be very helpful to get a list of those symbols.

Sorry for not being explicit. Please find the hack.c attached - this is my fake shared lib source that satisfies all requests for *QUi*  symbols not found.

BTW I've been using R 2.15.2 so far. When I do the same exercise in R 3.0.2, everything is the same except that I can load the qtbase lib, but can't run e.g. the qbrush example:
> example(qbrush)
qbrush> ## notice the coercion chaining:
qbrush> redColor <- qcolor("red")
Error in qinvokeStatic(cl, basename, ...) :
  'obj' is NULL but  is not a class method


hope it helps
 Tomas
qtbase.so.ldd.txt
hack.c

Michael Lawrence

unread,
Dec 6, 2013, 8:35:45 AM12/6/13
to Tomas Sieger, cra...@googlegroups.com, Michael Lawrence
Do you have a QUiTools lib anywhere? Was it built? I'm wondering if somehow cmake is detecting headers but not the build configuration. I would have assumed though that it would try to put the library on the linker line (you can figure this out by adding VERBOSE=1 to the calls to "make" in src/Makefile), which would fail when the lib was not found.

The same problem could apply to Xiaoyue. If bluetooth headers are present, but the library was not built, the same problem could result. If this turn out to be the issue, it would be a frustrating limitation of the new cmake stuff.

Michael

Tomas Sieger

unread,
Dec 6, 2013, 10:20:06 AM12/6/13
to cra...@googlegroups.com, Michael Lawrence
Yes, I have QUiTools built, as a static lib (libQt5UiTools.a), not a shared one, and installed in Qt5.2.0/5.2.0-beta1/gcc/lib.

The _ZTI9QUiLoader symbol is there, but not sure if visible:
objdump -t libQt5UiTools.a | grep _ZTI9QUiLoader
00000000 l    d  .data.rel.ro._ZTI9QUiLoader    00000000 .data.rel.ro._ZTI9QUiLoader
00000000  w    O .data.rel.ro._ZTI9QUiLoader    0000000c .hidden _ZTI9QUiLoader
(similarly to the other missing symbols)

The static lib appeared on the "make" cmd line:
/usr/bin/cmake -E cmake_link_script CMakeFiles/qtbase.dir/link.txt --verbose=1
g++  -fPIC -m32 -m32  -Wl,-z,relro -shared -shared -Wl,-soname,qtbase.so -o qtbase.so CMakeFiles/qtbase.dir/init.cpp.o CMakeFiles/qtbase.dir/EventLoop.cpp.o CMakeFiles/qtbase.dir/convert.cpp.o CMakeFiles/qtbase.dir/wrap.cpp.o CMakeFiles/qtbase.dir/metaobject.cpp.o CMakeFiles/qtbase.dir/connect.cpp.o CMakeFiles/qtbase.dir/invoke.cpp.o CMakeFiles/qtbase.dir/dynamicqobject.cpp.o CMakeFiles/qtbase.dir/RDynamicQObject.cpp.o CMakeFiles/qtbase.dir/ClassFactory.cpp.o CMakeFiles/qtbase.dir/Class.cpp.o CMakeFiles/qtbase.dir/SmokeClass.cpp.o CMakeFiles/qtbase.dir/MocClass.cpp.o CMakeFiles/qtbase.dir/RClass.cpp.o CMakeFiles/qtbase.dir/classes.cpp.o CMakeFiles/qtbase.dir/ForeignMethod.cpp.o CMakeFiles/qtbase.dir/SmokeMethod.cpp.o CMakeFiles/qtbase.dir/RMethod.cpp.o CMakeFiles/qtbase.dir/MocMethod.cpp.o CMakeFiles/qtbase.dir/DynamicBinding.cpp.o CMakeFiles/qtbase.dir/MocDynamicBinding.cpp.o CMakeFiles/qtbase.dir/MethodCall.cpp.o CMakeFiles/qtbase.dir/type-handlers.cpp.o CMakeFiles/qtbase.dir/MocStack.cpp.o CMakeFiles/qtbase.dir/MocProperty.cpp.o CMakeFiles/qtbase.dir/RProperty.cpp.o CMakeFiles/qtbase.dir/SmokeModule.cpp.o CMakeFiles/qtbase.dir/module.cpp.o CMakeFiles/qtbase.dir/RSmokeBinding.cpp.o CMakeFiles/qtbase.dir/SmokeList.cpp.o CMakeFiles/qtbase.dir/SmokeObject.cpp.o CMakeFiles/qtbase.dir/ObjectTable.cpp.o CMakeFiles/qtbase.dir/InstanceObjectTable.cpp.o CMakeFiles/qtbase.dir/smoke.cpp.o CMakeFiles/qtbase.dir/DataFrameModel.cpp.o CMakeFiles/qtbase.dir/RTextFormattingDelegate.cpp.o CMakeFiles/qtbase.dir/qtbase_automoc.cpp.o -L/home/user/src/R/qtbase/src/../kdebindings-build/smoke/qt /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Widgets.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Multimedia.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5MultimediaWidgets.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Network.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Qml.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Quick.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Sql.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Test.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5WebKitWidgets.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5DBus.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Svg.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5XmlPatterns.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5PrintSupport.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Help.so.5.2.0 ******HERE****** /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5UiTools.a ******HERE****** /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5SerialPort.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Sensors.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Bluetooth.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Positioning.so.5.2.0 -lsmokeqt /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Multimedia.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Quick.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5OpenGL.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5WebKit.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Widgets.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Gui.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Qml.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Network.so.5.2.0 /opt/Qt5.2.0/5.2.0-beta1/gcc/lib/libQt5Core.so.5.2.0 -Wl,-rpath,/home/user/src/R/qtbase/src/../kdebindings-build/smoke/qt:/opt/Qt5.2.0/5.2.0-beta1/gcc/lib:

Tomas

Xiaoyue Cheng

unread,
Dec 6, 2013, 10:34:52 AM12/6/13
to cra...@googlegroups.com, Michael Lawrence
By default 
Ubuntu only
provides
Qt
5.0.2.
So I installed 5.2 from the installer and added it to PATH.


Xiaoyue

Xiaoyue Cheng

unread,
Dec 6, 2013, 11:38:55 AM12/6/13
to cra...@googlegroups.com, Michael Lawrence
I found the bluetooth symbol in libQt5Bluetooth.so.5.2.0

/Qt5.2.0/5.2.0-beta1/gcc_64/lib$ objdump -T libQt5Bluetooth.so.5.2.0 | grep _ZTI23QBluetoothTransferReply
0000000000258d70  w   DO .data.rel.ro    0000000000000018  Base        _ZTI23QBluetoothTransferReply

This lib appeared in my "make" line too, as you can see from Tomas' output when VERBOSE=1.

Best,
Xiaoyue

Michael Lawrence

unread,
Dec 12, 2013, 12:36:11 AM12/12/13
to Tomas Sieger, cra...@googlegroups.com, Michael Lawrence
Yea, looks like UiTools only builds statically, not sure why. The symbol is intentionally local so that when the static lib is linked into a shared object, the symbols are not exposed. At the object file level, everything should be visible, I think. The static lib is probably getting linked twice, first into the libsmokeqt.a (the smoke bindings, which is linked to qtbase.so), and then again into qtbase.so directly. Maybe that is causing an issue?

Michael

Tomas Sieger

unread,
Jan 20, 2014, 4:09:29 PM1/20/14
to cra...@googlegroups.com, Michael Lawrence
On Thu, Dec 12, 2013 at 6:36 AM, Michael Lawrence <lawrence...@gene.com> wrote:
Yea, looks like UiTools only builds statically, not sure why.

Yes, UiTools builds statically. It seems that Qt decided to do so:
[1] https://bugs.archlinux.org/task/37447?opened=4800&status[0]=
[2] https://git.reviewboard.kde.org/r/110563/

The symbol is intentionally local so that when the static lib is linked into a shared object, the symbols are not exposed. At the object file level, everything should be visible, I think.

The _ZTI9QUiLoader symbol is undefined even in qtbase/kdebindings-build/smoke/qt/libsmokeqt.a:
objdump -t libsmokeqt.a | grep _ZTI9QUiLoader
00000000         *UND*  00000000 _ZTI9QUiLoader
 
The static lib is probably getting linked twice, first into the libsmokeqt.a (the smoke bindings, which is linked to qtbase.so), and then again into qtbase.so directly. Maybe that is causing an issue?

The static lib Qt5.2.0-final/5.2.0/gcc/lib/libQt5UiTools.a is linked twice (with/in qtbase/src/qtbase.so and libsmokeqt.a).
However, removing libQt5UiTools.a from qtbase.so linkage dependencies still results in the same problem (undefined symbol _ZTI9QUiLoader when loading qtbase.so).

Perhaps, the issue relates to _ZTI9QUiLoader missing from libsmokeqt.a?

Is there a way to force _ZTI9QUiLoader appearing in libQt5UiTools.a:
  objdump -t libQt5UiTools.a | grep _ZTI9QUiLoader
  00000000 l    d  .data.rel.ro._ZTI9QUiLoader    00000000 .data.rel.ro._ZTI9QUiLoader
  00000000  w    O .data.rel.ro._ZTI9QUiLoader    0000000c .hidden _ZTI9QUiLoader
to be defined in libsmokeqt.a?
O, perhaps, the problem is that _ZTI9QUiLoader is weak in libQt5UiTools.a:
  nm libQt5UiTools.a |grep _ZTI9QUiLoader
  00000000 V _ZTI9QUiLoader
?

Tomas

Michael Lawrence

unread,
Jan 30, 2014, 8:17:49 AM1/30/14
to Tomas Sieger, cra...@googlegroups.com, Michael Lawrence
I think I've solved the problem. Whenever gcc links a static lib to a shared lib, it cherrypicks the .o's that are unresolved in the library being linked. Since libsmokeqt.a is on the linker line (just) *after* libQtUiTools.a, gcc does not recognize the symbols as unresolved.

I solved this for now by simply adding the QtUiTools lib on the linker line after -lsmokeqt. That means the QtUiTools is on the linker line twice, but figuring out how to remove the first one is probably not worth the effort.

Please try the latest from github.

Tomas Sieger

unread,
Feb 3, 2014, 4:03:07 PM2/3/14
to cra...@googlegroups.com, Michael Lawrence
Thanks. The fix works for me (R version 2.15.2 (2012-10-26), Platform: i686-redhat-linux-gnu (32-bit)).
Now, I can load the package.

However, I'm running into problems described earlier by deepayan in the qtbase issue #17 (https://github.com/ggobi/qtbase/issues/17).
The problem manifests e.g. as:


> example(qbrush)

qbrush> ## notice the coercion chaining:
qbrush> redColor <- qcolor("red")
Error in qinvokeStatic(cl, basename, ...) :
  'obj' is NULL but  is not a class method
> traceback()
9: .Call("qt_qinvokeStatic", x, method, list(...), PACKAGE = "qtbase")
8: qinvokeStatic(cl, basename, ...)
7: Qt$QColor(red, green, blue, alpha)
6: qcolor("red") at Rex35e351f31acf#9
5: eval(expr, envir, enclos)
4: eval(ei, envir)
3: withVisible(eval(ei, envir))
2: source(tf, local, echo = echo, prompt.echo = paste0(prompt.prefix,
       getOption("prompt")), continue.echo = paste0(prompt.prefix,
       getOption("continue")), verbose = verbose, max.deparse.length = Inf,
       encoding = "UTF-8", skip.echo = skips, keep.source = TRUE)
1: example(qbrush)

Tomas

Michael Lawrence

unread,
Feb 3, 2014, 4:25:57 PM2/3/14
to Tomas Sieger, cra...@googlegroups.com, Michael Lawrence
Thanks for letting me know. Obviously, I can't reproduce this issue, but with Deepayan's help, we should be able to solve it.

Michael Lawrence

unread,
Feb 4, 2014, 9:51:14 AM2/4/14
to Xiaoyue Cheng, cra...@googlegroups.com, Michael Lawrence
Somehow this got lost in the thread. This has been reported on github by someone else, and I assume you have not solved it yet. Everything is working for Tomas now, but maybe he doesn't have the QtBluetooth module? Anyway, more on the github issue.

Tomas Sieger

unread,
Feb 4, 2014, 10:34:37 AM2/4/14
to cra...@googlegroups.com, Xiaoyue Cheng, Michael Lawrence
On Tue, Feb 4, 2014 at 3:51 PM, Michael Lawrence <lawrence...@gene.com> wrote:
Somehow this got lost in the thread. This has been reported on github by someone else, and I assume you have not solved it yet. Everything is working for Tomas now, but maybe he doesn't have the QtBluetooth module?

I do have QtBluetooth module installed in my Qt5.2.0-final, and qtbase.so links to this module.

The current qtbase (*) can be built and installed without problems on R version 2.15.2 (2012-10-26) on i686-redhat-linux-gnu (32-bit).

(*) I mean qtbase 2014-02-01, specifically this commit:
 https://github.com/ggobi/qtbase/commit/fb939fdccd1853cd758e1ff3411c0b8237b0e314

Tomas
Reply all
Reply to author
Forward
0 new messages