From 11fd408f90bb0574e6da51fe423dcf1a07a85af2 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Mar 31 2020 09:38:15 +0000 Subject: import tigervnc-1.8.0-19.el7 --- diff --git a/SOURCES/vncserver.service b/SOURCES/vncserver.service index 5077e82..7b9cb2f 100644 --- a/SOURCES/vncserver.service +++ b/SOURCES/vncserver.service @@ -3,9 +3,7 @@ # Quick HowTo: # 1. Copy this file to /etc/systemd/system/vncserver@.service # 2. Replace with the actual user name and edit vncserver -# parameters appropriately -# (ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i" -# PIDFile=/home//.vnc/%H%i.pid) +# parameters in the wrapper script located in /usr/bin/vncserver_wrapper # 3. Run `systemctl daemon-reload` # 4. Run `systemctl enable vncserver@:.service` # @@ -36,12 +34,11 @@ Description=Remote desktop service (VNC) After=syslog.target network.target [Service] -Type=forking +Type=simple # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' -ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i" -PIDFile=/home//.vnc/%H%i.pid +ExecStart=/usr/bin/vncserver_wrapper %i ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] diff --git a/SOURCES/vncserver_wrapper b/SOURCES/vncserver_wrapper new file mode 100755 index 0000000..0c8f994 --- /dev/null +++ b/SOURCES/vncserver_wrapper @@ -0,0 +1,42 @@ +#!/bin/sh + +USER="$1" +INSTANCE="$2" + +die() { + echo "FATAL: ${@:-}" >&2 + exit 2 +} + +cleanup() { + [ -n "$VNCPID" ] || return + if kill -0 $VNCPID 2>/dev/null; then + kill $VNCPID + fi +} + +trap cleanup TERM INT HUP + +[ -n "$USER" -a -n "$INSTANCE" ] || die "Invalid usage!" + +/usr/sbin/runuser -l "$USER" -c "/usr/bin/vncserver ${INSTANCE}" +[ $? -eq 0 ] || die "'runuser -l $USER' failed!" + +# Wait up to 5 seconds for vncserver to be up +for tries in $(seq 1 50); do + [ -e "~$USER/.vnc/$(hostname)${INSTANCE}.pid" ] && break + sleep 0.1 +done + +eval HOME=~$USER + +VNCPID=$(cat "$HOME/.vnc/$(hostname)${INSTANCE}.pid" 2>/dev/null || true) +[ -n "$VNCPID" ] || die "'vncserver ${INSTANCE}' failed to start after 5 seconds!" + +echo "'vncserver ${INSTANCE}' has PID $VNCPID, waiting until it exits ..." + +while kill -0 $VNCPID 2>/dev/null; do + sleep 5 +done + +echo "PID $VNCPID exited, exiting ..." diff --git a/SPECS/tigervnc.spec b/SPECS/tigervnc.spec index 25460ce..cc6de4a 100644 --- a/SPECS/tigervnc.spec +++ b/SPECS/tigervnc.spec @@ -1,6 +1,6 @@ Name: tigervnc Version: 1.8.0 -Release: 17%{?dist} +Release: 19%{?dist} Summary: A TigerVNC remote display system Group: User Interface/Desktops @@ -13,6 +13,7 @@ Source2: vncserver.sysconfig Source3: 10-libvnc.conf Source4: xvnc.service Source5: xvnc.socket +Source6: vncserver_wrapper BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: libX11-devel, automake, autoconf, libtool, gettext, gettext-autopoint @@ -272,6 +273,9 @@ install -m644 %{SOURCE4} %{buildroot}%{_unitdir}/xvnc@.service install -m644 %{SOURCE5} %{buildroot}%{_unitdir}/xvnc.socket rm -rf %{buildroot}%{_initrddir} +# Install vncserver wrapper script +install -m744 %{SOURCE6} %{buildroot}%{_bindir}/vncserver_wrapper + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig install -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/vncservers @@ -333,7 +337,9 @@ fi %systemd_preun xvnc.socket %postun server -%systemd_postun +%systemd_postun vncserver.service +%systemd_postun xvnc.service +%systemd_postun xvnc.socket %files -f %{name}.lang %doc README.txt @@ -348,6 +354,7 @@ fi %{_unitdir}/xvnc.socket %{_bindir}/x0vncserver %{_bindir}/vncserver +%{_bindir}/vncserver_wrapper %{_mandir}/man1/vncserver.1* %{_mandir}/man1/x0vncserver.1* @@ -376,6 +383,14 @@ fi %{_datadir}/icons/hicolor/*/apps/* %changelog +* Thu Oct 10 2019 Jan Grulich - 1.8.0-19 +- Use vncserver wrapper script to workaround systemd issues + Resolves: bz#1747191 + +* Tue Aug 13 2019 Adam Jackson - 1.8.0-18 +- Rebuild against newer X server to pick up backing store crash fixes + Resolves: bz#1670342 + * Mon Feb 18 2019 Jan Grulich - 1.8.0-17 - Release pointer grab when cursor leaves window Resolves: bz#1664801