gnome-extra/cinnamon: Meson fixes

Closes: https://bugs.gentoo.org/833861
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Matthew S. Turnbull <sparky@bluefang-logic.com>
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Matthew S. Turnbull
2022-02-27 15:02:24 -05:00
committed by Sam James
parent d60e7b0bd9
commit 0850b6be2e
3 changed files with 282 additions and 0 deletions

View File

@@ -0,0 +1,186 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{7,8,9,10} )
PYTHON_REQ_USE="xml"
inherit meson gnome2-utils pax-utils python-single-r1 xdg
DESCRIPTION="A fork of GNOME Shell with layout similar to GNOME 2"
HOMEPAGE="https://projects.linuxmint.com/cinnamon/ https://github.com/linuxmint/cinnamon"
SRC_URI="https://github.com/linuxmint/cinnamon/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-2+"
SLOT="0"
IUSE="+eds +gstreamer gtk-doc +nls +networkmanager"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
DEPEND="
${PYTHON_DEPS}
app-accessibility/at-spi2-atk:2
>=dev-libs/glib-2.52.0:2[dbus]
>=dev-libs/gobject-introspection-1.29.15:=
dev-libs/libxml2:2
>=gnome-extra/cinnamon-desktop-5.2:0=
>=gnome-extra/cinnamon-menus-5.2
>=gnome-extra/cjs-5.2[cairo]
net-libs/libsoup:2.4[introspection]
sys-apps/dbus
>=sys-auth/polkit-0.100[introspection]
virtual/opengl
x11-libs/gdk-pixbuf:2[introspection]
>=x11-libs/gtk+-3.12.0:3[introspection]
>=x11-libs/libnotify-0.7.3:0=[introspection]
x11-libs/libX11
>=x11-libs/libXfixes-5.0
x11-libs/pango[introspection]
>=x11-libs/startup-notification-0.11
>=x11-wm/muffin-5.2[introspection]
eds? (
gnome-extra/evolution-data-server
)
gstreamer? (
media-libs/gst-plugins-base:1.0
media-libs/gstreamer:1.0
)
networkmanager? (
net-misc/networkmanager[introspection]
)
"
# caribou used by onscreen keyboard
# libtimezonemap used by datetime settings
# iso-flag-png (unpackaged) used by keyboard layout settings
RDEPEND="
${DEPEND}
>=app-accessibility/caribou-0.3
dev-libs/keybinder:3[introspection]
dev-libs/libtimezonemap
$(python_gen_cond_dep '
dev-python/dbus-python[${PYTHON_USEDEP}]
dev-python/distro[${PYTHON_USEDEP}]
dev-python/pexpect[${PYTHON_USEDEP}]
dev-python/pillow[${PYTHON_USEDEP}]
dev-python/pycairo[${PYTHON_USEDEP}]
dev-python/pygobject:3[${PYTHON_USEDEP}]
dev-python/pyinotify[${PYTHON_USEDEP}]
dev-python/pypam[${PYTHON_USEDEP}]
dev-python/pytz[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
dev-python/setproctitle[${PYTHON_USEDEP}]
dev-python/tinycss2[${PYTHON_USEDEP}]
>=dev-python/python3-xapp-2.2.1-r1[${PYTHON_USEDEP}]
')
>=gnome-base/dconf-0.4.1
>=gnome-base/gsettings-desktop-schemas-2.91.91
>=gnome-base/libgnomekbd-2.91.4
>=gnome-extra/cinnamon-control-center-5.2[networkmanager=]
>=gnome-extra/cinnamon-screensaver-5.2
>=gnome-extra/cinnamon-session-5.2
>=gnome-extra/cinnamon-settings-daemon-5.2
>=gnome-extra/nemo-5.2
gnome-extra/polkit-gnome
net-misc/wget
sys-apps/accountsservice[introspection]
sys-power/upower[introspection]
>=x11-libs/xapp-2.2.8[introspection]
x11-misc/xdg-utils
x11-themes/adwaita-icon-theme
x11-themes/gnome-themes-standard
nls? (
>=gnome-extra/cinnamon-translations-5.2
)
"
BDEPEND="
>=dev-util/intltool-0.40
>=sys-devel/gettext-0.17
virtual/pkgconfig
gtk-doc? ( dev-util/gtk-doc )
"
PATCHES=(
# Fix backgrounds path as cinnamon doesn't provide them
# https://github.com/linuxmint/Cinnamon/issues/3575
"${FILESDIR}"/${PN}-3.8.0-gnome-background-compatibility.patch
# Use wheel group instead of sudo (from Fedora/Arch)
# https://github.com/linuxmint/Cinnamon/issues/3576
"${FILESDIR}"/${PN}-3.6.6-wheel-sudo.patch
# Make evolution-data-server integration optional
"${FILESDIR}"/${PN}-5.2.7-eds-detection.patch
# Meson fixes
"${FILESDIR}"/${PN}-5.2.7-revert-meson-0.60-fix.patch
"${FILESDIR}"/${PN}-5.2.7-meson-0.61-fix.patch
)
src_prepare() {
xdg_src_prepare
# Add polkit agent to required components
# https://github.com/linuxmint/Cinnamon/issues/3579
sed -i "s/'REQUIRED', '/&polkit-cinnamon-authentication-agent-1;/" meson.build || die
# shebang fixing craziness
local p
for p in $(grep -rl '#!.*python3' || die); do
python_fix_shebang "${p}"
done
}
src_configure() {
local emesonargs=(
$(meson_use gstreamer build_recorder)
$(meson_use gtk-doc docs)
-Ddisable_networkmanager=$(usex networkmanager false true)
-Dpy3modules_dir="$(python_get_sitedir)"
)
meson_src_configure
}
src_install() {
meson_src_install
python_optimize "${D}$(python_get_sitedir)"
python_optimize "${ED}"/usr/share/cinnamon/
# Required for gnome-shell on hardened/PaX, bug #398941
pax-mark mr "${ED}"/usr/bin/cinnamon
# Doesn't exist on Gentoo, causing this to be a dead symlink
rm "${ED}/etc/xdg/menus/cinnamon-applications-merged" || die
# Ensure authentication-agent is started, bug #523958
# https://github.com/linuxmint/Cinnamon/issues/3579
insinto /etc/xdg/autostart/
doins "${FILESDIR}"/polkit-cinnamon-authentication-agent-1.desktop
}
pkg_postinst() {
xdg_pkg_postinst
gnome2_schemas_update
if use gstreamer; then
if ! has_version 'media-libs/gst-plugins-good:1.0' || \
! has_version 'media-plugins/gst-plugins-vpx:1.0'; then
ewarn "To make use of Cinnamon's built-in screen recording utility,"
ewarn "you need to either install media-libs/gst-plugins-good:1.0"
ewarn "and media-plugins/gst-plugins-vpx:1.0, or use dconf-editor to change"
ewarn "org.cinnamon.recorder/pipeline to what you want to use."
fi
else
ewarn "Cinnamon's built-in screen recording utility is not installed"
ewarn "because gstreamer support is disabled."
fi
}
pkg_postrm() {
xdg_pkg_postinst
gnome2_schemas_update
}

View File

@@ -0,0 +1,41 @@
https://github.com/linuxmint/cinnamon/commit/9ccce54c29f7c78404e8819d7be7a051efff4df1
From 9ccce54c29f7c78404e8819d7be7a051efff4df1 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz@archlinux.org>
Date: Thu, 3 Feb 2022 09:09:24 -0500
Subject: [PATCH] gtkdoc: remove dependencies on custom target files (#10606)
Sadly, the `dependencies` kwarg does not actually do what it seems to be
trying to be used for, here. It is for listing dependency or library
objects whose compiler flags should be added to gtkdoc-scangobj.
It will not actually add ninja target dependencies. The similar kwarg in
other meson functions (e.g. genmarshal and compile_schemas) that *do*
allow adding target dependencies, is `depend_files`.
Older versions of meson simply did nothing in an if/elif/elif block
where these custom_targets never matched anything, and were thus
silently ignored.
Meson 0.61 type-validates the arguments and rejects CustomTarget as
invalid:
```
docs/reference/cinnamon-js/meson.build:11:6: ERROR: gnome.gtkdoc keyword argument 'dependencies' was of type array[CustomTarget] but should have been array[Dependency | SharedLibrary | StaticLibrary]
```
---
docs/reference/cinnamon-js/meson.build | 1 -
1 file changed, 1 deletion(-)
diff --git a/docs/reference/cinnamon-js/meson.build b/docs/reference/cinnamon-js/meson.build
index 7c96c875a0..66a5e156eb 100644
--- a/docs/reference/cinnamon-js/meson.build
+++ b/docs/reference/cinnamon-js/meson.build
@@ -12,7 +12,6 @@ gnome.gtkdoc(
'cinnamon-js',
mode: 'xml',
main_xml: 'cinnamon-js-docs.sgml',
- dependencies: parts_files,
src_dir: meson.current_build_dir(),
install: true,
)

View File

@@ -0,0 +1,55 @@
https://github.com/linuxmint/cinnamon/commit/aac7baf119dc48b685aefb3438e5ba3e61c8cb09
From aac7baf119dc48b685aefb3438e5ba3e61c8cb09 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz@archlinux.org>
Date: Thu, 3 Feb 2022 09:11:39 -0500
Subject: [PATCH] Revert "build: disable gir install via list to pacify meson
>= 0.60.2 (#10489)" (#10596)
This reverts commit 8fc2df08b40aa3e1958ed2fde853c50676d8cf48.
This commit was wrong, because it tried to work around a bug in a single
version of meson by using something that isn't, wasn't, and won't be a
valid value.
The fixed version of meson 0.60.x has been out for a while now, which
once again accepts `false`, and 0.61.0 also accepts `false` but was
known at the time of this workaround to not work in meson-git master
(now meson 0.61.0).
Using `false` is acceptable and the failure to accept it has been
qualified as a meson regression. Using `[false]` is just... trying to
fuzz meson with random objects until you get something that slips its
way through the argument checker and produces desired effects on the
python implementation level.
---
src/meson.build | 2 +-
src/st/meson.build | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/meson.build b/src/meson.build
index 7999c0a67b..34b130d50f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -196,7 +196,7 @@ cinnamon_gir = gnome.generate_gir(
includes: cinnamon_gir_includes,
install: true,
install_dir_typelib: pkglibdir,
- install_dir_gir: [false],
+ install_dir_gir: false,
extra_args: [
'-DST_COMPILATION',
'--quiet',
diff --git a/src/st/meson.build b/src/st/meson.build
index d299727d06..ec7d7b30a1 100644
--- a/src/st/meson.build
+++ b/src/st/meson.build
@@ -213,7 +213,7 @@ st_gir = gnome.generate_gir(
includes: st_gir_includes,
install: true,
install_dir_typelib: pkglibdir,
- install_dir_gir: [false],
+ install_dir_gir: false,
extra_args: [
'-DST_COMPILATION',
'--quiet',