diff --git a/gpg-agent-shutdown.sh b/gpg-agent-shutdown.sh new file mode 100755 index 0000000..aab44cb --- /dev/null +++ b/gpg-agent-shutdown.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +## The nice way +if test -n "${GPG_AGENT_INFO}"; then + GPG_AGENT_PID=`echo ${GPG_AGENT_INFO} | cut -d: -f2` && kill ${GPG_AGENT_PID} ||: + unset GPG_AGENT_INFO +fi + +## The not so nice way +## NOTE: a root login will kill *all* users' gpg-agents +#killall gpg-agent + +## clean/remove .gpg-agent-info +rm -f $HOME/.gpg-agent-info diff --git a/gpg-agent-startup.sh b/gpg-agent-startup.sh new file mode 100755 index 0000000..fd84840 --- /dev/null +++ b/gpg-agent-startup.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +GPG_AGENT=/usr/bin/gpg-agent +## Run gpg-agent only if not already running, and available +if [ -x "${GPG_AGENT}" ] ; then + + # check validity of GPG_SOCKET (in case of session crash) + GPG_AGENT_INFO_FILE=${HOME}/.gpg-agent-info + if [ -f "${GPG_AGENT_INFO_FILE}" ]; then + GPG_AGENT_PID=`cat ${GPG_AGENT_INFO_FILE} | cut -f2 -d:` + GPG_PID_NAME=`ps -p ${GPG_AGENT_PID} -o comm=` + if [ ! "x${GPG_PID_NAME}" = "xgpg-agent" ]; then + rm -f "${GPG_AGENT_INFO_FILE}" 2>&1 >/dev/null + else + GPG_SOCKET=`cat "${GPG_AGENT_INFO_FILE}" | cut -f1 -d:` + if ! test -S "${GPG_SOCKET}" -a -O "${GPG_SOCKET}" ; then + rm -f "${GPG_AGENT_INFO_FILE}" 2>&1 >/dev/null + fi + fi + unset GPG_AGENT_PID GPG_SOCKET GPG_PID_NAME + fi + + if [ -f "${GPG_AGENT_INFO_FILE}" ]; then + export GPG_AGENT_INFO=$(cat "${GPG_AGENT_INFO_FILE}") + export GPG_TTY=$(tty) + else + eval "$(${GPG_AGENT} -s --daemon ${GPG_OPTIONS})" + echo ${GPG_AGENT_INFO} > "${HOME}/.gpg-agent-info" + fi + +fi diff --git a/kde-settings.spec b/kde-settings.spec index d8fe13a..9096e06 100644 --- a/kde-settings.spec +++ b/kde-settings.spec @@ -4,7 +4,7 @@ Summary: Config files for kde Name: kde-settings Version: 3.5 -Release: %{rel}%{?dist} +Release: %{rel}%{?dist}.1 Group: System Environment/Base License: Public Domain @@ -14,7 +14,12 @@ Source0: kde-settings-%{version}-%{rel}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch -Requires: kdelibs >= %{version} +Source10: gpg-agent-startup.sh +Source11: gpg-agent-shutdown.sh +# sed/kill used in gpg-agent-(startup/shutdown).sh +Requires: fileutils util-linux + +Requires: kdelibs3 Requires: xdg-user-dirs Obsoletes: kde-config < %{version}-%{release} @@ -44,18 +49,22 @@ Requires: xorg-x11-xdm # Intentionally left blank. Nothing to see here. %install -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT{%{_datadir}/config,%{_sysconfdir}/kde/kdm} +rm -rf %{buildroot} +mkdir -p %{buildroot}{%{_datadir}/config,%{_sysconfdir}/kde/kdm} -tar cpf - etc/ usr/ | tar --directory $RPM_BUILD_ROOT -xvpf - +tar cpf - etc/ usr/ | tar --directory %{buildroot} -xvpf - # kdebase/kdm symlink -rm -rf $RPM_BUILD_ROOT%{_datadir}/config/kdm -ln -sf ../../../etc/kde/kdm $RPM_BUILD_ROOT%{_datadir}/config/kdm +rm -rf %{buildroot}%{_datadir}/config/kdm +ln -sf ../../../etc/kde/kdm %{buildroot}%{_datadir}/config/kdm + +# enable auto-startup/shutdown of gpg-agent +install -p -m0755 -D %{SOURCE10} %{buildroot}%{_sysconfdir}/kde/env/gpg-agent-startup.sh +install -p -m0755 -D %{SOURCE11} %{buildroot}%{_sysconfdir}/kde/shutdown/gpg-agent-shutdown.sh %clean -rm -rf $RPM_BUILD_ROOT +rm -rf %{buildroot} %pre kdm @@ -77,6 +86,8 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) +%{_sysconfdir}/kde/env/gpg-agent*.sh +%{_sysconfdir}/kde/shutdown/gpg-agent*.sh %{_sysconfdir}/skel/.kde/ # drop noreplace, so we can be sure to get the new kiosk bits %config %{_sysconfdir}/kderc @@ -102,6 +113,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Jan 23 2008 Rex Dieter 3.5-30.1 +- include gpg-agent scripts here (#427316) + * Mon Jul 02 2007 Than Ngo - 3.5-30 - fix bz#245100