co-installable qt4-mac and qt5-mac step1 : qt4-mac +concurrent
Craig Treleaven
ctreleaven at macports.org
Fri Jan 16 05:27:18 PST 2015
At 10:56 AM +0100 12/20/14, René J.V. Bertin wrote:
>On Saturday December 20 2014 17:44:30 Ian Wadham wrote:
>
>Morning Ian!
>
>>It is a great start !!! Thanks very much René!
>
>You are welcome (and I and the rest of us...) Someone had to do this...
>
>I was hoping a few other MacPorts/KDE-Mac users
>could try this, esp. those doing work on Qt5/KF5
>...
>One test that could indicate whether indeed this
>allows concurrency is to install
>qt4-mac+concurrent (*not* qt4-mac-transitional)
>and the current, unmodified qt5-mac .
>I think that ought to work.
>
>> a) Traditionally you can install new or
>>development versions of Qt "somewhere else"
>> and point to your test or development
>>version via environment variable $QTDIR.
>> Does this presuppose a fixed hierarchy
>>of directories and names under $QTDIR?
>> If so, changing that hierarchy may cause problems.
>
>I think that nowadays the QTDIR "trick" is
>mostly to use a test version in a different tree
>with applications that were already linked to
>your usual version. If so, that means that QTDIR
>must point to a complete directory and as long
>as that's the case you should be fine.
>QTDIR is not (no longer?) required for running.
>
>> b) Shifting Qt libraries from ${prefix}/lib
>>to ${prefix}/libexec/${qt_name}/lib might be
>> a "no-op". In the lib subdir
>>(/opt/local/lib on my system), Qt libraries are
>>installed
>> as links. For example, libQtCore.dylib,
>>libQtCore.4.dylib, libQtCore.4.8.dylib and
>> libQtCore.4.8.6.dylib all point to
>>/opt/local/Library/Frameworks/QtCore.framework/QtCore,
>> which in turn points to
>>Versions/4/QtCore and THAT is actually a file
>>described as
>> Versions/4/QtCore: Mach-O 64-bit x86_64
>>dynamically linked shared library.
>>
>>Maybe I am missing something.
>
>Yes, you are :) Those frameworks have been moved too.
>qt4-mac and qt5-mac use a sneaky trick to
>provide a combined framework and traditional
>build, based on the fact that an OS X framework
>is nothing but a shared library (without the
>usual extension) combined with all associated
>stuff bundled in a specific way. You can get
>very close by using
>--prefix=/Library/Frameworks/foo/Versions/${MAJOR_VERSION}
>and then setting up a couple of symlinks to
>disclose certain things a bit more directly.
>So symlinking framework binaries as you saw
>makes the link editor can find them ... it
>already knows how to handle them.
>
>All that to say that no, the qt_libs_dir shift
>is not a no-op. Try it :) and if you didn't
>install qt4-mac-transitional in the same command
>you'll get errors from rev-upgrade. Or else
>you'll see that re-built Qt or KDE applications
>now link to stuff in /opt/local/libexec/qt4 .
Related to the proposed Charm port:
https://trac.macports.org/ticket/46575
If I understand correctly, Charm will create subports ala:
qt5-charm
charm
Is this supposed to be a model for going forward?
I find the "qt5-" prefix objectionable.
Going forward, I believe we will have the following cases:
1) Projects that work with Qt4 but not Qt5
2) Projects that work with Qt5 but not Qt4
3) Projects that work with either Qt4 or Qt5 but differ in non-trivial ways
4) Projects that work with the same with Qt4 or Qt5
Assuming we have co-installable Qt4 and Qt5 via
MacPorts, cases 1), 2) and 4) are
straightforward: 'port:' style dependencies for
1) and 2) and 'path:' style for 4).
In case 3), I think the upstream development plan
is important. If upstream is moving to
supporting Qt5 and the current differences are
due to incomplete support, I think it would be
more appropriate to create a '-devel' version of
the port until the Qt5 conversion is complete.
OTOH, there might be rare cases where users might
need to choose between the Qt4 version (more
compatible, say) and a Qt5 version (new
features). Qt4/Qt5 variants would then be
appropriate.
FWIW, the project I'm most concerned with,
MythTV, has had a working build with Qt5 for a
long time and is encouraging testing but it is
not recommended for casual users. AIUI, it was
not particularly difficult to add Qt5 support
even though Myth uses Qt extensively for user
interface (including video rendering) and OS
abstraction. When upstream is closer to another
release (0.28), I plan to create a -devel version
using Qt5. Barring show-stoppers, I expect to
transition to Qt5 exclusively.
Craig
More information about the macports-dev
mailing list