summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViorel Munteanu <ceamac@gentoo.org>2024-06-22 10:51:34 +0300
committerViorel Munteanu <ceamac@gentoo.org>2024-06-22 10:56:29 +0300
commit1031f5a7340e83c2cc260c3948e458274a3badd0 (patch)
treebddfc5274625195129d18313b5fa599d2c53ee22 /net-misc/tigervnc
parentsci-libs/h5hut: last-rite (diff)
downloadgentoo-1031f5a7340e83c2cc260c3948e458274a3badd0.tar.gz
gentoo-1031f5a7340e83c2cc260c3948e458274a3badd0.tar.bz2
gentoo-1031f5a7340e83c2cc260c3948e458274a3badd0.zip
net-misc/tigervnc: fix tigervnc config path check
New users use ${XDG_CONFIG_HOME}/tigervnc, existing users can still use ~/.vnc Closes: https://bugs.gentoo.org/934624 Signed-off-by: Viorel Munteanu <ceamac@gentoo.org>
Diffstat (limited to 'net-misc/tigervnc')
-rw-r--r--net-misc/tigervnc/files/tigervnc-1.13.90.initd91
-rw-r--r--net-misc/tigervnc/tigervnc-1.13.90-r1.ebuild (renamed from net-misc/tigervnc/tigervnc-1.13.90.ebuild)5
2 files changed, 94 insertions, 2 deletions
diff --git a/net-misc/tigervnc/files/tigervnc-1.13.90.initd b/net-misc/tigervnc/files/tigervnc-1.13.90.initd
new file mode 100644
index 000000000000..bf9eee12787b
--- /dev/null
+++ b/net-misc/tigervnc/files/tigervnc-1.13.90.initd
@@ -0,0 +1,91 @@
+#!/sbin/openrc-run
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+# shellcheck shell=sh
+
+# Create symlinks for all displays.
+# For example for display :1, run `ln -s tigervnc /etc/init.d/tigervnc.1`
+# Then `rc-update add tigervnc.1 default`
+# For compatibility, /etc/init.d/tigervnc will start all displays.
+
+DISPLAYS=${SVCNAME#*.}
+if [ "$DISPLAYS" = "tigervnc" ]; then
+ should_warn=1
+ DISPLAYS=$(grep -v "^#" /etc/tigervnc/vncserver.users | sed -e 's/=.*//' -e 's/^://')
+fi
+
+depend() {
+ need net
+}
+
+checkconfig() {
+ if [ -n "${DISPLAYS}" ]; then
+ if [ "$1" = "start" ]; then
+ for display in $DISPLAYS; do
+ user="$(grep "^:${display}" /etc/tigervnc/vncserver.users)"
+ user=${user#*=}
+ # bug #690046
+ if [ -z "${user}" ]; then
+ eerror "User is not defined for display :${display} in /etc/tigervnc/vncserver.users"
+ return 1
+ # 1.13.90 changed the default config directory to ~/.config/tigervnc
+ # but still supports ~/.vnc if not found
+ elif ! runuser -l "${user}" -s /bin/bash -c \
+ "[[ ( -d ${XDG_CONFIG_HOME:-~/.config}/tigervnc && -f ${XDG_CONFIG_HOME:-~/.config}/tigervnc/passwd ) || ( ! -d ${XDG_CONFIG_HOME:-~/.config}/tigervnc && -f ~/.vnc/passwd ) ]]"; then
+ eerror "There are no passwords defined for user ${user}."
+ return 1
+ elif [ -e "/tmp/.X11-unix/X${display}" ]; then
+ eerror "Display :${display} appears to be already in use because of /tmp/.X11-unix/X${display}"
+ eerror "Remove this file if there is no X server for :${display}"
+ return 1
+ elif [ -e "/tmp/.X${display}-lock" ]; then
+ eerror "Display :${display} appears to be already in use because of /tmp/.X${display}-lock"
+ eerror "Remove this file if there is no X server for :${display}"
+ return 1
+ fi
+ FREEDISPLAYS="${FREEDISPLAYS} ${display}"
+ done
+ fi
+ return 0
+ else
+ eerror 'There are no displays configured in /etc/tigervnc/vncserver.users'
+ return 1
+ fi
+}
+
+checkwarn() {
+ if [ "${should_warn}" = "1" ]; then
+ ewarn 'Running /etc/init.d/tigervnc in compatibility mode'
+ ewarn 'Please migrate to one service per display as detailed here:'
+ ewarn 'https://wiki.gentoo.org/wiki/TigerVNC#Migrating_from_1.13.1-r2_or_lower:'
+ fi
+}
+
+start() {
+ checkwarn
+ FREEDISPLAYS=""
+ checkconfig start || return 1
+ for display in $FREEDISPLAYS; do
+ [ -n "${TIGERVNC_XSESSION_FILE}" ] && export TIGERVNC_XSESSION_FILE
+ ebegin "Starting TigerVNC server :${display}"
+ start-stop-daemon --start --pidfile=/run/vncsession-":${display}".pid /usr/libexec/vncsession-start -- ":${display}"
+ eend $?
+ done
+}
+
+stop() {
+ checkconfig stop || return 2
+ for display in $DISPLAYS; do
+ ebegin "Stopping TigerVNC server :${display}"
+ start-stop-daemon --stop --pidfile=/run/vncsession-":${display}".pid
+ eend $?
+ done
+ # Do not fail if a server is missing
+ /bin/true
+}
+
+restart() {
+ svc_stop
+ svc_start
+}
diff --git a/net-misc/tigervnc/tigervnc-1.13.90.ebuild b/net-misc/tigervnc/tigervnc-1.13.90-r1.ebuild
index 5115c063e325..24dd8515063c 100644
--- a/net-misc/tigervnc/tigervnc-1.13.90.ebuild
+++ b/net-misc/tigervnc/tigervnc-1.13.90-r1.ebuild
@@ -199,7 +199,7 @@ src_install() {
rm -v "${ED}"/usr/$(get_libdir)/xorg/modules/extensions/libvnc.la || die
newconfd "${FILESDIR}"/${PN}-1.13.1.confd ${PN}
- newinitd "${FILESDIR}"/${PN}-1.13.1.initd ${PN}
+ newinitd "${FILESDIR}"/${PN}-1.13.90.initd ${PN}
systemd_douserunit unix/vncserver/vncserver@.service
@@ -215,9 +215,10 @@ src_install() {
pkg_postinst() {
xdg_pkg_postinst
- use server && {
+ use server && [[ -n ${REPLACING_VERSIONS} ]] && ver_test "${REPLACING_VERSIONS}" -lt 1.13.1-r3 && {
elog 'OpenRC users: please migrate to one service per display as documented here:'
elog 'https://wiki.gentoo.org/wiki/TigerVNC#Migrating_from_1.13.1-r2_or_lower:'
+ elog
}
local OPTIONAL_DM="gnome-base/gdm x11-misc/lightdm x11-misc/sddm x11-misc/slim"