summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoey Hess2016-02-29 17:58:50 -0400
committerJoey Hess2016-02-29 17:58:50 -0400
commitdf8bf03acf82c701713630857beec443d5291a17 (patch)
tree1b87b81cf1096dfa764cef2d6f934d7f7967ede6 /src
parent27fe5f7afdf6c773bbc0543d203d66c2200ee8fb (diff)
apt upgrade improvements
* Apt.upgrade: Run dpkg --configure -a first, to recover from interrupted upgrades. * Apt: Add safeupgrade.
Diffstat (limited to 'src')
-rw-r--r--src/Propellor/Property/Apt.hs23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/Propellor/Property/Apt.hs b/src/Propellor/Property/Apt.hs
index f5d08c1d..bb444463 100644
--- a/src/Propellor/Property/Apt.hs
+++ b/src/Propellor/Property/Apt.hs
@@ -123,10 +123,27 @@ update = runApt ["update"]
`assume` MadeChange
`describe` "apt update"
+-- | Have apt upgrade packages, adding new packages and removing old as
+-- necessary.
upgrade :: Property NoInfo
-upgrade = runApt ["-y", "dist-upgrade"]
- `assume` MadeChange
- `describe` "apt dist-upgrade"
+upgrade = upgrade' "dist-upgrade"
+
+upgrade' :: String -> Property NoInfo
+upgrade' p = combineProperties ("apt " ++ p)
+ [ runApt ["-y", p]
+ `assume` MadeChange
+ , dpkgConfigured
+ ]
+
+-- | Have apt upgrade packages, but never add new packages or remove
+-- old packages. Not suitable for upgrading acrocess major versions
+-- of the distribution.
+safeUpgrade :: Property NoInfo
+safeUpgrade = upgrade' "upgrade"
+
+dpkgConfigured :: Property NoInfo
+dpkgConfigured = cmdProperty "dpkg" ["--confugure", "--pending"]
+ `describe` "dpkg configured pending"
type Package = String