diff options
author | Daniel Pielmeier <billie@gentoo.org> | 2018-01-26 18:24:19 +0100 |
---|---|---|
committer | Daniel Pielmeier <billie@gentoo.org> | 2018-01-26 18:24:19 +0100 |
commit | 9ff7a8daeac42eb0bf69ec536237844ca90ba8c7 (patch) | |
tree | dc7bec9f97a5eebb46557f5d94edefce0e8591f0 | |
parent | www-apps/rt: Cleanup old and insecure (diff) | |
download | gentoo-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.ebuild | 193 | ||||
-rw-r--r-- | app-admin/conky/files/conky-1.10.7-out_to_x-segfault.patch | 49 |
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()); |