summaryrefslogtreecommitdiff
path: root/morphlib
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/sam/rename-builder2'Sam Thursfield2015-01-055-10/+10
|\ | | | | | | | | Reviewed-By: Pedro Alvarez <pedro.alvarez@codethink.co.uk> Reviewed-By: Richard Ipsum <richard.ipsum@codethink.co.uk>
| * Rename builder2 module to builderSam Thursfield2014-12-195-9/+9
| |
* | Merge remote-tracking branch 'origin/baserock/tiagogomes/sysroot-checks'Sam Thursfield2015-01-022-3/+31
|\ \ | | | | | | | | | | | | Reviewed-By: Paul Sherwood <paul.sherwood@codethink.co.uk> Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
| * | Add some checks to the sysroot deployment extensionTiago Gomes2015-01-022-3/+31
| | | | | | | | | | | | | | | | | | Ensure that a) the deployment directory must not exist b) the extension can not be used to upgrade a system
* | | Improve logic for displaying command execution to userSam Thursfield2015-01-021-16/+24
| | | | | | | | | | | | | | | | | | | | | This avoids writing each command to the log file twice, as we did previously. Also, the user-visible message is now only constructed if we are definitely going to write it to the screen (a tiny optimisation). Hopefully the logic is clearer now too.
* | | Fix logging and display of commandlines being executed by MorphSam Thursfield2015-01-021-6/+7
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were attempting to display commandlines with correct shell-escaping, but the logic was super broken so users would end up seeing this sort of thing instead: 2015-01-02 10:25:42 # g | i | t | | r | e | v | - | p | a | r | s | e | | - | - | v | e | r | i | f | y | | ' | 9 | 8 | f | e | a | 8 | 7 | b | 7 | 2 | 7 | 2 | 5 | 3 | e | 7 | f | f | 8 | 1 | 0 | 5 | 4 | 3 | 4 | c | 9 | e | a | 9 | 0 | 2 | b | b | 6 | a | 6 | f | 7 | e | ^ | { | c | o | m | m | i | t | } | ' Commandlines should now display as intended, more like this: 2015-01-02 10:57:17 # git rev-parse --verify '9df9643842e4b4d8ece710fe6105f32fa38a0d22^{commit}' This broken logic was introduced as a post-review fixup in merge commit c57952ef44a0f1f161441970fcf2f27a39b0de7c.
* | Support armv8l, armv8b, aarch64, and aarch64bEmmet Hikory2014-12-192-5/+19
| | | | | | | | | | | | Also add support to allow building compatible architectures on armv8 machines, as per the rationale in the comment in _validate_architecture().
* | Merge branch 'baserock/richardmaw/bugfix/stagingarea-mounts-inside-destdir-v2'Sam Thursfield2014-12-191-3/+10
|\ \ | |/ |/| | | Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
| * Don't mount /dev/shm in bootstrap mode.Sam Thursfield2014-12-191-3/+4
| | | | | | | | | | | | There's no chroot used in bootstrap mode, so the host's /dev/shm can be used, and nothing in the world will be looking to /src/tmp/staging/tmpXXX/dev/shm for anything.
| * stagingarea: Mount things inside dirnamebaserock/richardmaw/bugfix/stagingarea-mounts-inside-destdir-v2Richard Maw2014-12-121-1/+6
| |
* | Merge remote-tracking branch 'petefoth/petefoth/generic-params2'Sam Thursfield2014-12-186-15/+125
|\ \ | | | | | | | | | | | | Reviewed-By: James Thomas <james.thomas@codethink.co.uk> Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
| * | Add 'do not use' warnings to nfsboot write extensionPete Fotheringham2014-12-152-3/+19
| | |
| * | Document KERNEL_ARGS write extension parameterPete Fotheringham2014-12-154-0/+33
| | |
| * | Whitespace removalPete Fotheringham2014-12-151-8/+8
| | |
| * | Document BOOTLOADER_INSTALL and BOOTLOADER_CONFIG_FORMAT write extension ↵Pete Fotheringham2014-12-154-3/+50
| | | | | | | | | | | | parameters
| * | Document DTB_PATH write extension parameterPete Fotheringham2014-12-153-1/+15
| |/
* | Merge branch 'sam/improve-command-failure-errors'Sam Thursfield2014-12-184-35/+76
|\ \ | | | | | | | | | | | | | | | | | | Reviewed-By: Richard Ipsum <richard.ipsum@codethink.co.uk> Reviewed-By: Richard Maw <richard.maw@codethink.co.uk> Reviewed-By: Daniel Silverstone <daniel.silverstone@codethink.co.uk> Reviewed-By: Mike Smith <mike.smith@codethink.co.uk>
| * | Tiny optimisation of app.runcmd code pathSam Thursfield2014-12-091-9/+8
| | |
| * | Give a useful path to failed staging areasSam Thursfield2014-12-091-4/+7
| | | | | | | | | | | | | | | | | | Morph tells the user that an error occurred in the staging area, then moves the staging area somewhere else. Giving the old path rather than the new path is pretty annoying.
| * | Remove duplicate 'import' statementSam Thursfield2014-12-091-1/+0
| | |
| * | Give less scary error messages when a containerised command failsSam Thursfield2014-12-094-22/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This affects errors encountered at build time and at system-integration time. New errors look like this: ERROR: Command failed: baserock/system-integration/02-install-gerrit-gerrit-installation-binaries-misc-0000: Containerisation settings: {'mounts': (('dev/shm', 'tmpfs', 'none'), ('tmp', 'tmpfs', 'none')), 'mount_proc': True, 'root': '/var/tmp/staging/tmp1YQ2yN/minimal-system-x86_64-generic.inst'} Error output: + install -D /usr/share/gerrit/gerrit-2.9.war /home/gerrit2/gerrit/gerrit-2.9.war -o gerrit2 -g gerrit2 -m 644 install: can't change ownership of /home/gerrit2/gerrit/gerrit-2.9.war: Operation not permitted Previously the error message would have been this: Command failed: unshare --mount -- sh -ec. mount --make-rprivate / root="$1" shift while true; do case "$1" in --) shift break ;; *) mount_point="$1" mount_type="$2" mount_source="$3" shift 3 path="$root/$mount_point" mount -t "$mount_type" "$mount_source" "$path" ;; esac done exec "$@" - /var/tmp/staging/tmppeA1Iw/gerrit-x86_64.inst/ dev/shm tmpfs none tmp tmpfs none -- linux-user-chroot --chdir . --mount-proc proc /var/tmp/staging/tmppeA1Iw/gerrit-x86_64.inst/ baserock/system-integration/02-install-gerrit-gerrit-installation-binaries-misc-0000 + install -D /usr/share/gerrit/gerrit-2.9.war /home/gerrit2/gerrit/gerrit-2.9.war -o gerrit2 -g gerrit2 -m 644 install: can't change ownership of /home/gerrit2/gerrit/gerrit-2.9.war: Operation not permitted
* | | Remove trailing \Sam Thursfield2014-12-181-1/+1
| |/ |/| | | | | I meant to do this as part of the previous merge.
* | Merge branch 'sam/fix-openstack-credentials-check'Sam Thursfield2014-12-101-4/+11
|\ \ | | | | | | | | | | | | Reviewed-By: Richard Ipsum <richard.ipsum@codethink.co.uk> Reviewed-By: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
| * | openstack.check: Be more careful when claiming credentials are invalidSam Thursfield2014-12-091-4/+11
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to check the user's credentials at the start of deployment, we try to run `glance image-list`. I found a situation where this command failed despite my credentials being correct. Morph outputted a misleading error message that said 'Wrong OpenStack credentials' The code now checks that the error returned by 'glance' does indeed look like a credentials error. If it doesn't, the full error output is displayed. The error I encountered now gets a message like this: ERROR: openstack.check failed with code 1: ERROR: Failed to connect to OpenStack instance at https://example.com:5000/v2.0: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')] (If you are curious, I fixed this by running `update-ca-certificates`.)
* | deploy: Note that some of the extensions listed live in definitions.gitSam Thursfield2014-12-094-14/+18
| | | | | | | | | | | | | | | | The user should be aware of this because if they aren't building baserock:baserock/definitions or a repo forked from it, those extensions won't be available. Also fix some long lines that I seem to have failed to commit already.
* | Merge remote-tracking branch 'petefoth/pf-document-extensions'Sam Thursfield2014-12-098-59/+147
|\ \ | |/ |/| | | | | Reviewed-By: Adam Coldrick <adam.coldrick@codethink.co.uk> Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
| * Add a reference to write.help filePete Fotheringham2014-12-083-18/+5
| |
| * initramfs write extension documentationPete Fotheringham2014-12-081-0/+6
| |
| * rawdisk write extension documentationPete Fotheringham2014-12-081-8/+34
| |
| * ssh-rsync write extension documentationPete Fotheringham2014-12-081-0/+36
| |
| * OpenStack write extension documentationPete Fotheringham2014-12-052-32/+39
| |
| * Add missing types to the docstring in the DeployPlugin.deploy() functionPete Fotheringham2014-12-051-1/+27
| |
* | Fix `morph help-extensions` run outside a workspaceSam Thursfield2014-12-051-1/+3
| | | | | | | | | | | | | | | | | | This command would use the sysbranchdir.open_from_within() function call to search for a system branch, which traverses all subdirectories looking for a directory. This is useful behaviour, but if the user ran `morph help-extensions` in / it'd traverse their whole filesystem before returning, which is stupid. This change means it only does the traverse if it already detected a workspace.
* | Fix `morph help-extensions` returning no itemsSam Thursfield2014-12-051-1/+1
|/ | | | | We were passing a nonsensical value for the 'kind' parameter so it would always return an empty list.
* Give a better error when no repos are found in a system branchSam Thursfield2014-12-041-1/+13
| | | | | Previously, if no repos were found Morph would raise 'ValueError: need more than 0 values to unpack' and leave the user with a traceback.
* Fix finding Git directories to include in a temporary build refSam Thursfield2014-12-041-1/+1
| | | | | | | | | | When running 'morph build' the code looks through all the Git repos in a system branch, to see which are involved in the build. These are then checked for local changes and have temporary build refs created in them. Due to a mistake in the logic, this would give up if it found a repo that came from elsewhere but was inside the system branch directory. So in the past some legitimate repos might have been ignored sometimes.
* Gracefully handle Git repos in system branches with missing configSam Thursfield2014-12-041-1/+5
| | | | | | | | Previously if there were repos present in the system branch that weren't put there with `morph edit` or had lost their Morph-specific configuration entries somehow you might see this error: ERROR: Command failed: git config -z morph.repository
* Document that GitDirectory.get_config() can raise an exceptionSam Thursfield2014-12-041-3/+7
| | | | Also fix wrong indent.
* Remove unicode charactersPedro Alvarez2014-12-011-2/+4
|
* Fix line lengths to be shorter than 80 columnsPedro Alvarez2014-12-012-20/+26
|
* writeexts.py: convert 'mount' to context managerbaserock/pedroalvarez/rawdisk-to-device8Pedro Alvarez2014-12-013-78/+58
|
* Update rawdisk.check to support device deploymentsPedro Alvarez2014-12-011-8/+10
|
* Modify rawdisk.write to allow the deployment to devicesPedro Alvarez2014-12-011-6/+14
| | | | | | | This patch also modifies rawdisk.write to use the UPGRADE environment variable to figure out when is doing an upgrade or a fresh deployment. This change is important because os.path.isfile doesn't work with devices.
* Split create_local_system on various methodsPedro Alvarez2014-12-011-4/+19
| | | | | | This way we can still use create_local_system to create a raw disk, but also reuse bits of it to be able e.g. to deploy to devices.
* Don't loop mount when mounting a devicePedro Alvarez2014-12-011-1/+4
|
* Add force flag to 'mkfs.btrfs'Pedro Alvarez2014-12-011-1/+1
| | | | | | This way when deploying to a device it will format it without asking the user if the device already has format.
* Add 'is_device' function to check if we are deploying to a devicePedro Alvarez2014-12-011-0/+11
|
* Merge branch 'pf-document-extensions'Pete Fotheringham2014-12-015-38/+147
|\ | | | | | | Reviewed-by: Richard Maw
| * Action review commentsPete Fotheringham2014-12-012-6/+28
| | | | | | | | | | - Document different ways of calling parameters - Allowed values for boolean parameters
| * More complete help documentationPete Fotheringham2014-11-281-3/+84
| |