| Age | Commit message (Collapse) | Author |
|
* Made the PropellorRepo.hasOriginUrl property override the repository
url that --spin passes to a host.
* PropellorRepo.hasOriginUrl type changed to include HasInfo. (API change)
This commit was sponsored by Jake Vosloo on Patreon.
|
|
* When the ipv4 and ipv6 properties are used with a container, avoid
propagating the address out to the host.
* DnsInfo has been replaced with DnsInfoPropagated and
DnsInfoUnpropagated. (API change)
* Code that used fromDnsInfo . fromInfo changes to use getDnsInfo.
* addDNS takes an additional Bool parameter to control whether
the DNS info should propagate out of containers. (API change)
This commit was sponsored by Trenton Cronholm on Patreon.
|
|
My first try with a pipe was the right approach, and was almost right,
except I forgot to close the write end of the pipe, and so it was inherited
by the forked process, leading to deadlock.
|
|
With some small changes, and debugging.
|
|
This reverts commit 632137836b39462883483a621f9dd696ce1d73cc.
Still failing :( Seems that disabling buffering is not the solution.
|
|
The "fatal: Couldn't find remote ref HEAD" persists, and is intermittent
so hard to be sure but it seemed that disabling buffering earlier
avoided it. Now done first thing on start.
I was not able to find anything that reads from stdin other than
getMarked, but perhaps there is something..
|
|
* Hosts can be configured to build propellor using stack, by adding
a property:
& bootstrapWith (Robustly Stack)
* Hosts can be configured to build propellor using cabal, but using
only packages installed from the operating system. This
will work on eg Debian:
& bootstrapWith OSOnly
propellor build its config using stack. (This does not affect
how propellor is bootstrapped on a host by "propellor --spin host".)
This has not yet been tested at all! But should probably work fine.
This is based on earlier work by Arnaud Bailly, who made
Propellor.Bootstrap use stack without parameterization.
In Arnaud's patch, stack was installed using wget, but that
only worked on linux-x86_64 and was insecure. I instead chose
to use the distribution packages of stack, like is done for cabal.
Debian stack has haskell-stack now, and it's getting into many
distributions.
This commit was sponsored by Francois Marier on Patreon.
|
|
Not sure what the problem was, but it hung. Also though, I noticed that
stdin was still open when git fetch was run, so if git fetch itself
decided to read from stdin, it would mess up the protocol forwarding.
While git fetch should never read from stdin, that was reason enough to
fall back to plan B.
|
|
ref HEAD"
Tricky stdin buffering problem.
An easier fix would have been:
hSetBuffering stdin NoBuffering
But that approach is less robust; even with NoBuffering, anything that
uses hLookAhead causes 1 byte of buffering. And, any reads from stdin
before hSetBuffering would still cause the problem. Instead, I used a
bigger hammer that will always work. It involves a bit more CPU work,
but this is data that is already being fed through ssh; copying it one
more time won't cause a measurable performance impact.
This commit was sponsored by Jack Hill on Patreon.
|
|
This is using ByteString, so the handle IO discipline is irrelevant.
|
|
|
|
|
|
|
|
Renamed several utility functions along the way.
|
|
The freebsd changes caused a bootstrap of a system with no declared OS to
not work, where before it was assumed to be some debian-like system where
apt can be used. Brought back this assumption.
|
|
Rather than having the property fail when the Host has no OS defined,
I made bootstrapPropellorCommand not install deps in this situation.
The cron job will (probably) still work, unless a system upgrade causes
deps to be removed.
|
|
|
|
- Propellor bootstrapping
- Basic pkg
- Basic ZFS datasets and properties
- Simple Poudriere configuration (regular and ZFS)
- Poudriere jail creation
FIXME:
- Cron.hs: runPropellor needs the System, but hasn't yet gotten it.
Reorganizing:
- Remove FreeBSD.Process
- Move ZFS up to Property
- Add Info for Pkg.update/Pkg.upgrade
- Move FreeBSD.md to doc so it'll show up automatically.
- Merge the FreeBSD config with the other sample config.
- Use Info to check Pkg updated/upgraded and Poudriere configured.
- Warnings clean-up, move ZFS types to Propellor.Types.
- Maintainer and license statements.
|
|
Before, they could run in the background if another process was running,
and so their output wouldn't immediately be visible.
With this change, the concurrent-output layer is not used for these
interactive commands.
|
|
|
|
|
|
|
|
When spinning a remote host, we do want to rebuild propellor on it,
and this use of --continue that did a rebuild was different from all the
other uses of --continue that avoided a rebuild.
This fixes a build loop involving that special case. When --continue
SimpleRun ran a rebuild, it re-execed propellor with --continue SimpleRun,
and so would rebuild again, and re-exec again if the binary kept changing.
Backwards compatability should be ok; old versions of propellor,
when run with --serialized SimpleRun by the new version, do a buildFirst,
followed by another (redundant) buildFirst, and then run. The one redundant
buildFirst is not a problem in the upgrade scenario.
(Unfortunately, I can't rename SimpleRun to something nicer despite only
spin using it; backwards compatability does prevent that.)
|
|
|
|
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
(cherry picked from commit 9d44dcd39bb88408ed4cfc94a7b4dfa34a1b5591)
|
|
- check that we're on the branch specified in git config value
propellor.spin-branch
- check that there are no uncommitted changes if git config value
propellor.forbid-dirty-spin is true
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
(cherry picked from commit 8f374d73ae5b2bb53f82835c6d6b5c0194590006)
|
|
|
|
Force console mode when --spin calls SimpleRun
|
|
This reverts commit 2891006d9f18b9f50b7d8dfc6d32e326499913f0.
|
|
|
|
|
|
This interface will fix the current deadlock when a process is running
and the thread that ran it wants to output to the console.
The locking and buffering is not implemented yet.
|
|
Found problem.. actionMessage is blocking.
|
|
|
|
|
|
|
|
|
|
|
|
Controlling host inherits the privdata for the host it spins, and sends it
along to that host.
|
|
Much less invasive than the other implementation.
|
|
controller of other hosts.
The hard part of this is avoiding loops of controllers. To make that work,
a ControllerChain is passed to the host that's spun, and is added to the
Info of the host being spun, where the controller property can check it
to detect an avoid a loop.
That needed an expansion of the CmdLine data type. I made the new
ControlledRun only be used when there is a ControllerChain provided.
This avoids breaking backwards compatability with old propellor
deployments, as --spin still uses SimpleRun.
Note: Making an old propellor deployment be controlled by a controller
won't work until it's been updated to this commit, so it knows about
the ControlledRun parameter.
(Untested)
|
|
|
|
|
|
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.
|
|
--upload-pack to send a git push when running propellor --spin.
|
|
|
|
|
|
address.
|
|
|
|
|