OS/2, eCS & ArcaOS - Technical > Programming

Qt6 Development

<< < (2/161) > >>

Dave Yeo:
Seems one of the problems was LTS versions of QT5 (excepting the web engine) were only available commercially, KDE kept its own repository of patches for that and also some modules such as the charting one are only available under a commercial license.
Wouldn't be surprised that they floated the idea of only commercial licensing and got so much push back that they caved. It happened before.

Mentore:

--- Quote from: Dave Yeo on November 11, 2022, 04:28:49 am ---Seems one of the problems was LTS versions of QT5 (excepting the web engine) were only available commercially, KDE kept its own repository of patches for that and also some modules such as the charting one are only available under a commercial license.
Wouldn't be surprised that they floated the idea of only commercial licensing and got so much push back that they caved. It happened before.

--- End quote ---

I recently installed Qt6 on the Windows machine I work with and yes, there is an open source solution which I think Paul will find useful.
Paul, I cannot praise you enough for your incredible work on porting software for OS/2. And even if this should not bring anywhere, it will however have some impact on OS/2 software development.

Mentore

Paul Smedley:
Working through failed patches whilst trying to build in parallel :)

This is where we got to today:
[  7%] Building CXX object src/tools/bootstrap/CMakeFiles/Bootstrap.dir/__/__/corelib/text/qstring.cpp.o
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/text/qstring.cpp:6322:7: error: #error "This case shouldn't happen"

Noting we also have (from the log of applying the patch):
patching file src/corelib/text/qstring.cpp
Hunk #1 FAILED at 6566.
1 out of 1 hunk FAILED -- saving rejects to file src/corelib/text/qstring.cpp.rej

This one should be easy enough to get past.

First goal is to get qmake.exe built :)

Paul Smedley:
This morning's progress:
 Directory of  U:\DEV\qtbase-everywhere-src-6.2.4\build\bin\*.exe

12/11/22   9:37       3,059,854      0   ___A_  cmake_automoc_parser.exe
12/11/22   9:36       3,417,995      0   ___A_  moc.exe
12/11/22   9:37       2,646,057      0   ___A_  rcc.exe
12/11/22   9:37       2,388,997      0   ___A_  tracegen.exe
      11,512,903 bytes (10MB) in 4 files and 0 dirs

Paul Smedley:
Hey guys,

Update - I got to the stage where an attempt to link qtcore6.dll was made :) It had a bunch of missing symbols due to the *os2.cpp files not being added to the build process.

I've updated git with all the code changes so far.

Build is now breaking with:

--- Code: ---[ 23%] Building CXX object src/corelib/CMakeFiles/Core.dir/io/qprocess_os2.cpp.o
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:154:10: warning: 'virtual void QProcessManager::run()' can be marked override [-Wsuggest-override]
  154 |     void run();
      |          ^~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In static member function 'static USHORT QProcessManager::addProcess(QProcess*)':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:276:32: error: cannot call member function 'QThreadPrivate* QThread::d_func()' without object
  276 |     QProcessPrivate *d = d_func();
      |                          ~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In static member function 'static void QProcessManager::removeProcess(USHORT)':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:346:32: error: cannot call member function 'QThreadPrivate* QThread::d_func()' without object
  346 |     QProcessPrivate *d = d_func();
      |                          ~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:336:15: warning: unused variable 'process' [-Wunused-variable]
  336 |     QProcess *process = instance->processes[procKey];
      |               ^~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In member function 'virtual void QProcessManager::run()':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:439:33: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  439 |                 if (proc->d_func()->waitMode) {
      |                     ~~~~~~~~~~~~^~
In file included from U:/dev/qtbase-everywhere-src-6.2.4/build/include/QtCore/qglobal.h:1,
                 from U:/dev/qtbase-everywhere-src-6.2.4/mkspecs/os2-g++/qplatformdefs.h:52,
                 from U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:44:
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:440:49: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  440 |                     DosPostEventSem(proc->d_func()->waitSem);
      |                                     ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:518:29: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  518 |                 proc->d_func()->pipes[type]->bytes = pipeStates[i].usAvail;
      |                 ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:530:29: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  530 |             if (proc->d_func()->waitMode) {
      |                 ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:531:45: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  531 |                 DosPostEventSem(proc->d_func()->waitSem);
      |                                 ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: At global scope:
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1292:6: error: no declaration matches 'bool QProcessPrivate::waitForStarted(int)'
 1292 | bool QProcessPrivate::waitForStarted(int /*msecs*/)
      |      ^~~~~~~~~~~~~~~
In file included from U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:81:
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:407:10: note: candidate is: 'bool QProcessPrivate::waitForStarted(const QDeadlineTimer&)'
  407 |     bool waitForStarted(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1405:6: error: no declaration matches 'bool QProcessPrivate::waitForReadyRead(int)'
 1405 | bool QProcessPrivate::waitForReadyRead(int msecs)
      |      ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:408:10: note: candidate is: 'bool QProcessPrivate::waitForReadyRead(const QDeadlineTimer&)'
  408 |     bool waitForReadyRead(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1410:6: error: no declaration matches 'bool QProcessPrivate::waitForBytesWritten(int)'
 1410 | bool QProcessPrivate::waitForBytesWritten(int msecs)
      |      ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:409:10: note: candidate is: 'bool QProcessPrivate::waitForBytesWritten(const QDeadlineTimer&)'
  409 |     bool waitForBytesWritten(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1415:6: error: no declaration matches 'bool QProcessPrivate::waitForFinished(int)'
 1415 | bool QProcessPrivate::waitForFinished(int msecs)
      |      ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:410:10: note: candidate is: 'bool QProcessPrivate::waitForFinished(const QDeadlineTimer&)'
  410 |     bool waitForFinished(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In member function 'int QProcessPrivate::_q_notified(int)':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1535:31: error: could not convert '((QProcessPrivate*)this)->QProcessPrivate::_q_processDied()' from 'void' to 'bool'
 1535 |             if (_q_processDied())
      |                 ~~~~~~~~~~~~~~^~
      |                               |
      |                               void
make[2]: *** [src/corelib/CMakeFiles/Core.dir/io/qprocess_os2.cpp.o] Error 1
make[1]: *** [src/corelib/CMakeFiles/Core.dir/all] Error 2
make: *** [all] Error 2

--- End code ---

My c++ is not great - but I'll attempt to continue work on this tomorrow.

For anyone who wants to try building, I'm using:

--- Code: ---dash ../configure -prefix /qt6 -no-opengl -release -system-sqlite -openssl-linked -no-pch 2>&1 | tee configure.log
--- End code ---

This needs cmake 3.16 - I have built it locally, but Dave is having issues with the code in github... I'll package up a build...

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version