forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gnome-extra/cinnamon: Add fix for pillow >= 6.0.0
Closes: https://bugs.gentoo.org/684158 Signed-off-by: Kristian Fiskerstrand <[email protected]> Package-Manager: Portage-2.3.66, Repoman-2.3.11
- Loading branch information
Showing
2 changed files
with
252 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
# Copyright 1999-2019 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=6 | ||
GNOME2_LA_PUNT="yes" | ||
PYTHON_COMPAT=( python{2_7,3_5,3_6} ) | ||
PYTHON_REQ_USE="xml" | ||
|
||
inherit autotools eutils flag-o-matic gnome2 multilib pax-utils python-r1 | ||
|
||
DESCRIPTION="A fork of GNOME Shell with layout similar to GNOME 2" | ||
HOMEPAGE="http://developer.linuxmint.com/" | ||
|
||
MY_PV="${PV/_p/-UP}" | ||
MY_P="${PN}-${MY_PV}" | ||
|
||
SRC_URI="https://github.com/linuxmint/Cinnamon/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz" | ||
|
||
LICENSE="GPL-2+" | ||
SLOT="0" | ||
|
||
IUSE="+nls" | ||
|
||
# We need *both* python 2.x and 3.x | ||
REQUIRED_USE="${PYTHON_REQUIRED_USE} | ||
|| ( $(python_gen_useflags 'python2*') ) | ||
|| ( $(python_gen_useflags 'python3*') ) | ||
" | ||
|
||
KEYWORDS="~amd64 ~x86" | ||
|
||
COMMON_DEPEND="${PYTHON_DEPS} | ||
app-accessibility/at-spi2-atk:2 | ||
app-misc/ca-certificates | ||
dev-libs/dbus-glib | ||
>=dev-libs/glib-2.35.0:2[dbus] | ||
>=dev-libs/gobject-introspection-0.10.1:= | ||
>=dev-libs/json-glib-0.13.2 | ||
>=dev-libs/libcroco-0.6.2:0.6 | ||
dev-libs/libxml2:2 | ||
gnome-base/librsvg | ||
>=gnome-extra/cinnamon-desktop-4.0:0=[introspection] | ||
>=gnome-extra/cinnamon-menus-4.0[introspection] | ||
>=gnome-extra/cjs-4.0.0[cairo] | ||
>=media-libs/clutter-1.10:1.0[introspection] | ||
media-libs/cogl:1.0=[introspection] | ||
>=gnome-base/gsettings-desktop-schemas-2.91.91 | ||
media-libs/gstreamer:1.0 | ||
media-libs/gst-plugins-base:1.0 | ||
net-libs/libsoup:2.4[introspection] | ||
>=sys-auth/polkit-0.100[introspection] | ||
x11-libs/gdk-pixbuf:2[introspection] | ||
>=x11-libs/gtk+-3.12.0:3[introspection] | ||
x11-libs/pango[introspection] | ||
>=x11-libs/startup-notification-0.11 | ||
x11-libs/libX11 | ||
>=x11-libs/libXfixes-5.0 | ||
>=x11-wm/muffin-4.0.0[introspection] | ||
dev-libs/keybinder:3[introspection] | ||
>=x11-libs/libnotify-0.7.3:0=[introspection] | ||
" | ||
# Runtime-only deps are probably incomplete and approximate. | ||
# Each block: | ||
# 2. Introspection stuff + dconf needed via imports.gi.* | ||
# 3. gnome-session is needed for gnome-session-quit | ||
# 4. Control shell settings | ||
# 5. accountsservice is needed for GdmUserManager (0.6.14 needed for fast | ||
# user switching with gdm-3.1.x) | ||
# 6. caribou needed for on-screen keyboard | ||
# 7. xdg-utils needed for xdg-open, used by extension tool | ||
# 8. imaging, lxml needed for cinnamon-settings | ||
# 9. gnome-icon-theme-symbolic needed for various icons | ||
# 10. pygobject needed for menu editor | ||
# 11. nemo - default file manager, tightly integrated with cinnamon | ||
# 12. polkit-gnome - explicitly autostarted by us | ||
# TODO(lxnay): fix error: libgnome-desktop/gnome-rr-labeler.h: No such file or directory | ||
RDEPEND="${COMMON_DEPEND} | ||
>=gnome-base/dconf-0.4.1 | ||
>=gnome-base/libgnomekbd-2.91.4[introspection] | ||
sys-power/upower[introspection] | ||
>=gnome-extra/cinnamon-session-4.0 | ||
>=gnome-extra/cinnamon-settings-daemon-4.0 | ||
>=app-accessibility/caribou-0.3 | ||
x11-misc/xdg-utils | ||
x11-libs/xapps[introspection] | ||
dev-python/dbus-python[${PYTHON_USEDEP}] | ||
dev-python/pygobject:3[${PYTHON_USEDEP}] | ||
$(python_gen_cond_dep 'dev-python/lxml[${PYTHON_USEDEP}]' 'python2*') | ||
$(python_gen_cond_dep 'dev-python/pexpect[${PYTHON_USEDEP}]' 'python2*') | ||
$(python_gen_cond_dep 'dev-python/pycairo[${PYTHON_USEDEP}]' 'python2*') | ||
$(python_gen_cond_dep 'dev-python/pyinotify[${PYTHON_USEDEP}]' 'python2*') | ||
$(python_gen_cond_dep 'dev-python/pypam[${PYTHON_USEDEP}]' 'python2*') | ||
$(python_gen_cond_dep 'dev-python/pillow[${PYTHON_USEDEP}]' 'python2*') | ||
x11-themes/gnome-themes-standard | ||
x11-themes/adwaita-icon-theme | ||
>=gnome-extra/nemo-4.0 | ||
>=gnome-extra/cinnamon-control-center-4.0 | ||
>=gnome-extra/cinnamon-screensaver-4.0 | ||
gnome-extra/polkit-gnome | ||
nls? ( >=gnome-extra/cinnamon-translations-4.0 ) | ||
" | ||
DEPEND="${COMMON_DEPEND} | ||
$(python_gen_cond_dep 'dev-python/polib[${PYTHON_USEDEP}]' 'python2*') | ||
dev-util/gtk-doc | ||
>=dev-util/intltool-0.4 | ||
>=sys-devel/gettext-0.17 | ||
virtual/pkgconfig | ||
gnome-base/gnome-common | ||
!!=dev-lang/spidermonkey-1.8.2* | ||
" | ||
# libmozjs.so is picked up from /usr/lib while compiling, so block at build-time | ||
# https://bugs.gentoo.org/show_bug.cgi?id=360413 | ||
|
||
S="${WORKDIR}/Cinnamon-${PV}" | ||
|
||
pkg_setup() { | ||
python_setup | ||
} | ||
|
||
src_prepare() { | ||
# Fix backgrounds path as cinnamon doesn't provide them | ||
# https://github.com/linuxmint/Cinnamon/issues/3575 | ||
eapply "${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 | ||
eapply "${FILESDIR}"/${PN}-3.6.6-wheel-sudo.patch | ||
|
||
eapply -p0 "${FILESDIR}"/${PN}-4.0-fix-pillow-settings.patch | ||
|
||
# Use pkexec instead of gksu (from Arch) | ||
# https://github.com/linuxmint/Cinnamon/issues/3565 | ||
sed -i 's/gksu/pkexec/' files/usr/bin/cinnamon-settings-users || die | ||
|
||
# Add polkit agent to required components (from Fedora/Arch), bug #523958 | ||
# https://github.com/linuxmint/Cinnamon/issues/3579 | ||
sed -i 's/RequiredComponents=\(.*\)$/RequiredComponents=\1polkit-gnome-authentication-agent-1;/' \ | ||
files/usr/share/cinnamon-session/sessions/cinnamon*.session || die | ||
|
||
# python 2-and-3 shebang fixing craziness | ||
local p | ||
python_setup 'python3*' | ||
for p in $(grep -rl '#!.*python3'); do | ||
python_fix_shebang "${p}" | ||
done | ||
|
||
python_setup 'python2*' | ||
for p in $(grep -rl '#!.*python[^3]'); do | ||
python_fix_shebang "${p}" | ||
done | ||
|
||
eautoreconf | ||
gnome2_src_prepare | ||
} | ||
|
||
src_configure() { | ||
gnome2_src_configure \ | ||
--libdir="${EPREFIX}/usr/$(get_libdir)" \ | ||
--with-ca-certificates="${EPREFIX}/etc/ssl/certs/ca-certificates.crt" \ | ||
BROWSER_PLUGIN_DIR="${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins" | ||
} | ||
|
||
src_install() { | ||
gnome2_src_install | ||
python_optimize "${ED}"usr/$(get_libdir)/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 -f "${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() { | ||
gnome2_pkg_postinst | ||
|
||
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 | ||
|
||
if ! has_version ">=x11-base/xorg-server-1.11"; then | ||
ewarn "If you use multiple screens, it is highly recommended that you" | ||
ewarn "upgrade to >=x11-base/xorg-server-1.11 to be able to make use of" | ||
ewarn "pointer barriers which will make it easier to use hot corners." | ||
fi | ||
|
||
if has_version "<x11-drivers/ati-drivers-12"; then | ||
ewarn "Cinnamon has been reported to show graphical corruption under" | ||
ewarn "x11-drivers/ati-drivers-11.*; you may want to switch to" | ||
ewarn "open-source drivers." | ||
fi | ||
} |
43 changes: 43 additions & 0 deletions
43
gnome-extra/cinnamon/files/cinnamon-4.0-fix-pillow-settings.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
--- files/usr/share/cinnamon/cinnamon-settings/bin/imtools.py.orig 2019-03-21 16:46:14 UTC | ||
+++ files/usr/share/cinnamon/cinnamon-settings/bin/imtools.py | ||
@@ -620,31 +620,6 @@ def has_transparency(image): | ||
has_alpha(image) | ||
|
||
|
||
-if Image.VERSION == '1.1.7': | ||
- | ||
- def split(image): | ||
- """Work around for bug in Pil 1.1.7 | ||
- | ||
- :param image: input image | ||
- :type image: PIL image object | ||
- :returns: the different color bands of the image (eg R, G, B) | ||
- :rtype: tuple | ||
- """ | ||
- image.load() | ||
- return image.split() | ||
-else: | ||
- | ||
- def split(image): | ||
- """Work around for bug in Pil 1.1.7 | ||
- | ||
- :param image: input image | ||
- :type image: PIL image object | ||
- :returns: the different color bands of the image (eg R, G, B) | ||
- :rtype: tuple | ||
- """ | ||
- return image.split() | ||
- | ||
- | ||
def get_alpha(image): | ||
"""Gets the image alpha band. Can handles P mode images with transpareny. | ||
Returns a band with all values set to 255 if no alpha band exists. | ||
@@ -655,7 +630,7 @@ def get_alpha(image): | ||
:rtype: single band image object | ||
""" | ||
if has_alpha(image): | ||
- return split(image)[-1] | ||
+ return image.split()[-1] | ||
if image.mode == 'P' and 'transparency' in image.info: | ||
return image.convert('RGBA').split()[-1] | ||
# No alpha layer, create one. |