From: "Viorel Munteanu" <ceamac@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-misc/tigervnc/, net-misc/tigervnc/files/
Date: Sat, 24 Jun 2023 09:08:38 +0000 (UTC) [thread overview]
Message-ID: <1687597357.8c9e7c2263068ab5d074c7652431e7952ccf7eba.ceamac@gentoo> (raw)
commit: 8c9e7c2263068ab5d074c7652431e7952ccf7eba
Author: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 2 17:09:34 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Sat Jun 24 09:02:37 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8c9e7c22
net-misc/tigervnc: one service per display
Change configuration for openrc users.
Currently, it has 3 drawbacks:
- the sessions must be defined in 2 places
- if a display crashes, it cannot be restarted without stopping all of
them
- openrc only keeps track of the last display started, so if any other
display crashes, it will not show as crashed.
The first issue is solved by no longer using DISPLAYS fron conf.d, and
parsing /etc/tigervnc/vncserver.users directly.
The other two by switching to a one service per display model.
Closes: https://github.com/gentoo/gentoo/pull/31277
Signed-off-by: Viorel Munteanu <ceamac <AT> gentoo.org>
net-misc/tigervnc/files/tigervnc-1.13.1.confd | 13 ++++
net-misc/tigervnc/files/tigervnc-1.13.1.initd | 88 ++++++++++++++++++++++
...ervnc-9999.ebuild => tigervnc-1.13.1-r3.ebuild} | 14 ++--
net-misc/tigervnc/tigervnc-9999.ebuild | 11 ++-
4 files changed, 114 insertions(+), 12 deletions(-)
diff --git a/net-misc/tigervnc/files/tigervnc-1.13.1.confd b/net-misc/tigervnc/files/tigervnc-1.13.1.confd
new file mode 100644
index 000000000000..bb6dae7df032
--- /dev/null
+++ b/net-misc/tigervnc/files/tigervnc-1.13.1.confd
@@ -0,0 +1,13 @@
+# Config file for /etc/init.d/tigervnc
+
+# Add the user(s) Xvnc(1) should be run for to /etc/tigervnc/vncserver.users
+# DISPLAYS is no loger used.
+
+# Optionally override the default Xsession file
+# TIGERVNC_XSESSION_FILE="/usr/share/sddm/scripts/Xsession"
+# TIGERVNC_XSESSION_FILE="/etc/gdm/Xsession"
+# TIGERVNC_XSESSION_FILE="/etc/lightdm/Xsession"
+# TIGERVNC_XSESSION_FILE="/usr/share/slim/Xsession"
+
+# vncsession no longer supports VNC_OPTS
+# Use /etc/tigervnc/vncserver-config-defaults or $HOME/.vnc/config instead
diff --git a/net-misc/tigervnc/files/tigervnc-1.13.1.initd b/net-misc/tigervnc/files/tigervnc-1.13.1.initd
new file mode 100644
index 000000000000..f7e72fa84c07
--- /dev/null
+++ b/net-misc/tigervnc/files/tigervnc-1.13.1.initd
@@ -0,0 +1,88 @@
+#!/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
+ elif ! runuser -l "${user}" -c "[ -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-9999.ebuild b/net-misc/tigervnc/tigervnc-1.13.1-r3.ebuild
similarity index 94%
copy from net-misc/tigervnc/tigervnc-9999.ebuild
copy to net-misc/tigervnc/tigervnc-1.13.1-r3.ebuild
index a1d75fef3750..14114aae2041 100644
--- a/net-misc/tigervnc/tigervnc-9999.ebuild
+++ b/net-misc/tigervnc/tigervnc-1.13.1-r3.ebuild
@@ -72,10 +72,7 @@ COMMON_DEPEND="
"
RDEPEND="${COMMON_DEPEND}
java? ( >=virtual/jre-1.8:* )
- server? (
- dev-lang/perl
- sys-process/psmisc
- )
+ server? ( dev-lang/perl )
"
DEPEND="${COMMON_DEPEND}
java? ( >=virtual/jdk-1.8:* )
@@ -203,8 +200,8 @@ src_install() {
emake -C unix/xserver/hw/vnc DESTDIR="${D}" install
rm -v "${ED}"/usr/$(get_libdir)/xorg/modules/extensions/libvnc.la || die
- newconfd "${FILESDIR}"/${PN}-1.12.0.confd ${PN}
- newinitd "${FILESDIR}"/${PN}-1.12.0.initd ${PN}
+ newconfd "${FILESDIR}"/${PN}-1.13.1.confd ${PN}
+ newinitd "${FILESDIR}"/${PN}-1.13.1.initd ${PN}
systemd_douserunit unix/vncserver/vncserver@.service
@@ -220,6 +217,11 @@ src_install() {
pkg_postinst() {
xdg_pkg_postinst
+ use server && {
+ 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:'
+ }
+
local OPTIONAL_DM="gnome-base/gdm x11-misc/lightdm x11-misc/sddm x11-misc/slim"
use server && \
optfeature "keeping track of the xorg-server module" net-misc/tigervnc-xorg-module && \
diff --git a/net-misc/tigervnc/tigervnc-9999.ebuild b/net-misc/tigervnc/tigervnc-9999.ebuild
index a1d75fef3750..23b38081e296 100644
--- a/net-misc/tigervnc/tigervnc-9999.ebuild
+++ b/net-misc/tigervnc/tigervnc-9999.ebuild
@@ -72,10 +72,7 @@ COMMON_DEPEND="
"
RDEPEND="${COMMON_DEPEND}
java? ( >=virtual/jre-1.8:* )
- server? (
- dev-lang/perl
- sys-process/psmisc
- )
+ server? ( dev-lang/perl )
"
DEPEND="${COMMON_DEPEND}
java? ( >=virtual/jdk-1.8:* )
@@ -203,8 +200,8 @@ src_install() {
emake -C unix/xserver/hw/vnc DESTDIR="${D}" install
rm -v "${ED}"/usr/$(get_libdir)/xorg/modules/extensions/libvnc.la || die
- newconfd "${FILESDIR}"/${PN}-1.12.0.confd ${PN}
- newinitd "${FILESDIR}"/${PN}-1.12.0.initd ${PN}
+ newconfd "${FILESDIR}"/${PN}-1.13.1.confd ${PN}
+ newinitd "${FILESDIR}"/${PN}-1.13.1.initd ${PN}
systemd_douserunit unix/vncserver/vncserver@.service
@@ -220,6 +217,8 @@ src_install() {
pkg_postinst() {
xdg_pkg_postinst
+ use server && elog 'OpenRC users: please migrate to one service per display as documented here' #FIXME: add link
+
local OPTIONAL_DM="gnome-base/gdm x11-misc/lightdm x11-misc/sddm x11-misc/slim"
use server && \
optfeature "keeping track of the xorg-server module" net-misc/tigervnc-xorg-module && \
next reply other threads:[~2023-06-24 9:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-24 9:08 Viorel Munteanu [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-09-01 10:56 [gentoo-commits] repo/gentoo:master commit in: net-misc/tigervnc/, net-misc/tigervnc/files/ Viorel Munteanu
2024-07-27 19:36 Viorel Munteanu
2024-06-22 7:57 Viorel Munteanu
2023-08-03 6:00 Viorel Munteanu
2023-05-03 17:06 Viorel Munteanu
2023-03-31 7:03 Viorel Munteanu
2022-05-13 20:04 Sam James
2022-03-22 18:01 Sam James
2021-12-07 23:45 Sam James
2021-09-17 2:34 Sam James
2018-12-15 19:10 Matt Turner
2018-07-23 8:46 Tony Vroon
2017-11-27 15:56 Alice Ferrazzi
2017-03-02 11:12 Michael Palimaka
2017-01-26 10:26 Michael Palimaka
2017-01-25 18:05 Matt Turner
2016-01-29 15:55 Michał Górny
2016-01-09 11:44 Jeroen Roovers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1687597357.8c9e7c2263068ab5d074c7652431e7952ccf7eba.ceamac@gentoo \
--to=ceamac@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox