| Age | Commit message (Collapse) | Author |
|
* 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:
- 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.
|
|
|
|
connection caching.
Mostly. Can still generate a too long one if $HOME is longer than 60 bytes.
|
|
|
|
|
|
time, though retrying succeeded.
May have only been a problem on debian stable, the /var/lib/tor/keys/ was
not created by installing the package.
|
|
propellor-config binary and not all the libraries.
This is a super speedup!
|
|
|
|
|
|
(cherry picked from commit 7743ef8542b6490c3c42ac826a26aa0b24991f22)
|
|
|
|
|
|
|
|
Before, they could run in the background if another process was running,
and so their output wouldn't immediately be visible.
With this change, the concurrent-output layer is not used for these
interactive commands.
|
|
|
|
modified the locale.gen file and sometimes caused the property to need to make changes every time.
|
|
|
|
|
|
|
|
|
|
|
|
buildFirst re-runs propellor with --continue, which is supposed to
make defaultMain bypass subsequent calls to buildFirst. But, use of a Bool
to do that caused the code to be unclear, and some of the cases lost track
of that.
--continue SimpleRun would buildFirst, and if the binary changed, would
--continue SimpleRun. This could loop repatedly, on systems such as FreeBSD
where building re-links the binary even when there are no changes. As
discussed in github pull #11
Fixed by introducing a CanRebuild data type, which buildFirst and updateFirst
require in order to do any work makes it more clear what's going on.
It's not a type-level proof that propellor won't rebuild repeatedly,
but gets closer to one.
(Only remaining way such a bug could slip in is if the CanRebuild
value was reused in a call to buildFirst and also inside the IO action
passed to it.)
There were some other weirdnesses around repeated builds. In particular,
Run as non-root did an updateFirst, followed by a buildFirst. I think this
redundant build was an accident, and have removed it.
|
|
|
|
* Apt.upgrade: Run dpkg --configure -a first, to recover from
interrupted upgrades.
* Apt: Add safeupgrade.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
authorized_keys file does not yet exist.
|
|
Seems that Canonical have trademarked numerous words ending in "buntu",
and would like to trademark anything ending in that to the extent their
lawyers can make that happen.
|
|
|
|
|
|
Removed references to *buntu from code and documentation because of
an unfortunate trademark use policy.
http://joeyh.name/blog/entry/trademark_nonsense/
That included changing a data constructor to "FooBuntu", an API change.
|
|
different backup properties, to avoid concurrent jobs fighting over scarce resources (particularly memory). Other jobs block on a lock file.
|
|
|
|
|
|
|
|
|
|
|
|
* Added Propellor.Property.LetsEncrypt
* Apache.httpsVirtualHost: New property, setting up a https vhost
with the certificate automatically obtained using letsencrypt.
|
|
unattended-upgrades is installed, to work around #812380 which results in many warnings from apt, including in cron mails.
|
|
a backup property; this causes obnam forget to be run.
|
|
|
|
|
|
|
|
|
|
|