summaryrefslogtreecommitdiff
path: root/without-test-modules
Commit message (Collapse)AuthorAgeFilesLines
* Move MountableImage class into morphlibJannis Pohlmann2013-02-211-0/+1
| | | | | | | This class would be pretty useful in other cases where a system image needs to be mounted and inspected. Also updates the Trebuchet plugin to use this class.
* Add morphlib module for common write extension codeLars Wirzenius2013-02-061-0/+1
|
* Add deployment pluginLars Wirzenius2013-02-061-1/+2
| | | | | | | | | | | 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.
* Make morph get its version from git.Richard Maw2013-01-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Add plugin to without-test-modules listLars Wirzenius2012-11-071-0/+1
|
* Initial non-syslinux disk image kindDaniel Silverstone2012-08-141-0/+1
| | | | | | | 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.
* Move cmd_build to a separate pluginRichard Maw2012-08-011-0/+1
| | | | | It's such a small amount of code, it's possibly not worth it, but now all commands are in plugins.
* Move BuildCommand from app into its own moduleRichard Maw2012-08-011-0/+1
| | | | | | | | morphlib.app should be for application bringup and providing command line options used by the library code. Any external plugins that refer to morphlib.app.BuildCommand will need fixing.
* Move init and minedir to branch_and_merge pluginRichard Maw2012-08-011-0/+1
| | | | | deduce_mine_directory is duplicated in the plugin and morphlib.app until all the commands are moved into the plugin.
* Move command make-patch to Trebuchet pluginRichard Maw2012-08-011-0/+1
| | | | | | | | The plugin is called trebuchet, so that if any other functionality is required from morph it has a place to go. make-patch generates a trebuchet patch, so it should go in the trebuchet plugin.
* morph: move update-gits to pluginRichard Maw2012-08-011-0/+1
| | | | This also publicizes cache_repo_and_submodules and traverse_morphs
* move show-dependencies command into a pluginRichard Maw2012-08-011-0/+1
|
* Start a tarball systembuilderLars Wirzenius2012-07-261-1/+3
| | | | | Also, rename the syslinux-disk builder plugin file to make it clear it's a system builder plugin.
* Move syslinux-disk system building into pluginLars Wirzenius2012-07-261-0/+1
|
* Fix test suiteLars Wirzenius2012-07-121-0/+1
| | | | Mea culpa. I managed to make changes without running ./check properly.
* morphlib: add artifact cache reference classRichard Maw2012-06-131-0/+1
| | | | | | | The artifact cache doesn't need to know the whole of an artifact object to be able to retrieve something from the cache, just the basename. This can be generated from the contents, or just saved itself.
* Mark plugin to not be unit testedLars Wirzenius2012-06-111-0/+1
|
* Add a preliminary sample pluginLars Wirzenius2012-06-111-0/+1
|
* morph: add make_patch commandRichard Maw2012-03-231-0/+1
|
* Refactor SystemBuilder and add helper classLars Wirzenius2012-03-021-1/+0
| | | | | | | | The helper class, Factory, has unit tests, which is why it's currently separate. It may later get integrated with BlobBuilder, or the other way around. Classes that don't have unit tests are marked out of coverage.
* Add poor man's unit tests for controller and workers.Jannis Pohlmann2012-01-251-2/+0
|
* Add controller, worker classes and a new "build-distributed" command.Jannis Pohlmann2012-01-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces four new classes: BuildController: * takes an app instance and a tempdir * allows to add BuildWorker objects * provides a build() method that takes a set of blobs and a build order that is then built by assigning work to the build workers as needed * the build() method takes care of polling the workers for their state, moving them between busy and idle states reliably, collect and print their output in a non-confusing order, and makes sure to wait for all workers to finish before processing the next group in the build order. * at this point, when waiting for one or more workers to become idle to assign them another blob to build, the controller always picks the worker that has been idling for the longest period of time. this can be changed later. BuildWorker: * base class for all worker classes * takes a name and an app instance * has a idle_since datetime property * provides a build() method that takes a Blob object and builds it in whatever way the subclasses implement it * provides a check_complete(timeout) method that checks whether the worker has finished building the blob yet or not LocalBuildWorker: * worker class for local builds that don't go through SSH * it uses morphlib.execute.Execute to run morph in a child process in build() * at the moment, this class executes "./morph" instead of "morph" as it assumes the user to run morph from its source tree. obviously, this will have to be fixed later. RemoteBuildWorker: * doesn't implement anything yet, will be used for distributing work to other machines running morph via SSH Notes: * At the moment, there is a degree of undesired redundancy when building a stratum in a worker, as this will cause the worker to rebuild all its dependencies. This will have to be fixed as it is avoidable and wastes a lot of time and processing power.
* Add builddependencygraph.py to without-test-modules.Jannis Pohlmann2012-01-191-0/+1
|
* add tester to without-test-modulesLars Wirzenius2011-12-091-0/+1
|
* Start a git module for abstracting away git operations.Lars Wirzenius2011-10-171-0/+1
|
* Initial import.Lars Wirzenius2011-09-291-0/+2