[MacPorts] #51619: qt5.depends_component procedure

MacPorts noreply at macports.org
Thu Dec 29 19:54:07 CET 2016


#51619: qt5.depends_component procedure
---------------------------+----------------------
  Reporter:  RJVB          |      Owner:  mkae
      Type:  enhancement   |     Status:  assigned
  Priority:  Normal        |  Milestone:
 Component:  ports         |    Version:
Resolution:                |   Keywords:
      Port:  qt5, qt5-kde  |
---------------------------+----------------------

Comment (by RJVB):

 Replying to [comment:18 MarcusCalhoun-Lopez]:
 > Please correct me if I am wrong, but we have three major design goals:

 I would use this order:

 > 1. Minimal disruption of ports that use Qt.
 > 1. Support a patched version of Qt which is necessary to be used with
 KDE.
 > 1. Allow the installation of older versions of Qt to accommodate older
 OSs.


 > Here are the options I can determine:
 > 1. Let the user decide which Qt to install with reasonable defaults.
 >  * This seems to be the current path.
 Indeed.
 >  * Runs contrary to ReproducibleBuilds and MacPorts philosophy in
 general.

 Again, it doesn't have to violate the reproducible build approach as far
 as I understand it. It *is* somewhat of a novel approach for MacPorts, but
 then the situation is novel(ish) too. Though there are similarities with
 the libressl vs openssl situation (and I think I have prepared a more
 elegant implementation for port:qt5 vs port:qt5-kde!)

 >  * There might be (and probably are) any number of ABI comparabilities
 that we don't know about.

 The whole discussion about ABI compatibility has probably distracted us
 from a rather important point. This is a problem that plays only when
 changing from one port to another. Once you install port:qt5-kde, the
 +qt5kde variant my portgroup introduces is going to protect against
 pulling possibly incompatible binary builds from the bots. This means that
 users who install `port:qt5-kde` will install standard Qt5 ports from
 source, and when they change back to port:qt5 they may have to reinstall
 those ports. The same thing happens with GTk X11 vs. XQuartz as far as I
 know, or LibreSSL vs OpenSSL. It's a choice they make, and we can document
 such implications.

 In practice I would expect that most users will decide once which Qt5 port
 they install and then stick to it.

 > 2. Variants (`qt5`, `qt56`, `qt5-kde`) defined in `qt5-1.0.tcl` to
 conflicting Qts.
 >  * The various GTK ports had to jump through quite a few hoops with
 `+x11` vs `+quartz`. The various maintainers have done a wonderful job,
 but, from the outside, it looked like quite a bit of effort. I am not sure
 I want to have allot of `require_active_variants` in client ports.
 > 3. Variants (`qt5`, `qt56`, `qt5-kde`) defined in `qt5-1.0.tcl` to non-
 conflicting Qts.
 > 4. Completely separate `qt5` and `qt5-kde`

 I am sure I do not want to have to impose the use of the active_variants
 PortGroup, and also that I don't want to have to guess about the side-
 effects of potentially having a different Qt version installed somewhere
 in the same prefix. Those 3 options will more or less oblige me to declare
 conflicts with port:qt5 in port:qt5-kde, and that's going to cause a big
 problem with ports like qca-qt5, poppler-qt5 etc. which are dependencies
 for both regular Qt5 applications and Qt5-kde applications.

 > 5. Attempt to merge `qt5` and `qt5-kde`
 >  * The necessary KDE patches would be added via a variant in `qt5`.
 >  * The Qt version would be determined by the OS and cxx_stdlib.
 >  * `require_active_variants`might still be necessary in client ports,
 but probably not many.

 Require_active_variants would be required in all KF5 ports because there
 would no longer be a way to indicate a preference.
 Either way, the Option 5 ship has sailed over a year ago.

 > If I understand correctly, Mojca has raised serious concerns about (1)

 Where? Mojca, is this true? I know you've been following my qt5-kde
 submission ticket from an early stage but cannot recall that you voiced
 any serious concerns there?


 > René has [https://lists.macports.org/pipermail/macports-
 dev/2016-October/033944.html expressed reservations about (5)].

 > Based on the numerous discussions we have already had, I thinks it is
 fair to say that a perfect solution is unlikely to present itself.[[BR]]
 > I am willing to work on any of the solution, but my order of preference
 is (5), (4), (1), (2), then (3).

 My preference is evidently with the current approach, option 1). I've had
 a lot of time to think about this, and I think it's the only approach that
 allows to introduce KF5 in a way I can really stand behind. It's also the
 approach that puts the least additional maintenance effort on Marcus and
 maintainers of other ports depending on Qt5. I have already stated that
 I'm willing to carry the brunt of the maintenance of the shared PortGroup,
 but for the rest responsibility of everything related to the current
 port:qt5 will remain with Marcus, and I will keep in sync with any chances
 he makes that have implications for the compatibility between the ports.
 That's not just minimal disruption of ports that use Qt, it's also minimal
 disruption of all port maintainers except myself (but then guess who's
 proposing to introduce another Qt5 port :)).
 (There *is* the question of shared maintenance of the qmake5 PG of course
 but there too I have already re-organised the file to make it clear which
 parts are shared and which aren't).

 The only other option I see is to include the QStandardPaths patch into
 port:qt5, without using a variant (just including the patch doesn't change
 Qt's default behaviour). That is probably the only adaptation for KF5 that
 is really required, though I cannot fathom nor guarantee how well things
 will work with the installation layout used by port:qt5 . They may simply
 work, but maybe they won't; the different and very non-standard location
 of the CMake modules may be an issue, for instance.

 Actually, I do see another option, and that's to keep on proposing the KF5
 ports as I do at the moment: as a custom ports tree with instructions on
 how to use it. But that would be somewhat of a pity.

--
Ticket URL: <https://trac.macports.org/ticket/51619#comment:21>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list