| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Mutliple issues here:
* tarfile can throw IOErrors in addition to OSErrors, and both may need
the filename attribute set
* tarfile needs to be told to raise exceptions for errors, rather than
ignoring them (errorlevel=1 to the constructor)
* tarfile needs to be told to raise exceptions for tar format corruptions
and not just I/O errors (errorlevel=2)
* the exception should be re-raised with a plain "raise" instead of "raise e"
to preserve the stack trace correctly; it's OK to modify the exception
before re-raising it
Also moved the creating of tf to the rest of the code that sets it up,
for clarity.
I've tested these changes manually, but not written a test case,
since a test case is tricky to write for this.
Originally found by Joe Burmeister.
|
|\ \
| |/
|/|
| |
| | |
Made some tweaks to fix a markup problem and to clarify the wording
of what chunks are and to add a link to the baserock.com site.
|
|/ |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Doing this rather than creating the system branches in the current working
directory allows "morph branch" and "morph checkout" to be run anywhere in
the workspace (e.g. in a different branch).
This commit also adds two tests to verify that new branches are always
created in the toplevel workspace directory.
|
|/
|
|
|
|
|
|
| |
This commit introduces a new "morph show-branch-root" command to print
the repository that the user branched off from with "morph branch" or
that he or she checked out with "morph checkout".
Also add tests for this new command.
|
|
|
|
|
| |
Fixes previous commit where multiple hidden directories need to be
removed.
|
|
|
|
| |
Fixes test failures after merging previous branch
|
| |
|
|\
| |
| |
| |
| | |
Conflicts:
morphlib/plugins/branch_and_merge_plugin.py
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is complementary to adding a repository parameter to the "morph
checkout" command. It allows to branch off arbitrary repositories
rather than always branching off baserock:morphs.
All affected tests are updated to provide and work with this new
parameter.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
With this commit, "morph branch" and "morph checkout" remember the
repository that was branched off from (the "branch root") in a special
file called
$workspace/$branch/.morph-system-branch/branch-root
This information is later used when checking out individual
repositories using "morph edit" instead of using the previously
hard-coded "$workspace/$branch/morphs" repository as the branch
root.
This commit also updates the "morph merge" code to handle repositories
specified with aliases or as full URLs in the same way "morph checkout"
does.
All affected tests are updated.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of hard-coding "baserock:morphs" as the repository we check out
from, we want to allow people to check out from arbitrary repositories
with system and stratum morphologies.
This commit adds a mandatory repository parameter to "morph checkout".
This parameter can either be an aliased repo, e.g. baserock:morphs, or
a full repo URL such as ssh://gitano@git.baserock.org/baserock/morphs.
When cloning the actual repository into a local directory, the following
happens:
For alias repos baserock:morphs and baserock:foo/bar, the repositories
would be cloned into the directories
$workspace/$branch/baserock:morphs
and
$workspace/$branch/baserock:foo/bar.
For repos specified using full URLs, the scheme and .git suffix (if
present) are stripped off. The above ssh example would be cloned into
the following directory:
$workspace/$branch/gitano@git.baserock.org/baserock/morphs
This commit also adjusts all affected tests and adds a new test to
verify that checking out from full repo URLs works as expected.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There are mainly three situations to deal with:
1. We are outside a workspace and cannot deduce the system branch.
2. We are inside a workspace and inside a branch. We can detect this
by walking up from the working directory towards the workspace.
If we find a .morph-system-branch in one of the parent directories,
we know the branch name. If we don't find one, something is wrong.
3. We are inside a workspace but outside a branch (or partially into
a branch, e.g. in foo/ where the branch is foo/bar). We can deduce
the branch if we recurse into subdirectories to find a
.morph-system-branch directory. Care needs to be taken to not
recurse infinitely. We may also not recurse if there are multiple
subdirectories as these could belong to two different branches.
This commit makes "morph show-system-branch" work in all of the above
scenarios. It also adds tests for all of them.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The commands "morph branch" and "morph checkout" now create a
.morph-system-branch directory for each system branch. This is the
per-branch analogue to the .morph directory for a workspace.
The .morph-system-branch directories make it possible to store
state and other information for system branches. They also make
deducing the current system branch more robust and clear.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Mine may be a nice metaphor but it is not very intuitive. Hence, this
commit renames "mine" to "workspace". This affects not just the branch
and merge plugin (the only code that changes) but also documentation
and tests, which are updated along with the code in this commit.
I decided to omit the "dir" suffix in the command because I think
people know well that a workspace will be a directory in this case
and that allows us to refer to this concept with one word ("workspace")
instead of two words ("workspace directory").
|
| |
| |
| |
| |
| | |
Until now, morph failed when the mine directory did not exist. However,
there is no good reason why it can't attempt to create it.
|
| | |
|
| |
| |
| |
| | |
Helps avoid parameter-list-blindness when reading the testcases
|
| |
| |
| |
| |
| | |
This allows a few more diagnostics of what went wrong when the error
is inside the baserock:morphs repository.
|
| |
| |
| |
| |
| | |
This is mostly useful for diagnosing Morph bugs. Currently empty strata
just cause confusing errors when building systems.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This removes the requirement that all strata must be in the same
repo as the system morphology.
Both the system "strata" field and the stratum "build-depends" field
are affected.
|
|/
|
|
| |
Rename "sources" field of stratum morphologies to "chunks".
|
| |
|
|\ |
|
| |
| |
| |
| |
| | |
This provides much better performance in cases where most of the
repos do not have a .morph included.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The cost of one git ls-tree call is roughly the same as one
git cat-file call. Therefore, when autodetecting the build system,
it is much faster to list the tree once and then search for the
required files than to call git cat-file for every possible one.
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
| |
1) print message if no unused gits were found
2) avoid eating baserock:morphs repository every time
|
|
|
|
|
|
|
| |
This removes local repository clones that are not referenced by anything
in the baserock:morphs repository.
It would be useful for Morph to do this itself in the long term.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all but the latest build of a chunk from the cache,
which can free up a significant amount of disk space for large
chunks.
Ideally Morph should handle cleaning up the artifact cache itself,
there are some ideas floating around including using git to store
the artifacts; either way, reference counting items in the cache
and only requiring the user to manually delete the final system
images when they are no longer required is probably the best way.
|
|
|
|
|
| |
This is required to bootstrap on Fedora, where debootstrap fails to
autodetect the architecture due to dpkg not being present.
|
|
|
|
|
|
|
|
| |
The squeeze version of coverage.py seems to have problems with methods
that consist of a single pass statement. This patch replaces those
statements with placeholder docstrings so that ./check passes on squeeze.
Reviewed-By: Daniel Silverstone (on irc)
|
|\ |
|
|/
|
|
|
|
|
| |
Sanitise the git repo aliases to use git.baserock.org instead of the
old roadtrain.codethink.co.uk hostname.
This will cause a re-fetch of gits, unless you fix up your cache first
|
|\
| |
| |
| | |
git://git.baserock.org/baserock/morph
|
| |
| |
| |
| |
| | |
The Disk image builder can work on non-x86 and as such we should
let it test anywhere.
|
| |
| |
| |
| |
| |
| | |
Since the vast majority of the SyslinuxDiskBuilder functionality is now
in morphlib.builder2.DiskImageBuilder, inherit from that and override
the bootloader related methods so that extlinux is correctly installed.
|
|/
|
|
|
|
|
| |
This adds a disk system image kind which does everything the syslinux-disk
one does, but without syslinux. It deliberately carries stubbed bootloader
operations so that we can later make syslinux-disk inherit from this one
and override it.
|
|
|
|
|
|
|
|
| |
This is needed to support Colin Walters's suggested build API
(http://people.gnome.org/~walters/docs/build-api.txt). In fact,
it's all we need to support it, I think.
Reviewed-By: Richard Maw (on irc)
|
|\
| |
| |
| | |
Reviewed-By: Richard Maw (on irc)
|