summaryrefslogtreecommitdiff
path: root/morphlib/__init__.py
Commit message (Collapse)AuthorAgeFilesLines
...
* Add the new BuildGraph class including tests.Jannis Pohlmann2012-04-111-0/+1
| | | | | This class takes a source pool and computes a valid build order for the sources in this pool, if possible.
* Add SourcePool class and make Source store its morphology filenameLars Wirzenius2012-04-101-0/+1
|
* Add a Source classLars Wirzenius2012-04-101-0/+1
| | | | | | | | This will eventually replace the Blob class we are currently using. It is somewhat simpler, because the envisioned usage of Source will be different from Blob: we'll be rewriting the build ordering class, and the builder classes, in ways that simplify things, and thus a simpler Source class will hopefully suffice.
* Various small fixes to make the new update-gits work again.Jannis Pohlmann2012-04-101-0/+1
|
* Add CachedRepo class with tests.Jannis Pohlmann2012-04-091-0/+1
|
* Add a LocalRepoCache classLars Wirzenius2012-04-091-0/+1
| | | | | | | | | Jannis and I discussed a refactoring of most of morph's internals to reduce coupling and increase cohesion. This is one of the results: we'll want a couple of classes to manage locally cached git repositories. This commit adds the LocalRepoCache class to manage a the git cache directory. Later on, we'll add the CachedRepo class to represent individual repositories.
* STart a build system abstraction with autodetectionLars Wirzenius2012-03-301-0/+1
|
* morphlib: allow import morphlib to find fsutilsRichard Maw2012-03-231-0/+1
|
* Remove version numberLars Wirzenius2012-02-281-3/+0
| | | | | | We don't do releases, so having the version number in the source is misleading. If and when we start doing numbered releases, it's easy to add back. However, YAGNI and all that.
* Remove the system testing subcommands and related codeLars Wirzenius2012-02-271-1/+0
| | | | | | | | This we a proof-of-concept, and we want to explore various options of how to do this, so let's not keep the code in morph. The code also has no tests, so it is already likely to have bit-rotted. If we decide we want to, we can always resurrect it from git history.
* Create chunks, strata in cache via temporary filesLars Wirzenius2012-02-271-0/+2
| | | | | This avoids problems with files with the right names but partial content, if morph is killed in the middle of writing the file.
* 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.
* Initial work on integrate the build order work into builder.Jannis Pohlmann2012-01-191-0/+1
|
* initial version of Sourcemanager and testsRob Taylor2012-01-181-0/+1
|
* Introduce the "show-dependencies" command and BuildDependencyGraph.Jannis Pohlmann2012-01-161-1/+2
| | | | | | | | The "show-dependencies" command takes a series of build tuples and dumps the resulting dependency graph (including strata and chunks at the moment) to the standard output. It also dumps the resulting build order which is a list of groups. These groups indicate which chunks and strata can be built in parallel and are not dependent on each other.
* Add MorphologyLoader and use it in the Builder class.Jannis Pohlmann2012-01-121-0/+1
|
* add a "morph test" commandLars Wirzenius2011-12-091-0/+1
|
* Add Stopwatch class, write build times to $cache_prefix.meta.Jannis Pohlmann2011-12-061-0/+1
| | | | | | The Stopwatch class does not have unit tests yet and the build times stored in the cache for system images may be a little too fine-grained at the moment.
* Start a git module for abstracting away git operations.Lars Wirzenius2011-10-171-0/+1
|
* Add functions for creating and unpacking binary chunks.Lars Wirzenius2011-10-171-0/+1
|
* Fix GPL version sentence grammar.Lars Wirzenius2011-10-061-1/+1
|
* Add trivial CacheDir.Lars Wirzenius2011-09-291-0/+1
|
* Initial import.Lars Wirzenius2011-09-291-0/+27