Bug#827930: apt: Make apt-daily leverage the ConditionACPower feature of systemd
Sorry,
First patch was flawed, I've moved the check_power() function without
seeing it was using debug_echo() internally. Fixed now.
I've followed what was done when moving random_sleep() from the script
to the cron job, i.e. remove calls to debug_echo(), see 14669d4b.
Second patch has not been touched.
regards,
Nicolas
From 2a7e2b1552f15f72a0bb1b8992227bb1b5e44355 Mon Sep 17 00:00:00 2001
From: Nicolas Le Cam <niko.lecam@gmail.com>
Date: Wed, 22 Jun 2016 21:39:38 +0200
Subject: Use the ConditionACPower feature of systemd in the apt-daily service
.. instead of hardcoding the functionnality in the apt.systemd.daily
script.
Also make the compatibility cron job provide the same functionnality
for systems that do not use systemd.
---
debian/apt-daily.service | 1 +
debian/apt.apt-compat.cron.daily | 20 ++++++++++++++++++++
debian/apt.systemd.daily | 26 --------------------------
3 files changed, 21 insertions(+), 26 deletions(-)
diff --git a/debian/apt-daily.service b/debian/apt-daily.service
index 941263d..904ed5d 100644
--- a/debian/apt-daily.service
+++ b/debian/apt-daily.service
@@ -1,6 +1,7 @@
[Unit]
Description=Daily apt activities
Documentation=man:apt(8)
+ConditionACPower=true
[Service]
Type=oneshot
diff --git a/debian/apt.apt-compat.cron.daily b/debian/apt.apt-compat.cron.daily
index 1ea8430..e7d76d2 100644
--- a/debian/apt.apt-compat.cron.daily
+++ b/debian/apt.apt-compat.cron.daily
@@ -11,6 +11,23 @@ if [ -d /run/systemd/system ]; then
exit 0
fi
+check_power()
+{
+ # laptop check, on_ac_power returns:
+ # 0 (true) System is on main power
+ # 1 (false) System is not on main power
+ # 255 (false) Power status could not be determined
+ # Desktop systems always return 255 it seems
+ if which on_ac_power >/dev/null 2>&1; then
+ on_ac_power
+ POWER=$?
+ if [ $POWER -eq 1 ]; then
+ return 1
+ fi
+ fi
+ return 0
+}
+
# sleep for a random interval of time (default 30min)
# (some code taken from cron-apt, thanks)
random_sleep()
@@ -28,6 +45,9 @@ random_sleep()
sleep $TIME
}
+# ensure we don't do this on battery
+check_power || exit 0
+
# run daily job
random_sleep
exec /usr/lib/apt/apt.systemd.daily
diff --git a/debian/apt.systemd.daily b/debian/apt.systemd.daily
index 15024c8..d034d8c 100644
--- a/debian/apt.systemd.daily
+++ b/debian/apt.systemd.daily
@@ -290,27 +290,6 @@ debug_echo()
fi
}
-check_power()
-{
- # laptop check, on_ac_power returns:
- # 0 (true) System is on main power
- # 1 (false) System is not on main power
- # 255 (false) Power status could not be determined
- # Desktop systems always return 255 it seems
- if which on_ac_power >/dev/null 2>&1; then
- on_ac_power
- POWER=$?
- if [ $POWER -eq 1 ]; then
- debug_echo "exit: system NOT on main power"
- return 1
- elif [ $POWER -ne 0 ]; then
- debug_echo "power status ($POWER) undetermined, continuing"
- fi
- debug_echo "system is on main power."
- fi
- return 0
-}
-
# ------------------------ main ----------------------------
if test -r /var/lib/apt/extended_states; then
@@ -358,8 +337,6 @@ if [ "$VERBOSE" -ge 3 ]; then
set -x
fi
-check_power || exit 0
-
# check if we can lock the cache and if the cache is clean
if which apt-get >/dev/null 2>&1 && ! eval apt-get check $XAPTOPT $XSTDERR ; then
debug_echo "error encountered in cron job with \"apt-get check\"."
@@ -410,9 +387,6 @@ fi
# deal with BackupArchiveInterval
do_cache_backup $BackupArchiveInterval
-# ensure we don't do this on battery
-check_power || exit 0
-
# include default system language so that "apt-get update" will
# fetch the right translated package descriptions
if [ -r /etc/default/locale ]; then
--
2.8.1
Reply to: