Name: uptrack Version: 1.0.3 Release: 1%{?dist} Summary: Client for the Ksplice Uptrack rebootless kernel update service Group: Applications/System License: GPLv2 URL: http://www.ksplice.com/ Icon: uptrack.xpm Source0: https://www.ksplice.com/uptrack/dist/%{name}-%{version}.tar.gz Source1: uptrack.cron.d Source2: uptrack.init Source3: uptrack.te Source4: uptrack.dracut BuildArch: noarch BuildRequires: python2-devel, desktop-file-utils BuildRequires: checkpolicy, policycoreutils, PackageKit-yum # e2fsprogs needed for uuidgen Requires: gnupg, e2fsprogs, module-init-tools >= 3.1-0.pre5.3.10, openssl, python-pycurl, /usr/sbin/dmidecode, /sbin/ip, PyYAML %description This package will install the client used to access the Ksplice Uptrack rebootless security update service. %prep %setup -q %build make %{__python} setup.py build checkmodule -o uptrack.mod -M -m %{SOURCE3} semodule_package -o uptrack.pp -m uptrack.mod perl -0pe 's/^(\s+)main\(\)$/\1PackageKitYumBackend.rebootpkgs = tuple(p for p in PackageKitYumBackend.rebootpkgs if not p.startswith("kernel"))\n$&/m or die' /usr/share/PackageKit/helpers/yum/yumBackend.py >yumBackend.py.ksplice %install rm -rf $RPM_BUILD_ROOT %{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT%{_sbindir} mv $RPM_BUILD_ROOT%{_bindir}/uptrack-upgrade $RPM_BUILD_ROOT%{_sbindir} for i in uptrack-install uptrack-remove uptrack-show; do (cd $RPM_BUILD_ROOT%{_sbindir} && ln -s uptrack-upgrade $i) done mkdir -p $RPM_BUILD_ROOT%{_datadir}/uptrack install -p -m 644 uptrack.gpg $RPM_BUILD_ROOT%{_datadir}/uptrack install -p -m 644 uptrack-server.gpg $RPM_BUILD_ROOT%{_datadir}/uptrack mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8 install -p -m 644 uptrack.8 $RPM_BUILD_ROOT%{_mandir}/man8 for i in uptrack-upgrade uptrack-install uptrack-remove uptrack-show; do (cd $RPM_BUILD_ROOT%{_mandir}/man8 && ln -s uptrack.8.gz $i.8.gz) done mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/cron.d install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/uptrack mkdir -p $RPM_BUILD_ROOT%{_initddir} install -p -m 755 %{SOURCE2} $RPM_BUILD_ROOT%{_initddir}/uptrack mkdir -p $RPM_BUILD_ROOT%{_var}/cache/uptrack mkdir -p $RPM_BUILD_ROOT%{_var}/lib/uptrack mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/uptrack install -p -m 644 uptrack.conf.sample $RPM_BUILD_ROOT%{_sysconfdir}/uptrack/uptrack.conf ## Install our versions of depmod and modprobe mkdir -p $RPM_BUILD_ROOT/sbin install -p -m 755 ksplice-depmod $RPM_BUILD_ROOT/sbin install -p -m 755 depmod.ksplice $RPM_BUILD_ROOT/sbin install -p -m 755 modprobe.ksplice $RPM_BUILD_ROOT/sbin mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ksplice ## Install our copy of the Ksplice perl utilities mkdir -p $RPM_BUILD_ROOT/usr/lib/uptrack install -p -m 755 ksplice/ksplice-apply $RPM_BUILD_ROOT/usr/lib/uptrack install -p -m 755 ksplice/ksplice-undo $RPM_BUILD_ROOT/usr/lib/uptrack install -p -m 755 ksplice/ksplice-view $RPM_BUILD_ROOT/usr/lib/uptrack install -p -m 644 ksplice/*.pm $RPM_BUILD_ROOT/usr/lib/uptrack mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/uptrack install -p -m 644 tos $RPM_BUILD_ROOT%{_datadir}/doc/uptrack perl -I ksplice ./ksplice/ksplice-view --api-version > $RPM_BUILD_ROOT/usr/share/uptrack/ksplice-tools-api-version install -p -m 644 uptrack.pp $RPM_BUILD_ROOT/usr/share/uptrack/ ln -s /etc/pki/tls/certs/ca-bundle.crt $RPM_BUILD_ROOT%{_datadir}/uptrack/ca-certificates.crt # We're currently not using kerneloops on Fedora rm -f $RPM_BUILD_ROOT%{_bindir}/send-oops mkdir -p $RPM_BUILD_ROOT%{_datadir}/dracut/modules.d/80uptrack install -p -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/dracut/modules.d/80uptrack/install install -p -m 755 uptrack-manager $RPM_BUILD_ROOT%{_bindir}/uptrack-manager mkdir -p $RPM_BUILD_ROOT%{_datadir}/uptrack-manager install -p -m 644 ui/* $RPM_BUILD_ROOT%{_datadir}/uptrack-manager mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps install -p -m 644 artwork/*.svg $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps ln -s ../icons/hicolor/scalable/apps/uptrack-error.svg $RPM_BUILD_ROOT%{_datadir}/uptrack-manager ln -s ../icons/hicolor/scalable/apps/uptrack-has-updates.svg $RPM_BUILD_ROOT%{_datadir}/uptrack-manager ln -s ../icons/hicolor/scalable/apps/uptrack.svg $RPM_BUILD_ROOT%{_datadir}/uptrack-manager ln -s ../icons/hicolor/scalable/apps/uptrack-uptodate.svg $RPM_BUILD_ROOT%{_datadir}/uptrack-manager mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart install -p -m 644 data/autostart/uptrack-manager.desktop $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart desktop-file-validate $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart/uptrack-manager.desktop mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications install -p -m 644 data/applications/uptrack-manager.desktop $RPM_BUILD_ROOT%{_datadir}/applications desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/uptrack-manager.desktop install -p -m 644 uptrack-manager.8 $RPM_BUILD_ROOT%{_mandir}/man8 mkdir -p $RPM_BUILD_ROOT%{_datadir}/dbus-1/services/ install -p -m 644 data/com.ksplice.uptrack.manager.service $RPM_BUILD_ROOT%{_datadir}/dbus-1/services/ mkdir -p $RPM_BUILD_ROOT%{_datadir}/polkit-1/actions/ install -p -m 644 data/com.ksplice.uptrack.policy $RPM_BUILD_ROOT%{_datadir}/polkit-1/actions/ mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/uptrack/ install -p -m 755 uptrack-launcher $RPM_BUILD_ROOT%{_libexecdir}/uptrack/ # Install our version of the yum PackageKit backend mkdir -p $RPM_BUILD_ROOT%{_datadir}/PackageKit/helpers/yum install -p -m 755 yumBackend.py.ksplice $RPM_BUILD_ROOT%{_datadir}/PackageKit/helpers/yum mkdir -p $RPM_BUILD_ROOT%{_var}/lib/uptrack/ touch $RPM_BUILD_ROOT%{_var}/lib/uptrack/autogen %files %defattr(-,root,root,-) %doc COPYING ChangeLog %{python_sitelib}/* %{_sbindir}/* /sbin/modprobe.ksplice /sbin/depmod.ksplice /sbin/ksplice-depmod %{_datadir}/uptrack %{_mandir}/man8/uptrack.8.gz %{_mandir}/man8/uptrack-upgrade.8.gz %{_mandir}/man8/uptrack-install.8.gz %{_mandir}/man8/uptrack-remove.8.gz %{_mandir}/man8/uptrack-show.8.gz %config(noreplace) %verify(not size md5) %{_sysconfdir}/cron.d/uptrack %{_initddir}/uptrack %{_var}/cache/uptrack %{_var}/lib/uptrack %config(noreplace) %{_sysconfdir}/uptrack /usr/lib/uptrack/ksplice-apply /usr/lib/uptrack/ksplice-undo /usr/lib/uptrack/ksplice-view /usr/lib/uptrack/*.pm %{_datadir}/doc/uptrack %{_datadir}/PackageKit/helpers/yum/* %{_datadir}/dracut/modules.d/80uptrack %triggerin -- module-init-tools if [ "$1" = "1" ] ; then # first install if ! [ -L /sbin/depmod ] || ! [ "$(readlink /sbin/depmod)" = "/sbin/depmod.ksplice" ]; then mv /sbin/depmod /sbin/depmod.ksplice-orig ln -sf /sbin/depmod.ksplice /sbin/depmod fi if ! [ -L /sbin/modprobe ] || ! [ "$(readlink /sbin/modprobe)" = "/sbin/modprobe.ksplice" ]; then mv /sbin/modprobe /sbin/modprobe.ksplice-orig ln -sf /sbin/modprobe.ksplice /sbin/modprobe fi fi %triggerin -- PackageKit-yum if [ "$1" = "1" ]; then #first install file=/usr/share/PackageKit/helpers/yum/yumBackend.py if ! [ -L "$file" ] || ! [ "$(readlink "$file")" = "${file}.ksplice" ]; then mv "$file" "$file.ksplice-orig" ln -sf "$file.ksplice" "$file" fi fi %post /sbin/chkconfig --add uptrack if [ -x "/usr/sbin/semodule" ]; then /usr/sbin/semodule -i /usr/share/uptrack/uptrack.pp >/dev/null 2>&1 || : fi cronfile=/etc/cron.d/uptrack if ! [ -e "$cronfile" ] || grep -q '^\*/30' "$cronfile"; then # Run at a random time within 20 minutes of each half hour. randfirst=$(($(od -An -N2 -d /dev/urandom) % 20)) randsecond=$(($randfirst + 30)) if [ -e "$cronfile" ] && \ ! echo 5f8ac9a8816940c1e309b2e3e5bf725c '' "$cronfile" | md5sum -c --status; then sed -i '1i# Replaced by upgrade of Ksplice Uptrack on '$(date --iso)$'\ns/^/# /' "$cronfile" echo >>"$cronfile" else rm -f "$cronfile" fi mkdir -p /etc/cron.d cat >>"$cronfile" </dev/null || true chmod -R o-rwx,u+rwX,g+rX /etc/uptrack /var/log/uptrack.log /var/cache/uptrack 2>/dev/null || true # Convert pre-1.0 cache to fully unpacked cache format rm -rf /var/cache/uptrack/*/*/*/*/updates/????????/ if [ -n "$(ls -d /var/cache/uptrack/*/*/*/*/ksplice-*.tar.gz 2>/dev/null)" ]; then for t in /var/cache/uptrack/*/*/*/*/ksplice-*.tar.gz; do mkdir -p "$(dirname "$t")"/updates tar --force-local -xzf "$t" -C "$(dirname "$t")"/updates done fi %preun if [ "$1" = "0" ] ; then # last uninstall uptrack-remove --uninstall >/dev/null || : [ "$(uptrack-show --count --no-network)" = "0" ] || { echo "Uptrack was unable to remove all installed updates." >&2; echo "You may need to reboot in order to remove these updates." >&2; }; if [ -L /sbin/depmod ] && [ $(readlink /sbin/depmod) = "/sbin/depmod.ksplice" ]; then mv /sbin/depmod.ksplice-orig /sbin/depmod fi if [ -L /sbin/modprobe ] && [ $(readlink /sbin/modprobe) = "/sbin/modprobe.ksplice" ]; then mv /sbin/modprobe.ksplice-orig /sbin/modprobe fi if [ -L /usr/share/PackageKit/helpers/yum/yumBackend.py ] && [ $(readlink /usr/share/PackageKit/helpers/yum/yumBackend.py) = "/usr/share/PackageKit/helpers/yum/yumBackend.py.ksplice" ]; then mv /usr/share/PackageKit/helpers/yum/yumBackend.py.ksplice-orig /usr/share/PackageKit/helpers/yum/yumBackend.py fi /sbin/chkconfig --del uptrack if [ -x "/usr/sbin/semodule" ]; then /usr/sbin/semodule -r uptrack >/dev/null 2>&1 || : fi rm -rf /var/cache/uptrack/* rm -f /var/lib/uptrack/lock fi %package manager Summary: Update manager GTK+ applet for the Ksplice Uptrack service Group: Applications/System Requires: %{name} = %{version}-%{release}, python >= 2.4, pygtk2, pygtk2-libglade, pygobject2, dbus-python, librsvg2, polkit, ConsoleKit, PyYAML %description manager This package provides an update manager applet that will inform the user when new Ksplice Uptrack updates are available. %files manager %defattr(-,root,root,-) %doc %{_bindir}/uptrack-manager %{_datadir}/uptrack-manager %{_datadir}/icons/hicolor/scalable/apps/*.svg %{_datadir}/polkit-1/actions/com.ksplice.uptrack.policy %{_datadir}/dbus-1/services/com.ksplice.uptrack.manager.service %{_mandir}/man8/uptrack-manager.8.gz %{_sysconfdir}/xdg/autostart/uptrack-manager.desktop %{_libexecdir}/uptrack/uptrack-launcher %{_datadir}/applications/uptrack-manager.desktop %post manager # Uptrack Manager needs to be able to read Uptrack cache data chmod -R o+rX /etc/uptrack /var/log/uptrack.log /var/cache/uptrack 2>/dev/null || true # From http://fedoraproject.org/wiki/Packaging/ScriptletSnippets#Icon_Cache touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : if [ "$1" -ge "2" ]; then dbus-send --system --type=signal /com/ksplice/uptrack/UptrackUI com.ksplice.uptrack.Client.RestartGui 2>/dev/null || : else %{_libexecdir}/uptrack/uptrack-launcher fi %preun manager dbus-send --system --type=signal /com/ksplice/uptrack/UptrackUI \ com.ksplice.uptrack.Client.QuitGui 2>/dev/null || : %postun manager chmod -R o-rx /etc/uptrack /var/log/uptrack.log /var/cache/uptrack 2>/dev/null || true # From http://fedoraproject.org/wiki/Packaging/ScriptletSnippets#Icon_Cache if [ $1 -eq 0 ] ; then touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi %posttrans manager # From http://fedoraproject.org/wiki/Packaging/ScriptletSnippets#Icon_Cache gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %changelog * Fri Jul 16 2010 Greg Brockman - 1.0.3-1 - Initial release for Fedora 14.