x11-wm/awesome: revbump to 3.5.6-r2 wrt bug 571544
authorIlya Tumaykin <itumaykin@gmail.com>
Thu, 14 Jan 2016 11:35:53 +0000 (14:35 +0300)
committerIan Delaney <idella4@gentoo.org>
Thu, 14 Jan 2016 11:46:41 +0000 (19:46 +0800)
Backport upstream fix for focus problems with multiple
running awesome instances. Add epatch_user support.

Gentoo-Bug: 571544

Package-Manager: portage-2.2.26

x11-wm/awesome/awesome-3.5.6-r2.ebuild [new file with mode: 0644]
x11-wm/awesome/files/awesome-3.5.6-fix-multi-instances-focus.patch [new file with mode: 0644]

diff --git a/x11-wm/awesome/awesome-3.5.6-r2.ebuild b/x11-wm/awesome/awesome-3.5.6-r2.ebuild
new file mode 100644 (file)
index 0000000..4b09e3c
--- /dev/null
@@ -0,0 +1,139 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+CMAKE_MIN_VERSION="2.8"
+inherit cmake-utils eutils
+
+DESCRIPTION="A dynamic floating and tiling window manager"
+HOMEPAGE="http://awesome.naquadah.org/"
+SRC_URI="http://awesome.naquadah.org/download/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd"
+IUSE="dbus doc elibc_FreeBSD gnome"
+
+COMMON_DEPEND="
+       >=dev-lang/lua-5.1:0
+       dev-libs/glib:2
+       >=dev-libs/libxdg-basedir-1
+       >=dev-lua/lgi-0.7
+       x11-libs/cairo[xcb]
+       x11-libs/gdk-pixbuf:2
+       >=x11-libs/libxcb-1.6
+       >=x11-libs/pango-1.19.3[introspection]
+       >=x11-libs/startup-notification-0.10_p20110426
+       >=x11-libs/xcb-util-0.3.8
+       x11-libs/xcb-util-cursor
+       x11-libs/libXcursor
+       >=x11-libs/libX11-1.3.99.901
+       dbus? ( >=sys-apps/dbus-1 )
+       elibc_FreeBSD? ( dev-libs/libexecinfo )"
+
+# graphicsmagick's 'convert -channel' has no Alpha support, bug #352282
+DEPEND="${COMMON_DEPEND}
+       >=app-text/asciidoc-8.4.5
+       app-text/xmlto
+       dev-util/gperf
+       virtual/pkgconfig
+       media-gfx/imagemagick[png]
+       >=x11-proto/xcb-proto-1.5
+       >=x11-proto/xproto-7.0.15
+       doc? (
+               app-doc/doxygen
+               media-gfx/graphviz
+       )"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DOCS="AUTHORS BUGS PATCHES README STYLE"
+
+src_prepare() {
+       # bug #408025
+       epatch "${FILESDIR}/${PN}-3.5_rc1-convert-path.patch"
+       epatch "${FILESDIR}/${PN}-xsession.patch"
+
+       # bug #507604
+       epatch "${FILESDIR}/${PN}-3.5.5-util.lua-xdg-icons-fix.patch"
+       # bug #509658
+       epatch "${FILESDIR}/${PN}-3.5.5-cflag-cleanup.patch"
+
+       # bug #571544
+       epatch "${FILESDIR}/${P}-fix-multi-instances-focus.patch"
+
+       epatch_user
+}
+
+src_configure() {
+       mycmakeargs=(
+               -DPREFIX="${EPREFIX}"/usr
+               -DSYSCONFDIR="${EPREFIX}"/etc
+               $(cmake-utils_use_with dbus DBUS)
+               $(cmake-utils_use doc GENERATE_DOC)
+               )
+
+       cmake-utils_src_configure
+}
+
+src_compile() {
+       local myargs="all"
+
+       if use doc ; then
+               myargs="${myargs} doc"
+       fi
+       cmake-utils_src_make ${myargs}
+}
+
+src_install() {
+       cmake-utils_src_install
+
+       if use doc ; then
+               (
+                       cd "${CMAKE_BUILD_DIR}"/doc
+                       mv html doxygen
+                       dohtml -r doxygen || die
+               )
+       fi
+       rm -rf "${ED}"/usr/share/doc/${PN} || die "Cleanup of dupe docs failed"
+
+       exeinto /etc/X11/Sessions
+       newexe "${FILESDIR}"/${PN}-session ${PN} || die
+
+       # GNOME-based awesome
+       if use gnome ; then
+               # GNOME session
+               insinto /usr/share/gnome-session/sessions
+               newins "${FILESDIR}/${PN}-gnome-3.session" "${PN}-gnome.session" || die
+               # Application launcher
+               domenu "${FILESDIR}/${PN}-gnome.desktop" || die
+               # X Session
+               insinto /usr/share/xsessions/
+               doins "${FILESDIR}/${PN}-gnome-xsession.desktop" || die
+       fi
+}
+
+pkg_postinst() {
+       # bug #447308
+       if use gnome; then
+               elog
+               elog "You have enabled the gnome USE flag."
+               elog "Please note that quitting awesome won't kill your gnome session."
+               elog "To really quit the session, you should bind your quit key"
+               elog "to the following command:"
+               elog "  gnome-session-quit --logout"
+               elog "For more info visit"
+               elog "  https://bugs.gentoo.org/show_bug.cgi?id=447308"
+       fi
+
+       # bug #440724
+       elog
+       elog "If you are having issues with Java application windows being"
+       elog "completely blank, try installing"
+       elog "  x11-misc/wmname"
+       elog "and setting the WM name to LG3D."
+       elog "For more info visit"
+       elog "  https://bugs.gentoo.org/show_bug.cgi?id=440724"
+       elog
+}
diff --git a/x11-wm/awesome/files/awesome-3.5.6-fix-multi-instances-focus.patch b/x11-wm/awesome/files/awesome-3.5.6-fix-multi-instances-focus.patch
new file mode 100644 (file)
index 0000000..da306d1
--- /dev/null
@@ -0,0 +1,29 @@
+commit 1c27a69131428e9e733374c2a3676ca4ecee45d2
+Author: Kimball Thurston <kdt3rd@gmail.com>
+Date:   Tue Dec 22 21:46:17 2015 -0800
+
+    Fix focus handling with multiple awesome instances
+    
+    When there are multiple X11 screens (i.e. :0.0 and :0.1) for zaphod mode
+    style X setups, this triggers a refresh of focus when the instance
+    running on a particular root receives the mouse
+    
+    Fixes https://github.com/awesomeWM/awesome/issues/599.
+
+diff --git a/event.c b/event.c
+index db70e2c..80d6bd6 100644
+--- a/event.c
++++ b/event.c
+@@ -554,6 +554,12 @@ event_handle_enternotify(xcb_enter_notify_event_t *ev)
+         }
+         lua_pop(globalconf.L, 1);
+     }
++    else if (ev->event == globalconf.screen->root) {
++        /* When there are multiple X screens with awesome running separate
++         * instances, reset focus.
++         */
++        globalconf.focus.need_update = true;
++    }
+ }
+
+ /** The focus in event handler.