Open mad-jsanjuan opened 1 year ago
We have been considering two possible alternatives so that we can generate mdiswiz
binaries:
So far we have had troubles using fairly old distributions (Ubuntu 12) and using the provided packages for libX
and libfontconfig
. They seem to come from even older distributions or compiled from source with unknown config options used.
For X we get this if we don't use:
[xcb] Unknown sequence number while appending request
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
mdiswiz_vagrant: ../../src/xcb_io.c:157: append_pending_request: Assertion `!xcb_xlib_unknown_seq_number' failed.
For libfontconfig
, the binary takes a lot of time to start the graphical stuff and gives us this error:
. . .
Fontconfig error: "/etc/fonts/conf.d/70-no-bitmaps.conf", line 6: invalid attribute 'xmlns:its'
Fontconfig error: "/etc/fonts/conf.d/70-no-bitmaps.conf", line 6: invalid attribute 'version'
Fontconfig warning: "/etc/fonts/conf.d/70-no-bitmaps.conf", line 8: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/80-delicious.conf", line 4: unknown element "its:rules"
Fontconfig warning: "/etc/fonts/conf.d/80-delicious.conf", line 5: unknown element "its:translateRule"
Fontconfig error: "/etc/fonts/conf.d/80-delicious.conf", line 5: invalid attribute 'translate'
Fontconfig error: "/etc/fonts/conf.d/80-delicious.conf", line 5: invalid attribute 'selector'
Fontconfig error: "/etc/fonts/conf.d/80-delicious.conf", line 6: invalid attribute 'xmlns:its'
Fontconfig error: "/etc/fonts/conf.d/80-delicious.conf", line 6: invalid attribute 'version'
Fontconfig warning: "/etc/fonts/conf.d/90-synthetic.conf", line 4: unknown element "its:rules"
Fontconfig warning: "/etc/fonts/conf.d/90-synthetic.conf", line 5: unknown element "its:translateRule"
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 5: invalid attribute 'translate'
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 5: invalid attribute 'selector'
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 6: invalid attribute 'xmlns:its'
Fontconfig error: "/etc/fonts/conf.d/90-synthetic.conf", line 6: invalid attribute 'version'
Fontconfig error: Cannot load default config file
So the short term solution here should be to recover some of the static library *.a
files from the old build environment backup and put together a new build environment in a VM that solves the above mentioned issues with X and libfontconfig to try and match the generated binaries we have today.
We have made an initial analysis to get an overview of how hard it would be to migrate the entire wizzard project to a newer Qt version so it can be built on newer OS distributions.
There are a few things to take into consideration here.
The mdiswizzard is currently built against Qt 4.6.0
. However, Qt4 has a module called qt3support
. This lets Qt3 code be compiled against Qt4 with some minor tweaking of the classes names.
Migration from Qt4 to Qt5 should not be too complicated but the Qt4 code should not depend on qt3support. This means that the current sources would first need to be refactored so that they are fully Qt4 based.
https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5 https://www.kdab.com/porting-from-qt-4-to-qt-5/
The change to modernize Qt4 without qt3support
requires quite a bit of work. Here is a reference that can be used to check each of the changes needed:
https://qt.developpez.com/doc/4.7/porting4/
I found on an initial run that there are some item view classes used by the mdiswizzard such as Q3MainWindow
, Q3ListView
, Q3ListViewItem
, Q3CheckListItem
, etc. will need to be redesigned to use the new alternatives that do not have a straight forward migration.
For now, we use a backup of the old buildserver as compilation sysroot. This lets us create binaries as close as possible to what has been delivered in previous releases. We will discuss whether we need to migrate the tool to newer versions of Qt.
I reopen and renamed this issue, because we should consider to migrate the MDIS Wizard to a newer Qt version.
We need to put together a new build environment so that we can generate the MDIS wizzard binaries as they are today.
The current ones in the repo seem to have pretty old libraries that are statically linked. This is so because they presumably were built inside a very old Linux distribution (ubuntu 10, SUSE Linux Enterprise Server 10 or so).
The major issue with the old static libraries seems to be with the libX and related libraries when using QT version 4.6.0. The application crashes at runtime if not linked against an old enough libX library.
We have been able to link against the X libraries from a backup which seems to suggest it was X version 1.6.2.