| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Bad function prototype meant that the mechanism for handling workers
disconnecting actually caused the controller to crash instead.
Change-Id: I8ceb6ad027ba2481c0c4c335e1760692823c208b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I was getting an error from this command:
morph distbuild systems/build-system-x86_64.morph stage2-fhs-dirs
Saying this:
ERROR: Failed to build
git://git.baserock.org/baserock/baserock/definitions
93575a2ceeeda77a5bb8c6121a9cac3edde1afbf
systems/build-system-x86_64.morph: Some of the requested components
are
not in build-system-x86_64-rootfs: stage2-fhs-dirs
This patch fixes that issue and makes Morph build up to stage2-fhs-dirs
successfully.
Change-Id: I61c373272484dcb5dc62f281cae8f21f742c31a9
|
|
|
|
|
|
|
|
| |
This is just to make the log files more readable, as what would
previously have been logged as '<ArtifactReference at 0x1235478>' is
now logged as the actual name of the artifact.
Change-Id: I6189aa1390268cec379dd459fc3f4fecc71363b1
|
|
|
|
|
|
|
|
| |
The 'BC: got artifact: <distbuild.artifact_reference.ArtifactReference
object at 0x7f84ea2b5c10>' message is only useful when
_debug_build_output is true, if at all.
Change-Id: I079b398e841d5508ecefd00167fb0d83be748ce6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes an issue where distbuild would build the same artifact more
than once. The problem occurs with a single distbuild controller, if
multiple initiators request builds of the same thing at roughly the
same time (which scripts/release-build in definitions.git does).
This change also means that multiple distbuild controllers sharing a
single artifact cache will be smart about sharing built artifacts. It
does not mean that distbuild can handle having built artifacts removed
from the cache while it is building stuff.
The number of HTTP requests made to the shared artifact cache is higher
with this patch, but these seem to take no more than 1 second and we
only ever need to run one request before starting more builds, so there
should be no noticable impact on performance.
Change-Id: Ib3246219a10ca95d40b8a21bd0fe53f32e46c1c9
|
|
|
|
|
|
|
| |
Hopefully this makes the code a little less cryptic. No functional
changes.
Change-Id: I615810e4eacdd5454731e07387b1dbb9eb348fd5
|
|
|
|
|
|
|
|
| |
This was causing:
UnboundLocalError: local variable 'original_ref' referenced before assignment
Change-Id: I46e4b5d527d9ac5480a3d1fe5e6d631f0b7279dc
|
|
|
|
|
|
|
| |
This makes it more useful and saves people from poking around in the
cache in order to dig up build logs.
Change-Id: I8e062c5c32b01aca0df54e1974ead3c3b3134cc3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes `morph get-chunk-details`, `morph get-repo` and `morph
show-build-log` work in any Git checkout of definitions.git. These
are all of the commands outside of the deprecated
branch_and_merge_plugin that take notice of system branches.
The DefinitionsRepo.relative_path_to_chunk() function is changed a
bit. It actually only existed for the `get-repo` command to use, but
it turns out that it did the wrong thing by returning a long path for
the repo (e.g. baserock/baserock/fhs-dirs) instead of a short one
(fhs-dirs). The latter is less typing, and is the behaviour expected
by the `get-repo` yarn tests, so it now does that.
Change-Id: I430b540b3b0f309cf7018e0b8236f0e8a9042d89
|
|
|
|
|
|
|
| |
Previously callers to DefinitionsRepoWithApp.source_pool() could
override the user's value, but that's not actually used anywhere.
Change-Id: I43b53e7b9fc937886c8e6e95947e5e2b6776d085
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously it would print nothing and then exit with success. Better
to tell the user that an error occurred.
Example of the new error:
ERROR: No build log for artifact
6fb39673b8f9a1c9848063f5132aa958ffa75f2be61a8dde68ebb11f5a3c4a5f found
on cache server http://cache.baserock.org:8080/
Change-Id: Icf8ceef60eb497ff90e00391d442a394e3d76f10
|
|
|
|
|
|
|
|
| |
Previously if you tried to view the log on an x86_32 machine for a
chunk that was build on ARM, it'd give a spurious error saying "Are you
trying to cross-build?"
Change-Id: I19c3781e0951ecb4161f06fd8b3a0c8ea5bfef9d
|
|
|
|
|
|
|
| |
This fixes requires_update_for_ref when it is given a non-fixed ref and
it is retrieved from a call to get_updated_repo.
Change-Id: Icbcf2e4ec45bd559c6bcb450ceb4a8861b56f654
|
|
|
|
|
|
|
| |
This yarn was failing 'cause of a missing
chunk morph rather than a failure to push
Change-Id: I70d79b1b9ec972cebde825d90c039666867bb1fa
|
|
|
|
| |
Change-Id: I8d3f3ec6a1796b06b32e43dc4839360ff1cc2d86
|
|
|
|
| |
Thanks to Richard Maw for suggesting this fixup.
|
|
|
|
| |
Change-Id: Ib2d7bd31bea49c052a59582524382df6b931a31f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Old message:
ERROR: Adding ref
refs/heads/baserock/builds/review/javier_jard_n/foundation_core/d3401783ea054fc18ee56ccdb0030d0a
with commit 1c60a89a98c5ee532fefd363240b06870ada02f5 failed in git
repository located at /src/definitions: AppException()
New message:
ERROR: Adding ref
refs/heads/baserock/builds/review/javier_jard_n/foundation_core/d3401783ea054fc18ee56ccdb0030d0a
with commit 1c60a89a98c5ee532fefd363240b06870ada02f5 failed in git
repository located at /src/definitions: Command failed: git update-ref
refs/heads/baserock/builds/review/javier_jard_n/foundation_core/d3401783ea054fc18ee56ccdb0030d0a
1c60a89a98c5ee532fefd363240b06870ada02f5...
Change-Id: Idc6a47388f53d358b7dfc2c0f7fa82eefbc92630
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Old error:
ERROR: Git directory
/build/cache/gits/git___git_baserock_org_baserock_baserock_definitions
has no commit at ref 5046c3a0e4fd587c23f7c6a9e0d0b50d1914dcca^{commit}.
New error:
ERROR: Commit 5046c3a0e4fd587c23f7c6a9e0d0b50d1914dcca wasn't found
in the "origin" remote
git://git.baserock.org/baserock/baserock/definitions. You either need
to push your local commits on branch xxx to "origin", or use the
--local-changes=include feature.
Change-Id: I0c3658e9cd27c23f40653662ba7e4ba58b7892de
|
|
|
|
|
|
|
|
|
|
| |
This allows you to run `morph deploy` from any Git checkout of
definitions.git.
This also changes `morph help-extensions` to use the DefinitionsRepo
class, as the code overlaps.
Change-Id: I64c48f59c8ec5aebc7169f3b4b4abbb759bd0b9a
|
|
|
|
|
|
|
|
|
| |
This allows using `morph build`, `morph distbuild` and `morph
distbuild-start` from any Git checkout of a definitions.git repo, so
nobody needs to use `morph checkout` or `morph branch` if they don't
want to.
Change-Id: I5fdfae0f8bec1953893e26f0d227e289da11fa84
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The intention is for this class to take over the from the Workspace and
SystemBranch classes. It allows Morph to load and parse definitions from
a Git repo, without requiring the user to run `morph checkout` or
`morph branch`: it can operate from any normal Git repository.
The class behaves differently when the Git repository is inside a Morph
system-branch checkout made with `morph branch` or `morph checkout`, to
avoid changing things under the feet of people who are used to those
commands.
Change-Id: I52a898efb9f6fb7f7e94c65b9ed38516bd51f49d
|
|
|
|
|
|
|
|
|
|
|
| |
It's quite easy to forget that "true" and "false" are special words in YAML,
and write "false" to halt the build process while debugging. This was treated
as a Boolean instead of a string, so causes an unhelpful error in morph.
Since there is no use for booleans in morphologies, they should be treated as
strings.
Change-Id: I7c872f9696611920febec5f375b599eee89d040e
|
|
|
|
| |
Change-Id: Ib8ed113731590b3c9bc3559fb07820bd25c462b8
|
|
|
|
|
|
|
|
| |
This adds support for strip commands, and deployment extensions that
rely on python libraries being available alongside the extensions in the
definitions repository.
Change-Id: I23dafd4968002037d182507762b09147f87bf469
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After moving deployment extensions into the definitions repository, but
they need access to shared code, so deployment extensions need to import
code which lives in definitions. However morph runs a copy of them in a
temporary directory.
Version 5 will allow deployment extensions to depend only on code which
is also in definitions and the Python standard library, though they may
also include code from elsewhere as described in PYTHONPATH.
Change-Id: I998f01830656a5118bba1e579f649ec98f5f82c6
|
|
|
|
| |
Change-Id: I19a6c31979aa36ff3c03f41e16e2d25ef407533b
|
|
|
|
|
|
|
|
|
|
|
|
| |
We don't use this globally, since other users of the MorphologyLoader
don't need them to be aware of strip commands yet, and a more
significant rework would be required to allow the injection of this
context, because previously the MorpohologyLoader did not need any, so
code which used the MorphologyLoader just created one as they needed it,
rather than allowing one to be passed in where the context was
available.
Change-Id: Iea707a1cb2c631dd6f251b5b989d31e192f2387d
|
|
|
|
| |
Change-Id: Icd8858dbdbb45a636641f7c5b8ab540a8376acc7
|
|
|
|
|
|
|
| |
This defaults to the default, and only useful behaviour at this point.
It is there so that tests may mock it out.
Change-Id: I17499fc1bb0a1ad39da2ac836a2946b1a0ed5abe
|
|
|
|
| |
Change-Id: Ib64e4f823de129a3a5a78eb1db6a4e0f6da03928
|
|
|
|
|
|
|
| |
This adds strip commands to all build systems, that will be hooked up
into the cache and build logic.
Change-Id: I37ad3e43311a417a949e7dfef860a50fdf6b8c43
|
|
|
|
| |
Change-Id: I66560dfb0e97c1d55a4e2399f81747644eb6d74e
|
|
|
|
| |
Change-Id: I72327a2fdb091fc742369af68c8ebfe16f34be5e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The test suite was failing in my Baserock 15.19 chroot with:
FAILURE: test_commit_tree (gitdir_tests.GitDirectoryContentsTests)
Traceback (most recent call last):
File "morphlib/gitdir_tests.py", line 294, in test_commit_tree
self.assertEqual(expected,
gd.get_commit_contents(commit).split('\n'))
AssertionError: Lists differ: ['tree 01d830ae9bae1a9970a9f14... !=
['tree 01d830ae9bae1a9970a9f14...
First differing element 2:
author Author Name <author@email> 683074800 +0000
author Author Name <author@email> 683074800 +0100
['tree 01d830ae9bae1a9970a9f1491c914ad177f8afce',
'parent 1240834484cebc4ba8cc40cd5b76f6dffd937a50',
- 'author Author Name <author@email> 683074800 +0000',
? ^
+ 'author Author Name <author@email> 683074800 +0100',
? ^
- 'committer Committer Name <committer@email> 683074800 +0000',
? ^
+ 'committer Committer Name <committer@email> 683074800 +0100',
? ^
'',
'MESSAGE',
'']
1 failures, 0 errors
1543 excluded statements
57 excluded modules
Time: 8.4 s
Change-Id: If03e7ccbb5e3415eead9dcbcf908d3d2717e8fe0
|
|
|
|
|
|
|
|
| |
The set of commands is potentially extendable, and it's easier to accept
optional keys than get the list of potential fields from the build
system.
Change-Id: I0d876112db43637661e9548472a9fb191ea88268
|
|
|
|
| |
Change-Id: If548a9962d5e70480f7eaba6ab6596465975e894
|
|
|
|
| |
Change-Id: I01b3132c9fb27f1c0277ffe5eb0166e489312e38
|
|
|
|
|
|
| |
It's too much of a mouthful to use a qualified import.
Change-Id: Ide5695e49fd6188b520fecce9d6b076fd7280b8e
|
|
|
|
| |
Change-Id: Ib8281c4030c42b61e298d6cc52f150a02384ed96
|
|
|
|
| |
Change-Id: I895776bfd57ca6a14997c5535355b259d827b3a6
|
|
|
|
| |
Change-Id: Ie4e024a63f2ab1c7ea66f2cbedaef99c9adf5e69
|
|
|
|
|
|
|
| |
We commonly create a temporary directory and clean it up after we're
done. This can be encapsulated into a context manager.
Change-Id: Ie50de5c3954141a3e7fd40e4627fb743287ef61f
|
|
|
|
|
|
|
|
| |
We cache based on the name, but to get the name we acutally loaded the
build system, so it's a waste of effort to cache by the name only to
reload it later.
Change-Id: Ia77e1c73d27005cd4cc6a3bb5553b44e8dfc75c1
|
|
|
|
|
|
| |
Sometimes we don't want a separate mount namespace
Change-Id: I9f2645f552c69090612aecd45104a0320cd436c2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For a cluster morph,
- morph: systems/devel-system-x86_64-generic.morph
deploy:
self:
type: ssh-rsync
location: root@127.0.0.1
ATTACK_KITTENS:
The yaml parser will assign the value None
to the element with key 'ATTACK_KITTENS',
sanitize_environment blindly calls str() on each value in the dictionary,
the result is that our extensions receive an 'ATTACK_KITTENS' environment
variable with the string value 'None', this is not useful and confuses anyone
trying to do basic validation in their extension.
This patch makes it so that any None types are replaced with the empty string,
which seems a more sensible value for this case.
Change-Id: I734d33e9304f0b7d4d590e464e350d2e5b4720d3
|
|
|
|
|
|
|
|
| |
System artifacts won't change because of changes in the configuration
extensions. These extensions run at deployment time, therefore, they
are ignored for generating the cache-key.
Change-Id: I64f28605630bda4c27748197aef84809b4b1f86b
|
|
|
|
|
|
|
| |
Switching to the keystoneclient python api
gives us a more reliable means of detecting auth failure.
Change-Id: I5f734bbfe5568c855f524a3448357f7cf46ab254
|
|
|
|
|
|
|
|
|
|
|
| |
--upgrade being passed on to subsystem deployments broke attempting to
perfom an ssh-rsync upgrade with a system that had a sysroot in it.
Therefore it is appropriate to prevent --upgrade being inherited like
this, as it is seldom what is wanted, and if needed, it can be set in
the cluster, or on the command-line separately.
Change-Id: I59d261ded26df2808ee83cb862bdc247542d1327
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Concievably, you may want to force a cluster to behave as an upgrade
regardless of whether --upgrade is set or not.
This would allow two use cases that are not currently possible:
1. To force a cluster to be upgrade-only, which would make our
instructions for the upgrade-devel.morph cluster simpler.
2. To allow a cluster to deploy then immediately upgrade.
One potential use for this would be to create a disk image with
multiple versions on it.
This also works as a work-around for --upgrade implying UPGRADE=yes for
subsystem deployments, but that should be fixed separately.
Change-Id: I2ec4b880fc9bce37adee9df67696f088c76650f4
|