[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input.
From: |
muradm |
Subject: |
[bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input. |
Date: |
Fri, 17 Sep 2021 05:35:42 +0300 |
User-agent: |
mu4e 1.6.5; emacs 28.0.50 |
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
Hi,
Am Donnerstag, den 16.09.2021, 22:23 +0300 schrieb muradm:
wayland-protocols is not runtime dependency and only build time
dependency for applications that directly using wayland.
Guix does not distinguish between "build time" and run time
dependencies.
True, here issue could be related to miss wording, but same
wording
is used in the manual as well, so do I.
Initially I tought that making wayland-protocols a
native-inputs
dependency as it should, it would reduce number of dependants
on
it. But it turns out other way around. With this patchset we
are
fixing gtk+ to not advertise it as dependency in its .pc files,
and moving wayland-protocols to native-inputs where it should
be.
That's not what native-inputs are used for. native-inputs
provide
binaries that the host/build machine needs to run in order to
compile a
package. It doesn't seem to be the case that wayland-protocols
is such
a package, is it?
wayland-protocols is different package. It does not include any
binaries
only protocol specifications (some xml files), which are used for
code
generation. We could consider them as a kind of autoconf/bison
like
inputs, but tightly scoped for wayland needs, although they are
not so
and not binaries.
Patch provided for gtk+ also merged with upstream.
Patchset prepared from core-updates-frozen. While it seems that
it will impact many other packages, actually this patch reduces
number of packages that touches wayland-protocols and probably
avoids it at runtime.
But it still impacts a large number of packages in ways that
could
potentially break and haven't been tested, right?
Technically, this package does not change anything in terms of
binary
producing. wayland-protocols remains to be an input as it was
before.
I.e. wayland compositor, wayland application, wayland using
library,
application which uses wayland using library, binary output is not
impacted. If binary output is the same, is there any thing else to
test?
There are two things which are being changed. First as you
pointing
out is the way Guix treats it, i.e. reducing closure, etc. Second
is
propagation of inputs. Currently (without this patch), since it is
listed in propagated-inputs (and also advertised in .pc files),
wayland-protocols as requirement, needlessly, getting pushed down
then hierarchy.
Let's take 4 cases that we have here (I do not pretend to be
complete,
of course, there are might be more levels/combinations, just
attempting
to illustrate current case in simple words/terms):
1. wayland compositor (weston, wlroots/sway, etc.)
2. wayland client application (grim, mpv, etc. applications
directly
interacting with wayland interfaces)
3. wayland client library (qt or gtk+ in this case, also directly
interacts with wayland to abstract it for user applications)
4. user application of wayland client library (in this case some
gtk+
based application)
For 1 and 2, both types should have to specify wayland in inputs
(or
propagated-inputs), and wayland-protocols in native-inputs.
One of purposes to have layer 3, is to abstract from 1 and 2.
i.e. when I write gtk application, as user I should not be aware
of
where/how this application is going to run, via xorg or wayland.
Then
why I should be aware of wayland/wayland-protocols and make sure
that
it is provided as build input for my application?
More over, if I will have some other unrelated package that
depends
on my gtk application (item 4 above), i still will see
wayland-protocols among my inputs.
Currently, thanks to Guix, it is getting resolved by having it
listed
in propagated-inputs.
For the long run, it was also fixed in gtk, so that
wayland-protocols
is not going to be advertised in gtk's .pc files any more
(https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3960 and
https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3961).
I suppose that, initially wayland-protocols was listed in
propagated-inputs for this same reason, because gtk was
advertising
it in .pc files.
While reducing
closure size is generally a good thing, I think we do need to be
careful whenever "build time vs. run time" and native vs.
non-native
are confused.
I'm using terminology as per documentation :) may be it should be
reworded in some other way to avoid confusion. 8.2.1 package
reference:
‘native-inputs’ is typically used to list tools needed
at
build time, but not at run time...
Thanks in advance,
muradm
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., muradm, 2021/09/16
- [bug#50627] [PATCH 1/2] gnu: gtk: Move wayland-protocols to native-inputs., muradm, 2021/09/16
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., Liliana Marie Prikler, 2021/09/16
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input.,
muradm <=
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., Liliana Marie Prikler, 2021/09/17
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., muradm, 2021/09/17
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., Liliana Marie Prikler, 2021/09/17
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., muradm, 2021/09/17
- [bug#50627] [PATCH 0/2] Make wayland-protocols dependency native-input., Liliana Marie Prikler, 2021/09/17
[bug#50627] [PATCH v1] gnu: gtk: Move wayland-protocols to inputs., muradm, 2021/09/17