| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | |
|
| | | | |
|
| | |\ \ |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In order to allow the artifact cache to be cleaned up, this patch allows for a
/delete method which can remove artifacts from the cache. It takes the
following arguments:
artifact=artifactname
The artifact will be deleted and a JSON object returned in the form:
{
"status": errno,
"reason": strerror
}
Where errno is zero on success, 1 on EPERM, 2 on ENOENT etc. and reason is the
strerror of the errno, in case the architectures differ between caller and
cache.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Rather than pushing artifacts to the cache, this method allows the caller to
specify a host and artifact which the cache server will then fetch into its
local cache. It takes the following arguments:
host=hostname:port
artifact=artifactname
This is transformed into a fetch to:
http://hostname:port/artifacts?basename=artifactname
Which is then fetched into the cache under the given name.
The return from this is a JSON object of the form:
{
"filename": artifactname,
"size": NBYTES_SIZE_OF_FILE,
"used": NBYTES_DISK_SPACE_USED
}
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When --enable-writes is set, we provide a /list target which produces
a JSON dictionary of information about the state of the artifact cache.
The dictionary is of the form:
{
"freespace": NBYTES_OF_SPACE,
"files": {
"artifact-filename": {
"atime": ATIME_AS_NUMBER,
"size": NBYTES_SIZE_OF_FILE,
"used": NBYTES_USED_ON_DISK
},
...
}
}
This allows a controller to decide which artifacts have not been requested in
some time and also how big artifacts are, not only in terms of their 'byte'
size, but also the space they consume on disk. System images in particular may
differ in this respect since they should be sparsely stored.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Since we need to be able to update the cache from builders, this patch
introduces a --enable-writes argument to morph-cache-server and also adds a
@writable decorator to the class ready for marking particular paths which are
only available when --enable-writes is set.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In order to allow multiple morph-cache-server instances to run on
a single system, we need to support running on different ports.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Morph now expects the tree SHA1 in addition when resolving references
using the cache server. This is to better facilitate correct cache
key computation since commits can be made which have no tree changes
and thus nothing to usefully affect the build. (For example the morph
branch and build features)
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Direct-mode, when enabled, causes morph-cache-server to assume a more
Trove-like structure for the repositories, rather than the morph-cache
structure which it was originally written for. This means that for
the workers, we can use the original code and for Trove, the direct mode.
|
| | |/ /
| | | |
| | | |
| | | |
| | | | |
To reduce the noise when I run 'git status' this gitignore will mean
that git won't notify me of repocache.pyc and __init__.pyc
|
| | | |
| | | |
| | | |
| | | | |
This reverts commit f1fba299bd07510346082ef985ef08a494dca9d9.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
/trees queries take repo URI, a SHA1 ref and an optional path parameter.
The result is a JSON dictionary of the form
{
"repo": "<repo URI>",
"ref": "<SHA1 ref>",
"tree": {
"filename1": {
"mode": "100644",
"kind": "blob",
"sha1": "FOOBARBAZ"
},
...
}
}
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Resolving a ref may result in a different SHA1 between any two requests,
so we simply should never allow the results to be cached by an HTTP
cache.
|
| | | | |
|
| | / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
You can bind to an ephemeral port by passing 0 as the port number.
To work out which port you actually got, you need to call getsockname().
To facilitate being able to spawn multiple copies of the daemons for
testing environments, you can pass a -file option, which will make the
daemon write which port it actually bound to.
If this path is a fifo, reading from it in the spawner process will
allow synchronisation of only spawning services that require that port to
be ready after it is.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This is needed for distbuild to deserialise based on the split rules on
the node that did the graph calculation, rather than the node that does
the building.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The repo-alias is indirectly tested by branch-from-image, and checking
the --version is part of the release process, so we're not going to miss
these tests.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I've rarely needed to use it, and on those rare occasions, it would have
been easy enough to calculate it.
Let's get rid of this step, and save everyone some time in future.
|
| | |
| | |
| | |
| | | |
It's easy enough to deploy the image.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We're implicitly testing it in yarns already.
Explicit tests would be better, but removing the old test makes it
easier to get rid of build-mode: test.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
It doesn't do any actual building, so it doesn't matter that using
build-mode: bootstrap everywhere means that it would end up with an
empty system artifact.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
tests.deploy is gone since we have yarn coverage instead.
tests/setup had unnecessary setup in it, since the remaining tests
require custom setup anyway.
A bunch of tests were disabled anyway, so they're gone.
Also, there was still code in ./check to run tests.merging, which have
been gone for a while.
|
| | |
| | |
| | |
| | |
| | | |
When all the tests that use build-mode: test are gone, the build mode
can be removed.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is intended to be statically linked, so it can be run in the
staging area, without having to build a libc.
You shouldn't generally statically link GLibc, because it dynamically
links things like NSS modules or locale data, but we only need some very
simple stuff, so we can get away with that.
There's also potential licensing issues, as GLibc is LGPLv2, so
distribution requires providing the ability to re-link against another
library, but its use in the test-suite shouldn't count as distribution.
There's a couple of commands, the only two needed by the yarn test
suite are "copy files" which is like `cp -r . "$DESTDIR"`, and "false",
which is for commands to deliberately fail.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
Reviewed-By: Pedro Alvarez <pedro.alvarez@codethink.co.uk>
Reviewed-By: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously if the user included 'baserock' in their list of trove-ids,
the keyed URL expansions in the repo-alias field would change such that
reading from git.baserock.org required SSH access. This isn't good and
in particular breaks Mason, which by default isn't set up with a Gitano
account on the Trove that it reads from, and therefore doesn't have SSH
access to that Trove.
With this change, the trove-id field will not cause the default
'baserock:' and 'upstream:' prefixes to be overridden, so setting
'trove-id = baserock' in morph.conf will not Morph's behaviour to
change.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
Reviewed-by: Pedro Alvarez
Reviewed-by: Paul Sherwood
|
|/ / /
| | |
| | |
| | |
| | | |
os.read is limited to an int in size. copy_slice_from_file was trying
to os.read more than that causing an OverflowError.
|
|\ \ \
| |_|/
|/| |
| | |
| | | |
Reviewed-by: Paul Sherwood
Reviewed-by: Richard Maw
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
With this patch, the fstab of the system to be deployed
as an upgrade will be conifgured using the UUID of
the disk.
Now when doing an upgrade is not needed to specify the
ROOT_DEVICE.
|
|\ \
| |/
|/|
| |
| |
| | |
Reviewed-by: Adam Coldrick
Reviewed-by: Sam Thursfield
Reviewed-by: Richard Maw
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, if morph is installed in the system, `morph --version`
prints the sha1 of the version installed.
$ morph --version
e8adedb8f3f27d9212caf277b8e8f7c6792a20c2
If you run morph from git, the output will be something similar to
the following.
$ morph --version
baserock-14.26-124-g7b73af4
This patch changes the behaviour of the latter to match the former.
|
|\
| |
| |
| |
| | |
Reviewed-By: Pedro Alvarez <pedro.alvarez@codethink.co.uk>
Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
|
|/
|
|
|
|
|
|
|
| |
The msg parameter to status is a format string. If we pass a string
directly to it, then we have to be careful to escape any formatting
characters.
However, we can just do the interpolation directly in the status call
instead, which is less code.
|
| |
|
|\
| |
| |
| |
| |
| | |
Reviewed-by: Lars Wirzenius (+2 to misc fixups)
Reviewed-by: Sam Thursfield (+1 to per-source building)
Reviewed-by: Paul Sherwood (+1 to per-source building)
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This was used by artifacts to tell what they should put in their path,
based on what prefixes were used earlier.
This implementation didn't handle recursive deps, and it was trivial to
open-code it at the call-site, so it is no longer useful.
|
| | |
|
| | |
|