[MacPorts] #49925: KF5 : PortGroup and initial ports (frameworks)

MacPorts noreply at macports.org
Thu Dec 10 17:39:09 PST 2015


#49925: KF5 : PortGroup and initial ports (frameworks)
--------------------------+--------------------------------
  Reporter:  rjvbertin@…  |      Owner:  macports-tickets@…
      Type:  submission   |     Status:  new
  Priority:  Normal       |  Milestone:
 Component:  ports        |    Version:
Resolution:               |   Keywords:
      Port:               |
--------------------------+--------------------------------
Description changed by mk@…:

Old description:

> Here's an initial implementation of a PortGroup and the basic ports
> required to deploy KF5 through MacPorts, thanks in large part to lots of
> preliminary heavy lifting behind the scenes by Marko Känig. Without him
> this would have been much more work.
>
> This initial submission contains the PortGroup, the Frameworks, and a few
> tightly related ports.
> As always, further development can be followed via
> https://github.com/RJVB/macstrop/tree/master/kf5 .
>
> KDE5 is not a straightforward thing to deploy (package), in some ways
> even less so than KDE4, but in other ways "things" have improved
> sufficiently that a lot can be abstracted and automatised (more so than
> with KDE4).
>
> Most of that is done in the PortGroup, which contains the basic logic
> that makes declaring a port for a given KF5 application relatively easy.
> It also contains version definitions, because despite being individual
> packages, KF5 components are released in synchronised fashion, and won't
> build against older components.
> The PortGroup is also responsible for including the Qt5 PortGroup, and
> does so by indicating a preference for `port:qt5-kde`.
>
> The frameworks themselves, the building blocks on which KF5 applications
> are based (and "interesting/useful extensions to Qt5") are a bit
> different. I have chosen to bundle all frameworks as subports in a single
> (huge) portfile, in order to increase sharing of patches and reinplace
> statements (something the benefits of which I hope I won't have to
> explain). The meta-port is almost complete; it lacks only a number of
> "porting aid" frameworks which I plan to add when needed (or "in due
> time").
>
> That meta-port, KF5-Frameworks, also contains the variant that I consider
> crucial for MacPorts, the one that activates the XDG-compliant mode of
> Qt's QStandardPaths. In a nutshell, this is the mode in which makes Qt5
> (and KF5) code look for shared resources under ${prefix}/share, and use
> ~/.config, ~/.local and ~/.cache instead of the OS X-ish equivalents.
> Individual applications (pure Qt5 or KF5) may be adapted or even
> conceived to use the Apple-equivalents of these locations, but KF5
> applications as a whole are designed primarily to function in a
> Freedesktop (XDG) universe, and cohabit/interact with other XDG-compliant
> applications that are *not* based on Qt5 (e.g. KDE4!). I consider this
> something MacPorts cannot ignore or not support.
> I'd even go so far as to remove the possibility to build KF5 otherwise,
> but as long as the QSP patch is only shipped with `port:qt5-kde` I see no
> other way than to provide a variant that becomes a default variant if the
> QSP/XDG activator is detected at build time. The KF5 PortGroup indicates
> a preference for `port:qt5-kde` and therefore it is that port which will
> be installed during a fresh install or on a build bot. I am aware this is
> a potential violation of the repeatable build principle, but only for/by
> users who go against a recommended dependency (and these users will be
> obliged to install all KF5 ports from source).
>
> NB: The XDG activator is an additional link module that I bundle with my
> `port:qt5-kde`; linking it with all KF5 frameworks means that any KF5
> application will use QStandardPaths in XDG-compliant mode; this blunt
> approach is required since there is no single KF5 component with which
> all dependents are obliged to link. Making the compliancy mode optional
> (and inactive by default) means that "pure Qt5" applications function
> with native OS X QStandardPaths, and will thus behave exactly as their
> counterparts if installed from an official installer other external
> source.
> I consider that of equal importance as the repeatable build principle.
>
> Also note that there are a number of tweaks that allow me to use the same
> build and packaging logic on Linux, for testing and comparison; those
> tend to relax dependencies so they are obtained from the host. I'm not
> adamant on "getting these in" of course, but as long as I'm principle
> maintainer on these files I'm also not very keen on removing them .

New description:

 Here's an initial implementation of a PortGroup and the basic ports
 required to deploy KF5 through MacPorts, thanks in large part to lots of
 preliminary heavy lifting behind the scenes by Marko Käning. Without him
 this would have been much more work.

 This initial submission contains the PortGroup, the Frameworks, and a few
 tightly related ports.
 As always, further development can be followed via
 https://github.com/RJVB/macstrop/tree/master/kf5 .

 KDE5 is not a straightforward thing to deploy (package), in some ways even
 less so than KDE4, but in other ways "things" have improved sufficiently
 that a lot can be abstracted and automatised (more so than with KDE4).

 Most of that is done in the PortGroup, which contains the basic logic that
 makes declaring a port for a given KF5 application relatively easy. It
 also contains version definitions, because despite being individual
 packages, KF5 components are released in synchronised fashion, and won't
 build against older components.
 The PortGroup is also responsible for including the Qt5 PortGroup, and
 does so by indicating a preference for `port:qt5-kde`.

 The frameworks themselves, the building blocks on which KF5 applications
 are based (and "interesting/useful extensions to Qt5") are a bit
 different. I have chosen to bundle all frameworks as subports in a single
 (huge) portfile, in order to increase sharing of patches and reinplace
 statements (something the benefits of which I hope I won't have to
 explain). The meta-port is almost complete; it lacks only a number of
 "porting aid" frameworks which I plan to add when needed (or "in due
 time").

 That meta-port, KF5-Frameworks, also contains the variant that I consider
 crucial for MacPorts, the one that activates the XDG-compliant mode of
 Qt's QStandardPaths. In a nutshell, this is the mode in which makes Qt5
 (and KF5) code look for shared resources under ${prefix}/share, and use
 ~/.config, ~/.local and ~/.cache instead of the OS X-ish equivalents.
 Individual applications (pure Qt5 or KF5) may be adapted or even conceived
 to use the Apple-equivalents of these locations, but KF5 applications as a
 whole are designed primarily to function in a Freedesktop (XDG) universe,
 and cohabit/interact with other XDG-compliant applications that are *not*
 based on Qt5 (e.g. KDE4!). I consider this something MacPorts cannot
 ignore or not support.
 I'd even go so far as to remove the possibility to build KF5 otherwise,
 but as long as the QSP patch is only shipped with `port:qt5-kde` I see no
 other way than to provide a variant that becomes a default variant if the
 QSP/XDG activator is detected at build time. The KF5 PortGroup indicates a
 preference for `port:qt5-kde` and therefore it is that port which will be
 installed during a fresh install or on a build bot. I am aware this is a
 potential violation of the repeatable build principle, but only for/by
 users who go against a recommended dependency (and these users will be
 obliged to install all KF5 ports from source).

 NB: The XDG activator is an additional link module that I bundle with my
 `port:qt5-kde`; linking it with all KF5 frameworks means that any KF5
 application will use QStandardPaths in XDG-compliant mode; this blunt
 approach is required since there is no single KF5 component with which all
 dependents are obliged to link. Making the compliancy mode optional (and
 inactive by default) means that "pure Qt5" applications function with
 native OS X QStandardPaths, and will thus behave exactly as their
 counterparts if installed from an official installer other external
 source.
 I consider that of equal importance as the repeatable build principle.

 Also note that there are a number of tweaks that allow me to use the same
 build and packaging logic on Linux, for testing and comparison; those tend
 to relax dependencies so they are obtained from the host. I'm not adamant
 on "getting these in" of course, but as long as I'm principle maintainer
 on these files I'm also not very keen on removing them .

--

-- 
Ticket URL: <https://trac.macports.org/ticket/49925#comment:1>
MacPorts <https://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list