propellor

propellor config for hosts.
git clone git://git.ricketyspace.net/propellor.git
Log | Files | Refs | LICENSE

changelog (86768B)


      1 propellor (5.9.1) unstable; urgency=medium
      2 
      3   * Apt: Debian has changed the name of the suite for testing security updates
      4     from testing to testing-security.
      5   * Apt: Also the suite for stable releases from bullseye on will be
      6     suffixed with "-security".
      7   * Apt.update: Pass --allow-releaseinfo-change when updating Unstable
      8     or Testing, so that code name changes that happen in those suites
      9     during a stable release don't prevent updating the rolling suites.
     10   * Systemd.machined: Fix a bug that caused the systemd-container package
     11     to not be installed when used with Debian buster.
     12 
     13  -- Joey Hess <id@joeyh.name>  Wed, 17 Jul 2019 15:59:29 -0400
     14 
     15 propellor (5.9.0) unstable; urgency=medium
     16 
     17   * Added custom type error messages when Properties don't combine due to
     18     conflicting MetaTypes.
     19   * Added custom type error messages for ensureProperty and tightenTargets.
     20   * Note that those changes made ghc 8.0.1 in a few cases unable to infer
     21     types when ensureProperty or tightenTargets is used, while later ghc
     22     versions had no difficulty. If this affects building your properties,
     23     adding a type annotation to the code will work around the problem.
     24   * Added custom type error messages displayed when type inference
     25     fails when using ensureProperty and tightenTargets, that suggest
     26     adding a type annotation.
     27   * Use the type-errors library to detect when the type checker gets stuck
     28     unable to reduce type-level operations on MetaTypes, and avoid 
     29     displaying massive error messages.
     30   * But, since type-errors is a new library not available in eg Debian
     31     yet, added a WithTypeErrors build flag. When the library is not
     32     available, cabal will automatically disable that build flag,
     33     and it will build without the type-errors library.
     34   * EnsurePropertyAllowed, TightenTargetsAllowed, and CheckCombinable
     35     types have changed to Constraint.
     36     (API change)
     37   * Try harder to avoid displaying an excessive amount of type error
     38     messages when many properties have been combined in a props list.
     39   * Libvirt.installed: install libvirt-daemon-system
     40     Thanks, David Bremner
     41 
     42  -- Joey Hess <id@joeyh.name>  Tue, 02 Jul 2019 16:27:07 -0400
     43 
     44 propellor (5.8.0) unstable; urgency=medium
     45 
     46   * Fix bug in File.containsShellSetting that replaced whole shell conffile
     47     content with the setting if the file did not previously contain a line
     48     setting the key to some value.
     49   * Removed inChroot, instead use hasContainerCapability FilesystemContained.
     50     (API change)
     51   * Hostname: Properties that used to not do anything in a systemd or
     52     docker container will now change the container's hostname,
     53     since it's namespaced.
     54   * Add User.ownsWithPrimaryGroup
     55     Thanks, Sean Whitton
     56   * Ssh.userKeys, Ssh.userKeyAt: Create .ssh directory when it does not yet
     57     exist.
     58   * Ssh.userKeyAt: When a relative filepath is provided, it's put inside
     59     the user's .ssh directory.
     60   * Fix Git.pulled always reporting a change.
     61     Thanks, Sean Whitton
     62 
     63  -- Joey Hess <id@joeyh.name>  Fri, 26 Apr 2019 08:23:29 -0400
     64 
     65 propellor (5.7.0) unstable; urgency=medium
     66 
     67   * Sbuild.built no longer includes Apt.stdSourcesList by default,
     68     in order to support non-Debian OS's. (API change)
     69     To upgrade: Simply add Sbuild.osDebianStandard to all Sbuild.built
     70     calls which have osDebian.
     71     Thanks, Sean Whitton
     72   * Propellor.Property.PropellorRepo renamed to Propellor.Property.Localdir
     73     to widen its scope. (API change)
     74   * Added Localdir.removed property.
     75     Thanks, Sean Whitton
     76   * Sbuild.built uses Localdir.removed to clean up the propellor localdir
     77     after it's done running in a schroot.
     78     Thanks, Sean Whitton
     79   * Cron.runPropellor made revertable. (minor API change)
     80     Thanks, Sean Whitton
     81   * Added Cron.jobDropped.
     82     Thanks, Sean Whitton
     83   * Added Utility.FileMode to the modules exported by Propellor.Utilities
     84     to propellor library users.
     85 
     86  -- Joey Hess <id@joeyh.name>  Fri, 05 Apr 2019 11:59:52 -0400
     87 
     88 propellor (5.6.1) unstable; urgency=medium
     89 
     90   * fix Libvirt.hs haddock build
     91     Thanks, Sean Whitton
     92 
     93  -- Joey Hess <id@joeyh.name>  Sun, 20 Jan 2019 19:06:39 -0400
     94 
     95 propellor (5.6.0) unstable; urgency=medium
     96 
     97   * withOS had a type level bug that allowed ensureProperty to be used inside
     98     it with a Property that does not match the type of the withOS itself.
     99     (API change)
    100     The fix may cause some of your valid uses of withOS to no longer type
    101     check; the best way to work around that is to use pickOS to pick between
    102     several properties that are further specialized using withOS.
    103     For an example of how to do that, see the source code to
    104     Propellor.Property.Borg.installed
    105   * Propellor.Property.Cron.runPropellor is a Property DebianLike; it was
    106     incorrectly a Property UnixLike before and that wrong type was hidden by
    107     the withOS bug.
    108   * Some openbsd portability fixes. Thanks, rsiddharth.
    109   * Added Libvirt module. Thanks, Sean Whitton.
    110   * When bootstrapping on Debian, libghc-stm-dev may not be available,
    111     as it's become part of ghc, so check before trying to install it.
    112   * Fix build with ghc 8.6.3.
    113   * Avoid exposing the constructor of OuterMetaTypesWitness, to avoid
    114     the kind of mistake that led to the withOS bug.
    115   * Merged Utility changes from git-annex.
    116   * Fix --spin crash when ~/.ssh/ directory did not already exist.
    117 
    118  -- Joey Hess <id@joeyh.name>  Fri, 18 Jan 2019 12:11:53 -0400
    119 
    120 propellor (5.5.0) unstable; urgency=medium
    121 
    122   * letsencrypt': Pass --expand to support expanding the list of domains
    123   * Split mailname property out of Hostname.sane, since bad mailname
    124     guesses can lead to ugly surprises. (API change)
    125   * Removed HostingProvider.CloudatCost module as it lacks a maintainer.
    126     (If anyone would like to maintain it, send a patch adding it back.)
    127     (API change)
    128   * Added Systemd.escapePath helper function useful when creating mount
    129     units.
    130   * Added Sudo.sudoersDFile property.
    131   * Sudo.enabledFor: Write to /etc/sudoers.d/000users rather than to
    132     /etc/sudoers. (Any old lines it wrote to /etc/sudoers will be removed.)
    133     This fixes a potential ordering problem; the property used to append
    134     the line to /etc/sudoers, but that would override more specific lines
    135     in the include directory.
    136   * Borg: Added UsesEnvVar.
    137   * Added DiskImage.noBootloader, useful for eg, direct booting with
    138     qemu. Thanks, David Bremner.
    139   * Added Apt.backportInstalledMin.
    140 
    141  -- Joey Hess <id@joeyh.name>  Sat, 20 Oct 2018 21:00:27 -0400
    142 
    143 propellor (5.4.1) unstable; urgency=medium
    144 
    145   * Modernized and simplified the MetaTypes implementation now that
    146     compatability with ghc 7 is no longer needed.
    147   * Use git verify-commit to verify gpg signatures, rather than the old
    148     method of parsing git log output. Needs git 2.0.
    149   * Added ConfFile.containsShellSetting, ConfFile.lacksShellSetting,
    150     and EtcDefault.set properties. Thanks, Sean Whitton
    151   * Dns: Support TXT values longer than bind's maximum string length
    152     of 255 bytes. Thanks, rsiddharth.
    153   * Docker and HostingProvider.CloudAtCost modules are not being
    154     maintained, so marked them as such.
    155     Seeking a maintainer for the Docker module; I anticipate
    156     removing the CloudAtCost module in the next API bump.
    157 
    158  -- Joey Hess <id@joeyh.name>  Wed, 08 Aug 2018 10:29:27 -0400
    159 
    160 propellor (5.4.0) unstable; urgency=medium
    161 
    162   [ Sean Whitton ]
    163   * Apt.installedBackport replaced with Apt.backportInstalled.  (API change)
    164     The old property would install dependencies from backports even when
    165     the versions in stable satisfy the requested backport's dependencies.
    166     The new property installs only the listed packages from backports;
    167     all other dependencies come from stable.
    168     So in some cases, you may need to list additional backports to install,
    169     that would not have needed to be listed before. Due to this behavior
    170     change the property has been renamed so uses of it will be checked.
    171   * Restic.installed: stop trying to install a backport on jessie, because no
    172     such backport exists.
    173 
    174  -- Joey Hess <id@joeyh.name>  Thu, 17 May 2018 10:43:20 -0400
    175 
    176 propellor (5.3.6) unstable; urgency=medium
    177 
    178   * Fix build with ghc 8.4, which broke due to the Semigroup Monoid change.
    179   * Dropped support for building propellor with ghc 7 (as in debian
    180     oldstable), to avoid needing to depend on the semigroups transitional
    181     package, but also because it's just too old to be worth supporting.
    182   * stack.yaml: Updated to lts-9.21.
    183   * Make Schroot.overlaysInTmpfs revertable
    184     Thanks, Sean Whitton
    185   * Update shim each time propellor is run in a container, to deal with
    186     library version changes.
    187   * Unbound: Added support for various DNS record types.
    188     Thanks, Félix Sipma.
    189 
    190  -- Joey Hess <id@joeyh.name>  Wed, 09 May 2018 16:24:37 -0400
    191 
    192 propellor (5.3.5) unstable; urgency=medium
    193 
    194   * Apt.stdSourcesList now adds stable-updates suite
    195     Thanks, Sean Whitton
    196   * Significantly increased propellor build speed when your config.hs
    197     is in a fork of the propellor repository, by avoiding redundant builds
    198     of propellor library.
    199 
    200  -- Joey Hess <id@joeyh.name>  Sun, 22 Apr 2018 12:27:45 -0400
    201 
    202 propellor (5.3.4) unstable; urgency=medium
    203 
    204   * Apt.trustsKey: Use apt-key to add key rather than manually driving gpg,
    205     which seems to not work anymore.
    206     Thanks, Russell Sim.
    207   * Firewall: Reorder iptables parameters that are order
    208     dependant to make --to-dest and --to-source work.
    209     Thanks, Russell Sim
    210 
    211  -- Joey Hess <id@joeyh.name>  Wed, 21 Mar 2018 14:59:15 -0400
    212 
    213 propellor (5.3.3) unstable; urgency=medium
    214 
    215   * Warn again about new upstream version when ~/.propellor was cloned from the
    216     Debian git bundle using an older version of propellor that set up an
    217     upstream remote.
    218   * Avoid crashing if initial fetch from origin fails when spinning a host.
    219   * Added Propllor.Property.Openssl module contributed by Félix Sipma.
    220 
    221  -- Joey Hess <id@joeyh.name>  Mon, 26 Feb 2018 14:34:37 -0400
    222 
    223 propellor (5.3.2) unstable; urgency=medium
    224 
    225   * Added Propellor.Property.Atomic, which can make a non-atomic property
    226     that operates on a directory into an atomic property.
    227     (Inspired by Vaibhav Sagar's talk on Functional Devops in a
    228     Dysfunctional World at LCA 2018.)
    229   * Added Git.pulled.
    230   * Systemd.machined: Install systemd-container on Debian
    231     stretch.
    232     Thanks, Sean Whitton
    233 
    234  -- Joey Hess <id@joeyh.name>  Sun, 18 Feb 2018 14:31:39 -0400
    235 
    236 propellor (5.3.1) unstable; urgency=medium
    237 
    238   * Last release mistakenly contained my personal branch not master.
    239   * contrib/post-merge-hook documentation updated to recommend also using
    240     it as a post-checkout hook, to avoid such problems.
    241 
    242  -- Joey Hess <id@joeyh.name>  Sun, 04 Feb 2018 12:00:03 -0400
    243 
    244 propellor (5.3.0) unstable; urgency=medium
    245 
    246   * Avoid bogus warning about new upstream version when /usr/bin/propellor
    247     is run on a Debian system, but ~/.propellor was not cloned from the
    248     Debian git bundle.
    249   * Parted: Allow partitions to have no filesystem, for eg, GPT BIOS boot
    250     partitions. (API change)
    251   * Added rawPartition to PartSpec, for specifying partitions with no
    252     filesystem.
    253   * Added BiosGrubFlag to PartFlag.
    254   * Add HasCallStack constraint to pickOS and unsupportedOS, so the
    255     call stack includes the caller.
    256   * Run su with --login, to avoid inheriting some problematic environment
    257     variables, such as TMP, from the caller.
    258   * Grub: Added properties to configure /etc/default/grub.
    259   * Laptop: New module, starting with powertopAutoTuneOnBoot.
    260 
    261  -- Joey Hess <id@joeyh.name>  Thu, 01 Feb 2018 12:27:01 -0400
    262 
    263 propellor (5.2.0) unstable; urgency=medium
    264 
    265   [ Joey Hess ]
    266   * bootstrappedFrom: Set up local privdata file.
    267   * Parted: Fix names used for FAT and VFAT partitions.
    268   * Parted: Add an Alignment parameter. (API change)
    269     A good default to use is safeAlignment, which is 4MiB,
    270     well suited for inexpensive flash drives, and fine for other disks too.
    271     Previously, a very non-optimial 1MB (not 1MiB) alignment had been used.
    272   * DiskImage: Use safeAlignment. It didn't seem worth making the
    273     alignment configurable here.
    274   * Fixed rounding bug in Parted.calcPartTable.
    275   * DiskImage: Fix rsync crash when a mount point does not exist in the
    276     chroot.
    277   * Fix bug in unmountBelow that caused unmounting of nested mounts to
    278     fail.
    279   * Grub.boots, Grub.bootsMounted: Pass --target to grub-install.
    280   * Added Propellor.Property.Installer modules, which can be used to create
    281     bootable installer disk images, which then run propellor to install
    282     a system. This code was extracted from the demo I gave in my
    283     talk at DebConf 2017.
    284 
    285   [ Sean Whitton ]
    286   * Sbuild: add notes about Debian jessie hosts and backports of sbuild and
    287     autopkgtest.
    288 
    289  -- Joey Hess <id@joeyh.name>  Sat, 30 Dec 2017 13:34:29 -0400
    290 
    291 propellor (5.1.0) unstable; urgency=medium
    292 
    293   [ Sean Whitton ]
    294   * File.isSymlinkedTo now revertable. (minor API change)
    295   * Sbuild module changes:
    296     - Type of Sbuild.built changed to accept additional properties to be
    297       ensured inside schroots. (API change)
    298       See the suggested usage in module's documentation for new syntax.
    299     - Drop Sbuild.installed, Sbuild.builtFor, Sbuild.updated,
    300       Sbuild.updatedFor. (API change)
    301       Use Sbuild.built instead.  See suggested usage in module's documentation.
    302     - Propellor no longer sets up apt proxies in sbuild chroots automatically.
    303       Instead, pass the new Sbuild.useHostProxy to Sbuild.built to have
    304       Propellor propagate the host's Apt proxy configuration into the chroot.
    305       See suggested usage in module's documentation.
    306     - Internally, Propellor no longer invokes sbuild-createchroot(1) to build
    307       schroots.
    308     - Update documentation.
    309 
    310  -- Joey Hess <id@joeyh.name>  Thu, 23 Nov 2017 10:38:16 -0400
    311 
    312 propellor (5.0.0) unstable; urgency=medium
    313 
    314   * Debootstrap.built now supports bootstrapping chroots for foreign
    315     OS's, using qemu-user-static.
    316   * Machine: New module collecting machine-specific properties for 
    317     building bootable images for ARM boards.
    318     Tested working boards: Olimex Lime, CubieTruck, Banana Pi, SheevaPlug.
    319   * Diskimage.imageBuiltFor: New property to build a disk image for a Host,
    320     using partition table information configured via the new properties
    321     hasPartitionTableType, hasPartition and adjustPartition.
    322   * Chroot.noServices moved to Service.noServices and its type changed.
    323     (API change)
    324   * Service: Avoid starting services when noServices is used.
    325   * Add Typeable instance to OriginUrl, fixing build with old versions
    326     of ghc.
    327   * Added Propellor.Property.impossible
    328   * Fail2Ban: Added several additional properties.
    329     Thanks, Félix Sipma.
    330   * Fail2Ban: Renamed jail.d conf file to use .local.
    331     Thanks, Félix Sipma.
    332 
    333  -- Joey Hess <id@joeyh.name>  Sun, 19 Nov 2017 15:42:44 -0400
    334 
    335 propellor (4.9.0) unstable; urgency=medium
    336 
    337   * When the ipv4 and ipv6 properties are used with a container, avoid
    338     propagating the address out to the host.
    339   * DnsInfo has been replaced with DnsInfoPropagated and
    340     DnsInfoUnpropagated. (API change)
    341   * Code that used fromDnsInfo . fromInfo changes to use getDnsInfo.
    342   * addDNS takes an additional Bool parameter to control whether
    343     the DNS info should propagate out of containers. (API change)
    344   * Made the PropellorRepo.hasOriginUrl property override the repository
    345     url that --spin passes to a host.
    346   * PropellorRepo.hasOriginUrl type changed to include HasInfo. (API change)
    347   * Fstab.mounted: Create mount point if necessary, and mount it
    348     if it's not already mounted.
    349     Thanks, Nicolas Schodet
    350   * Properties that check for an empty directory now treat a directory
    351     containing only "lost+found" as effectively empty, to support
    352     situations where the directory is a mount point of an EXT* filesystem.
    353     Thanks, Nicolas Schodet
    354   * Make addInfo accumulate Info in order properties appear, not
    355     reverse order.
    356     This fixes a bug involving reverting Systemd.resolvConfed or
    357     Systemd.linkJournal.
    358 
    359  -- Joey Hess <id@joeyh.name>  Wed, 25 Oct 2017 13:02:14 -0400
    360 
    361 propellor (4.8.1) unstable; urgency=medium
    362 
    363   * Borg: Fix propigation of exit status of borg backup.
    364   * Borg: Fix handling of UseSshKey.
    365 
    366  -- Joey Hess <id@joeyh.name>  Mon, 25 Sep 2017 17:19:49 -0400
    367 
    368 propellor (4.8.0) unstable; urgency=medium
    369 
    370   * DiskImage: Made a DiskImage type class, so that different disk image
    371     formats can be implemented. The properties in this module can generate
    372     any type that is a member of DiskImage. (API change)
    373     (To convert existing configs, convert the filename of the disk image
    374     to RawDiskImage filename.)
    375   * Removed DiskImage.vmdkBuiltFor property. (API change)
    376     Instead, use VirtualBoxPointer in the property that creates the disk
    377     image.
    378   * Apt.isInstalled: Fix handling of packages that are not known at all
    379     to apt.
    380   * Borg: Converted BorgRepo from a String alias to a data type.
    381     (API change)
    382   * Borg: Allow specifying ssh private key to use when accessing a borg
    383     repo by using the BorgRepoUsing constructor with UseSshKey.
    384   * Borg: Fix broken shell escaping in borg cron job.
    385   * Attic: Fix broken shell escaping in attic cron job.
    386   * Make lock file descriptors close-on-exec.
    387   * Lvm: New module for setting up LVM volumes.
    388     Thanks, Nicolas Schodet
    389 
    390  -- Joey Hess <id@joeyh.name>  Mon, 25 Sep 2017 14:37:52 -0400
    391 
    392 propellor (4.7.7) unstable; urgency=medium
    393 
    394   * Locale: Display an error message when /etc/locale.gen does not contain
    395     the requested locale.
    396   * Attic module is deprecated and will warn when used.
    397     Attic is no longer available in Debian and appears to have been
    398     mostly supersceded by Borg.
    399   * Obnam module is deprecated and will warn when used.
    400     Obnam has been retired by its author.
    401   * Add Typeable instance to Bootstrapper, fixing build with old versions
    402     of ghc. (Previous attempt was incomplete.)
    403 
    404  -- Joey Hess <id@joeyh.name>  Wed, 23 Aug 2017 12:15:31 -0400
    405 
    406 propellor (4.7.6) unstable; urgency=medium
    407 
    408   * Sbuild: Add Sbuild.userConfig property.
    409     Thanks, Sean Whitton
    410   * Locale: Make sure that the locales package is installed when enabling
    411     locales.
    412 
    413  -- Joey Hess <id@joeyh.name>  Tue, 01 Aug 2017 17:59:07 -0400
    414 
    415 propellor (4.7.5) unstable; urgency=medium
    416 
    417   * Avoid crashing when getTerminalName fails due to eg, being in a chroot.
    418 
    419  -- Joey Hess <id@joeyh.name>  Tue, 01 Aug 2017 15:28:58 -0400
    420 
    421 propellor (4.7.4) unstable; urgency=medium
    422 
    423   * Set GPG_TTY when run at a terminal, so that gpg can do password
    424     prompting despite being connected by pipes to propellor (or git).
    425   * Rsync: Make rsync display less verbose.
    426   * Improve PROPELLOR_TRACE output so serialized trace values always
    427     come on their own line, not mixed with title setting.
    428 
    429  -- Joey Hess <id@joeyh.name>  Tue, 01 Aug 2017 13:30:54 -0400
    430 
    431 propellor (4.7.3) unstable; urgency=medium
    432 
    433   * Expand the Trace data type.
    434 
    435  -- Joey Hess <id@joeyh.name>  Sat, 29 Jul 2017 17:26:32 -0400
    436 
    437 propellor (4.7.2) unstable; urgency=medium
    438 
    439   * Added PROPELLOR_TRACE environment variable, which can be set to 1 to
    440     make propellor output serialized Propellor.Message.Trace values,
    441     for consumption by another program.
    442   * Rsync: Make rsync display its progress, in a minimal format to avoid
    443     scrolling each file down the screen.
    444 
    445  -- Joey Hess <id@joeyh.name>  Sat, 29 Jul 2017 15:49:00 -0400
    446 
    447 propellor (4.7.1) unstable; urgency=medium
    448 
    449   * Added Mount.isMounted.
    450   * Grub.bootsMounted: Bugfix.
    451 
    452  -- Joey Hess <id@joeyh.name>  Fri, 28 Jul 2017 22:22:40 -0400
    453 
    454 propellor (4.7.0) unstable; urgency=medium
    455 
    456   * Add Apt.proxy property to set a host's apt proxy.
    457     Thanks, Sean Whitton.
    458   * Add Apt.useLocalCacher property to set up apt-cacher-ng.
    459     Thanks, Sean Whitton.
    460   * Rework Sbuild properties to use apt proxies/cachers instead of
    461     bind-mounting the host's apt cache. This makes it possible to run more
    462     than one build at a time, and lets sbuild run even if apt's cache is
    463     locked by the host's apt.
    464     Thanks, Sean Whitton.
    465   * Sbuild: When Apt.proxy is set, it is assumed that the proxy does some
    466     sort of caching, and sbuild chroots are set up to use the same proxy.
    467   * Sbuild: When Apt.proxy is not set, install apt-cacher-ng, and point
    468     sbuild chroots at the local apt cacher.
    469   * Sbuild: Droped Sbuild.piupartsConfFor, Sbuild.piupartsConf,
    470     Sbuild.shareAptCache
    471     (API change)
    472     No longer needed now that we are using apt proxies/cachers.
    473   * Sbuild: Updated sample config in haddock for Propellor.Property.Sbuild.
    474     If you use this module, please compare both your config.hs and
    475     your ~/.sbuildrc with the haddock documentation.
    476   * Grub.bootsMounted: Avoid failing when proc sys etc are already mounted
    477     within the chroot.
    478 
    479  -- Joey Hess <id@joeyh.name>  Fri, 28 Jul 2017 20:42:35 -0400
    480 
    481 propellor (4.6.2) unstable; urgency=medium
    482 
    483   * Systemd.nspawned: Recent systemd versions such as 234 ignore
    484     non-symlinks in /etc/systemd/system/multi-user.target.wants,
    485     which was used to configure systemd-nspawn parameters. Instead,
    486     use a service.d/local.conf file to configure that.
    487   * Grub: Added bootsMounted property, a generalization of
    488     DiskImage.grubBooted
    489 
    490  -- Joey Hess <id@joeyh.name>  Fri, 28 Jul 2017 15:48:32 -0400
    491 
    492 propellor (4.6.1) unstable; urgency=medium
    493 
    494   * Added Network.dhcp' and Network.static', which allow specifying
    495     additional options for interfaces files.
    496   * Fix build failure on ghc-8.2.1
    497     Thanks, Sergei Trofimovich.
    498   * DiskImage: Fix strictness bug in .parttable read/write sequence.
    499 
    500  -- Joey Hess <id@joeyh.name>  Thu, 27 Jul 2017 09:17:32 -0400
    501 
    502 propellor (4.6.0) unstable; urgency=medium
    503 
    504   * Add Typeable instance to Bootstrapper, fixing build with old versions
    505     of ghc.
    506   * Network.static changed to take address and gateway parameters.
    507     If you used the old Network.static property, it has been renamed to
    508     Network.preserveStatic.
    509     (Minor API change)
    510 
    511  -- Joey Hess <id@joeyh.name>  Wed, 26 Jul 2017 20:02:50 -0400
    512 
    513 propellor (4.5.2) unstable; urgency=medium
    514 
    515   * Added Rsync.installed property.
    516   * Added DiskImage.vmdkBuiltFor property which is useful for booting
    517     a disk image in VirtualBox.
    518 
    519  -- Joey Hess <id@joeyh.name>  Tue, 25 Jul 2017 17:58:46 -0400
    520 
    521 propellor (4.5.1) unstable; urgency=medium
    522 
    523   * Reboot.toKernelNewerThan: If running kernel is new enough, avoid
    524     looking at what kernels are installed.
    525     Thanks, Sean Whitton.
    526   * DiskImage: Avoid re-partitioning disk image unncessarily, for a large
    527     speedup.
    528 
    529  -- Joey Hess <id@joeyh.name>  Tue, 25 Jul 2017 15:51:33 -0400
    530 
    531 propellor (4.5.0) unstable; urgency=medium
    532 
    533   * Generalized the PartSpec DSL, so it can be used for both
    534     disk image partitioning, and disk device partitioning, with
    535     different partition sizing methods as appropriate for the different
    536     uses. (minor API change)
    537   * Propellor.Property.Parted: Added calcPartTable function which uses
    538     PartSpec DiskPart, and a useDiskSpace combinator.
    539   * Generate a better description for versioned properties.
    540 
    541  -- Joey Hess <id@joeyh.name>  Fri, 21 Jul 2017 16:40:13 -0400
    542 
    543 propellor (4.4.0) unstable; urgency=medium
    544 
    545   * Propellor.Property.Timezone: New module, contributed by Sean Whitton.
    546   * Propellor.Property.Sudo.enabledFor: Made revertable.
    547     (minor API change)
    548   * Propellor.Property.LightDM.autoLogin: Made revertable.
    549     (minor API change)
    550   * Propellor.Property.Conffile: Added lacksIniSetting.
    551 
    552  -- Joey Hess <id@joeyh.name>  Mon, 17 Jul 2017 12:55:02 -0400
    553 
    554 propellor (4.3.4) unstable; urgency=medium
    555 
    556   * Propellor.Property.Versioned: New module which allows different
    557     versions of a property or host to be written down in a propellor config
    558     file. Has many applications, including staged upgrades and rollbacks.
    559   * LightDM.autoLogin: Use [Seat:*] rather than the old [SeatDefaults].
    560     The new name has been supported since lightdm 1.15.
    561 
    562  -- Joey Hess <id@joeyh.name>  Sat, 15 Jul 2017 17:22:53 -0400
    563 
    564 propellor (4.3.3) unstable; urgency=medium
    565 
    566   * Hosts can be configured to build propellor using stack, by adding
    567     a property:
    568         & bootstrapWith (Robustly Stack)
    569   * Hosts can be configured to build propellor using cabal, but using
    570     only packages installed from the operating system. This
    571     will work on eg Debian:
    572         & bootstrapWith OSOnly
    573   * Iproved fix for bug that sometimes made --spin fail with
    574     "fatal: Couldn't find remote ref HEAD". The previous fix didn't work
    575     reliably.
    576   * User: add systemGroup and use it for systemAccountFor'
    577     Thanks, Félix Sipma. 
    578   * Export a Restic.backup' property.
    579     Thanks, Félix Sipma. 
    580   * Updated stack config to lts-8.22.
    581 
    582  -- Joey Hess <id@joeyh.name>  Thu, 13 Jul 2017 12:34:09 -0400
    583 
    584 propellor (4.3.2) unstable; urgency=medium
    585 
    586   * Really include Propellor.Property.FreeDesktop.
    587 
    588  -- Joey Hess <id@joeyh.name>  Thu, 06 Jul 2017 17:28:53 -0400
    589 
    590 propellor (4.3.1) unstable; urgency=medium
    591 
    592   * Added Propellor.Property.FreeDesktop module.
    593   * Added reservedSpacePercentage to the PartSpec EDSL.
    594 
    595  -- Joey Hess <id@joeyh.name>  Thu, 06 Jul 2017 17:03:15 -0400
    596 
    597 propellor (4.3.0) unstable; urgency=medium
    598 
    599   * DiskImage: Removed grubBooted; properties that used to need it as a
    600     parameter now look at Info about the bootloader that is installed in
    601     the chroot that the disk image is created from.
    602     (API change)
    603 
    604  -- Joey Hess <id@joeyh.name>  Wed, 05 Jul 2017 21:04:04 -0400
    605 
    606 propellor (4.2.0) unstable; urgency=medium
    607 
    608   * DiskImage.grubBooted no longer takes a BIOS parameter,
    609     and no longer implicitly adds Grub.installed to the properties of
    610     the disk image. If you used DiskImage.grubBooted, you'll need to update
    611     your propellor configuration, removing the BIOS parameter from
    612     grubBooted and adding a Grub.installed property to the disk image, eg:
    613         & Grub.installed PC
    614     (API change)
    615   * Grub.installed: Avoid running update-grub when used in a chroot, since
    616     it will get confused.
    617   * DiskImage.Finalization: Simplified this type since it does not need to
    618     be used to install packages anymore. (API change)
    619 
    620  -- Joey Hess <id@joeyh.name>  Wed, 05 Jul 2017 18:10:49 -0400
    621 
    622 propellor (4.1.0) unstable; urgency=medium
    623 
    624   * User.hasInsecurePassword makes sure shadow passwords are enabled,
    625     so if the insecure password is later changed, the new password won't be
    626     exposed.
    627   * Bugfix: Apache.httpsVirtualHost' must create ssl/hn/ dir earlier
    628     Thanks, Sean Whitton.
    629   * Bootstrap.clonedFrom: Fix bug that broke copying .git/config into
    630     chroot.
    631   * Diskimage.imageExists: Align disk image size to multiple of 4096
    632     sector size, since some programs (such as VBoxManage convertdd)
    633     refuse to operate on disk images not aligned to a sector size.
    634   * Bootstrap.bootstrappedFrom: Fix bug that caused propellor to only
    635     be built from the bootstrapped config the first time.
    636   * Bootstrap.bootstrappedFrom: Avoid doing anything when not run in a
    637     chroot.
    638   * When provisioning a container, output was buffered until the whole
    639     process was done; now output will be displayed immediately.
    640   * LightDM.autoLogin: Make it require LightDM.installed.
    641     (minor API change as the type changed)
    642   * Propellor.Property.XFCE added with some useful properties for the
    643     desktop environment.
    644   * Added File.applyPath property.
    645   * Added File.checkOverwrite.
    646   * File.isCopyOf: Fix bug that prevented this property from working
    647     when the destination file did not yet exist.
    648 
    649  -- Joey Hess <id@joeyh.name>  Wed, 05 Jul 2017 17:30:00 -0400
    650 
    651 propellor (4.0.6) unstable; urgency=medium
    652 
    653   * Fix bug that sometimes made --spin fail with 
    654     "fatal: Couldn't find remote ref HEAD"
    655   * Display error and warning messages to stderr, not stdout.
    656 
    657  -- Joey Hess <id@joeyh.name>  Sun, 18 Jun 2017 19:30:50 -0400
    658 
    659 propellor (4.0.5) unstable; urgency=medium
    660 
    661   * Switch cabal file from Extensions to Default-Extensions to fix
    662     new picky hackage rejection.
    663 
    664  -- Joey Hess <id@joeyh.name>  Sat, 03 Jun 2017 15:07:36 -0400
    665 
    666 propellor (4.0.4) unstable; urgency=medium
    667 
    668   * Propellor.Property.Restic added for yet another backup program.
    669     Thanks, Félix Sipma.
    670   * Removed dependency on MissingH, instead depends on split and hashable.
    671 
    672  -- Joey Hess <id@joeyh.name>  Sat, 03 Jun 2017 14:56:44 -0400
    673 
    674 propellor (4.0.3) unstable; urgency=medium
    675 
    676   * Added Fstab.listed, Fstab.swap, and Mount.swapOn properties.
    677     Thanks, Daniel Brooks.
    678   * Added Propellor.Property.Bootstrap, which can be used to make
    679     disk images contain their own installation of propellor.
    680 
    681  -- Joey Hess <id@joeyh.name>  Thu, 20 Apr 2017 00:54:32 -0400
    682 
    683 propellor (4.0.2) unstable; urgency=medium
    684 
    685   * Apt.mirror can be used to set the preferred apt mirror of a host,
    686     overriding the default CDN. This info is used by 
    687     Apt.stdSourcesList and Sbuild.builtFor.
    688     Thanks, Sean Whitton.
    689   * Property.Partition: Update kpartx output parser, as its output format
    690     changed around version 0.6. Both output formats are supported now.
    691   * Fix bug when using setContainerProps with a chroot that prevented
    692     properties added to a chroot that way from being seen when propellor
    693     was running inside the chroot. This affected disk image creation, and
    694     possibly other things that use chroots.
    695 
    696  -- Joey Hess <id@joeyh.name>  Fri, 24 Mar 2017 14:04:50 -0400
    697 
    698 propellor (4.0.1) unstable; urgency=medium
    699 
    700   * Fix build with pre-AMP ghc.
    701   * Tor: Restart daemon after installing private key.
    702   * Tor.named, Tor.torPrivKey: Include the new ed25519 public/private key
    703     pair in addition to the old secret_id_key.
    704 
    705  -- Joey Hess <id@joeyh.name>  Sun, 19 Mar 2017 16:18:11 -0400
    706 
    707 propellor (4.0.0) unstable; urgency=medium
    708 
    709   * Added Monoid instances for Property and RevertableProperty.
    710   * Removed applyToList. Instead, use mconcat. (API change)
    711     If you had:  applyToList accountFor [User "joey", User "root"]
    712     use instead: mconcat (map accountFor [User "joey", User "root"])
    713   * Makefile: Removed "run" target which was default target.
    714     "make" now only builds propellor, does not run it.
    715     Note that propellor 1.0.0 and earlier relied on this target for
    716     the Cron.runPropellor property's cronjob to work, so upgrading
    717     directly from 1.0.0 to 4.0.0 would break that cron job.
    718   * Remove make from propellor's dependency list; it's not used by
    719     propellor any longer.
    720   * Implemented hostChroot, as originally seen in my slides at
    721     Linux.Conf.Au 2017 in January. Now that it's not vaporware, it allows
    722     one Host to build a disk image that has all the properties of another
    723     Host.
    724   * DiskImage building properties used to propagate DNS info out from
    725     the chroot used to build the disk image to the Host. That is no longer
    726     done, since that chroot only exists as a side effect of the disk image
    727     creation and servers will not be running in it.
    728   * The IsInfo types class's propagateInfo function changed to use a
    729     PropagateInfo data type. (API change)
    730   * The action used to satisfy a property changed to Maybe (Propellor Result).
    731     When it is Nothing, propellor knows it can skip displaying the
    732     description of that property. This is mostly useful in the
    733     implementation of mempty. (API change)
    734   * The doNothing property is now simply mempty. The name was retained
    735     because it can be clearer than mempty in some contexts.
    736   * Added Apache.confEnabled.
    737 
    738  -- Joey Hess <id@joeyh.name>  Wed, 15 Mar 2017 15:46:42 -0400
    739 
    740 propellor (3.4.1) unstable; urgency=medium
    741 
    742   * Fixed https url to propellor git repository.
    743 
    744  -- Joey Hess <id@joeyh.name>  Wed, 01 Mar 2017 16:50:05 -0400
    745 
    746 propellor (3.4.0) unstable; urgency=medium
    747 
    748   * Added ConfigurableValue type class, for values that can be used in a
    749     config file, or to otherwise configure a program.
    750   * The val function converts such values to String.
    751   * Removed fromPort and fromIPAddr (use val instead). (API change)
    752   * Removed several Show instances that were only used for generating
    753     configuration, replacing with ConfigurableValue instances. (API change)
    754   * The github mirror of propellor's git repository has been removed,
    755     since github's terms of service has started imposing unwanted licensing
    756     requirements.
    757   * propellor --init: The option to clone propellor's git repository
    758     used to use the github mirror, and has been changed to use a different
    759     mirror.
    760 
    761  -- Joey Hess <id@joeyh.name>  Wed, 01 Mar 2017 16:44:20 -0400
    762 
    763 propellor (3.3.1) unstable; urgency=medium
    764 
    765   * Apt: Removed the mirrors.kernel.org line from stdSourcesList etc.
    766     The mirror CDN has a new implementation that should avoid the problems
    767     with httpredir that made an extra mirror sometimes be needed.
    768   * Switch Debian CDN address to deb.debian.org.
    769   * Tor.hiddenService: Fix bug in torrc's HiddenServicePort configuration.
    770     Thanks, Félix Sipma
    771 
    772  -- Joey Hess <id@joeyh.name>  Mon, 20 Feb 2017 13:49:26 -0400
    773 
    774 propellor (3.3.0) unstable; urgency=medium
    775 
    776   * Arch Linux is now supported by Propellor!
    777     Thanks to Zihao Wang for this port.
    778   * Added Propellor.Property.Pacman for Arch's package manager.
    779     Maintained by Zihao Wang.
    780   * The types of some properties changed; eg from Property DebianLike
    781     to Property (DebianLike + ArchLinux). Also, DebianLike and Linux
    782     are no longer type synonyms; propellor now knows that Linux includes
    783     ArchLinux. This could require updates to code, so is a minor API change.
    784   * GHC's fileSystemEncoding is used for all String IO, to avoid
    785     encoding-related crashes in eg, Propellor.Property.File.
    786   * Add --build option to simply build config.hs.
    787   * More informative usage message. Thanks, Daniel Brooks
    788   * Tor.hiddenService' added to support multiple ports.
    789     Thanks, Félix Sipma.
    790   * Apt.noPDiffs added.
    791     Thanks, Sean Whitton.
    792   * stack.yaml: Compile with GHC 8.0.1 against lts-7.16.
    793     Thanks, Andrew Cowie.
    794   * Added Propellor.Property.File.configFileName and related functions
    795     to generate good filenames for config directories.
    796   * Added Apt.suiteAvailablePinned, Apt.pinnedTo.
    797     Thanks, Sean Whitton.
    798   * Added File.containsBlock
    799     Thanks, Sean Whitton.
    800 
    801  -- Joey Hess <id@joeyh.name>  Tue, 07 Feb 2017 12:09:24 -0400
    802 
    803 propellor (3.2.3) unstable; urgency=medium
    804 
    805   * Improve extraction of gpg secret key id list, to work with gpg 2.1.
    806   * The propellor wrapper checks if ./config.hs exists; if so it runs
    807     using the configuration in the current directory, rather than
    808     ~/.propellor/config.hs
    809   * Debootstap: Fix too tight permissions lock down of debootstrapped
    810     chroots, which prevented non-root users from doing anything in the
    811     chroot.
    812 
    813  -- Joey Hess <id@joeyh.name>  Tue, 22 Nov 2016 11:36:18 -0400
    814 
    815 propellor (3.2.2) unstable; urgency=medium
    816 
    817   * Added Linode.serialGrub property.
    818   * Clean up build warnings about redundant constraints when built with ghc 8.0.
    819   * Added Group.hasUser property. Thanks, Daniel Brooks
    820 
    821  -- Joey Hess <id@joeyh.name>  Fri, 11 Nov 2016 17:54:44 -0400
    822 
    823 propellor (3.2.1) unstable; urgency=medium
    824 
    825   * Simplify Debootstrap.sourceInstall since #770217 was fixed.
    826   * Debootstap.installed: Fix inverted logic that made this never install
    827     debootstrap. Thanks, mithrandi.
    828 
    829  -- Joey Hess <id@joeyh.name>  Mon, 03 Oct 2016 18:06:31 -0400
    830 
    831 propellor (3.2.0) unstable; urgency=medium
    832 
    833   [ Sean Whitton ]
    834   * Using ccache with Sbuild.built & Sbuild.builtFor is now toggleable: these
    835     properties now take a parameter of type Sbuild.UseCcache.  (API Change)
    836   * Sbuild.piupartsConf: no longer takes an Apt.Url. (API Change)
    837   * Sbuild.piupartsConf & Sbuild.piupartsConfFor: does nothing if corresponding
    838     schroot not built.
    839     Previously, these properties built the schroot if it was missing.
    840   * Sbuild.built & Sbuild.piupartsConf: add an additional alias to sid chroots.
    841     This is for compatibility with `dgit sbuild`.
    842   * Further improvements to Sbuild.hs haddock.
    843 
    844   [ Joey Hess ]
    845   * Tor.hiddenService: Converted port parameter from Int to Port. (API change)
    846   * Tor.hiddenServiceAvailable: The hidden service hostname file may not
    847     be available immedaitely after configuring tor; avoid ugly error in
    848     this case.
    849 
    850  -- Joey Hess <id@joeyh.name>  Sat, 10 Sep 2016 11:39:40 -0400
    851 
    852 propellor (3.1.2) unstable; urgency=medium
    853 
    854   [ Joey Hess ]
    855   * Ssh.knownHost: Bug fix: Only fix up the owner of the known_hosts
    856     file after it exists.
    857 
    858   [ Sean Whitton ]
    859   * Sbuild.keypairInsecurelyGenerated: Improved to be more robust.
    860   * Pass --allow-unrelated-histories to git merge when run with git 2.9 or
    861     newer. This fixes the /usr/bin/propellor wrapper with this version of git.
    862   * Sbuild.built & Sbuild.builtFor no longer require Sbuild.keypairGenerated.
    863     Transition guide: If you are using sbuild 0.70.0 or newer, you should
    864     `rm -r /var/lib/sbuild/apt-keys`.  Otherwise, you should add either
    865     Sbuild.keypairGenerated or Sbuild.keypairInsecurelyGenerated to your host.
    866   * Sbuild haddock improvements:
    867     - State that we don't support squeeze and Buntish older than trusty.
    868       This is due to our enhancements, such as eatmydata.
    869     - State that you need sbuild 0.70.0 or newer to build for stretch.
    870       This is due to gpg2 hitting Debian stretch.
    871     - Explain when a keygen is required.
    872     - Update sample ~/.sbuildrc for sbuild 0.71.0.
    873     - Add hint for customising chroots with propellor.
    874     - Update example usage of System type.
    875 
    876  -- Joey Hess <id@joeyh.name>  Sun, 28 Aug 2016 14:39:23 -0400
    877 
    878 propellor (3.1.1) unstable; urgency=medium
    879 
    880   * Haddock build fix.
    881     Thanks, Sean Whitton
    882 
    883  -- Joey Hess <id@joeyh.name>  Thu, 23 Jun 2016 08:12:57 -0400
    884 
    885 propellor (3.1.0) unstable; urgency=medium
    886 
    887   * Architecture changed from String to an ADT. (API Change)
    888     Transition guide: Change "amd64" to X86_64, "i386" to X86_32,
    889     "armel" to ARMEL, etc.
    890     Thanks, Félix Sipma.
    891   * The Debian data type now includes a DebianKernel. (API Change)
    892     This won't affect most config.hs, as osDebian defaults to
    893     Linux. Added osDebian' can be used to specify a different kernel.
    894     Thanks, Félix Sipma.
    895   * Improve exception handling. A property that threw a non-IOException
    896     used to stop the whole propellor run. Now, all non-async exceptions
    897     only make the property that threw them fail. (Implicit API change)
    898   * Added StopPropellorException and stopPropellorMessage which can be
    899     used in the unusual case where a failure of one property should stop
    900     propellor from trying to ensure any other properties.
    901   * tryPropellor returns Either SomeException instead of Either IOException
    902     (API change)
    903   * Switch letsencrypt to certbot package name.
    904   * Sbuild: Add keyringInsecurelyGenerated which is useful on throwaway
    905     build VMs.
    906     Thanks, Sean Whitton
    907   * Added Propellor.Property.SiteSpecific.Exoscale.
    908     Thanks, Sean Whitton
    909   * Property.Reboot: Added toDistroKernel and toKernelNewerThan.
    910     Thanks, Sean Whitton
    911   * Added ConfFile.hasIniSection.
    912     Thanks, Félix Sipma.
    913   * Apt.install: When asked to install a package that apt does not know
    914     about, it used to incorrectly succeed. Now it will fail.
    915   * Property.Firejail: New module.
    916     Thanks, Sean Whitton
    917   * File: Write privdata files in binary rather than text, which avoids
    918     failure when they do not contain valid unicode.
    919     Thanks, Andrew Schurman
    920   * Generalized fileProperty can now operate on a file as either a series
    921     of lines, or a ByteString.
    922 
    923   [ Sean Whitton ]
    924   * New info property Schroot.useOverlays to indicate whether you want schroots
    925     set up by propellor to use the Linux kernel's OverlayFS.
    926   * Schroot.overlaysInTmpfs sets Schroot.useOverlays info property.
    927   * If you have indicated that you want schroots to use OverlayFS and the
    928     current kernel does not support it, Sbuild.built will attempt to reboot
    929     into a kernel that does, or fail if it can't find one.
    930   * Sbuild.built will no longer add duplicate `aliases=UNRELEASED,sid...` lines
    931     to more than one schroot config. It will not remove any such lines that the
    932     previous version of propellor added, though.
    933   * Sbuild.keypairGenerated works around Debian bug #792100 by creating the
    934     directory /root/.gnupg in advance.
    935   * Ccache.hasCache now sets the setgid bit on the cache directory, as 
    936     ccache requires.
    937 
    938  -- Joey Hess <id@joeyh.name>  Wed, 22 Jun 2016 15:29:27 -0400
    939 
    940 propellor (3.0.5) unstable; urgency=medium
    941 
    942   * Modules added for Sbuild and Ccache.
    943     Thanks, Sean Whitton
    944   * Systemd: Added killUserProcesses property, which can be reverted
    945     to return systemd to its default behavior before version 230 started
    946     killing processes like screen sessions.
    947   * Systemd: Added logindConfigured property.
    948 
    949  -- Joey Hess <id@joeyh.name>  Mon, 06 Jun 2016 17:13:21 -0400
    950 
    951 propellor (3.0.4) unstable; urgency=medium
    952 
    953   * Run letsencrypt with --noninteractive.
    954   * Fix build with ghc 8.0.1.
    955     Thanks, davean.
    956   * Module added for the Borg backup system.
    957     Thanks, Félix Sipma.
    958   * Fix build with directory-1.2.6.2.
    959 
    960  -- Joey Hess <id@joeyh.name>  Sun, 22 May 2016 15:54:49 -0400
    961 
    962 propellor (3.0.3) unstable; urgency=medium
    963 
    964   * Remove Propellor.DotDir from the propellor library, as its use of
    965     Paths_propellor prevents use of the module out of propellor's tree.
    966     This module is only needed for the wrapper program anyway, which
    967     handles --init.
    968 
    969  -- Joey Hess <id@joeyh.name>  Sun, 01 May 2016 17:51:37 -0400
    970 
    971 propellor (3.0.2) unstable; urgency=medium
    972 
    973   * Added Apt.periodicUpdates.
    974     Thanks, Félix Sipma.
    975   * Apt.unattendedUpgrades: Enable mailing problem reports to root.
    976     Thanks, Félix Sipma.
    977   * Added Propellor.Property.Fstab, and moved the fstabbed property to there.
    978   * Attic module added for the backup system.
    979     Thanks, Félix Sipma.
    980   * Fix build with directory-1.2.6.2.
    981 
    982  -- Joey Hess <id@joeyh.name>  Sat, 30 Apr 2016 15:46:50 -0400
    983 
    984 propellor (3.0.1) unstable; urgency=medium
    985 
    986   * propellor --init now runs cabal sandbox init if cabal has been
    987     configured with require-sandbox: True.
    988     Thanks, Sean Whitton
    989   * Re-bundled concurrent-output so propellor can be deployed to Debian
    990     stable systems without installing it (insecurely) from hackage.
    991 
    992  -- Joey Hess <id@joeyh.name>  Tue, 05 Apr 2016 13:35:54 -0400
    993 
    994 propellor (3.0.0) unstable; urgency=medium
    995 
    996   * Property types have been improved to indicate what systems they target.
    997     This prevents using eg, Property FreeBSD on a Debian system.
    998     Transition guide for this sweeping API change:
    999     - First, upgrade to propellor 2.17.2 and deploy that to all your hosts.
   1000       Otherwise, propellor --spin will fail when you upgrade to
   1001       propellor 3.0.0.
   1002     - Change "host name & foo & bar"
   1003       to     "host name $ props & foo & bar"
   1004     - Similarly, `propertyList` and `combineProperties` need `props`
   1005       to be used to combine together properties; they no longer accept
   1006       lists of properties. (If you have such a list, use `toProps`.)
   1007     - And similarly, Chroot, Docker, and Systemd container need `props`
   1008       to be used to combine together the properies used inside them.
   1009     - The `os` property is removed. Instead use `osDebian`, `osBuntish`,
   1010       or `osFreeBSD`. These tell the type checker the target OS of a host.
   1011     - Change "Property NoInfo" to "Property UnixLike"
   1012     - Change "Property HasInfo" to "Property (HasInfo + UnixLike)"
   1013     - Change "RevertableProperty NoInfo" to
   1014       "RevertableProperty UnixLike UnixLike"
   1015     - Change "RevertableProperty HasInfo" to
   1016       "RevertableProperty (HasInfo + UnixLike) UnixLike"
   1017     - GHC needs {-# LANGUAGE TypeOperators #-} to use these fancy types.
   1018       This is enabled by default for all modules in propellor.cabal. But
   1019       if you are using propellor as a library, you may need to enable it
   1020       manually.
   1021     - If you know a property only works on a particular OS, like Debian
   1022       or FreeBSD, use that instead of "UnixLike". For example:
   1023       "Property Debian"
   1024     - It's also possible make a property support a set of OS's, for example:
   1025       "Property (Debian + FreeBSD)"
   1026     - Removed `infoProperty` and `simpleProperty` constructors, instead use
   1027       `property` to construct a Property.
   1028     - Due to the polymorphic type returned by `property`, additional type
   1029       signatures tend to be needed when using it. For example, this will
   1030       fail to type check, because the type checker cannot guess what type
   1031       you intend the intermediate property "go" to have:
   1032         foo :: Property UnixLike
   1033         foo = go `requires` bar
   1034  	  where
   1035  		go = property "foo" (return NoChange)
   1036       To fix, specify the type of go:
   1037  	  	go :: Property UnixLike
   1038     - `ensureProperty` now needs to be passed a witness to the type of the 
   1039       property it's used in.
   1040       change this:  foo = property desc $ ... ensureProperty bar
   1041       to this:      foo = property' desc $ \w -> ... ensureProperty w bar
   1042     - General purpose properties like cmdProperty have type "Property UnixLike".
   1043       When using that to run a command only available on Debian, you can
   1044       tighten the type to only the OS that your more specific property works on.
   1045       For example:
   1046         upgraded :: Property Debian
   1047         upgraded = tightenTargets (cmdProperty "apt-get" ["upgrade"])
   1048     - Several utility functions have been renamed:
   1049       getInfo to fromInfo
   1050       propertyInfo to getInfo
   1051       propertyDesc to getDesc
   1052       propertyChildren to getChildren
   1053   * The new `pickOS` property combinator can be used to combine different
   1054     properties, supporting different OS's, into one Property that chooses
   1055     which to use based on the Host's OS.
   1056   * Re-enabled -O0 in propellor.cabal to reign in ghc's memory use handling
   1057     these complex new types.
   1058   * Added dependency on concurrent-output; removed embedded copy.
   1059   * Apt.PPA: New module, contributed by Evan Cofsky.
   1060   * Improved propellor's first run experience; propellor --init will
   1061     walk the user through setting up ~/.propellor, with a choice between
   1062     a clone of propellor's git repository, or a minimal config, and will
   1063     configure propellor to use a gpg key.
   1064   * Stack support. "git config propellor.buildsystem stack" will make
   1065     propellor build its config using stack. (This does not affect
   1066     how propellor is bootstrapped on a host by "propellor --spin host".)
   1067   * When propellor is installed using stack, propellor --init will
   1068     automatically set propellor.buildsystem=stack.
   1069 
   1070  -- Joey Hess <id@joeyh.name>  Sat, 02 Apr 2016 15:33:26 -0400
   1071 
   1072 propellor (2.17.2) unstable; urgency=medium
   1073 
   1074   * When new dependencies are added to propellor or the propellor config,
   1075     try harder to get them installed. In particular, this makes 
   1076     propellor --spin work when the remote host needs to get dependencies
   1077     installed in order to build the updated config.
   1078   * Apt.update: Also run dpkg --configure -a here as apt for some reason
   1079     won't even update if dpkg was interrupted.
   1080 
   1081  -- Joey Hess <id@joeyh.name>  Wed, 30 Mar 2016 15:45:08 -0400
   1082 
   1083 propellor (2.17.1) unstable; urgency=medium
   1084 
   1085   * Avoid generating excessively long paths to the unix socket file
   1086     used for ssh connection caching. Mostly. Can still generate a too long
   1087     one if $HOME is longer than 60 bytes.
   1088   * Uwsgi: add ".ini" extension to app config files. 
   1089     Files without extensions were ignored by uwsgi.
   1090     Thanks, Félix Sipma.
   1091 
   1092  -- Joey Hess <id@joeyh.name>  Mon, 28 Mar 2016 11:06:34 -0400
   1093 
   1094 propellor (2.17.0) unstable; urgency=medium
   1095 
   1096   * Added initial support for FreeBSD.
   1097     Thanks, Evan Cofsky.
   1098   * Added Propellor.Property.ZFS.
   1099     Thanks, Evan Cofsky.
   1100   * Firewall: Reorganized Chain data type. (API change)
   1101     Thanks, Félix Sipma.
   1102   * Firewall: Separated Table and Target (API change)
   1103     Thanks, Félix Sipma.
   1104   * Ssh: change type of listenPort from Int to Port (API change)
   1105     Thanks, Félix Sipma.
   1106   * Firewall: add TCPFlag, Frequency, TCPSyn, ICMPTypeMatch, NatDestination
   1107     Thanks, Félix Sipma.
   1108   * Network: Filter out characters not allowed in interfaces.d files.
   1109     Thanks, Félix Sipma.
   1110   * Apt.upgrade: Run dpkg --configure -a first, to recover from
   1111     interrupted upgrades.
   1112   * Apt: Add safeupgrade.
   1113   * Force ssh, scp, and git commands to be run in the foreground.
   1114     Should fix intermittent hangs of propellor --spin.
   1115   * Avoid repeated re-building on systems such as FreeBSD where building
   1116     re-links the binary even when there are no changes.
   1117   * Locale.available: Run locale-gen, instead of dpkg-reconfigure locales,
   1118     which modified the locale.gen file and sometimes caused the property to
   1119     need to make changes every time.
   1120   * Speed up propellor's build of itself, by asking cabal to only build
   1121     the propellor-config binary and not all the libraries.
   1122   * Tor.named: Fix bug that sometimes caused the property to fail the first
   1123     time, though retrying succeeded.
   1124 
   1125  -- Joey Hess <id@joeyh.name>  Thu, 24 Mar 2016 14:53:31 -0400
   1126 
   1127 propellor (2.16.0) unstable; urgency=medium
   1128 
   1129   * Obnam: Only let one backup job run at a time when a host has multiple
   1130     different backup properties, to avoid concurrent jobs fighting over
   1131     scarce resources (particularly memory). Other jobs block on a lock
   1132     file.
   1133   * Removed references to a Debian derivative from code and documentation
   1134     because of an unfortunate trademark use policy.
   1135     http://joeyh.name/blog/entry/trademark_nonsense/
   1136   * That included changing a data constructor to "Buntish", an API change.
   1137   * Firewall.rule: Now takes a Table parameter. (API change)
   1138   * Firewall: add InIFace/OutIFace Rules, add Source/Destination Rules,
   1139     add CustomTarget, and more improvements.
   1140     Thanks, Félix Sipma.
   1141   * Ssh.authorizedKey: Fix bug preventing it from working when the
   1142     authorized_keys file does not yet exist.
   1143   * Removed Ssh.unauthorizedKey and made Ssh.authorizedKey revertable.
   1144     (API change)
   1145 
   1146  -- Joey Hess <id@joeyh.name>  Sat, 27 Feb 2016 13:31:57 -0400
   1147 
   1148 propellor (2.15.4) unstable; urgency=medium
   1149 
   1150   * Build /usr/src/propellor/propellor.git reproducibly,
   1151     which makes the whole Debian package build reproducibly.
   1152     Thanks, Sean Whitton.
   1153   * Obnam: To cause old generations to be forgotten, keepParam can be
   1154     passed to a backup property; this causes obnam forget to be run.
   1155   * Delete /etc/apt/apt.conf.d/50unattended-upgrades.ucf-dist when
   1156     unattended-upgrades is installed, to work around #812380 which results
   1157     in many warnings from apt, including in cron mails.
   1158   * Added Propellor.Property.LetsEncrypt
   1159   * Apache.httpsVirtualHost: New property, setting up a https vhost
   1160     with the certificate automatically obtained using letsencrypt.
   1161   * Allow using combineProperties and propertyList with lists of
   1162     RevertableProperty.
   1163 
   1164  -- Joey Hess <id@joeyh.name>  Thu, 11 Feb 2016 12:49:10 -0400
   1165 
   1166 propellor (2.15.3) unstable; urgency=medium
   1167 
   1168   * Added Git.bareRepoDefaultBranch property
   1169     Thanks, Sean Whitton.
   1170   * Add missing Control.Applicative imports needed by older versions of ghc.
   1171 
   1172  -- Joey Hess <id@joeyh.name>  Tue, 12 Jan 2016 12:37:22 -0400
   1173 
   1174 propellor (2.15.2) unstable; urgency=medium
   1175 
   1176   * Added GNUPGBIN environment variable or git.program git config
   1177     to control the command run for gpg. Allows eg, GNUPGBIN=gpg2
   1178     Thanks, Félix Sipma.
   1179   * Bootstrap apt-get installs run with deconf noninteractive frontend.
   1180   * spin --via: Avoid committing on relay host.
   1181   * Postfix: Add service property to enable/disable services in master.cf.
   1182   * Added Munin module, contributed by Jelmer Vernooij.
   1183 
   1184  -- Joey Hess <id@joeyh.name>  Sun, 03 Jan 2016 16:56:26 -0400
   1185 
   1186 propellor (2.15.1) unstable; urgency=medium
   1187 
   1188   * Added git configs propellor.spin-branch and propellor.forbid-dirty-spin.
   1189     Thanks, Sean Whitton.
   1190   * Added User.systemAccountFor and User.systemAccountFor' properties.
   1191     Thanks, Félix Sipma.
   1192   * Gpg.keyImported converted to not use a flag file and instead check
   1193     if gpg has the provided key already.
   1194     Thanks, Félix Sipma.
   1195   * Clean build with ghc 7.10.
   1196   * Merged Utility changes from git-annex.
   1197 
   1198  -- Joey Hess <id@joeyh.name>  Sat, 19 Dec 2015 16:43:09 -0400
   1199 
   1200 propellor (2.15.0) unstable; urgency=medium
   1201 
   1202   * Added UncheckedProperty type, along with unchecked to indicate a
   1203     Property needs its result checked, and checkResult and changesFile
   1204     to check for changes.
   1205   * Properties that run an arbitrary command, such as cmdProperty
   1206     and scriptProperty are converted to use UncheckedProperty, since
   1207     they cannot tell on their own if the command truely made a change or not.
   1208     (API Change)
   1209     Transition guide:
   1210     - When GHC complains about an UncheckedProperty, add:
   1211     	`assume` MadeChange
   1212       (Since these properties used to always return MadeChange, that
   1213       change is always safe to make.)
   1214     - Or, if you know that the command should modifiy a file, use:
   1215     	`changesFile` filename
   1216   * The `trivial` combinator has been removed. (API change)
   1217     Instead, use:
   1218     	`assume` NoChange
   1219     Or, better, use changesFile or checkResult to accurately report
   1220     when a property makes a change.
   1221   * A few properties have had their Result improved, for example
   1222     Apt.buldDep and Apt.autoRemove now check if a change was made or not.
   1223   * User.hasDesktopGroups changed to avoid trying to add the user to
   1224     groups that don't exist.
   1225   * Added Postfix.saslPasswdSet.
   1226   * Added Propellor.Property.Locale.
   1227     Thanks, Sean Whitton.
   1228   * Added Propellor.Property.Fail2Ban.
   1229 
   1230  -- Joey Hess <id@joeyh.name>  Sun, 06 Dec 2015 15:33:51 -0400
   1231 
   1232 propellor (2.14.0) unstable; urgency=medium
   1233 
   1234   * Add Propellor.Property.PropellorRepo.hasOriginUrl, an explicit way to
   1235     set the git repository url normally implicitly set when using --spin.
   1236   * Added Chroot.noServices property.
   1237   * DiskImage creation automatically uses Chroot.noServices.
   1238   * Removed the (unused) dependency on quickcheck.
   1239   * DebianMirror: Added a DebianMirror type for configuration (API change)
   1240     Thanks, Félix Sipma.
   1241   * DebianMirror: Add RsyncExtra to configuration.
   1242     Thanks, Félix Sipma.
   1243   * Added Git.repoConfigured and Git.repoAcceptsNonFFs properties.
   1244     Thanks, Sean Whitton
   1245   * Added User.hasDesktopGroups property.
   1246 
   1247  -- Joey Hess <id@joeyh.name>  Tue, 24 Nov 2015 16:03:55 -0400
   1248 
   1249 propellor (2.13.0) unstable; urgency=medium
   1250 
   1251   * RevertableProperty used to be assumed to contain info, but this is
   1252     now made explicit, with RevertableProperty HasInfo or
   1253     RevertableProperty NoInfo. (API change)
   1254     Transition guide:
   1255       - If you define a RevertableProperty, expect some type check
   1256         failures like: "Expecting one more argument to ‘RevertableProperty’".
   1257       - Change it to "RevertableProperty NoInfo"
   1258       - The compiler will then tell you if it needs "HasInfo" instead.
   1259       - If you have code that uses the RevertableProperty constructor
   1260         that fails to type check, use the more powerful <!> operator
   1261         instead to create the RevertableProperty.
   1262   * Various property combinators that combined a RevertableProperty
   1263     with a non-revertable property used to yield a RevertableProperty.
   1264     This was a bug, because the combined property could not be fully
   1265     reverted in many cases, and the result is now a non-revertable property.
   1266   * combineWith now takes an additional parameter to control how revert
   1267     actions are combined (API change).
   1268   * Added Propellor.Property.Concurrent for concurrent properties.
   1269   * Made the execProcess exported by propellor, and everything built on it,
   1270     avoid scrambled output when run concurrently.
   1271   * Propellor now depends on STM and text.
   1272   * The cabal file now builds propellor with -O. While -O0 makes ghc
   1273     take less memory while building propellor, it can lead to bad memory
   1274     usage at runtime due to eg, disabled stream fusion.
   1275   * Add File.isCopyOf. Thanks, Per Olofsson.
   1276 
   1277  -- Joey Hess <id@joeyh.name>  Sun, 08 Nov 2015 14:51:15 -0400
   1278 
   1279 propellor (2.12.0) unstable; urgency=medium
   1280 
   1281   * The DiskImage module can now make bootable images using grub.
   1282   * Add a ChrootTarball chroot type, for using pre-built tarballs
   1283     as chroots. Thanks, Ben Boeckel.
   1284   * HostName: Improve domain extraction code.
   1285   * Added Mount.fstabbed property to generate /etc/fstab to replicate
   1286     current mounts.
   1287   * HostName: Improve domain extraction code.
   1288   * Add File.basedOn. Thanks, Per Olofsson.
   1289   * Changed how the operating system is provided to Chroot (API change).
   1290     Where before debootstrapped and bootstrapped took a System parameter,
   1291     the os property should now be added to the Chroot.
   1292   * Follow-on change to Systemd.container, which now takes a System parameter.
   1293   * Generalized Property.check so it can be used with Propellor actions as
   1294     well as IO actions.
   1295   * Hostname.sane and Hostname.setTo can now safely be used as a property
   1296     of a chroot, and won't affect the hostname of the host system.
   1297 
   1298  -- Joey Hess <id@joeyh.name>  Fri, 23 Oct 2015 17:38:32 -0400
   1299 
   1300 propellor (2.11.0) unstable; urgency=medium
   1301 
   1302   * Rewrote Propellor.Property.ControlHeir one more time, renaming it to
   1303     Propellor.Property.Conductor.
   1304   * Added Ssh properties to remove authorized_keys and known_hosts lines.
   1305 
   1306  -- Joey Hess <id@joeyh.name>  Wed, 21 Oct 2015 19:49:00 -0400
   1307 
   1308 propellor (2.10.0) unstable; urgency=medium
   1309 
   1310   * The Propellor.Property.Spin added in the last release is replaced
   1311     with a very different Propellor.Property.ControlHeir.
   1312 
   1313  -- Joey Hess <id@joeyh.name>  Tue, 20 Oct 2015 21:29:12 -0400
   1314 
   1315 propellor (2.9.0) unstable; urgency=medium
   1316 
   1317   * Added basic Uwsgi module, maintained by Félix Sipma.
   1318   * Add Apt.hasForeignArch. Thanks, Per Olofsson.
   1319   * Improved documentation, particularly of the Propellor module.
   1320   * The Propellor module no longer exports many of the things it used to,
   1321     being now focused on only what's needed to write config.hs.
   1322     Use Propellor.Base to get all the things exported by Propellor before.
   1323     (API change)
   1324   * Some renaming of instance methods, and moving of functions to more
   1325     appropriate modules. (API change)
   1326   * Added File.isSymlinkedTo. Thanks, Per Olofsson.
   1327   * fileProperty, and properties derived from it now write the new
   1328     file content via origfile.propellor-new~, instead of to a randomly named
   1329     temp file. This allows them to clean up any temp file that may have
   1330     been left by an interrupted run of propellor.
   1331   * Added Propellor.Property.Spin, which can be used to make a host be a
   1332     controller of other hosts, which will automatically spin them each time
   1333     propellor is run.
   1334   * Ssh.keyImported is replaced with Ssh.userKeys. (API change)
   1335     The new property only gets the private key from the privdata; the
   1336     public key is provided as a parameter, and so is available as
   1337     Info that other properties can use.
   1338   * Ssh.keyImported' is renamed to Ssh.userKeyAt, and also changed
   1339     to only import the private key from the privdata. (API change)
   1340   * While Ssh.keyImported and Ssh.keyImported' avoided updating existing
   1341     keys, the new Ssh.userKeys and Ssh.userKeyAt properties will
   1342     always update out of date key files.
   1343   * Ssh.pubKey renamed to Ssh.hostPubKey. (API change)
   1344   * Added --unset-unused 
   1345   * Fix typo: propigate → propagate. Thanks, Felix Gruber.
   1346     (A minor API change)
   1347   * Chroot: Converted to use a ChrootBootstrapper type class, so
   1348     other ways to bootstrap chroots can easily be added in separate
   1349     modules. (API change)
   1350 
   1351  -- Joey Hess <id@joeyh.name>  Tue, 20 Oct 2015 15:43:12 -0400
   1352 
   1353 propellor (2.8.1) unstable; urgency=medium
   1354 
   1355   * Guard against power loss etc when building propellor, by updating
   1356     the executable atomically.
   1357   * Added Logcheck module, contributed by Jelmer Vernooij.
   1358   * Added Kerberos module, contributed by Jelmer Vernooij.
   1359   * Privdata that uses HostContext inside a container will now have the
   1360     name of the container as its context, rather than the name of
   1361     the host(s) where the container is used. This allows eg, having different
   1362     passwords for a user in different containers. Note that previously,
   1363     propellor would prompt using the container name as the context, but
   1364     not actually use privdata using that context; so this is a bug fix.
   1365   * Fix --add-key to not fail committing when no privdata file exists yet.
   1366 
   1367  -- Joey Hess <id@joeyh.name>  Sun, 04 Oct 2015 13:54:59 -0400
   1368 
   1369 propellor (2.8.0) unstable; urgency=medium
   1370 
   1371   * Added Propellor.Property.Rsync.
   1372   * Convert Info to use Data.Dynamic, so properties can export and consume
   1373     info of any type that is Typeable and a Monoid, including data types
   1374     private to a module. (API change)
   1375     Thanks to Joachim Breitner for the idea.
   1376   * Improve propellor wrapper to better handle installation cloning
   1377     the public propellor repo, by setting that repo to be upstream,
   1378     so propellor doesnt try to push to a read-only repo.
   1379   * Added DebianMirror module, contributed by Félix Sipma.
   1380   * Some hlint cleanups.
   1381     Thanks, Mario Lang
   1382   * Added Propellor.Property.Unbound for the caching DNS server.
   1383     Thanks, Félix Sipma.
   1384   * Added PTR to Dns.Record. While this is ignored by
   1385     Propellor.Property.Dns for now, since reverse DNS setup is not
   1386     implemented there yet, it can be used in other places, eg Unbound.
   1387     Thanks, Félix Sipma.
   1388   * PrivData converted to newtype (API change).
   1389   * Stopped stripping trailing newlines when setting PrivData;
   1390     this was previously done to avoid mistakes when pasting eg passwords
   1391     with an unwanted newline. Instead, PrivData consumers should use either
   1392     privDataLines or privDataVal, to extract respectively lines or a
   1393     value (without internal newlines) from PrivData.
   1394   * Allow storing arbitrary ByteStrings in PrivData, extracted using
   1395     privDataByteString.
   1396   * Added Aiccu module, contributed by Jelmer Vernooij.
   1397   * Added --rm-key.
   1398 
   1399  -- Joey Hess <id@joeyh.name>  Tue, 22 Sep 2015 19:35:07 -0400
   1400 
   1401 propellor (2.7.3) unstable; urgency=medium
   1402 
   1403   * Fix bug that caused provisioning new chroots to fail.
   1404   * Update for Debian systemd-container package split.
   1405   * Added Propellor.Property.Parted, for disk partitioning.
   1406   * Added Propellor.Property.Partition, for partition formatting etc.
   1407   * Added Propellor.Property.DiskImage, for bootable disk image creation.
   1408     (Experimental and not yet complete.)
   1409   * Dropped support for ghc 7.4.
   1410 
   1411  -- Joey Hess <id@joeyh.name>  Thu, 03 Sep 2015 08:52:51 -0700
   1412 
   1413 propellor (2.7.2) unstable; urgency=medium
   1414 
   1415   * Added Propellor.Property.ConfFile, with support for Windows-style .ini
   1416     files, and generic support for files containing some sort of sections.
   1417     Thanks, Sean Whitton for completing the implementation.
   1418   * Added Propellor.Property.LightDM
   1419     Thanks, Sean Whitton.
   1420   * Multiple Tor.hiddenService properties can now be defined for a host;
   1421     previously only one such property worked per host.
   1422     Thanks, Félix Sipma.
   1423 
   1424  -- Joey Hess <id@joeyh.name>  Tue, 25 Aug 2015 12:00:25 -0700
   1425 
   1426 propellor (2.7.1) unstable; urgency=medium
   1427 
   1428   * Make sure that make is installed when bootstrapping propellor.
   1429   * Fix bug in Firewall's Port datatype to iptable parameter translation code.
   1430     Thanks, Antoine Eiche.
   1431 
   1432  -- Joey Hess <id@joeyh.name>  Fri, 14 Aug 2015 15:01:37 -0400
   1433 
   1434 propellor (2.7.0) unstable; urgency=medium
   1435 
   1436   * Ssh.permitRootLogin type changed to allow configuring WithoutPassword
   1437     and ForcedCommandsOnly (API change)
   1438   * setSshdConfig type changed, and setSshdConfigBool added with old type.
   1439   * Fix a bug in shim generation code for docker and chroots, that
   1440     sometimes prevented deployment of docker containers.
   1441   * Added onChangeFlagOnFail which is often a safer alternative to
   1442     onChange.
   1443     Thanks, Antoine Eiche.
   1444   * Work around broken git pull option parser in git 2.5.0,
   1445     which broke use of --upload-pack to send a git push when running
   1446     propellor --spin.
   1447 
   1448  -- Joey Hess <id@joeyh.name>  Thu, 30 Jul 2015 12:05:46 -0400
   1449 
   1450 propellor (2.6.0) unstable; urgency=medium
   1451 
   1452   * Replace String type synonym Docker.Image by a data type
   1453     which allows to specify an image name and an optional tag. (API change)
   1454     Thanks, Antoine Eiche.
   1455   * Added --unset to delete a privdata field.
   1456   * Version dependency on exceptions.
   1457   * Systemd: Add masked property.
   1458     Thanks, Sean Whitton
   1459   * Fix make install target to work even when git is not configured.
   1460 
   1461  -- Joey Hess <id@joeyh.name>  Fri, 10 Jul 2015 22:36:29 -0400
   1462 
   1463 propellor (2.5.0) unstable; urgency=medium
   1464 
   1465   * cmdProperty' renamed to cmdPropertyEnv to make way for a new,
   1466     more generic cmdProperty' (API change)
   1467   * Add docker image related properties.
   1468     Thanks, Antoine Eiche.
   1469   * Export CommandParam, boolSystem, safeSystem, shellEscape, and
   1470     createProcess from Propellor.Property.Cmd, so they are available
   1471     for use in constricting your own Properties when using propellor
   1472     as a library.
   1473   * Improve enter-machine scripts for systemd-nspawn containers to unset most
   1474     environment variables.
   1475   * Fix Postfix.satellite bug; the default relayhost was set to the
   1476     domain, not to smtp.domain as documented.
   1477   * Mount /proc inside a chroot before provisioning it, to work around #787227
   1478   * --spin now works when given a short hostname that only resolves to an
   1479     ipv6 address.
   1480   * Added publish property for systemd-spawn containers, for port publishing.
   1481     (Needs systemd version 220.)
   1482   * Added bind and bindRo properties for systemd-spawn containers.
   1483   * Firewall: Port was changed to a newtype, and the Port and PortRange
   1484     constructors of Rules were changed to DPort and DportRange, respectively.
   1485     (API change)
   1486   * Docker: volume and publish accept Bound FilePath and Bound Port,
   1487     respectively. They also continue to accept Strings, for backwards
   1488     compatibility.
   1489   * Docker: Added environment property.
   1490     Thanks Antoine Eiche.
   1491 
   1492  -- Joey Hess <id@joeyh.name>  Tue, 09 Jun 2015 17:08:43 -0400
   1493 
   1494 propellor (2.4.0) unstable; urgency=medium
   1495 
   1496   * Propellor no longer supports Debian wheezy (oldstable).
   1497   * Git.bareRepo: Fix bug in calls to userScriptProperty.
   1498     Thanks, Jelmer Vernooij.
   1499   * Removed Obnam.latestVersion which was only needed for Debian wheezy
   1500     backport.
   1501   * Merged Utility changes from git-annex.
   1502   * Switched from MonadCatchIO-transformers to the newer transformers and
   1503     exceptions libraries.
   1504   * Ensure build deps are installed before building propellor in --spin
   1505     and cron job, even if propellor was already built before, to deal with
   1506     upgrades that add new dependencies.
   1507 
   1508  -- Joey Hess <id@joeyh.name>  Wed, 06 May 2015 14:28:59 -0400
   1509 
   1510 propellor (2.3.0) unstable; urgency=medium
   1511 
   1512   * Make propellor resistent to changes to shared libraries, such as libffi,
   1513     which might render the propellor binary unable to run. This is dealt with
   1514     by checking the binary both when running propellor on a remote host,
   1515     and by Cron.runPropellor. If the binary doesn't work, it will be rebuilt.
   1516   * Note that since a new switch had to be added to allow testing the binary,
   1517     upgrading to this version will cause a rebuild from scratch of propellor.
   1518   * Added hasLoginShell and shellEnabled.
   1519   * debCdn changed to new httpredir.debian.org official replacement for
   1520     http.debian.net.
   1521   * API change: Added User and Group newtypes, and Properties that
   1522     used to use the type UserName = String were changed to use them.
   1523 
   1524  -- Joey Hess <id@joeyh.name>  Wed, 22 Apr 2015 13:46:24 -0400
   1525 
   1526 propellor (2.2.1) unstable; urgency=medium
   1527 
   1528   * userScriptProperty now passes --shell /bin/sh, so it can be used
   1529     even for users with nonstandard shells.
   1530   * Fix bug in docker propellor shim setup introduced in last release,
   1531     which broke provisioning of new docker containers.
   1532 
   1533  -- Joey Hess <id@joeyh.name>  Thu, 12 Mar 2015 20:08:34 -0400
   1534 
   1535 propellor (2.2.0) unstable; urgency=medium
   1536 
   1537   * When running shimmed (eg in a docker container),
   1538     improve process name visible in ps.
   1539   * Add shebang to cron.daily etc files. 
   1540   * Some changes to tor configuration, minor API change.
   1541   * Propellor now builds itself, and gets its build dependencies installed
   1542     when deploying to a new host, without needing the Makefile.
   1543 
   1544  -- Joey Hess <id@joeyh.name>  Mon, 09 Mar 2015 12:02:31 -0400
   1545 
   1546 propellor (2.1.0) unstable; urgency=medium
   1547 
   1548   * Additional tor properties, including support for making relays, 
   1549     and naming bridges, relays, etc.
   1550   * New Cron.Times data type, which allows Cron.job to install
   1551     daily/monthly/weekly jobs that anacron can run. (API change)
   1552   * Fix Git.daemonRunning to restart inetd after enabling the git server.
   1553   * Ssh.authorizedKey: Make the authorized_keys file and .ssh directory
   1554     be owned by the user, not root.
   1555   * Ssh.knownHost: Make the .ssh directory be owned by the user, not root.
   1556 
   1557  -- Joey Hess <id@joeyh.name>  Thu, 12 Feb 2015 12:36:26 -0400
   1558 
   1559 propellor (2.0.0) unstable; urgency=medium
   1560 
   1561   * Property has been converted to a GADT, and will be Property NoInfo
   1562     or Property HasInfo.
   1563     This was done to make sure that ensureProperty is only used on
   1564     properties that do not have Info.
   1565     Transition guide:
   1566     - Change all "Property" to "Property NoInfo" or "Property HasInfo"
   1567       (The compiler can tell you if you got it wrong!)
   1568     - To construct a RevertableProperty, it is useful to use the new
   1569       (<!>) operator
   1570     - Constructing a list of properties can be problimatic, since
   1571       Property NoInto and Property HasInfo are different types and cannot
   1572       appear in the same list. To deal with this, "props" has been added,
   1573       and can built up a list of properties of different types,
   1574       using the same (&) and (!) operators that are used to build
   1575       up a host's properties.
   1576   * Add descriptions of how to set missing fields to --list-fields output.
   1577   * Properties now form a tree, instead of the flat list used before.
   1578     This includes the properties used inside a container.
   1579   * Fix info propagation from fallback combinator's second Property.
   1580   * Added systemd configuration properties.
   1581   * Added journald configuration properties.
   1582   * Added more network interface configuration properties.
   1583   * Implemented OS.preserveNetwork.
   1584 
   1585  -- Joey Hess <id@joeyh.name>  Sun, 25 Jan 2015 15:23:08 -0400
   1586 
   1587 propellor (1.3.2) unstable; urgency=medium
   1588 
   1589   * SSHFP records are also generated for CNAMES of hosts.
   1590   * Merge Utiity modules from git-annex.
   1591   * Ignore bogus DNS when spinning the local host.
   1592 
   1593  -- Joey Hess <id@joeyh.name>  Thu, 15 Jan 2015 14:02:07 -0400
   1594 
   1595 propellor (1.3.1) unstable; urgency=medium
   1596 
   1597   * Fix bug that prevented deploying ssh host keys when the file for the
   1598     key didn't already exist.
   1599   * DNS records for hosts with known ssh public keys now automatically
   1600     include SSHFP records.
   1601 
   1602  -- Joey Hess <id@joeyh.name>  Sun, 04 Jan 2015 19:51:34 -0400
   1603 
   1604 propellor (1.3.0) unstable; urgency=medium
   1605 
   1606   * --spin checks if the DNS matches any configured IP address property
   1607     of the host, and if not, sshes to the host by IP address.
   1608   * Detect #774376 and refuse to use docker if the system is so broken
   1609     that docker exec doesn't enter a chroot.
   1610   * Update intermediary propellor in --spin --via
   1611   * Added support for DNSSEC.
   1612   * Ssh.hostKey and Ssh.hostKeys no longer install public keys from
   1613     the privdata. Instead, the public keys are included in the
   1614     configuration. (API change)
   1615   * Ssh.hostKeys now removes any host keys of types that the host is not
   1616     configured to have.
   1617   * sshPubKey is renamed to Ssh.pubKey, and has an added SshKeyType
   1618     parameter. (API change)
   1619   * CloudAtCost.deCruft no longer forces randomHostKeys.
   1620   * Fix build with process 1.2.1.0.
   1621 
   1622  -- Joey Hess <id@joeyh.name>  Sun, 04 Jan 2015 17:17:44 -0400
   1623 
   1624 propellor (1.2.2) unstable; urgency=medium
   1625 
   1626   * Revert ensureProperty warning message, too many false positives in places
   1627     where Info is correctly propagated. Better approach needed.
   1628 
   1629  -- Joey Hess <id@joeyh.name>  Sun, 21 Dec 2014 21:41:11 -0400
   1630 
   1631 propellor (1.2.1) unstable; urgency=medium
   1632 
   1633   * Added CryptPassword to PrivDataField, for password hashes as produced 
   1634     by crypt(3).
   1635   * User.hasPassword and User.hasSomePassword will now use either
   1636     a CryptPassword or a Password from privdata, depending on which is set.
   1637 
   1638  -- Joey Hess <id@joeyh.name>  Wed, 17 Dec 2014 16:30:44 -0400
   1639 
   1640 propellor (1.2.0) unstable; urgency=medium
   1641 
   1642   * Display a warning when ensureProperty is used on a property which has
   1643     Info and is so prevented from propigating it.
   1644   * Removed boolProperty; instead the new toResult can be used. (API change)
   1645   * Include Propellor.Property.OS, which was accidentially left out of the
   1646     cabal file in the last release.
   1647   * Fix Apache.siteEnabled to update the config file and reload apache when
   1648     configuration has changed.
   1649 
   1650  -- Joey Hess <id@joeyh.name>  Tue, 09 Dec 2014 00:05:09 -0400
   1651 
   1652 propellor (1.1.0) unstable; urgency=medium
   1653 
   1654   * --spin target --via relay causes propellor to bounce through an
   1655     intermediate relay host, which handles any necessary uploads
   1656     when provisioning the target host.
   1657   * --spin can be passed multiple hosts, and it will provision each host
   1658     in turn.
   1659   * Add --merge, to combine multiple --spin commits into a single, more useful
   1660     commit.
   1661   * Hostname parameters not containing dots are looked up in the DNS to
   1662     find the full hostname.
   1663   * propellor --spin can now deploy propellor to hosts that do not have 
   1664     git, ghc, or apt-get. This is accomplished by uploading a fairly
   1665     portable precompiled tarball of propellor.
   1666   * Propellor.Property.OS contains properties that can be used to do a clean
   1667     reinstall of the OS of an existing host. This can be used, for example,
   1668     to do an in-place conversion from Fedora to Debian.
   1669     This is experimental; use with caution!
   1670   * Added group-related properties. Thanks, Félix Sipma.
   1671   * Added Git.barerepo. Thanks, Félix Sipma.
   1672   * Added Grub.installed and Grub.boots properties.
   1673   * New HostContext can be specified when a PrivData value varies per host.
   1674   * hasSomePassword and hasPassword now default to using HostContext.
   1675     To specify a different context, use hasSomePassword' and
   1676     hasPassword' (API change)
   1677   * hasSomePassword and hasPassword now make sure shadow passwords are enabled.
   1678   * cron.runPropellor now runs propellor, rather than using its Makefile.
   1679     This is more robust.
   1680   * propellor.debug can be set in the git config to enable more persistent
   1681     debugging output.
   1682   * Run apt-cache policy with LANG=C so it works on other locales.
   1683   * endAction can be used to register an action to run once propellor
   1684     has successfully run on a host.
   1685 
   1686  -- Joey Hess <id@joeyh.name>  Sun, 07 Dec 2014 15:23:59 -0400
   1687 
   1688 propellor (1.0.0) unstable; urgency=medium
   1689 
   1690   * propellor --spin can now be used to update remote hosts, without
   1691     any central git repository needed. The central git repository is
   1692     still useful for running propellor from cron, but this simplifies
   1693     getting started with propellor, and allows for more ad-hoc usage.
   1694   * The git repo url, if any, is updated whenever propellor --spin is used.
   1695   * Added prosody module, contributed by Félix Sipma.
   1696   * Can be used to configure tor hidden services. Thanks, Félix Sipma.
   1697   * When multiple gpg keys are added, ensure that the privdata file
   1698     can be decrypted by all of them.
   1699   * Convert GpgKeyId to newtype. (API change)
   1700   * DigitalOcean.distroKernel property now reboots into the distribution
   1701     kernel when necessary.
   1702   * Avoid outputting color setting sequences when not run on a terminal.
   1703   * Docker code simplified by using `docker exec`; needs docker 1.3.1.
   1704   * Docker containers are now a separate data type, cannot be included
   1705     in the main host list, and are instead passed to
   1706     Docker.docked. (API change)
   1707   * Added support for using debootstrap from propellor.
   1708   * Propellor can now be used to provision chroots.
   1709   * systemd-nspawn containers can now be managed by propellor, very similar
   1710     to its handling of docker containers.
   1711   * Debian package will be maintained by Gergely Nagy.
   1712 
   1713  -- Joey Hess <id@joeyh.name>  Fri, 21 Nov 2014 20:58:02 -0400
   1714 
   1715 propellor (0.9.2) unstable; urgency=medium
   1716 
   1717   * Added nginx module, contributed by Félix Sipma.
   1718   * Added firewall module, contributed by Arnaud Bailly.
   1719   * Apache: Fix daemon reload when enabling a new module or site.
   1720   * Docker: Stop using docker.io; that was a compat symlink in
   1721     the Debian package which has been removed in docker.io 1.3.1~dfsg1-2.
   1722     Closes: #769452
   1723   * Orphaned the Debian package, as I am retiring from Debian.
   1724 
   1725  -- Joey Hess <joeyh@debian.org>  Sat, 08 Nov 2014 15:57:36 -0400
   1726 
   1727 propellor (0.9.1) unstable; urgency=medium
   1728 
   1729   * Docker: Add ability to control when containers restart.
   1730   * Docker: Default to always restarting containers, so they come back 
   1731     up after reboots and docker daemon upgrades. (API change)
   1732   * Fix loop when a docker host that does not exist was docked.
   1733 
   1734  -- Joey Hess <joeyh@debian.org>  Fri, 24 Oct 2014 09:57:31 -0400
   1735 
   1736 propellor (0.9.0) unstable; urgency=medium
   1737 
   1738   * Avoid encoding the current stable suite in propellor's code,
   1739     since that poses a difficult transition around the release,
   1740     and can easily be wrong if an older version of propellor is used.
   1741     Instead, the os property for a stable system includes the suite name
   1742     to use, eg Stable "wheezy".
   1743   * stdSourcesList uses the stable suite name, to avoid unwanted
   1744     immediate upgrades to the next stable release. (API change)
   1745   * debCdn switched from cdn.debian.net to http.debian.net, which seems to be
   1746     better managed now.
   1747   * Docker: Avoid committing container every time it's started up.
   1748 
   1749  -- Joey Hess <joeyh@debian.org>  Fri, 10 Oct 2014 11:37:45 -0400
   1750 
   1751 propellor (0.8.3) unstable; urgency=medium
   1752 
   1753   * The Debian package now includes a single-revision git repository in
   1754     /usr/src/propellor/, and ~/.propellor/ is set up to use this repository as
   1755     its origin remote. This avoids relying on the security of the github
   1756     repository when using the Debian package.
   1757   * The /usr/bin/propellor wrapper will warn when ~/.propellor/ is out of date
   1758     and a newer version is available, after which git merge upstream/master
   1759     can be run to merge it.
   1760   * Included the config.hs symlink to config-simple.hs in the cabal and Debian
   1761     packages.
   1762 
   1763  -- Joey Hess <joeyh@debian.org>  Fri, 22 Aug 2014 13:02:01 -0400
   1764 
   1765 propellor (0.8.2) unstable; urgency=medium
   1766 
   1767   * Fix bug in File.containsLines that caused lines that were already in the
   1768     file to sometimes be appended to the end.
   1769   * Hostname.sane also configures /etc/mailname.
   1770   * Fixed Postfix.satellite to really configure relayhost = smtp.domain.
   1771   * Avoid reconfiguring postfix unncessarily when it already has a relayhost.
   1772   * Deal with apache 2.4's change in the name of site-available config files.
   1773   * Hostname aliases can now be used in several places, including --spin
   1774     and Ssh.knownHost.
   1775 
   1776  -- Joey Hess <joeyh@debian.org>  Mon, 04 Aug 2014 01:12:19 -0400
   1777 
   1778 propellor (0.8.1) unstable; urgency=medium
   1779 
   1780   * Run apt-get update in initial bootstrap.
   1781   * --list-fields now includes a table of fields that are not currently set,
   1782     but would be used if they got set.
   1783   * Remove .gitignore from cabal file list, to avoid build failure on Debian.
   1784     Closes: #754334
   1785 
   1786  -- Joey Hess <joeyh@debian.org>  Wed, 09 Jul 2014 22:11:31 -0400
   1787 
   1788 propellor (0.8.0) unstable; urgency=medium
   1789 
   1790   * Completely reworked privdata storage. There is now a single file,
   1791     and each host is sent only the privdata that its Properties actually use.
   1792 
   1793     To transition existing privdata, run propellor against a host and
   1794     watch out for the red failure messages, and run the suggested commands
   1795     to store the privdata using the new storage scheme. You may find
   1796     it useful to run the old version of propellor to extract data from the old
   1797     privdata files during this migration.
   1798 
   1799     Several properties that use privdata now require a context to be
   1800     specified. If in doubt, you can use anyContext, or
   1801     Context "hostname.example.com"
   1802 
   1803   * Add --edit to edit a privdata value in $EDITOR.
   1804   * Add --list-fields to list all currently set privdata fields, along with
   1805     the hosts that use them.
   1806   * Fix randomHostKeys property to run openssh-server's postinst in a
   1807     non-failing way.
   1808   * Hostname.sane now cleans up the 127.0.0.1 localhost line in /etc/hosts,
   1809     to avoid eg, apache complaining "Could not reliably determine the
   1810     server's fully qualified domain name".
   1811 
   1812  -- Joey Hess <joeyh@debian.org>  Sun, 06 Jul 2014 18:28:08 -0400
   1813 
   1814 propellor (0.7.0) unstable; urgency=medium
   1815 
   1816   * combineProperties no longer stops when a property fails; now it continues
   1817     trying to satisfy all properties on the list before propigating the
   1818     failure.
   1819   * Attr is renamed to Info. (API change)
   1820   * Renamed wrapper to propellor to make cabal installation of propellor work.
   1821   * When git gpg signature of a fetched git branch cannot be verified,
   1822     propellor will now continue running, but without merging in that branch.
   1823 
   1824  -- Joey Hess <joeyh@debian.org>  Fri, 13 Jun 2014 10:06:40 -0400
   1825 
   1826 propellor (0.6.0) unstable; urgency=medium
   1827 
   1828   * Docker containers now propagate DNS attributes out to the host they're
   1829     docked in. So if a docker container sets a DNS alias, every container
   1830     it's docked in will automatically be added to a DNS round-robin,
   1831     when propellor is used to manage DNS for the domain.
   1832   * Apt.stdSourcesList no longer needs a suite to be specified. (API change)
   1833   * Added --dump to dump out a field of a host's privdata. Useful for editing
   1834     it.
   1835   * Propellor's output now includes the hostname being provisioned, or
   1836     when provisioning a docker container, the container name.
   1837 
   1838  -- Joey Hess <joeyh@debian.org>  Thu, 05 Jun 2014 17:32:14 -0400
   1839 
   1840 propellor (0.5.3) unstable; urgency=medium
   1841 
   1842   * Fix unattended-upgrades config for !stable.
   1843   * Ensure that kernel hostname is same as /etc/hostname when configuring
   1844     hostname.
   1845   * Added modules for some hosting providers (DigitalOcean, CloudAtCost).
   1846 
   1847  -- Joey Hess <joeyh@debian.org>  Thu, 29 May 2014 14:29:53 -0400
   1848 
   1849 propellor (0.5.2) unstable; urgency=medium
   1850 
   1851   * A bug that caused propellor to hang when updating a running docker
   1852     container appears to have been fixed. Note that since it affects
   1853     the propellor process that serves as "init" of docker containers,
   1854     they have to be restarted for the fix to take effect.
   1855   * Licence changed from GPL to BSD.
   1856   * A few changes to allow building Propellor on OSX. One user reports
   1857     successfully using it there.
   1858 
   1859  -- Joey Hess <joeyh@debian.org>  Sat, 17 May 2014 16:42:55 -0400
   1860 
   1861 propellor (0.5.1) unstable; urgency=medium
   1862 
   1863   * Primary DNS servers now have allow-transfer automatically populated
   1864     with the IP addresses of secondary dns servers. So, it's important
   1865     that all secondary DNS servers have an ipv4 (and/or ipv6) property
   1866     configured.
   1867   * Deal with old ssh connection caching sockets.
   1868   * Add missing build deps and deps. Closes: #745459
   1869 
   1870  -- Joey Hess <joeyh@debian.org>  Thu, 24 Apr 2014 18:09:58 -0400
   1871 
   1872 propellor (0.5.0) unstable; urgency=medium
   1873 
   1874   * Removed root domain records from SOA. Instead, use RootDomain
   1875     when calling Dns.primary. (API change)
   1876   * Dns primary and secondary properties are now revertable.
   1877   * When unattendedUpgrades is enabled on an Unstable or Testing system,
   1878     configure it to allow the upgrades.
   1879   * New website, https://propellor.branchable.com/
   1880 
   1881  -- Joey Hess <joeyh@debian.org>  Sat, 19 Apr 2014 17:38:02 -0400
   1882 
   1883 propellor (0.4.0) unstable; urgency=medium
   1884 
   1885   * Propellor can configure primary DNS servers, including generating
   1886     zone files, which is done by looking at the properties of hosts
   1887     in a domain.
   1888   * The `cname` property was renamed to `alias` as it does not always
   1889     generate CNAME in the DNS. (API change)
   1890   * Constructor of Property has changed (use `property` function instead).
   1891     (API change)
   1892   * All Property combinators now combine together their Attr settings.
   1893     So Attr settings can be made inside a propertyList, for example.
   1894   * Run all cron jobs under chronic from moreutils to avoid unnecessary
   1895     mails.
   1896 
   1897  -- Joey Hess <joeyh@debian.org>  Sat, 19 Apr 2014 02:09:56 -0400
   1898 
   1899 propellor (0.3.1) unstable; urgency=medium
   1900 
   1901   * Merge scheduler bug fix from git-annex.
   1902   * Support for provisioning hosts with ssh and gpg keys.
   1903   * Obnam support.
   1904   * Apache support.
   1905   * Postfix satellite system support.
   1906   * Properties can now be satisfied differently on different operating
   1907     systems.
   1908   * Standard apt configuration for stable now includes backports.
   1909   * Cron jobs generated by propellor use flock(1) to avoid multiple
   1910     instances running at a time.
   1911   * Add support for SSH ed25519 keys.
   1912     (Thanks, Franz Pletz.)
   1913 
   1914  -- Joey Hess <joeyh@debian.org>  Thu, 17 Apr 2014 20:07:33 -0400
   1915 
   1916 propellor (0.3.0) unstable; urgency=medium
   1917 
   1918   * ipv6to4: Ensure interface is brought up automatically on boot.
   1919   * Enabling unattended upgrades now ensures that cron is installed and
   1920     running to perform them.
   1921   * Properties can be scheduled to only be checked after a given time period.
   1922   * Fix bootstrapping of dependencies.
   1923   * Fix compilation on Debian stable.
   1924   * Include security updates in sources.list for stable and testing.
   1925   * Use ssh connection caching, especially when bootstrapping.
   1926   * Properties now run in a Propellor monad, which provides access to
   1927     attributes of the host. (API change)
   1928 
   1929  -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 01:19:05 -0400
   1930 
   1931 propellor (0.2.3) unstable; urgency=medium
   1932 
   1933   * docker: Fix laziness bug that caused running containers to be
   1934     unnecessarily stopped and committed.
   1935   * Add locking so only one propellor can run at a time on a host.
   1936   * docker: When running as effective init inside container, wait on zombies.
   1937   * docker: Added support for configuring shared volumes and linked
   1938     containers.
   1939 
   1940  -- Joey Hess <joeyh@debian.org>  Tue, 08 Apr 2014 02:07:37 -0400
   1941 
   1942 propellor (0.2.2) unstable; urgency=medium
   1943 
   1944   * Now supports provisioning docker containers with architecture/libraries
   1945     that do not match the host.
   1946   * Fixed a bug that caused file modes to be set to 600 when propellor
   1947     modified the file (did not affect newly created files).
   1948 
   1949  -- Joey Hess <joeyh@debian.org>  Fri, 04 Apr 2014 01:07:32 -0400
   1950 
   1951 propellor (0.2.1) unstable; urgency=medium
   1952 
   1953   * First release with Debian package.
   1954 
   1955  -- Joey Hess <joeyh@debian.org>  Thu, 03 Apr 2014 01:43:14 -0400
   1956 
   1957 propellor (0.2.0) unstable; urgency=low
   1958 
   1959   * Added support for provisioning Docker containers.
   1960   * Bootstrap deployment now pushes the git repo to the remote host
   1961     over ssh, securely.
   1962   * propellor --add-key configures a gpg key, and makes propellor refuse
   1963     to pull commits from git repositories not signed with that key.
   1964     This allows propellor to be securely used with public, non-encrypted
   1965     git repositories without the possibility of MITM.
   1966   * Added support for type-safe reversions. Only some properties can be
   1967     reverted; the type checker will tell you if you try something that won't
   1968     work.
   1969   * New syntactic sugar for building a list of properties, including
   1970     revertable properties.
   1971 
   1972  -- Joey Hess <joeyh@debian.org>  Wed, 02 Apr 2014 13:57:42 -0400