summaryrefslogtreecommitdiff
path: root/doc/news
diff options
context:
space:
mode:
authorJoey Hess2016-04-02 15:39:33 -0400
committerJoey Hess2016-04-02 15:39:33 -0400
commit36e2fb3763962d4bf18c82d078c4fb7c6810a9c2 (patch)
treefa558881d43b12c510db368f5cdad9137cf5a062 /doc/news
parent6b2f90a4b4b0987277035fa4c085ea0631e689bb (diff)
add news item for propellor 3.0.0
Diffstat (limited to 'doc/news')
-rw-r--r--doc/news/version_3.0.0.mdwn74
1 files changed, 74 insertions, 0 deletions
diff --git a/doc/news/version_3.0.0.mdwn b/doc/news/version_3.0.0.mdwn
new file mode 100644
index 00000000..a147c3cd
--- /dev/null
+++ b/doc/news/version_3.0.0.mdwn
@@ -0,0 +1,74 @@
+propellor 3.0.0 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * Property types have been improved to indicate what systems they target.
+ This prevents using eg, Property FreeBSD on a Debian system.
+ Transition guide for this sweeping API change:
+ - First, upgrade to propellor 2.17.2 and deploy that to all your hosts.
+ Otherwise, propellor --spin will fail when you upgrade to
+ propellor 3.0.0.
+ - Change "host name & foo & bar"
+ to "host name $ props & foo & bar"
+ - Similarly, `propertyList` and `combineProperties` need `props`
+ to be used to combine together properties; they no longer accept
+ lists of properties. (If you have such a list, use `toProps`.)
+ - And similarly, Chroot, Docker, and Systemd container need `props`
+ to be used to combine together the properies used inside them.
+ - The `os` property is removed. Instead use `osDebian`, `osBuntish`,
+ or `osFreeBSD`. These tell the type checker the target OS of a host.
+ - Change "Property NoInfo" to "Property UnixLike"
+ - Change "Property HasInfo" to "Property (HasInfo + UnixLike)"
+ - Change "RevertableProperty NoInfo" to
+ "RevertableProperty UnixLike UnixLike"
+ - Change "RevertableProperty HasInfo" to
+ "RevertableProperty (HasInfo + UnixLike) UnixLike"
+ - GHC needs {-# LANGUAGE TypeOperators #-} to use these fancy types.
+ This is enabled by default for all modules in propellor.cabal. But
+ if you are using propellor as a library, you may need to enable it
+ manually.
+ - If you know a property only works on a particular OS, like Debian
+ or FreeBSD, use that instead of "UnixLike". For example:
+ "Property Debian"
+ - It's also possible make a property support a set of OS's, for example:
+ "Property (Debian + FreeBSD)"
+ - Removed `infoProperty` and `simpleProperty` constructors, instead use
+ `property` to construct a Property.
+ - Due to the polymorphic type returned by `property`, additional type
+ signatures tend to be needed when using it. For example, this will
+ fail to type check, because the type checker cannot guess what type
+ you intend the intermediate property "go" to have:
+ foo :: Property UnixLike
+ foo = go `requires` bar
+ where
+ go = property "foo" (return NoChange)
+ To fix, specify the type of go:
+ go :: Property UnixLike
+ - `ensureProperty` now needs to be passed a witness to the type of the
+ property it's used in.
+ change this: foo = property desc $ ... ensureProperty bar
+ to this: foo = property' desc $ \w -> ... ensureProperty w bar
+ - General purpose properties like cmdProperty have type "Property UnixLike".
+ When using that to run a command only available on Debian, you can
+ tighten the type to only the OS that your more specific property works on.
+ For example:
+ upgraded :: Property Debian
+ upgraded = tightenTargets (cmdProperty "apt-get" ["upgrade"])
+ - Several utility functions have been renamed:
+ getInfo to fromInfo
+ propertyInfo to getInfo
+ propertyDesc to getDesc
+ propertyChildren to getChildren
+ * The new `pickOS` property combinator can be used to combine different
+ properties, supporting different OS's, into one Property that chooses
+ which to use based on the Host's OS.
+ * Re-enabled -O0 in propellor.cabal to reign in ghc's memory use handling
+ these complex new types.
+ * Added dependency on concurrent-output; removed embedded copy.
+ * Apt.PPA: New module, contributed by Evan Cofsky.
+ * Improved propellor's first run experience; propellor --init will
+ walk the user through setting up ~/.propellor, with a choice between
+ a clone of propellor's git repository, or a minimal config, and will
+ configure propellor to use a gpg key.
+ * Stack support. "git config propellor.buildsystem stack" will make
+ propellor build its config using stack.
+ * When propellor is installed using stack, propellor --init will
+ automatically set propellor.buildsystem=stack."""]] \ No newline at end of file