summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2017-07-25 15:30:54 -0400
committerJoey Hess2017-07-25 15:30:54 -0400
commit4f5ea9e647de942df53b7fcb0aa69729bd1b1454 (patch)
tree7806b879fe5d07879f26f28deec5a10de67c41de
parent9c719f4f5e8b5bfdc0be3259cd3a30b02a345e82 (diff)
parentf01286bc4338dcb3942b3870d7a6ea69ca773265 (diff)
Merge branch 'master' into joeyconfig
l---------config.hs2
-rw-r--r--debian/changelog14
-rw-r--r--doc/news/version_4.3.3.mdwn17
-rw-r--r--doc/news/version_4.5.0.mdwn9
-rw-r--r--privdata/relocate1
-rw-r--r--src/Propellor/Property/DiskImage.hs22
-rw-r--r--src/Propellor/Property/Reboot.hs17
7 files changed, 50 insertions, 32 deletions
diff --git a/config.hs b/config.hs
index 97d90636..ec313725 120000
--- a/config.hs
+++ b/config.hs
@@ -1 +1 @@
-joeyconfig.hs \ No newline at end of file
+config-simple.hs \ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index 4a9775db..d0b62bbf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,14 @@
-propellor (4.5.0) UNRELEASED; urgency=medium
+propellor (4.5.1) UNRELEASED; urgency=medium
+
+ * Reboot.toKernelNewerThan: If running kernel is new enough, avoid
+ looking at what kernels are installed.
+ Thanks, Sean Whitton.
+ * DiskImage: Avoid re-partitioning disk image unncessarily, for a large
+ speedup.
+
+ -- Joey Hess <id@joeyh.name> Sun, 23 Jul 2017 09:41:58 -0400
+
+propellor (4.5.0) unstable; urgency=medium
* Generalized the PartSpec DSL, so it can be used for both
disk image partitioning, and disk device partitioning, with
@@ -8,7 +18,7 @@ propellor (4.5.0) UNRELEASED; urgency=medium
PartSpec DiskPart, and a useDiskSpace combinator.
* Generate a better description for versioned properties.
- -- Joey Hess <id@joeyh.name> Mon, 17 Jul 2017 16:51:11 -0400
+ -- Joey Hess <id@joeyh.name> Fri, 21 Jul 2017 16:40:13 -0400
propellor (4.4.0) unstable; urgency=medium
diff --git a/doc/news/version_4.3.3.mdwn b/doc/news/version_4.3.3.mdwn
deleted file mode 100644
index b51ab5df..00000000
--- a/doc/news/version_4.3.3.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-propellor 4.3.3 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
- * Hosts can be configured to build propellor using stack, by adding
- a property:
- &amp; bootstrapWith (Robustly Stack)
- * Hosts can be configured to build propellor using cabal, but using
- only packages installed from the operating system. This
- will work on eg Debian:
- &amp; bootstrapWith OSOnly
- * Iproved fix for bug that sometimes made --spin fail with
- "fatal: Couldn't find remote ref HEAD". The previous fix didn't work
- reliably.
- * User: add systemGroup and use it for systemAccountFor'
- Thanks, Félix Sipma.
- * Export a Restic.backup' property.
- Thanks, Félix Sipma.
- * Updated stack config to lts-8.22."""]] \ No newline at end of file
diff --git a/doc/news/version_4.5.0.mdwn b/doc/news/version_4.5.0.mdwn
new file mode 100644
index 00000000..d78a2618
--- /dev/null
+++ b/doc/news/version_4.5.0.mdwn
@@ -0,0 +1,9 @@
+propellor 4.5.0 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * Generalized the PartSpec DSL, so it can be used for both
+ disk image partitioning, and disk device partitioning, with
+ different partition sizing methods as appropriate for the different
+ uses. (minor API change)
+ * Propellor.Property.Parted: Added calcPartTable function which uses
+ PartSpec DiskPart, and a useDiskSpace combinator.
+ * Generate a better description for versioned properties."""]] \ No newline at end of file
diff --git a/privdata/relocate b/privdata/relocate
deleted file mode 100644
index 271692d8..00000000
--- a/privdata/relocate
+++ /dev/null
@@ -1 +0,0 @@
-.joeyconfig
diff --git a/src/Propellor/Property/DiskImage.hs b/src/Propellor/Property/DiskImage.hs
index 4d10f300..332ad96a 100644
--- a/src/Propellor/Property/DiskImage.hs
+++ b/src/Propellor/Property/DiskImage.hs
@@ -174,9 +174,7 @@ imageBuiltFrom img chrootdir tabletype final partspec = mkimg <!> rmimg
let (mnts, mntopts, parttable) = fitChrootSize tabletype partspec $
map (calcsz mnts) mnts
ensureProperty w $
- imageExists img (partTableSize parttable)
- `before`
- partitioned YesReallyDeleteDiskContents img parttable
+ imageSetup img parttable
`before`
kpartx img (mkimg' mnts mntopts parttable)
mkimg' mnts mntopts parttable devs =
@@ -273,6 +271,24 @@ imageExists img isz = property ("disk image exists" ++ img) $ liftIO $ do
-- Common sector sizes are 512 and 4096; use 4096 as it's larger.
sectorsize = 4096 :: Double
+-- | Ensure that disk image file exists and is partitioned.
+--
+-- Avoids repartitioning the disk image, when a file of the right size
+-- already exists, and it has the same PartTable.
+imageSetup :: FilePath -> PartTable -> Property DebianLike
+imageSetup img parttable = property' ("disk image set up " ++ img) $ \w -> do
+ oldparttable <- liftIO $ catchDefaultIO "" $ readFile parttablefile
+ res <- ensureProperty w $ imageExists img (partTableSize parttable)
+ if res == NoChange && oldparttable == show parttable
+ then return NoChange
+ else if res == FailedChange
+ then return FailedChange
+ else do
+ liftIO $ writeFile parttablefile (show parttable)
+ ensureProperty w $ partitioned YesReallyDeleteDiskContents img parttable
+ where
+ parttablefile = img ++ ".parttable"
+
-- | A property that is run after the disk image is created, with
-- its populated partition tree mounted in the provided
-- location from the provided loop devices. This is typically used to
diff --git a/src/Propellor/Property/Reboot.hs b/src/Propellor/Property/Reboot.hs
index 3781cd7b..909d87fb 100644
--- a/src/Propellor/Property/Reboot.hs
+++ b/src/Propellor/Property/Reboot.hs
@@ -78,15 +78,16 @@ toKernelNewerThan ver =
property' ("reboot to kernel newer than " ++ ver) $ \w -> do
wantV <- tryReadVersion ver
runningV <- tryReadVersion =<< liftIO runningKernelVersion
- installedV <- maximum <$>
- (mapM tryReadVersion =<< liftIO installedKernelVersions)
if runningV >= wantV then noChange
- else if installedV >= wantV
- then ensureProperty w now
- else errorMessage $
- "kernel newer than "
- ++ ver
- ++ " not installed"
+ else maximum <$> installedVs >>= \installedV ->
+ if installedV >= wantV
+ then ensureProperty w now
+ else errorMessage $
+ "kernel newer than "
+ ++ ver
+ ++ " not installed"
+ where
+ installedVs = mapM tryReadVersion =<< liftIO installedKernelVersions
runningInstalledKernel :: IO Bool
runningInstalledKernel = do