| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
* Added Monoid instances for Property and RevertableProperty.
* Removed applyToList. Instead, use mconcat. (API change)
Eg, if you had: applyToList accountFor [User "joey", User "root"]
use instead: mconcat (map accountFor [User "joey", User "root"])
mappend x y is basically the same as x `before` y. In particular, if x
fails to be ensured, it won't ensure y. This seems to make sense, since
applyToList had that behavior, and so does the Monoid for Propellor
Result. The alternative would be to try to ensure both and combine
the results. However, I don't see any reason to do it that way.
It would be nice if the description of both properties were displayed when
ensuring the combination. But then, it would need to display eg:
ensuring x..ok
ensuring y..failed
ensuring x and ensuring y..failed
Without a way to get rid of that redundant last line, I don't want to do
that.
Note that the haddocks for the Monoid instances need a really wide screen
to display! This is IMHO an infelicity in haddock, and I can't do anything
about it really.
This commit was sponsored by Fernando Jimenez on Patreon.
|
|
* Property types changed to use a Maybe (Propellor Result). (API change)
* When Nothing needs to be done to ensure a property, propellor
will avoid displaying its description at all. The doNothing property
is an example of such a property.
This is mostly in preparation for Monoid instances for Property types, but
is's also nice that anything that uses doNothing will avoid printing out
any message at all. At least, I think it probably is. It might potentially
be confusing for something that sometimes takes an action and sometimes
resolves to doNothing and in either case has a description set to not
always show the description. If this did turn out to be confusing, the
change to doNothing could be reverted.
This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
|
|
* DiskImage building properties used to propagate DNS info out from
the chroot used to build the disk image to the Host. That is no longer
done, since that chroot only exists as a side effect of the disk image
creation and servers will not be running in it.
* The IsInfo types class's propagateInfo function changed to use a
PropagateInfo data type. (API change)
This is particularly important when using hostChroot, since the host could
well have DNS settings then.
This commit was sponsored by Ole-Morten Duesund on Patreon.
|
|
As originally seen in my slides at Linux.Conf.Au 2017 in January.
Now that it's not vaporware, it allows one Host to build a disk image that
has all the properties of another Host.
It was easier than I thought to implement this! As expected, Info
propagation was slightly tricky. Also, I originally had a lot of machinery
to try to use Info to detect infinitely nested chroot loops. But, my
machinery didn't work, and when I tested it, ghc did a much better job,
causing a "warning: <<loop>>" message to be output instead of such a
property using infinite disk space.
This commit was sponsored by Bruno BEAUFILS on Patreon.
|
|
This will allow for different Chroots that propigate info differently.
hostChroot will use this.
This commit was sponsored by Peter Hogg on Patreon.
|
|
It's not used by propellor any longer. Has not been used for a long time
actually.
|
|
"make" now only builds propellor, does not run it.
Note that propellor 1.0.0 and earlier relied on this target for the
Cron.runPropellor property's cronjob to work, so upgrading directly to this
version from 1.0.0 would break that cron job.
(Debian has 0.9.1 in stable, and 3.2.3 will be in the next stable
release. Upgrading between Debian releases is supposed to be done
without skipping a release, so that's ok.)
|
|
|
|
|
|
|
|
* The github mirror of propellor's git repository has been removed,
since github's terms of service has started imposing unwanted licensing
requirements.
* propellor --init: The option to clone propellor's git repository
used to use the github mirror, and has been changed to use a different
mirror.
|
|
|
|
* Removed fromPort (use val instead). (API change)
* Removed several Show instances that were only used for generating
configuration, replacing with ConfigurableValue instances. (API change)
It's somewhat annoying that IsInfo requires a Show instance.
That's needed to be able to display Info in ghci, but some non-derived Show
instances had to be kept to support that.
|
|
* Added ConfigurableValue type class, for values that can be used in a
config file, or to otherwise configure a program.
* The val function converts such values to String.
This was motivated by the bug caused by type Port = Int changing to
newtype Port = Port Int deriving Show
After that change, some things that used show port to generate config
files were broken. By using the ConfigurableValue type class instead,
such breakage can be prevented.
|
|
|
|
|
|
* Apt: Removed the mirrors.kernel.org line from stdSourcesList etc.
The mirror CDN has a new implementation that should avoid the problems
with httpredir that made an extra mirror sometimes be needed.
* Switch Debian CDN address to deb.debian.org.
httpredir.debian.org points to the same IPs as deb.debian.org now, so
this shouldn't change anything except to use the now preferred name.
|
|
|
|
|
|
* Arch Linux is now supported by Propellor!
Thanks to Zihao Wang for this port.
* Added Propellor.Property.Pacman for Arch's package manager.
Maintained by Zihao Wang.
* The types of some properties changed; eg from Property DebianLike
to Property (DebianLike + ArchLinux). This could require updates
to code using those properties, so is a minor API change.
|
|
* Added Apt.suiteAvailablePinned, Apt.pinnedTo.
Thanks, Sean Whitton.
* Added File.containsBlock
Thanks, Sean Whitton.
|
|
generate good filenames for config directories.
spwhitton has a branch that could use this, and there are several places
in propellor that do something ad-hoc that would have been better
implemented using this. I was not able to switch any of the existing
ad-hoc stuff, but this can be used going forward for new stuff.
This commit was sponsored by Anthony DeRobertis on Patreon.
|
|
|
|
|
|
|
|
|
|
|
|
This reverts commit fa974cfaaac31b25ae911b5e970507d0589e567b.
That broke merging from /usr/src/propellor
|
|
Hope this makes it eaiser for spwhitton.
Thought about deleting the whole debian directory from upstream, but
Propellor.Bootstrap has a not referencing debian/control and maybe there
is value in new dependencies being added to both places in tandem?
|
|
|
|
which prevented non-root users from doing anything in the chroot.
|
|
configuration in the current directory, rather than ~/.propellor/config.hs
The config,hs name now seems a bit badly chosen, propellor.hs would be less
ambiguous. To avoid accidentially running with a config.hs for something
else, the file content has to contain "Propellor".
Note that checkRepoUpToDate is only run for ~/.propellor/. I guess
propellor configs in other directories won't have been set up that way,
and it would take some changes to make that not hardcode use of
dotPropellor.
There's a new security boundary here, since running propellor looks at the
cwd, whose contents might not be user the user's control. The security
checks I added for this seem pretty good, but even if they can be bypassed,
this is not much different than `make` using the Makefile in cwd.
This commit was sponsored by Ole-Morten Duesund on Patreon.
|
|
|
|
|
|
|
|
Only a couple of the constraints were really redundant. The rest are
essential to propellor's tracking of Info propigation, so I silenced the
warning for those.
It would be better to only silence the warning for the functions with the
extra constraints, but IIRC warnings can only be silenced on an entire file
basis.
This commit was sponsored by Andreas on Patreon.
|
|
|
|
|
|
|
|
debootstrap. Thanks, mithrandi.
This commit was sponsored by Jake Vosloo on Patreon.
|
|
|
|
|
|
|
|
|
|
|
|
Instead, do nothing if the corresponding schroot config does not yet
exist.
This change is needed because I intend to introduce an additional
parameter to Sbuild.built{,For} in a subsequent commit, and it would
overcomplicate things to make that an item of Info.
|
|
|