| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds a new optional field to system morphologies:
"configuration-extensions".
The deployment plugin relies heavily on code from the branch and
merge plugin. This needs to be eventually fixed by refactoring
the codebase so that the shared code is in morphlib and not in
plugins. However, doing that is beyond the scope of adding a
deployment plugin.
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Newer versions of git have changed the behaviour when cloning with
--branch=$sha1. It used to be nearly synonamous with clone then checkout.
The clone then checkout logic is different to the clone with branch
logic, since they have different behaviour with regard to the branches
that are checked out in the workspace.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The test builds a system, makes a commit to mainline, then branches
from the system and checks whether it is petrified to the exact commits
that the system was built from by checking the morphology contents and
rebuilding the system.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Branch from image takes a directory containing metadata, then creates
a branch of what the System was built from and petrifies it to when
the System was built.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Pass resolved_refs in with the key as a repo, ref pair to petrify
to the value, rather than petrifying to the current state of the ref.
Set update_working_tree to also change files in the working tree,
instead of just the index.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Applications default to logging to console, which causes unwanted
output during tests, and I thought this was tidier than allowing
tests to override the logger per-call.
|
| | |
| | |
| | |
| | | |
This returns a sorted list of possible aliases for a url.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This also involved codifying it ignoring malformed aliases.
Such behaviour was implemented before, but wasn't obvious.
The restructuring made it have a line of code of its own,
which meant it needed unit testing.
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
This is required for reproducing the morphologies that created the
artifacts.
It is possible, but expensive, to `unexpand` a url, provided your
repository aliases are the same as the morphology's, but this may
not always be the case.
|
|\ \ |
|
| | |
| | |
| | |
| | | |
No longer possible for this to happen.
|
| |/
| |
| |
| |
| |
| |
| | |
Allowing differences causes only confusion. Whether or not the 'name'
field should surive at all is up for debate: it's very useful when
seeing the contents of the morphology out of context (e.g. in
documentation or pastebins), but is that worth the extra effort?
|
|\ \
| |/
|/| |
|
|/
|
|
|
| |
This is equivalent to using yaml.safe_load(), but lets us customise
how yaml is parsed.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For Morph to work it's necessary for the staging area to contain a
full FHS heirarchy. However, if the staging area is empty we want to
give the user an obvious error. Previously we would say something like:
OSError: [Errno 2] No such file or directory: '/tmp/ccache'
This makes it seem like the problem is with ccache. With this patch,
we will instead get as far as:
/bin/sh: No such file or directory
This should make the real problem clearer.
Also, aborting while trying to mount the ccache directory causes the
/proc and /dev/shm mounts to persist which is fixed by this patch.
|
| | |
|
|\ \
| |/ |
|
| |\
| | |
| | |
| | | |
Merge commit fixes up a copyright year and removes EOL whitespace
|
| | |
| | |
| | |
| | |
| | | |
This can go away when we have made a release with yaml in it, and its
staging filler.
|
| | | |
|
| | | |
|
|\ \ \
| |/ /
| | /
| |/
|/| |
|
| |\
|/ /
| |
| | |
Reviewed-By: Lars Wirzenius (on IRC)
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current versions of build-essential in the Baserock morphologies
don't contain distcc, but Morph tries to use distcc anyway. Since
useful operation of distcc requires setting up a distcc network,
there's no reason for it to be on by default.
This change fixes bootstrap, and means that users of the
build-essential staging filler no longer have to set no-distcc=true
manually.
In the future, cliapp will grow automatic boolean negation, which
will allow us to turn this setting into a 'distcc' setting that
defaults to false rather than the current rather ugly double negative.
|
|
|
|
|
|
| |
If __file__ has no directory in it, dirname will return the empty
string, which in turn will break subprocess.Popen. The fix is to
use '.' instead of the empty string.
|
|\ |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Invalid text changed to be something that doesn't parse as YAML
either, and catch convert the YAMLError to the expected exception.
Ideally there wouldn't be any `#pragma: no cover`s, but I could not
trigger these code paths.
|
| |
| |
| |
| |
| | |
Tests are currently broken, one because invalid JSON
can be valid YAML, and coverage is incomplete.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This way everyone who needs json or an OrderedDict doesn't have to worry
about it.
Currently morph2 is the only one that needs this complex behaviour,
other users of the json module don't need object_pairs_hook.
|
|\ \ |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This can be used to rebuild an artifact with the exact same version
of morph. Eventually there may be a tool to do this, but it allows
for expert diagnosis until that point.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When morph is built, it writes various version information from git
into morphlib.
When morphlib is loaded it attempts to read this version information.
if it cannot be found then it checks whether morphlib is being run from
inside a git checkout, if it is then it reads the information that way.
If it isn't in a git checkout then it raises an exception as builds made
in such a fashion are not reproducible.
The git version information retained is:
1. The output of git describe
This is a relatively human-friendly way of knowing a version and
gives a reasonably short output string.
This will end with `-unreproducible` if there were uncommitted changes.
2. The commit sha1, so the exact part of Morph's history can be found
3. The tree sha1, so if the branch has been rebased rather than
merged such that the commit is lost, you may still be able to find
it, though it requires a git-wizard to check it out
4. The branch of morph, so that it's easier to see if the
Further possible changes to increase reproducibility include:
1. Not allowing `python setup.py build` if there are uncommitted changes
2. Failing to run with uncommitted changes (recommended against since it
will just annoy developers who are making changes to morph, and make
them commit just to shut it up, then destroy the history later)
Requiring an extra flag to build in this case may work better.
3. Reading the uncommitted changes into a tree object and including
that would allow it to be recovered if the tree was later committed.
4. Checking whether the commit has been pushed upstream as well.
Too annoying to work.
|
|\ \
| | |
| | |
| | |
| | |
| | | |
'origin/baserock/richardmaw/temp-build-ref-commit-fix'
Broke a long line to make test suite pass.
|
| | |
| | |
| | |
| | | |
This was the only case found which was fixed by the previous commit.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before it would determine which files are changed by comparing your
working tree to
This gets even weirder, since it's effectively comparing your working
tree, the last commit on the temporary build ref, and the last commit
of your HEAD, so committing a change to remove a file isn't noticed,
because it was in the temporary build branch.
It could also cause a strange case of a file being both added and
untracked.
Now the working tree and HEAD are compared, and committed on top of
the temporary build ref.
Better handling of the status output is still required, a deleted
file is treated identically to an added one if it is only removed
in the index.
It would also be nicer to keep the user's index, since they may have
added or removed files from it.
|
| | |
|
|\ \
| |/
|/|
| | |
Fixed long lines in scripts/bootstrap while merging.
|
| |
| |
| |
| |
| |
| |
| |
| | |
After installing libraries into the staging area, we need to run
ldconfig to update the shared library cache.
I presume that this wasn't required until now because the cache in
the staging filler tarball was enough.
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
This functionality, of building a build-essential staging filler
using host tools rather than a staging chroot, will eventually be
done by Morph (and best of all, it will be done automatically when
changes are made to the build-essential stratum).
The script doesn't handle fetching source, so to use the script, you
require a base directory which must contain a 'gits' subdirectory
with a checkout of each chunk. Beyond this the build process is
handled by the script, except for installing fhs-dirs (which
requires root priviliges and must be done manually).
|
|
|
|
|
|
|
| |
This script has not worked for some time, and is not particularly
useful ('rm -r' can do pretty much the same thing).
Reviewed-By: Richard Maw <richard.maw@codethink.co.u>
|
|\ |
|