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.
app/admin-conky-1.10.8-r10: Patched crash on virtual Pulseaudio sinks
Using upstream commits brndnmtthws/conky@2a7226d and brndnmtthws/conky@ddf8a0f. Added missing braces for multi-line macro, added version bumped ebuild. Signed-off-by: Jan Seeger <[email protected]> Signed-off-by: Daniel Pielmeier <[email protected]>
- Loading branch information
Showing
2 changed files
with
235 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,186 @@ | ||
# Copyright 1999-2020 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=7 | ||
|
||
inherit cmake 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 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 webserver wifi X xmms2" | ||
|
||
COMMON_DEPEND=" | ||
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] ) | ||
truetype? ( x11-libs/libXft >=media-libs/freetype-2 ) | ||
x11-libs/libX11 | ||
x11-libs/libXdamage | ||
x11-libs/libXinerama | ||
x11-libs/libXfixes | ||
x11-libs/libXext | ||
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? ( dev-db/mysql-connector-c ) | ||
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 ) | ||
webserver? ( net-libs/libmicrohttpd ) | ||
|| ( dev-lang/lua:0 dev-lang/lua:5.1 ) | ||
" | ||
RDEPEND=" | ||
${COMMON_DEPEND} | ||
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=" | ||
${COMMON_DEPEND} | ||
app-text/docbook2X | ||
" | ||
|
||
CONFIG_CHECK=~IPV6 | ||
|
||
DOCS=( README.md TODO ChangeLog NEWS AUTHORS ) | ||
|
||
PATCHES=( | ||
"${FILESDIR}"/${P}-use-pkgconfig.patch | ||
"${FILESDIR}"/${P}-libical-3.patch | ||
"${FILESDIR}"/${P}-portmon.patch | ||
"${FILESDIR}"/${P}-clang.patch | ||
"${FILESDIR}"/${P}-virtual-sinks.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_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_XMMS2=$(usex xmms2) | ||
) | ||
else | ||
mycmakeargs=( | ||
-DBUILD_X11=OFF | ||
-DBUILD_NVIDIA=OFF | ||
-DBUILD_LUA_CAIRO=OFF | ||
-DBUILD_LUA_IMLIB2=OFF | ||
-DBUILD_LUA_RSVG=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_HTTP=$(usex webserver) | ||
-DBUILD_WEATHER_METAR=$(usex weather-metar) | ||
-DBUILD_WLAN=$(usex wifi) | ||
-DBUILD_BUILTIN_CONFIG=ON | ||
-DBUILD_OLD_CONFIG=ON | ||
-DBUILD_I18N=ON | ||
-DMAINTAINER_MODE=ON | ||
-DRELEASE=ON | ||
-DBUILD_AUDACIOUS=OFF | ||
-DBUILD_BMPX=OFF | ||
-DDOC_PATH=/usr/share/doc/${PF} | ||
) | ||
|
||
cmake_src_configure | ||
} | ||
|
||
src_install() { | ||
cmake_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 | ||
} |
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,49 @@ | ||
From 8221ba62045012abf8a4443de20f17a0a8fc1288 Mon Sep 17 00:00:00 2001 | ||
From: Jan Seeger <[email protected]> | ||
Date: Wed, 5 Aug 2020 15:39:20 +0200 | ||
Subject: Fixed crash on virtual sinks. | ||
|
||
Taken from upstream commits | ||
https://github.com/brndnmtthws/conky/commit/ddf8a0f58f3110e31ec4c44ecff838d2b231f6f3 and | ||
https://github.com/brndnmtthws/conky/commit/2a7226d89331f7d5d0abf0b9aff6d75435dd3a2d. | ||
|
||
Signed-off-by: Jan Seeger <[email protected]> | ||
--- | ||
src/pulseaudio.cc | 12 +++++++++--- | ||
1 file changed, 9 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/src/pulseaudio.cc b/src/pulseaudio.cc | ||
index 93226c1b..af814bd6 100644 | ||
--- a/src/pulseaudio.cc | ||
+++ b/src/pulseaudio.cc | ||
@@ -53,8 +53,13 @@ void pa_sink_info_callback(pa_context *c, const pa_sink_info *i, int eol, void * | ||
pdr->sink_mute = i->mute; | ||
pdr->sink_card = i->card; | ||
pdr->sink_index = i->index; | ||
- pdr->sink_active_port_name.assign(i->active_port->name); | ||
- pdr->sink_active_port_description.assign(i->active_port->description); | ||
+ if (i->active_port != nullptr) { | ||
+ pdr->sink_active_port_name.assign(i->active_port->name); | ||
+ pdr->sink_active_port_description.assign(i->active_port->description); | ||
+ } else { | ||
+ pdr->sink_active_port_name.erase(); | ||
+ pdr->sink_active_port_name.erase(); | ||
+ } | ||
pdr->sink_volume = round_to_int(100.0f * (float)pa_cvolume_avg(&(i->volume)) / (float)PA_VOLUME_NORM); | ||
pa_threaded_mainloop_signal(pulseaudio->mainloop, 0); | ||
} | ||
@@ -224,9 +229,10 @@ void init_pulseaudio(struct text_object *obj) { | ||
return; | ||
} | ||
|
||
- if(pulseaudio->result.sink_card!=(uint32_t)-1) | ||
+ if(pulseaudio->result.sink_card!=(uint32_t)-1) { | ||
PULSEAUDIO_WAIT(pa_context_get_card_info_by_index(pulseaudio->context, pulseaudio->result.sink_card, | ||
pa_card_info_callback, &pulseaudio->result)); | ||
+ } | ||
|
||
// get notification when something changes in PA | ||
pa_context_set_subscribe_callback(pulseaudio->context, subscribe_cb, &pulseaudio->result); | ||
-- | ||
2.26.2 | ||
|