| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
os.symlink will fail if the origin file/link already exist
Change-Id: I8175c8dce699e55c3e39e35dfd45c0c19b8bd96d
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit allows the specification of one or more strata/chunks
in a deployment entry in a cluster morphology to deploy instead of
the full system if --partial is set. These are listed in a
'partial-deploy-components' field in each deployment definition.
The components must be in the system, and this only works for
tarball or sysroot deployments. It SHOULD NOT be used when
deploying production systems, as it has a number of limitations.
Change-Id: I04ac58af57216335d9257f6620d09f18f61ea714
|
|
|
|
| |
Change-Id: I09e9b17ef2e0fb94dbf5a96dca91062d64433add
|
|
|
|
| |
Change-Id: I4e7888cbff2e4708154538f8f0a48aeaa1a8a811
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a `morph generate-manifest-csv` command which creates
a CSV manifest for a system containing license information,
upstream URL and a guess at the version of each component in a
system.
The existing `morph generate-manifest` is also renamed to
`morph generate-manifest-genivi` to improve the distinction
between the two commands which generate a manifest.
The basis of this commit was done by
Michael Drake <michael.drake@codethink.co.uk>.
Change-Id: I712de11eaa6e1564c5bae5f5f396e5e77484972f
|
|
|
|
| |
Change-Id: I501632c4d7acde06e391df3752275a3afc334ba6
|
|
|
|
|
|
|
|
|
|
| |
If a user had the wrong setting for artifact-cache-server then they
could build a system with 'morph distbuild', then be told it wasn't
built by 'morph deploy'. The logs do not show any info about which
cache server was used, so it looks like a Morph bug. This change should
make such a configuration problem much easier to spot.
Change-Id: I932ca3c5caa46990f9bcd77d75b3862f49e0dfb8
|
|
|
|
|
|
|
| |
commit-tree is usually sufficient, but I have a need to be able to
create a commit directly.
Change-Id: I80ba63eb9601aa1190554bb07522465ffb2cb5d9
|
|
|
|
| |
Change-Id: Ife3a809cbf241d8d5a283d7f010ccb5e4d7ea292
|
|
|
|
|
|
| |
It's useful to be able to use this.
Change-Id: Ib32d27ddb637f1b8ed683bdd8ec1db108529a163
|
|
|
|
| |
Change-Id: I048687305054f08b0d8e01daa1366170b3eec323
|
|
|
|
| |
Change-Id: If1b156a309236956d7a35136db35a8fd0ab3ad71
|
|
|
|
|
|
|
|
|
| |
Adds a command to get the status of all recently ran distbuilds
for a given server (e.g. Running, Finished, Failed, Cancelled),
so as to tell if a build running via distbuild-start has finished
or otherwise exited without going through the server's log files
Change-Id: I5ce9fe54ae7b1bd8fe3e0d629f615042be8827ed
|
|
|
|
|
|
|
|
|
|
|
| |
Add command for distbuild-start to build_plugin in morphlib,
and create a boolean parameter to inform the initiator whether
to disconnect the controller and leave the build running remotely.
Add distbuild-cancel command to parse currently-running distbuild
build-request IDs and cancel the one matching the given argument
Change-Id: I458a5767bb768ceb2b4d8876adf1c86075d452bd
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since commit 154a760fb884cee14c2604b8bfbe52b0e7c0d4b1
morph suports a new architecture (armv5)
This is effectivly a change in the definitions format,
as old morph doesnt recognizse this architecture and
will fail if a system with this architecture is added
to definitions
Change-Id: I2adc3a4b103b35c8ca5ec6d4034b797fd10f2485
|
|
|
|
|
|
| |
This fixes morph check.
Change-Id: I5f9c8f5e73c1976b623f9a75f97b5e9aa1887c44
|
|
|
|
|
|
|
|
| |
Do not remove this code for now as its possible that new versions
of morph build old sytems without the install-essential-files
extension
Change-Id: I5e49d0bc6baee73bedf16469d922822e76286bc1
|
|
|
|
|
|
|
| |
This is meant to add essential system files like
/etc/profile, /etc/os-release ...
Change-Id: I3d67b3a452b32205c5d3c7303d128bda80ce75de
|
|
|
|
| |
Change-Id: I1c79ce68a7a7534d36a9e83210e18a58e7b648e8
|
|
|
|
|
|
|
|
|
| |
If a `morph get-repo` command hits an error or is interrupted while the
'git clone' operation is in progress, the partial clone is left around.
When the user tries to run the command again, they hit an error saying
the directory already exists.
Change-Id: Id4bb57f2136049ede0ea900e7e359255617427ec
|
|
|
|
|
|
|
|
| |
Also add support to allow building compatible architectures on armv7
machines, as per the rationale in the comment in
_validate_architecture().
Change-Id: Ie0fe4002523f1f92f576bac8b654d4ea6fad5cf2
|
|
|
|
| |
Change-Id: I0c175649bd98067ea69d471ebe6880aac5a25598
|
|
|
|
|
|
|
|
|
|
| |
Commit bd788c7219d8b ("Implement partial builds") caused the
original_ref metadata to be lost in some cases. This meant that the
metadata for built systems would have original_ref set to a SHA1
hex string, instead of the original named ref that the system was
built from.
Change-Id: Id31654ad60b411206ccc7ee70b46f005baa209ef
|
|
|
|
| |
Change-Id: I3c4b4f687703ab665841a3527044d0f669135513
|
|
|
|
| |
Change-Id: Ibf7cf1f81998678f9354d77f52e54344294e89f7
|
|
|
|
|
|
|
| |
Calculate the build graph and find the artifact which is referred to
by the ArtifactReference which was deserialised.
Change-Id: Icbef90932979fc1a18daf0dedac16f4429f56349
|
|
|
|
|
|
|
|
|
|
|
| |
Its going to be more likely that a baserock user is more interesed
in the build log than actually the debug output from morph.
And also the intuitive option would be to use -v for this.
--verbose/-v: show build output
--debug/-d: show morph debug output
Change-Id: I1fb99034dc8680a5f168f6306724663aea33ebc5
|
|
|
|
|
|
|
| |
This check is intended for local builds, not distbuilds. Much less disk
space is needed to distbuild.
Change-Id: Iaff77805119129cbf6584de418ef97c7f1b82ad8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The nfsboot.write deployment extension has been deprecated for a while
because it's not generally useful. It's only used for deploying
distbuild nodes to a Trove, as far as I know.
We still need to support setting up a bunch of machines that boot over
NFS from a Trove. But we can do this in a special-purpose .write
extension.
The new distbuild-trove-nfsboot.write is much more efficient than
the more generic nfsboot.write: instead of treating each system
individually (thus copying an almost identical ~2GB rootfs to the Trove
once per node) it copies the system image to the Trove once, and /then/
sets up a rootfs per node.
Upgrades are now supported, although the code assumes distbuild nodes
are stateless (as they should be) so nothing special is done for
upgrades, other than checking that there is already a version of the
given system in existance. The new extension does not create an
orig/ and run/ version of each system, because there is no need when the
deployed system is stateless.
There could be further gains in efficiency, but I don't have time to do
them right now. This write extension is full of compromises, its goal is
to better support the existing users who have a Trove and a distbuild
network deployed via NFS. It is specifically not intended to be useful
for other purposes.
Change-Id: I9a50c58b714ed272212d1d6c55b289aaa96051b1
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove documentation specific to certain .configure and .write
extensions, and point the user to `morph help-extensions` and `morph
help xxx.write` instead.
Don't mention the deprecated nfsboot.write extension.
Other small cleanups.
Change-Id: Ie7ed030c71ade4876aafb3d8a43e864a28ddc279
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds two fields to deployment (cluster) .morph files:
'upgrade-type' and 'upgrade-location'.
The `morph deploy` command ignores these. The `morph upgrade` command
will honour them if present, instead of the existing 'type' and
'location' fields. If they are not present, `morph upgrade` will give
a warning, and will use the 'type' and 'location' fields as before.
This avoids the need to edit the deployment .morph file after deploying
a system.
Small detail: the 'type' and 'location' variables are no longer removed
from the environment that is passed to the .configure and .write
extensions. This shouldn't affect anything.
Change-Id: Id2a4e4f229b8adebdb57eded2049ac113a82a4be
|
|
|
|
|
|
|
| |
This behaviour is complex, it shouldn't be hidden away in a larger
function.
Change-Id: I953c9477e0210d395b97f5f8219eaebe4dbcd272
|
|
|
|
|
|
|
|
|
|
| |
Add InitiatorListJobs class and list-jobs message template, add
distbuild-list-jobs to morph commandlist, send running job
information back to initiator, split out handling of build request
and list-jobs messages to separate functions and change generating
a random integer to UUID for message identification
Change-Id: Id02604f2c1201dbc10f6bbd7f501b8ce1ce0deae
|
|
|
|
| |
Change-Id: I0f4490d76caca802536b21085ea0d770fb8c0798
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I had a stratum artifact in my artifact cache which for some reason was
0 bytes long. When building a system that included this stratum, `morph
build` gave me the following output
2015-04-13 13:48:57 ERROR Traceback (most recent call last):
File "/src/morph/morphlib/builder.py", line 539, in build_and_cache
self.unpack_strata(fs_root)
File "/src/morph/morphlib/builder.py", line 600, in unpack_strata
chunks = [ArtifactCacheReference(c) for c in json.load(f)]
File "/usr/lib/python2.7/json/__init__.py", line 290, in load
**kw)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
With this patch, I get a better error:
ERROR: Corruption detected: No JSON object could be decoded while
loading
/src/build/cache/artifacts/8b4422c58ecb2a085b142fbba74b760f501f65d4b2885bf707994973230e0c58.stratum.build-essential-minimal
Change-Id: I0ad359901c5da75bd26d5a1a8108ef4e6f1d7708
|
|
|
|
|
|
|
| |
Previously it was possible to have some strange values for
pluginmgr.locations if the same path was appeared twice
Change-Id: I3ec257e48e85c3fd30759c3dcc2064f0b151ec45
|
|
|
|
|
|
|
|
| |
Swap nested ifs for and
Also replace type() with isinstance()
Also fix doc string
Change-Id: I58177566f19b601bc734f7542c6a5dd52938063a
|
|
|
|
|
|
|
|
|
| |
This adds an optional 'template' option to the install-files manifest format.
A file declared as a template will be rendered using jinja2
with variables substituted in from the environment.
Change-Id: I2ed6fe58f5fff315b42b7e4ec478ada851e0a70d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a bug that allows stratum definitions
to carry paths to non-existent chunk morphs.
This fix changes the interpretation of definitions
so necessarily introduces a new definitions version (version 2)
Assuming a morph field defined in a stratum: "morph: strata/cats/xattr.morph"
and assuming "strata/cats/xattr.morph" does not exist, this patch will not
alter current behaviour for definitions versions 0 and 1,
besides producing a warning message like this:
"Warning! `strata/cats/xattr.morph' referenced in `strata/swift.morph' does not exist"
for definitions version 2 and greater the following error will be raised:
"ERROR: Couldn't find morphology: strata/cats/xattr.morph referenced in strata/swift.morph"
Change-Id: I4def5e92741cce25168f1038136503022ab27ffd
|
|
|
|
|
|
| |
Also add a distinct error message for an invalid version file
Change-Id: I674e6af284b33705ae8235054906f56b8cd8a130
|
|
|
|
| |
Change-Id: I1ffb63340d3facb608708d04a0a21c5a9e290c14
|
|
|
|
| |
Change-Id: I9344b9b80a6ec008715559390b63c9003f34bf90
|
|
|
|
|
|
|
| |
This allows us to catch a case where virt-install hasn't been installed
on the host we're deploying to much earlier in the deployment process.
Change-Id: I413ad804a7e8bef4fc2d1231411e01d30d0cb9e8
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Passing the filename when loading a morphology
lets us give a more useful error message:
e.g. ERROR: Missing field name from morphology strata/build-essential.morph
instead of
ERROR: Missing field name from morphology string
Change-Id: I2e5b33e8154567469aa56adbf942fb7b6e9dd1ac
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In addition to partial builds we also want to be able to do partial
distbuilds, and distbuild uses a different codepath.
This commit updates the distbuild code to know what to do if a partial
build is requested. It only builds up to the latest chunk/stratum that
was requested, and displays where to find the artifacts for each of
the chunks/strata requested upon completion of the build.
The usage is the same as for local builds.
Change-Id: I0537f74e2e65c7aefe5e71795f17999e2415fce5
|
|
|
|
|
|
|
|
|
|
|
| |
Currently does three checks:
1. Checks that all chunks in given system(s) have sha1 refs.
2. Checks that all sha1 refs are anchored.
Unanchored refs can be removed on `git gc`.
3. Checks that all chunk repos are on the trove-host.
Change-Id: Iaf105b1614a45616684e68a08f28b8529d4321fa
|
|
|
|
|
|
|
|
| |
Printing the file and line number of the warning's origin
makes the warning itself harder to spot, and can make it
appear as if something has actually gone wrong.
Change-Id: Ie77357d9a061d31e234e6e434521d2d274409773
|
|
|
|
| |
Change-Id: I63f0d9da8b12930bd9539710429756a0821ce884
|
|
|
|
| |
Change-Id: Ic6e613c21ed26c528ad7c75f41af01d7552729fd
|
|
|
|
| |
Change-Id: Ica2a270b254b01b9fb15956556efb74ee641e1b4
|