| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Define a specific set of 4 architectures that Morph supports, and only
expose that value to morphologies.
Since GNU triplets are very common we also expose a GNU triplet. Other
morphologies should work out their configuration based on MORPH_ARCH.
This commit also removes the morphlib.util.arch() function, which
detected the machine Morph is running on via 'uname -m'. Morph's
architecture names do not necessarily map to the output of 'uname -m'
so we should not rely on it anywhere.
|
| |
|
|
|
|
|
|
| |
This is a kludge which I am only doing because we are removing this
plugin soon. Morph no longer has a way to detect the architecture that
it is running on and no longer needs one anywhere else.
|
|
|
|
|
| |
We can no longer build strata individually because we don't know
what architecture they are for.
|
|
|
|
|
|
|
| |
This gives us some forward compatibility leeway to introduce new
build modes, as long as they are compatible with staging.
As suggested by Richard Maw.
|
|
|
|
|
| |
If for example /bin is a symlink, we shouldn't and can't mount the host
system's /bin over the top.
|
|
|
|
|
|
|
|
|
|
|
| |
When building a stratum artifact it's easy to only include chunks that
were built in 'staging' mode. Constructing the staging area doesn't use
that code path, though, so we need an extra hack to filter out those
artifacts while building.
It may be neater to express stratum build-depends as actual
dependencies on the stratum artifact, rather than each of its
constituent chunks as we do now.
|
|
|
|
|
| |
This is necessary so that the build-essential stratum doesn't end up
containing three different compilers.
|
|
|
|
|
|
|
|
|
| |
Morph no longer supports setting the prefix using the --prefix
argument / setting. This was only used in tests and during bootstrap.
If a chunk build-depends on a chunk within a stratum which has
a custom prefix, that prefix is appended to the PATH in the build
environment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allowed values:
staging: build with a staging chroot (default)
test: build with the host's tools
bootstrap: build with the host's tools, and do not include this
chunk in the final stratum artifact
In the past, 'normal mode' has been used to describe building a chunk
with the host's tools. We don't want that mode to ever be used,
because it is a huge hole in reproducability, but we need to keep it
around to avoid making Morph's cmdtest suite depend on Baserock.
Hopefully naming it 'test' should discourage potential abusers.
It is unfortunate that the build tests now take a separate code path
compared to real-world usage of Morph. However, this is necessary to
avoid a circular dependency between Morph's test suite and the
build-essential stratum in Baserock.
We do whole-build testing of Baserock, too, so the 'staging' code path
is still tested outside of Morph. However, testing a staging area
requires populating it with at minimum a working shell, and this is a
bit too complex to go in Morph's test suite.
|
|
|
|
|
|
| |
In the future we will allow this to be modified to provide a
cross-bootstrap mode, but for now we use the same target as
the host compiler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reorganise the build_artifact() and build_artifacts() functions to
allow more complex work when setting up chunk builds in
build_artifact().
The staging area now holds the BuildEnvironment object (the
environment variables that should be set during build). This makes sense
because all build commands should be run inside the staging area and
therefore through the StagingArea object.
The BuildEnvironment object is now considered immutable after it is
created. The environment is used in cache key computation when
computing what artifacts are required; if it changes after that point
we risk either computing different artifact keys for the same artifact
or missing data in the cache key that should be included in the hash.
Better to force changes into a separate 'extra_env' variable.
|
|
|
|
|
| |
This involved having a staging area with split personalities
and was generally a bit ugly.
|
|
|
|
|
|
| |
That means that bootstrapping Baserock is currently not possible with
this branch of Morph, but there's no reason it cannot be bootstrapped
using an older version of Morph instead.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
We already silently, automatically decompress if the artifact is
compressed. It is thus safe to turn off compression.
Compression saves disk space, but on ARM it takes up a lot extra
time, and we have lots of disk space, so for speed, not compressing
is a good idea.
|
| |
|
|\
| |
| |
| | |
'origin/baserock/richardholland/morph-deploy--tempdir'
|
| |
| |
| |
| | |
Allowed user to set the location of the temp directory using --tempdir
|
| |\
| | |
| | |
| | | |
baserock/richardholland/improve-output-messages
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
'origin/baserock/richardholland/environment-logging' into staging
Added a "pragma: no cover" to make the test suite pass.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Added function log_dict_diff to identify and record changes in dicts
to the debug log
This new function was then implemented in app.py to log changes in the
environment
|
| |\ \ \
|/ / / /
| | | |
| | | |
| | | | |
Conflicts:
morphlib/morph2.py
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We already have configure-commands. Add pre-configure-commands and
post-configure-commands. Likewise for build-command, test-commands,
and install-commands.
Added-to-pacify: Rob Kendrick
|
|\ \ \ \
| | |_|/
| |/| |
| | | | |
'origin/baserock/richardholland/fix-virtualbox-deploy' into staging
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It was missing an import for sys.
It did not have the size of the disk either, this has also been fixed
|
|\ \ \ \
| | |_|/
| |/| |
| | | | |
'origin/baserock/richardholland/improve-output-messages' into staging
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
Added chunk name in status when starting build
Added the name of parent artifact (chunk that installing chunk was installed for) to start of build message
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This makes the warning messages include how to fix the problem.
morphlib.git.check_config_set will return the values of the
keys which were set, so it can be used to get git config.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
of git://git.baserock.org/baserock/baserock/morph
Reviewed-by: Sam Thursfield
Reviewed-by: Lars Wirzenius
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Some subcommands use git to create commits, in which case user config
needs to be set.
Others imply commits may be created, e.g. by cloning a repository, at
which point it is useful to have a reminder that the configuration needs
to be set.
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
While it may be useful to have the username and machine the commit
was made on, it's more useful to have the committer's email address,
and the email field is for email addresses.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When we hardlink the staging area tree, we were checking if the
target file already exists with os.path.exists. Unfortunately, this
follows a symlink, and in this case, we don't want to: if the
symlink target exists, and is a symlink, we want to remove the symlink
only, and we don't care about its target.
The target file may exists because of overlapping files in chunks.
Reported-By: Paul Sherwood
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Within a linux-user-chroot, we do not want to allow arbitrary code to
create device nodes, but still want it to be possible to create a device
node. This commit creates and handles the 'devices' field in a chunk
morphology, which takes:
* filename. A string, e.g. "/dev/null"
* uid. The ID of the user the file belongs to, e.g. 0 for root.
* gid. The ID of the group the file belongs to, e.g. 0 for root.
* type. A string of either 'c' for a character device or 'b' for a block
device.
* major. The device's major number.
* minor. The device's minor number.
* permissions. A string of the octal number that would be passed to chmod
e.g. '0777'
|
| | |
|
| |
| |
| |
| |
| |
| | |
Instead of repeatedly unpacking tarballs into a succession of staging-
areas, it will unpack each tarball only once, then hardlink all the files
into the staging-area instead.
|
|\ \
| | |
| | |
| | |
| | |
| | | |
git://git.baserock.org/baserock/baserock/morph
Reviewed-by: Lars Wirzenius
|
| | |
| | |
| | |
| | |
| | | |
This is more of a rough sketch so far, it's very ugly but it does work
for a fair amount of projects.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This adds a `run-in-artifact` command which allows another command
to be run in a system.
There is also a `content-manifest` command which gives a
manifest of the artifacts, which commits they were built from,
and if possible, a version.
This adds a morphlib.bins.call_in_artifact_directory() method
to run a command inside an artifact and to generate a manifest.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ExtractedTarball is more or less the equivalent to MountableImage for
artifacts that are not mountable images. So in order to inspect root
file system tarballs, ExtractedTarball can be used, for disk images,
MountableImage can be used.
The morphlib.bins.call_in_artifact_directory() method combines these
two classes and provides a way to extract/mount an artifact and call
a callback with the temporary directory / mount point as its first
argument. Using this, a plugin that runs a command relative to an
artifact's root directory can be written easily.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | | |
Reported-By: Sam Thursfield
|
|/ /
| |
| |
| | |
This is mainly to fix bootstrap.
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This adds a [Build 1/12765] to the output of the building of each
artifact. This makes it easier to see how much work there might
still be remaining.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
git://git.baserock.org/baserock/baserock/morph
This includes a merge fixup in ./check, so that it
does not complain about build-system-autotools' test's tabs.
|