commit:     1031f5a7340e83c2cc260c3948e458274a3badd0
Author:     Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 07:51:34 2024 +0000
Commit:     Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Sat Jun 22 07:56:29 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1031f5a7

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 <AT> gentoo.org>

 net-misc/tigervnc/files/tigervnc-1.13.90.initd     | 91 ++++++++++++++++++++++
 ...c-1.13.90.ebuild => tigervnc-1.13.90-r1.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
similarity index 97%
rename from net-misc/tigervnc/tigervnc-1.13.90.ebuild
rename to 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"

Reply via email to