summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Pielmeier <billie@gentoo.org>2018-01-26 18:24:19 +0100
committerDaniel Pielmeier <billie@gentoo.org>2018-01-26 18:24:19 +0100
commit9ff7a8daeac42eb0bf69ec536237844ca90ba8c7 (patch)
treedc7bec9f97a5eebb46557f5d94edefce0e8591f0
parentwww-apps/rt: Cleanup old and insecure (diff)
downloadgentoo-9ff7a8daeac42eb0bf69ec536237844ca90ba8c7.tar.gz
gentoo-9ff7a8daeac42eb0bf69ec536237844ca90ba8c7.tar.bz2
gentoo-9ff7a8daeac42eb0bf69ec536237844ca90ba8c7.zip
app-admin/conky: Fix bug #645150.
Conky segfaults when out_to_x = false. Thanks to pacman616 for the report. Package-Manager: Portage-2.3.19, Repoman-2.3.6
-rw-r--r--app-admin/conky/conky-1.10.7-r1.ebuild193
-rw-r--r--app-admin/conky/files/conky-1.10.7-out_to_x-segfault.patch49
2 files changed, 242 insertions, 0 deletions
diff --git a/app-admin/conky/conky-1.10.7-r1.ebuild b/app-admin/conky/conky-1.10.7-r1.ebuild
new file mode 100644
index 000000000000..249fdc2045b8
--- /dev/null
+++ b/app-admin/conky/conky-1.10.7-r1.ebuild
@@ -0,0 +1,193 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit cmake-utils linux-info readme.gentoo-r1
+
+DESCRIPTION="An advanced, highly configurable system monitor for X"
+HOMEPAGE="https://github.com/brndnmtthws/conky"
+SRC_URI="https://github.com/brndnmtthws/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3 BSD LGPL-2.1 MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86"
+IUSE="apcupsd audacious cmus curl eve hddtemp ical iconv imlib iostats ipv6 irc
+ lua-cairo lua-imlib lua-rsvg math moc mpd mysql nano-syntax ncurses
+ nvidia +portmon pulseaudio rss systemd thinkpad truetype vim-syntax
+ weather-metar weather-xoap webserver wifi X xmms2"
+
+DEPEND_COMMON="
+ X? (
+ imlib? ( media-libs/imlib2[X] )
+ lua-cairo? (
+ >=dev-lua/toluapp-1.0.93
+ x11-libs/cairo[X] )
+ lua-imlib? (
+ >=dev-lua/toluapp-1.0.93
+ media-libs/imlib2[X] )
+ lua-rsvg? (
+ >=dev-lua/toluapp-1.0.93
+ gnome-base/librsvg )
+ nvidia? ( || ( x11-drivers/nvidia-drivers[tools,static-libs] media-video/nvidia-settings ) )
+ truetype? ( x11-libs/libXft >=media-libs/freetype-2 )
+ x11-libs/libX11
+ x11-libs/libXdamage
+ x11-libs/libXinerama
+ x11-libs/libXfixes
+ x11-libs/libXext
+ audacious? ( >=media-sound/audacious-1.5 dev-libs/glib:2 )
+ xmms2? ( media-sound/xmms2 )
+ )
+ cmus? ( media-sound/cmus )
+ curl? ( net-misc/curl )
+ eve? ( net-misc/curl dev-libs/libxml2 )
+ ical? ( dev-libs/libical )
+ iconv? ( virtual/libiconv )
+ irc? ( net-libs/libircclient )
+ mysql? ( >=virtual/mysql-5.0 )
+ ncurses? ( sys-libs/ncurses:= )
+ pulseaudio? ( media-sound/pulseaudio )
+ rss? ( dev-libs/libxml2 net-misc/curl dev-libs/glib:2 )
+ systemd? ( sys-apps/systemd )
+ wifi? ( net-wireless/wireless-tools )
+ weather-metar? ( net-misc/curl )
+ weather-xoap? ( dev-libs/libxml2 net-misc/curl )
+ webserver? ( net-libs/libmicrohttpd )
+ >=dev-lang/lua-5.1.4-r8:0
+ "
+RDEPEND="
+ ${DEPEND_COMMON}
+ apcupsd? ( sys-power/apcupsd )
+ hddtemp? ( app-admin/hddtemp )
+ moc? ( media-sound/moc )
+ nano-syntax? ( app-editors/nano )
+ vim-syntax? ( || ( app-editors/vim app-editors/gvim ) )
+ "
+DEPEND="
+ ${DEPEND_COMMON}
+ app-text/docbook2X
+ "
+
+CONFIG_CHECK=~IPV6
+
+DOCS=( README.md TODO ChangeLog NEWS AUTHORS )
+
+PATCHES=(
+ "${FILESDIR}"/${P}-cpu-hotplug.patch
+ "${FILESDIR}"/${P}-out_to_x-segfault.patch
+)
+
+DISABLE_AUTOFORMATTING="yes"
+DOC_CONTENTS="You can find sample configurations at ${ROOT%/}/usr/share/doc/${PF}.
+To customize, copy to ${XDG_CONFIG_HOME}/conky/conky.conf
+and edit it to your liking.
+
+There are pretty html docs available at the conky homepage
+or in ${ROOT%/}/usr/share/doc/${PF}/html.
+
+Also see https://wiki.gentoo.org/wiki/Conky/HOWTO"
+
+pkg_setup() {
+ use ipv6 && linux-info_pkg_setup
+}
+
+src_prepare() {
+ cmake-utils_src_prepare
+
+ sed -i -e "s|find_program(APP_MAN man)|set(APP_MAN $(which man) CACHE FILEPATH MAN_BINARY)|" \
+ cmake/ConkyPlatformChecks.cmake || die
+}
+
+src_configure() {
+ local mycmakeargs
+
+ if use X; then
+ mycmakeargs=(
+ -DBUILD_X11=ON
+ -DOWN_WINDOW=ON
+ -DBUILD_XDAMAGE=ON
+ -DBUILD_XINERAMA=ON
+ -DBUILD_XDBE=ON
+ -DBUILD_XFT=$(usex truetype)
+ -DBUILD_IMLIB2=$(usex imlib)
+ -DBUILD_XSHAPE=ON
+ -DBUILD_ARGB=ON
+ -DBUILD_LUA_CAIRO=$(usex lua-cairo)
+ -DBUILD_LUA_IMLIB2=$(usex lua-imlib)
+ -DBUILD_LUA_RSVG=$(usex lua-rsvg)
+ -DBUILD_NVIDIA=$(usex nvidia)
+ -DBUILD_AUDACIOUS=$(usex audacious)
+ -DBUILD_XMMS2=$(usex xmms2)
+ )
+ else
+ mycmakeargs=(
+ -DBUILD_X11=OFF
+ -DBUILD_NVIDIA=OFF
+ -DBUILD_LUA_CAIRO=OFF
+ -DBUILD_LUA_IMLIB2=OFF
+ -DBUILD_LUA_RSVG=OFF
+ -DBUILD_AUDACIOUS=OFF
+ -DBUILD_XMMS2=OFF
+ )
+ fi
+
+ mycmakeargs+=(
+ -DBUILD_APCUPSD=$(usex apcupsd)
+ -DBUILD_CMUS=$(usex cmus)
+ -DBUILD_CURL=$(usex curl)
+ -DBUILD_EVE=$(usex eve)
+ -DBUILD_HDDTEMP=$(usex hddtemp)
+ -DBUILD_IOSTATS=$(usex iostats)
+ -DBUILD_ICAL=$(usex ical)
+ -DBUILD_ICONV=$(usex iconv)
+ -DBUILD_IPV6=$(usex ipv6)
+ -DBUILD_IRC=$(usex irc)
+ -DBUILD_MATH=$(usex math)
+ -DBUILD_MOC=$(usex moc)
+ -DBUILD_MPD=$(usex mpd)
+ -DBUILD_MYSQL=$(usex mysql)
+ -DBUILD_NCURSES=$(usex ncurses)
+ -DBUILD_PORT_MONITORS=$(usex portmon)
+ -DBUILD_PULSEAUDIO=$(usex pulseaudio)
+ -DBUILD_RSS=$(usex rss)
+ -DBUILD_JOURNAL=$(usex systemd)
+ -DBUILD_IBM=$(usex thinkpad)
+ -DBUILD_WEATHER_METAR=$(usex weather-metar)
+ -DBUILD_WEATHER_XOAP=$(usex weather-xoap)
+ -DBUILD_HTTP=$(usex webserver)
+ -DBUILD_WLAN=$(usex wifi)
+ -DBUILD_BUILTIN_CONFIG=ON
+ -DBUILD_OLD_CONFIG=OFF
+ -DBUILD_I18N=ON
+ -DMAINTAINER_MODE=ON
+ -DRELEASE=ON
+ -DBUILD_BMPX=OFF
+ -DDOC_PATH=/usr/share/doc/${PF}
+ )
+
+ cmake-utils_src_configure
+}
+
+src_install() {
+ cmake-utils_src_install
+
+ if use vim-syntax; then
+ insinto /usr/share/vim/vimfiles/ftdetect
+ doins "${S}"/extras/vim/ftdetect/conkyrc.vim
+
+ insinto /usr/share/vim/vimfiles/syntax
+ doins "${S}"/extras/vim/syntax/conkyrc.vim
+ fi
+
+ if use nano-syntax; then
+ insinto /usr/share/nano/
+ doins "${S}"/extras/nano/conky.nanorc
+ fi
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+}
diff --git a/app-admin/conky/files/conky-1.10.7-out_to_x-segfault.patch b/app-admin/conky/files/conky-1.10.7-out_to_x-segfault.patch
new file mode 100644
index 000000000000..fef22ac46e50
--- /dev/null
+++ b/app-admin/conky/files/conky-1.10.7-out_to_x-segfault.patch
@@ -0,0 +1,49 @@
+From 562c7375883445acb58388ff16d9eb126b7e12a1 Mon Sep 17 00:00:00 2001
+From: Brenden Matthews <brenden@diddyinc.com>
+Date: Tue, 23 Jan 2018 13:52:11 -0500
+Subject: [PATCH] Fix segfault when out_to_x = false. (#455)
+
+This resolves #454.
+---
+ src/conky.cc | 24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/src/conky.cc b/src/conky.cc
+index 48256ecc..f10d08fb 100644
+--- a/src/conky.cc
++++ b/src/conky.cc
+@@ -2076,20 +2076,24 @@ static void main_loop(void)
+ sigaddset(&newmask, SIGUSR1);
+ #endif
+
++#ifdef BUILD_X11
+ #ifdef BUILD_XSHAPE
+- /* allow only decorated windows to be given mouse input */
+- int major_version, minor_version;
+- if (!XShapeQueryVersion(display, &major_version, &minor_version)) {
+- NORM_ERR("Input shapes are not supported");
+- } else {
+- if (own_window.get(*state) &&
+- (own_window_type.get(*state) != TYPE_NORMAL ||
+- (TEST_HINT(own_window_hints.get(*state), HINT_UNDECORATED)))) {
+- XShapeCombineRectangles(display, window.window, ShapeInput, 0, 0,
+- NULL, 0, ShapeSet, Unsorted);
++ if (out_to_x.get(*state)) {
++ /* allow only decorated windows to be given mouse input */
++ int major_version, minor_version;
++ if (!XShapeQueryVersion(display, &major_version, &minor_version)) {
++ NORM_ERR("Input shapes are not supported");
++ } else {
++ if (own_window.get(*state) &&
++ (own_window_type.get(*state) != TYPE_NORMAL ||
++ (TEST_HINT(own_window_hints.get(*state), HINT_UNDECORATED)))) {
++ XShapeCombineRectangles(display, window.window, ShapeInput, 0, 0,
++ NULL, 0, ShapeSet, Unsorted);
++ }
+ }
+ }
+ #endif /* BUILD_XSHAPE */
++#endif /* BUILD_X11 */
+
+ last_update_time = 0.0;
+ next_update_time = get_time() - fmod(get_time(), active_update_interval());