From: Matt Zimmerman Date: Sun, 14 Nov 2004 01:48:41 +0000 (+0000) Subject: Improvements to apt.cron.daily X-Git-Tag: 0.7.24ubuntu1~411 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/05f6a46a5cf8df03c2d40b485d8d922ae9c886c5 Improvements to apt.cron.daily - Add the capability to download upgradeable packages, as well as package indexes - Place timestamp files in /var/lib/apt/periodic rather than /var/lib/apt itself --- diff --git a/debian/apt.cron.daily b/debian/apt.cron.daily index a97222095..f163f9f36 100644 --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@ -1,54 +1,66 @@ #!/bin/sh # -# cron job for apt-get update -# -# Update-Package-Intervall is in days -# -STAMP=/var/lib/apt/update-stamp #set -e -do_update() +check_stamp() { - touch $STAMP.new - if apt-get update -qq; then - if [ -x /usr/bin/dbus-send ]; then - dbus-send --system / app.apt.dbus.updated boolean:true - fi - mv $STAMP.new $STAMP + stamp="$1" + interval="$2" + + if [ ! -f $stamp ]; then + return 0 fi - rm -f $STAMP.new + + # compare midnight today to midnight the day the stamp was updated + stamp=$(date --date=$(date -r $stamp --iso-8601) +%s) + now=$(date --date=$(date --iso-8601) +%s) + delta=$(($now-$stamp)) + echo "stamp=$stamp, now=$now, delta=$delta" + + if [ $delta -ge $interval ]; then + return 0 + fi + + return 1 +} + +update_stamp() +{ + stamp="$1" + + touch $stamp } UpdateInterval=0 -RES=`apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists` +DownloadUpgradeableInterval=0 +RES=`apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages` eval $RES -if [ $UpdateInterval -eq 0 ]; then - exit 0 -fi - # laptop check, on_ac_power returns: # 0 (true) System is on mains power # 1 (false) System is not on mains power # 255 (false) Power status could not be determined # Desktop systems always return 255 it seems if which on_ac_power >/dev/null; then - on_ac_power + on_ac_power if [ $? -eq 1 ]; then exit 0 fi fi -if [ ! -f $STAMP ]; then - do_update - exit 0 +UPDATE_STAMP=/var/lib/apt/periodic/update-stamp +if check_stamp $UPDATE_STAMP $UpdateInterval; then + if apt-get -qq update 2>/dev/null; then + if which dbus-send >/dev/null; then + dbus-send --system / app.apt.dbus.updated boolean:true + fi + update_stamp $UPDATE_STAMP + fi fi -LastUpdate=`stat -c "%Y" $STAMP 2>/dev/null` -Now=`date +%s` - -NeedUpdate=$(($LastUpdate+$UpdateInterval*3600*24)) -if [ $NeedUpdate -le $Now ]; then - do_update +DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp +if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then + apt-get -qq -d dist-upgrade 2>/dev/null + update_stamp $DOWNLOAD_UPGRADEABLE_STAMP fi diff --git a/debian/changelog b/debian/changelog index f7f63ef14..44166e836 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,10 @@ apt (0.5.29) unstable; urgency=low * Don't hardcode paths in apt.cron.daily + * Add to apt.cron.daily the capability to pre-download upgradeable + packages + * Place timestamp files in /var/lib/apt/periodic, rather than + /var/lib/apt itself -- diff --git a/debian/dirs b/debian/dirs index fd2a36929..8334d298c 100644 --- a/debian/dirs +++ b/debian/dirs @@ -4,3 +4,4 @@ usr/lib/dpkg/methods/apt etc/apt var/cache/apt/archives/partial var/lib/apt/lists/partial +var/lib/apt/periodic