diff options
-rw-r--r-- | debian/apt.cron.daily | 68 | ||||
-rw-r--r-- | debian/changelog | 4 | ||||
-rw-r--r-- | debian/dirs | 1 |
3 files changed, 45 insertions, 28 deletions
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 |