dev-util/sysprof: add elogind support
authorMart Raudsepp <leio@gentoo.org>
Sat, 23 Mar 2019 11:31:14 +0000 (13:31 +0200)
committerMart Raudsepp <leio@gentoo.org>
Sat, 23 Mar 2019 11:34:23 +0000 (13:34 +0200)
Allows using sysprof launched more securely as normal user and
wayland support on elogind systems.

Also remove the double icon cache update, now that xdg.eclass does
it too.

Closes: https://bugs.gentoo.org/673406
Package-Manager: Portage-2.3.52, Repoman-2.3.12
Signed-off-by: Mart Raudsepp <leio@gentoo.org>
dev-util/sysprof/files/3.30.2-elogind.patch [new file with mode: 0644]
dev-util/sysprof/metadata.xml
dev-util/sysprof/sysprof-3.30.2-r1.ebuild [new file with mode: 0644]

diff --git a/dev-util/sysprof/files/3.30.2-elogind.patch b/dev-util/sysprof/files/3.30.2-elogind.patch
new file mode 100644 (file)
index 0000000..2a57fff
--- /dev/null
@@ -0,0 +1,35 @@
+From b30057251d3f2b5860b36505fed440a6bebe0359 Mon Sep 17 00:00:00 2001
+From: Shiba <not@telling.you>
+Date: Wed, 19 Dec 2018 00:37:57 +0100
+Subject: [PATCH] elogind support
+
+---
+ daemon/meson.build | 11 ++++++++++-
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/daemon/meson.build b/daemon/meson.build
+index d0cf87c..c7f85d7 100644
+--- a/daemon/meson.build
++++ b/daemon/meson.build
+@@ -11,8 +11,17 @@ sysprofd_sources = [
+ # NOTE: This is used in data/meson.build
+ pkglibexecdir = join_paths(get_option('prefix'), get_option('libexecdir'), 'sysprof')
++# Check for sd-bus support either by systemd or elogind
++sdbus_dep = dependency('libsystemd', version: '>=222', required: false)
++if not sdbus_dep.found()
++  sdbus_dep = dependency('libelogind', version: '>=239.3', required: false)
++  if not sdbus_dep.found()
++    error('sysprofd requires sd-bus but neither systemd nor elogind were found')
++  endif
++endif
++
+ sysprofd_deps = [
+-  dependency('libsystemd', version: '>=222'),
++  sdbus_dep,
+   dependency('glib-2.0'),
+ ]
+-- 
+2.18.1
+
index 5ea946de43717a25a854dbc4f612e83c39a01da4..70135f654431975b0c99f954695441584e033fb2 100644 (file)
@@ -12,7 +12,9 @@
        In fact they don't even have to be restarted.
 </longdescription>
 <use>
+       <flag name="elogind">Build the sysprofd daemon service, required to run the UI without root permissions.
+               Relies on <pkg>sys-auth/elogind</pkg> for sd-bus API.</flag>
        <flag name="systemd">Build the sysprofd daemon service, required to run the UI without root permissions.
-               Relies on <pkg>sys-apps/systemd</pkg> running as the init system.</flag>
+               Relies on <pkg>sys-apps/systemd</pkg> for sd-bus API.</flag>
 </use>
 </pkgmetadata>
diff --git a/dev-util/sysprof/sysprof-3.30.2-r1.ebuild b/dev-util/sysprof/sysprof-3.30.2-r1.ebuild
new file mode 100644 (file)
index 0000000..11bffd1
--- /dev/null
@@ -0,0 +1,73 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit gnome.org gnome2-utils meson systemd xdg
+
+DESCRIPTION="System-wide Linux Profiler"
+HOMEPAGE="http://sysprof.com/"
+
+LICENSE="GPL-3+ GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="elogind gtk systemd"
+REQUIRED_USE="?? ( elogind systemd )"
+
+RDEPEND="
+       >=dev-libs/glib-2.44:2
+       sys-auth/polkit
+       gtk? ( >=x11-libs/gtk+-3.22.0:3 )
+       elogind? ( >=sys-auth/elogind-239.3 )
+       systemd? ( >=sys-apps/systemd-222:0= )
+"
+# libxml2 required for glib-compile-resources; appstream-glib for appdata.xml developer_name tag translation
+DEPEND="${RDEPEND}
+       dev-libs/appstream-glib
+       dev-libs/libxml2:2
+       dev-util/itstool
+       >=sys-devel/gettext-0.19.8
+       >=sys-kernel/linux-headers-2.6.32
+       virtual/pkgconfig
+"
+
+PATCHES=( "${FILESDIR}"/${PV}-elogind.patch )
+
+src_configure() {
+       # -Dwith_sysprofd=host currently unavailable from ebuild
+       local emesonargs=(
+               $(meson_use gtk enable_gtk)
+               -Dwith_sysprofd=$(usex systemd bundled $(usex elogind bundled none))
+               -Dsystemdunitdir=$(systemd_get_systemunitdir)
+               # -Ddebugdir
+       )
+       meson_src_configure
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+       gnome2_schemas_update
+
+       elog "On many systems, especially amd64, it is typical that with a modern"
+       elog "toolchain -fomit-frame-pointer for gcc is the default, because"
+       elog "debugging is still possible thanks to gcc4/gdb location list feature."
+       elog "However sysprof is not able to construct call trees if frame pointers"
+       elog "are not present. Therefore -fno-omit-frame-pointer CFLAGS is suggested"
+       elog "for the libraries and applications involved in the profiling. That"
+       elog "means a CPU register is used for the frame pointer instead of other"
+       elog "purposes, which means a very minimal performance loss when there is"
+       elog "register pressure."
+       if ! use systemd && ! use elogind; then
+               elog ""
+               elog "Without systemd or elogind, sysprof may not function when launched as a"
+               elog "regular user, thus suboptimal running from root account may be necessary."
+               if use gtk; then
+                       elog "Under wayland, that limits the recording usage to sysprof-cli utility."
+               fi
+       fi
+}
+
+pkg_postrm() {
+       xdg_pkg_postrm
+       gnome2_schemas_update
+}