@@ -81,52 +81,46 @@ rm -rf "%{buildroot}"
# here because the %files directive overwrites folder owners, I have not found a simple way to make the
# files directive to use JENKINS_USER as owner.
if [ -f "/etc/sysconfig/%{name }" ]; then
logger -t %{name }.installer "Found previous config file /etc/sysconfig/%{name }"
. /etc/sysconfig/%{name }
touch /tmp/cacheowner
ls -ld /var/cache/%{name } | awk 'NR== 1 {print $3}' > /tmp/cacheowner
touch /tmp/logowner
ls -ld /var/log/%{name } | awk 'NR== 1 {print $3}' > /tmp/logowner
touch /tmp/workdirowner
ls -ld ${JENKINS_HOME:-%{workdir }}| awk 'NR== 1 {print $3}' > /tmp/workdirowner
stat --format= %U /var/cache/%{name } > /tmp/%{name }.installer.cacheowner
stat --format= %U /var/log/%{name } > /tmp/%{name }.installer.logowner
stat --format= %U ${JENKINS_HOME:-%{workdir }} > /tmp/%{name }.installer.workdirowner
else
logger -t %{name }.installer "No previous config file /etc/sysconfig/%{name } found"
fi
%post
/sbin/chkconfig --add %{name }
function chownIfNeccesary {
logger -t %{name }.installer "Checking ${2} ownership"
if [ -f "${1}" ] ; then
owner= $(cat $1)
rm -f $1
logger -t %{name }.installer "Found previous owner of ${2}: ${owner} "
fi
if [ "${owner:-%{name }}" != "${JENKINS_USER:-%{name }}" ] ; then
logger -t %{name }.installer "Previous owner of ${2} is different than configured JENKINS_USER... Doing a recursive chown of ${2} "
chown -R ${JENKINS_USER:-%{name }} $2
elif [ "${JENKINS_USER:-%{name }}" != "%{name }" ] ; then
# User has changed ownership of files and JENKINS_USER, chown only the folder
logger -t %{name }.installer "Configured JENKINS_USER is different than default... Doing a non recursive chown of ${2} "
chown ${JENKINS_USER:-%{name }} $2
else
logger -t %{name }.installer "No chown needed for ${2} "
fi
}
# Ensure the right ownership on files only if not owned by JENKINS_USER and JENKINS_USER
# != %{name}, namely all cases but the default one (configured for %{name} owned by %{name})
# In any case if JENKINS_INSTALL_SKIP_CHOWN is true we do not chown anything to maintain
# the existing semantics
. /etc/sysconfig/%{name }
if test x"$JENKINS_INSTALL_SKIP_CHOWN" != "xtrue"; then
if [ -f "/tmp/cacheowner" ]; then
cacheOwner= $(cat /tmp/cacheowner)
rm -f /tmp/cacheowner
fi
if [ "${cacheOwner:-%{name }}" != "${JENKINS_USER:-%{name }}" ] ; then
chown -R ${JENKINS_USER:-%{name }} /var/cache/%{name }
elif [ "${JENKINS_USER:-%{name }}" != "%{name }" ] ; then
# User has changed ownership of files and JENKINS_USER, chown only the folder
chown ${JENKINS_USER:-%{name }} /var/cache/%{name }
fi
if [ -f "/tmp/logowner" ]; then
logOwner= $(cat /tmp/logowner)
rm -f /tmp/logowner
fi
if [ "${logOwner:-%{name }}" != "${JENKINS_USER:-%{name }}" ] ; then
chown -R ${JENKINS_USER:-%{name }} /var/log/%{name }
elif [ "${JENKINS_USER:-%{name }}" != "%{name }" ] ; then
chown ${JENKINS_USER:-%{name }} /var/log/%{name }
fi
if [ -f "/tmp/workdirowner" ]; then
workdirOwner= $(cat /tmp/workdirowner)
rm -f /tmp/workdirowner
fi
if [ "${workdirOwner:-%{name }}" != "${JENKINS_USER:-%{name }}" ] ; then
chown -R ${JENKINS_USER:-%{name }} ${JENKINS_HOME:-%{workdir }}
elif [ "${JENKINS_USER:-%{name }}" != "%{name }" ] ; then
chown ${JENKINS_USER:-%{name }} ${JENKINS_HOME:-%{workdir }}
fi
chownIfNeccesary "/tmp/%{name }.installer.cacheowner" /var/cache/%{name }
chownIfNeccesary "/tmp/%{name }.installer.logowner" /var/log/%{name }
chownIfNeccesary "/tmp/%{name }.installer.workdirowner" ${JENKINS_HOME:-%{workdir }}
fi
%preun