Gentoo Archives: gentoo-commits

From: Mart Raudsepp <leio@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/files/, gnome-base/gnome-shell/
Date: Wed, 19 Sep 2018 10:14:11
Message-Id: 1537351977.f9c67b7c3fb6f1fe8660564c024e7e59b7057902.leio@gentoo
1 commit: f9c67b7c3fb6f1fe8660564c024e7e59b7057902
2 Author: Mart Raudsepp <leio <AT> gentoo <DOT> org>
3 AuthorDate: Wed Sep 19 10:12:57 2018 +0000
4 Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org>
5 CommitDate: Wed Sep 19 10:12:57 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/gnome.git/commit/?id=f9c67b7c
7
8 gnome-base/gnome-shell-3.26.2: revbump with many fixes
9
10 * Require correct mutter subslot after fixing mutter-3.26 subslot.
11 * Fix bluetooth optionality patch to work off of USE=bluetooth, not
12 USE=networkmanager due to missed option name update in patch.
13 * Support elogind and get rid of unnecessary openrc-force hacks;
14 gnome-shell systemd code only handles journald integration - logging
15 structured data to it itself, instead of plain g_prints and telling
16 it about launched apps, so they get to log under their own identifier
17 instead of gnome-session. The -Denable-systemd option only deals with
18 that, so we can safely just not pass it on non-systemd systems. The
19 suspend support is handled purely via logind dbus interfaces and is
20 build unconditionally - at runtime it is conditional on
21 /run/systemd/seats existing and being accessible, which should be the
22 case with newer elogind (with relevant bugs fixed) by my quick
23 research, but I have not tested personally. Don't make a big deal
24 about lacking suspend and seat inhibition support and just pull in
25 a logind interface provider (techically this is runtime only, but
26 not bothering with a separate DEPEND-free RDEPEND block for elogind).
27 The alternative (to require logind) would be to require one of the
28 systemd or elogind USE flags instead of at-most-one-of, but this is
29 runtime optional anyways, so don't block it - user could just build
30 with systemd and boot with something else, for example, and similarly
31 not have this work at runtime). Also remove some warns appropriately.
32 * Build-time depend on systemd with USE=systemd for the aforementioned
33 journald integration, which needs systemd present at build time already.
34 * More appropriately use python-single-r1 instead of python-r1 for the two
35 small python utilities. Hack meson to update to the correct shebang.
36 * Make telepathy optional - it was made runtime optional in 3.24 already,
37 and with empathy being in the state it's in, the chat integration is
38 rather unused on a desktop system.
39 * Port to direct use of gnoem2-utils, meson and xdg eclasses, as that's
40 what we'll be able to add to main tree at this point.
41 * Remove bogus GNOME2_LA_PUNT and GNOME2_EAUTORECONF variables in a
42 meson-based build.
43 * Remove questionable glib USE=dbus requirement - if dconf is required,
44 it should be depended upon directly; but as this is just your typical
45 GSettings memory vs dconf backend scenario, I don't see why that'd be.
46 * Remove unnecessary libXtst depend - I can't find any usage of it in
47 current version (only mentions of caribou using it, which has its own
48 dep and is optional on-screen keyboard support, gone in newer versions).
49 * Move dbus-glib depend inside USE=networkmanager, as this legacy thing
50 is for some reason (instead of GDbus) still used only in a NM specific
51 source file that doesn't get compiled with USE=-networkmanager afaics.
52 * Require introspection on nm-applet with USE=networkmanager, as NMGtk
53 GIR is used.
54 * Remove bogus mesa-progs depend - no glxinfo/glxgears usages here..
55 * Remove wrong gtk-doc-am, gnome-common and autoconf-archive build
56 depends - these are for autotools, not meson..
57 * Add glib-utils build depend.
58 * Drop dejavu font depend - I don't think we should be pulling in a
59 specific font these days for some glyphs; and if we should, then it
60 probably should be cantarell..
61 * Require 3.26 for the adwaita-icon-theme dep, as new icons used by
62 gnome-shell-3.26 are introduced there (at least the monitor configuration
63 popup icons when the new display configuration keyboard shortcuts are
64 used).
65 * Require >=libgweather-3.26 because new API from it is used (the
66 NO_CAPITALIZATION formatting options stuff for fixing weather information
67 capitalization below the gnome-shell calendar).
68 * Require USE=glib on pulseaudio, as libpulse-mainloop-glib is linked to
69 in a subproject, not just libpulse.
70 * Install nsplugin in the correct directory for us, instead of just losing
71 the correct BROWSER_PLUGIN_DIR stuff from autotools version. Upstream has
72 some sort of meson variable support to apparently try to support
73 overriding this, but as this isn't an envvar, we actually can't until it's
74 not properly made a meson_options.txt thing instead - so instead just
75 change the install path /mozilla components to /nsbrowser as we need.
76 * Add notes about broken gtk-doc building (with our outdated gtk-doc), but
77 due to the build failures don't introduce USE=gtk-doc for the time being.
78 * Simplify the pax-mark logic, as we don't use so old spidermonkey for so
79 long, and pax-mark stuff is not tested by us. But the old complicated
80 conditionals don't apply in many cases, so simplify it to just the common
81 case. Additionally newer spidermonkey (60) will lose jit USE flag and
82 have that unconditional on arches where it's supported, so these
83 conditionals will then result in wrong code paths being taken. Therefore
84 just simplify it to the basics and hope it works and rely on any incoming
85 bugs about it to modernize this.
86 * PDEPEND on >=gnome-control-center-3.26 instead of older, as older is
87 not able to apply display configuration, because mutter 3.26 has a
88 different dbus API now, which gnome-control-center-3.26 uses directly.
89 3.24 control-center used GnomeRR API from gnome-desktop, which is still
90 there (in gnome-desktop-3.26), but does not function with mutter-3.26
91 due to the dbus interface having been replaced.
92
93 Package-Manager: Portage-2.3.49, Repoman-2.3.10
94
95 .../files/3.26-optional-bluetooth.patch | 73 ++++++++
96 .../gnome-shell/gnome-shell-3.26.2-r3.ebuild | 183 +++++++++++++++++++++
97 gnome-base/gnome-shell/metadata.xml | 10 ++
98 3 files changed, 266 insertions(+)
99
100 diff --git a/gnome-base/gnome-shell/files/3.26-optional-bluetooth.patch b/gnome-base/gnome-shell/files/3.26-optional-bluetooth.patch
101 new file mode 100644
102 index 00000000..9f7e5aea
103 --- /dev/null
104 +++ b/gnome-base/gnome-shell/files/3.26-optional-bluetooth.patch
105 @@ -0,0 +1,73 @@
106 +From 7ca3e1a9d18e6f6154b4479bcd94d420bc69798c Mon Sep 17 00:00:00 2001
107 +From: Gilles Dartiguelongue <eva@g.o>
108 +Date: Mon, 10 Sep 2018 13:17:39 +0200
109 +Subject: [PATCH] Make bluetooth support optional
110 +
111 +https://bugs.gentoo.org/show_bug.cgi?id=398145
112 +leio: Fixed enable_bluetooth get_option string
113 +---
114 + js/misc/meson.build | 2 +-
115 + meson.build | 15 ++++++++++++++-
116 + meson_options.txt | 7 +++++++
117 + 3 files changed, 22 insertions(+), 2 deletions(-)
118 +
119 +diff --git a/js/misc/meson.build b/js/misc/meson.build
120 +index 20489496c..3071f9dfb 100644
121 +--- a/js/misc/meson.build
122 ++++ b/js/misc/meson.build
123 +@@ -3,7 +3,7 @@ jsconf.set('PACKAGE_NAME', meson.project_name())
124 + jsconf.set('PACKAGE_VERSION', meson.project_version())
125 + jsconf.set('GETTEXT_PACKAGE', meson.project_name())
126 + jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version)
127 +-jsconf.set10('HAVE_BLUETOOTH', bt_dep.found())
128 ++jsconf.set10('HAVE_BLUETOOTH', have_bluetooth)
129 + jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager)
130 + jsconf.set('datadir', datadir)
131 + jsconf.set('libexecdir', libexecdir)
132 +diff --git a/meson.build b/meson.build
133 +index b82c41398..7d342ff61 100644
134 +--- a/meson.build
135 ++++ b/meson.build
136 +@@ -91,7 +91,20 @@ startup_dep = dependency('libstartup-notification-1.0', version: startup_req)
137 + x11_dep = dependency('x11')
138 + schemas_dep = dependency('gsettings-desktop-schemas', version: schemas_req)
139 +
140 +-bt_dep = dependency('gnome-bluetooth-1.0', version: bt_req, required: false)
141 ++bt_dep = []
142 ++enable_bluetooth = get_option('enable-bluetooth')
143 ++if enable_bluetooth != 'no'
144 ++ want_bluetooth = enable_bluetooth == 'yes'
145 ++ bt_dep = dependency('gnome-bluetooth-1.0', version: bt_req, required: want_bluetooth)
146 ++ have_bluetooth = bt_dep.found()
147 ++
148 ++ if not have_bluetooth
149 ++ bt_dep = []
150 ++ endif
151 ++else
152 ++ have_bluetooth = false
153 ++endif
154 ++
155 + gst_dep = dependency('gstreamer-1.0', version: gst_req, required: false)
156 + gst_base_dep = dependency('gstreamer-base-1.0', required: false)
157 +
158 +diff --git a/meson_options.txt b/meson_options.txt
159 +index 18899ffdb..9191f8c0e 100644
160 +--- a/meson_options.txt
161 ++++ b/meson_options.txt
162 +@@ -16,6 +16,13 @@ option('enable-man',
163 + description: 'Generate man pages'
164 + )
165 +
166 ++option('enable-bluetooth',
167 ++ type: 'combo',
168 ++ choices: ['yes', 'no', 'auto'],
169 ++ value: 'auto',
170 ++ description: 'Enable bluetooth support'
171 ++)
172 ++
173 + option('enable-networkmanager',
174 + type: 'combo',
175 + choices: ['yes', 'no', 'auto'],
176 +--
177 +2.18.0
178 +
179
180 diff --git a/gnome-base/gnome-shell/gnome-shell-3.26.2-r3.ebuild b/gnome-base/gnome-shell/gnome-shell-3.26.2-r3.ebuild
181 new file mode 100644
182 index 00000000..8ec8d239
183 --- /dev/null
184 +++ b/gnome-base/gnome-shell/gnome-shell-3.26.2-r3.ebuild
185 @@ -0,0 +1,183 @@
186 +# Copyright 1999-2018 Gentoo Foundation
187 +# Distributed under the terms of the GNU General Public License v2
188 +
189 +EAPI=6
190 +PYTHON_COMPAT=( python3_{4,5,6} )
191 +
192 +inherit gnome.org gnome2-utils meson pax-utils python-single-r1 virtualx xdg
193 +
194 +DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
195 +HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShell"
196 +
197 +LICENSE="GPL-2+ LGPL-2+"
198 +SLOT="0"
199 +IUSE="+bluetooth +browser-extension elogind +ibus +networkmanager nsplugin systemd telepathy"
200 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
201 + ?? ( elogind systemd )"
202 +
203 +KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~x86"
204 +
205 +# libXfixes-5.0 needed for pointer barriers and #include <X11/extensions/Xfixes.h>
206 +# FIXME:
207 +# * gstreamer support is currently automagic
208 +COMMON_DEPEND="
209 + >=dev-libs/libcroco-0.6.8:0.6
210 + >=gnome-extra/evolution-data-server-3.17.2:=
211 + >=app-crypt/gcr-3.7.5[introspection]
212 + >=gnome-base/gnome-desktop-3.7.90:3=[introspection]
213 + >=dev-libs/glib-2.53.0:2
214 + >=dev-libs/gobject-introspection-1.49.1:=
215 + >=dev-libs/gjs-1.47.0
216 + >=x11-libs/gtk+-3.15.0:3[introspection]
217 + nsplugin? ( >=dev-libs/json-glib-0.13.2 )
218 + >=x11-wm/mutter-3.24.0:0/1[introspection]
219 + >=sys-auth/polkit-0.100[introspection]
220 + >=gnome-base/gsettings-desktop-schemas-3.21.3
221 + >=x11-libs/startup-notification-0.11
222 + bluetooth? ( >=net-wireless/gnome-bluetooth-3.9[introspection] )
223 + >=media-libs/gstreamer-0.11.92:1.0
224 + networkmanager? (
225 + >=gnome-extra/nm-applet-0.9.8[introspection]
226 + >=net-misc/networkmanager-0.9.8:=[introspection]
227 + >=app-crypt/libsecret-0.18
228 + dev-libs/dbus-glib )
229 + systemd? ( >=sys-apps/systemd-31 )
230 + elogind? ( >=sys-auth/elogind-237 )
231 +
232 + >=app-accessibility/at-spi2-atk-2.5.3
233 + media-libs/libcanberra[gtk3]
234 + x11-libs/gdk-pixbuf:2[introspection]
235 + dev-libs/libxml2:2
236 + >=net-libs/libsoup-2.40:2.4[introspection]
237 + x11-libs/libX11
238 +
239 + >=media-sound/pulseaudio-2[glib]
240 + >=dev-libs/atk-2[introspection]
241 + dev-libs/libical:=
242 + >=x11-libs/libXfixes-5.0
243 +
244 + ${PYTHON_DEPS}
245 + dev-python/pygobject:3[${PYTHON_USEDEP}]
246 + media-libs/mesa
247 +"
248 +# Runtime-only deps are probably incomplete and approximate.
249 +# Introspection deps generated using:
250 +# grep -roe "imports.gi.*" gnome-shell-* | cut -f2 -d: | sort | uniq
251 +# Each block:
252 +# 1. Introspection stuff needed via imports.gi.*
253 +# 2. gnome-session needed for shutdown/reboot/inhibitors/etc
254 +# 3. Control shell settings
255 +# 4. logind interface needed for suspending support
256 +# 5. xdg-utils needed for xdg-open, used by extension tool
257 +# 6. adwaita-icon-theme needed for various icons & arrows (3.26 for new video-joined-displays-symbolic and co icons; review for 3.28+)
258 +# 7. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c # TODO: Review
259 +# 8. IBus is needed for nls integration
260 +# 9. Optional telepathy chat integration
261 +# 10. TODO: semi-optional webkit-gtk[introspection] for captive portal helper
262 +RDEPEND="${COMMON_DEPEND}
263 + >=sys-apps/accountsservice-0.6.14[introspection]
264 + app-accessibility/at-spi2-core:2[introspection]
265 + >=app-accessibility/caribou-0.4.8
266 + app-misc/geoclue[introspection]
267 + >=dev-libs/libgweather-3.26:2[introspection]
268 + >=sys-power/upower-0.99:=[introspection]
269 + x11-libs/pango[introspection]
270 + gnome-base/librsvg:2[introspection]
271 +
272 + >=gnome-base/gnome-session-2.91.91
273 + >=gnome-base/gnome-settings-daemon-3.8.3
274 +
275 + x11-misc/xdg-utils
276 +
277 + >=x11-themes/adwaita-icon-theme-3.26
278 +
279 + networkmanager? (
280 + net-misc/mobile-broadband-provider-info
281 + sys-libs/timezone-data )
282 + ibus? ( >=app-i18n/ibus-1.4.99[dconf(+),gtk,introspection] )
283 + telepathy? (
284 + >=net-im/telepathy-logger-0.2.4[introspection]
285 + >=net-libs/telepathy-glib-0.19[introspection] )
286 +"
287 +# avoid circular dependency, see bug #546134
288 +PDEPEND="
289 + >=gnome-base/gdm-3.5[introspection]
290 + >=gnome-base/gnome-control-center-3.26[bluetooth(+)?,networkmanager(+)?]
291 + browser-extension? ( gnome-extra/chrome-gnome-shell )
292 +"
293 +DEPEND="${COMMON_DEPEND}
294 + dev-libs/libxslt
295 + >=dev-util/gdbus-codegen-2.45.3
296 + dev-util/glib-utils
297 + >=sys-devel/gettext-0.19.6
298 + virtual/pkgconfig
299 +" #gtk-doc? ( >=dev-util/gtk-doc-1.17 )
300 +
301 +PATCHES=(
302 + # Change favorites defaults, bug #479918
303 + "${FILESDIR}"/${PN}-3.22.0-defaults.patch
304 + # Fix automagic gnome-bluetooth dep, bug #398145
305 + "${FILESDIR}"/3.26-optional-bluetooth.patch
306 +)
307 +
308 +src_prepare() {
309 + xdg_src_prepare
310 + # We want nsplugins in /usr/$(get_libdir)/nsbrowser/plugins not .../mozilla/plugins
311 + sed -e 's/mozilla/nsbrowser/' -i meson.build || die
312 + # Hack in correct python shebang
313 + sed -e "s:python\.path():'/usr/bin/env ${EPYTHON}':" -i src/meson.build || die
314 +}
315 +
316 +src_configure() {
317 + local emesonargs=(
318 + $(meson_use nsplugin enable-browser-plugin)
319 + #$(meson_use gtk-doc enable-documentation) # fails in gtkdoc-scangobj call with gtk-doc-1.25 (perl regex parenthesis issue); probably needs newer python-based gtk-doc to work
320 + -Denable-man=true
321 + -Denable-bluetooth=$(usex bluetooth yes no)
322 + -Denable-networkmanager=$(usex networkmanager yes no)
323 + -Denable-systemd=$(usex systemd yes no) # this controls journald integration only as of 3.26.2 (structured logging and having gnome-shell launched apps use its own identifier instead of gnome-session)
324 + # suspend support is runtime optional via /run/systemd/seats presence and org.freedesktop.login1.Manager dbus interface; elogind should provide what's necessary
325 + )
326 + meson_src_configure
327 +}
328 +
329 +src_install() {
330 + meson_src_install
331 +
332 + # Required for gnome-shell on hardened/PaX, bug #398941; FIXME: Is this still relevant?
333 + pax-mark m "${ED}usr/bin/gnome-shell"{,-extension-prefs}
334 +}
335 +
336 +src_test() {
337 + virtx meson_src_test
338 +}
339 +
340 +pkg_postinst() {
341 + xdg_pkg_postinst
342 + gnome2_schemas_update
343 +
344 + if ! has_version 'media-libs/gst-plugins-good:1.0' || \
345 + ! has_version 'media-plugins/gst-plugins-vpx:1.0'; then
346 + ewarn "To make use of GNOME Shell's built-in screen recording utility,"
347 + ewarn "you need to either install media-libs/gst-plugins-good:1.0"
348 + ewarn "and media-plugins/gst-plugins-vpx:1.0, or use dconf-editor to change"
349 + ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
350 + fi
351 +
352 + if ! has_version "media-libs/mesa[llvm]"; then
353 + elog "llvmpipe is used as fallback when no 3D acceleration"
354 + elog "is available. You will need to enable llvm USE for"
355 + elog "media-libs/mesa if you do not have hardware 3D setup."
356 + fi
357 +
358 + # https://bugs.gentoo.org/show_bug.cgi?id=563084
359 + if has_version "x11-drivers/nvidia-drivers[-kms]"; then
360 + ewarn "You will need to enable kms support in x11-drivers/nvidia-drivers,"
361 + ewarn "otherwise Gnome will fail to start"
362 + fi
363 +}
364 +
365 +pkg_postrm() {
366 + xdg_pkg_postrm
367 + gnome2_schemas_update
368 +}
369
370 diff --git a/gnome-base/gnome-shell/metadata.xml b/gnome-base/gnome-shell/metadata.xml
371 index 3d91d2b5..301d00be 100644
372 --- a/gnome-base/gnome-shell/metadata.xml
373 +++ b/gnome-base/gnome-shell/metadata.xml
374 @@ -5,14 +5,24 @@
375 <email>gnome@g.o</email>
376 <name>Gentoo GNOME Desktop</name>
377 </maintainer>
378 +<longdescription>
379 + GNOME Shell provides core user interface functions for the GNOME 3
380 + desktop, like switching to windows and launching applications.
381 + GNOME Shell takes advantage of the capabilities of modern graphics
382 + hardware and introduces innovative user interface concepts to
383 + provide a visually attractive and easy to use experience.
384 +</longdescription>
385 <use>
386 <flag name="browser-extension">Ensure the presence of extensions.gnome.org
387 native connector <pkg>gnome-extra/chrome-gnome-shell</pkg></flag>
388 + <flag name="elogind">Use <pkg>sys-auth/elogind</pkg> for session tracking
389 + and suspend support.</flag>
390 <flag name="ibus">Enable support for enhanced input methods through
391 <pkg>app-i18n/ibus</pkg></flag>
392 <flag name="openrc-force">Skip systemd dependency (#480336),
393 enabling this flag will become your setup to be fully
394 unsupported by upstream and downstream Gnome team. Do not
395 try to enable it unless completely needed</flag>
396 + <flag name="telepathy">Ensure presence of telepathy chat integration</flag>
397 </use>
398 </pkgmetadata>