| Age | Commit message (Collapse) | Author |
|
* Properties that run an arbitrary command, such as cmdProperty
and scriptProperty are converted to use UncheckedProperty, since
they cannot tell on their own if the command truely made a change or not.
(API Change)
Transition guide:
- When GHC complains about an UncheckedProperty, add:
`assume` MadeChange
- Since these properties used to always return MadeChange, that
change is always safe to make.
- Or, if you know that the command should modifiy a file, use:
`changesFile` filename
* A few properties have had their Result improved, for example
Apt.buldDep and Apt.autoRemove now check if a change was made or not.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RevertableProperty used to be assumed to contain info, but this is now made
explicit, with RevertableProperty HasInfo or RevertableProperty NoInfo.
Transition guide:
- If you define a RevertableProperty, expect some type check
failures like: "Expecting one more argument to ‘RevertableProperty’".
- Change it to "RevertableProperty NoInfo"
- The compiler will then tell you if it needs "HasInfo" instead.
- If you have code that uses the RevertableProperty constructor
that fails to type check, use the more powerful <!> operator
|
|
chroot, and won't affect the hostname of the host system.
|
|
|
|
* Where before debootstrapped and bootstrapped took a System parameter,
the os property should now be added to the Chroot.
* Follow-on change to Systemd.container, which now takes a System parameter.
Two motivations for this change:
1. When using ChrootTarball, there may be no particular System that
makes sense for the contents of the tarball, so don't force the user to
specify one.
2. When creating a chroot for a disk image with the same properties
as an existing Host, using hostProperties host to get them, this
allows inheriting the os property from the host, and doesn't require
it to be redundantly passed to Chroot.debootstrapped.
|
|
|
|
|
|
This extracts a minimal tarball into a target directory.
(cherry picked from commit 33ac6c1c4bb2581d6f5a27254e52956e5a257326)
|
|
|
|
So other ways to bootstrap chroots can easily be added in separate modules.
(API change)
|
|
|
|
|
|
This involved some code changes, including some renaming of instance
methods. (ABI change)
|
|
Privdata that uses HostContext inside a container will now have the name of
the container as its context, rather than the name of the host(s) where the
container is used. This allows eg, having different passwords for a user in
different containers.
Note that previously, propellor would prompt using
the container name as the context, but not actually use privdata using that
context; so this is a bug fix.
I don't entirely like the implementation; I had to put the code to change
the context in PropAccum, and it's not generalized past PrivInfo.
|
|
Convert Info to use Data.Dynamic, so properties can export and consume
info of any type that is Typeable and a Monoid, including data types
private to a module. (API change)
Thanks to Joachim Breitner for the idea.
|
|
|
|
While needed for chroot provisioning, it confuses system when
systemd-nspawn runs it inside the container.
|
|
|
|
Propellor.Property.Cmd, so they are available for use in constricting your own Properties when using propellor as a library.
Several imports of Utility.SafeCommand now redundant.
|
|
* Property has been converted to a GADT, and will be Property NoInfo
or Property HasInfo.
This was done to make sure that ensureProperty is only used on
properties that do not have Info.
Transition guide:
- Change all "Property" to "Property NoInfo" or "Property WithInfo"
(The compiler can tell you if you got it wrong!)
- To construct a RevertableProperty, it is useful to use the new
(<!>) operator
- Constructing a list of properties can be problimatic, since
Property NoInto and Property WithInfo are different types and cannot
appear in the same list. To deal with this, "props" has been added,
and can built up a list of properties of different types,
using the same (&) and (!) operators that are used to build
up a host's properties.
|
|
Not yet used
|
|
|
|
|
|
This is more general; it doesn't need to contain a Host.
It would, for example, be possible to make Property itself be an instance
of PropAccum.
|
|
Properties now form a tree, instead of the flat list used before.
This simplifies propigation of Info from the Properties used inside a
container to the outer host; the Property that docks the container on the
host can just have as child properties all the inner Properties, and their
Info can then be gathered recursively. (Although in practice it still needs
to be filtered, since not all Info should propigate out of a container.)
Note that there is no change to how Properties are actually satisfied.
Just because a Property lists some child properties, this does not mean
they always have their propertySatisfy actions run. It's still up to the
parent property to run those actions.
That's necessary so that a container's properties can be satisfied inside
it, not outside. It also allows property combinators to
add the combined Properties to their childProperties list, even if,
like onChange, they don't always run the child properties at all.
Testing: I tested that the exact same Info is calculated before and after
this change, for every Host in my config file.
|
|
where Info is correctly propigated. Better approach needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also, lost the systemd-nspawn parameters; I'll do that some other way.
|
|
Need to propigate the full container info, not the subset used in chroot
deployment.
|
|
|
|
wow, that was suprisingly trivial!
|
|
|
|
|
|
|
|
|
|
|
|
factored out info up-propigation code rom Docker
|