summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fix default setting for compiler cache dir; update testsJannis Pohlmann2012-12-172-12/+7
| | | | Reviewed-by: Lars Wirzenius <lars.wirzenius@codethink.co.uk>
* Add support for ccacheJonathan Maw2012-12-173-17/+30
| | | | | | | | | | | | | | | | | | | This is set up so that each individual project repository has its own ccache, all under one defined directory. The top-level ccache directory is added as the setting 'compiler-cache-dir', and defaults to $cachedir/ccache. When a build is performed, this will bind-mount a project's ccache into the /tmp/ccache of the staging-area and set up the environment variables so that ccache will be used (if appropriate executables are installed to /usr/lib/ccache in the staging-area). In addition, this removes code for ccache-remotedir, as it is unrelated to this implementation of ccache. Reviewed-by: Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> Reviewed-by: Lars Wirzenius <lars.wirzenius@codethink.co.uk>
* Drop committer info from git tag environment; update tag test outputsJannis Pohlmann2012-12-178-28/+30
| | | | | | | | | | | The committer information in the environment used to run git in morph tag is not needed. In morph build it makes sense as morph commits without the user knowing. With morph tag, it's the user that decides to create the commit and tag. There is something weird going on, where morph tag may end up generating commits with different SHA1s on different machines. The full log output in the morph tag tests might help investigate what happens.
* Merge branch 'jannispohlmann/cache-resolved-refs-and-morphologies'Jannis Pohlmann2012-12-141-4/+18
|\ | | | | | | Reviewed-by: Lars Wirzenius <lars.wirzenius@codethink.co.uk>
| * Cache resolved refs and morphologies when traversing morphsJannis Pohlmann2012-12-131-4/+18
| | | | | | | | | | | | | | This cuts down on the number of HTTP requests made while computing th build order (> create source pool > traverse morphs). In an example system I was building this patch reduced the requests from 501 to 195, reducing the time to building the first chunk from 123s to 18s.
* | Merge remote-tracking branch 'remotes/origin/samthursfield/ambiguous-refs' ↵Jannis Pohlmann2012-12-137-56/+79
|\ \ | | | | | | | | | into baserock/merge-queue
| * | morph branch: Check if the ref already exists before anything elseSam Thursfield2012-12-133-6/+20
| | | | | | | | | | | | | | | This was done to ensure tests.branching/branch-fails-if-branch-exists always passes, but also seems like the right approach in general.
| * | Add a test to catch any future use of git show-refSam Thursfield2012-12-131-0/+32
| | |
| * | Always use `git rev-parse --verify` to resolve refsSam Thursfield2012-12-136-50/+27
| |/ | | | | | | | | | | | | | | | | | | | | | | | | Previously some code used `git show-ref`, which is wrong -- given two refs named 'alpha/master' and 'master', `git show-ref master` will return both, sorted alphabetically. This can lead to build failures, etc. due to refs resolving to the wrong SHAs. We should also use `git rev-parse --verify` to verify SHA1s, which we previously did with `git rev-list`. Finally, `git rev-parse --verify` is more than twice as fast as `git show-ref`.
* | Fix morph tag usage of git commit-tree; fix detecting existing tagsJannis Pohlmann2012-12-131-12/+23
| |
* | Fix bashism in morph tag test scriptsJannis Pohlmann2012-12-134-4/+4
| |
* | Merge remote-tracking branch 'origin/jannispohlmann/morph-tag-v2'Sam Thursfield2012-12-1311-0/+746
|\ \ | |/ |/|
| * Add an initial implementation of "morph tag"Jannis Pohlmann2012-12-1311-0/+746
|/ | | | | | | | | | | | | | | | | | | | | | | | | | In order to make releases and freeze system branches entirely, we need to be able to 100% petrify a system branch (that is, resolve ALL refs into SHA1s) and tag this state to be able to check it out again later. This is essentially what "morph tag" does. It takes a tag name and an arbitrary amount of arguments to "git tag", petrifies all morphologies of the current system branch behind the scenes, creates a dangling commit and attaches an annotated tag to it. Petrifying in this case means that all refs used for chunks are resolved into commit SHA1s. For stratum and system morphologies, the refs are replaced by the name of the tag that's being created. The "tag" command also supports tagging when stratum morphologies are spread across multiple repositories. In this case, it will include all statum morphologies from other repos in the tag commi in the branch root repo. The references to these morphologies are updated so that they point to the branch root repo and the tag being created. This commit also adds a few tests for "morph tag" to verify that all this works.
* Merge branch 'jonathanmaw/find-artifacts-rebase' of ↵Richard Maw2012-12-101-0/+123
|\ | | | | | | ssh://trove.baserock.org/baserock/baserock/morph
| * Add find-artifacts scriptJonathan Maw2012-12-101-0/+123
| | | | | | | | | | This script reads a built baserock system and finds all the chunks used to build it in the artifact cache
* | Merge branch 'jonathanmaw/cache-key-less-rigorous'Sam Thursfield2012-12-072-0/+49
|\ \
| * | Avoid rebuilds when unimportant morphology contents changeJonathan Maw2012-11-292-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | This changes the cache key generation so that it will ignore unimportant fields of the morphology, e.g. description, build-depends, chunks. description is unimportant because it does not affect building, and build-depends/chunks are unimportant because they are already considered
* | | Merge branch 'baserock/richardmaw/build-less-artifacts'Richard Maw2012-12-032-4/+19
|\ \ \ | |_|/ |/| | | | | Rubber stamped because the usual reviewers are on holiday.
| * | Test source pool having duplicates addedRichard Maw2012-12-031-0/+9
| | | | | | | | | | | | | | | The lookup method will only find the first entry, but previously would allow later entries to be found by iterating.
| * | Ensure sourcepool does not contain duplicatesRichard Maw2012-12-031-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, if a stratum had dependencies listed, then morph would add that stratum to the list of things to build multiple times, resulting in more things being built. This was not a major problem, since it would just result in more cache lookups than necessary, but lookups are more expensive on remote artifact caches, and anything attempting to find which artifact would be the result of a build would get confused by there being many top-level artifacts with no dependencies.
| * | Amend test to not add the same source to the pool twiceRichard Maw2012-12-031-2/+7
|/ / | | | | | | | | | | | | | | The test relied on undesired behaviour, since it would create the same source, since the sha1 is not used in the sourcepool's key. Now it creates a new source pool and replaces the source it is being compared to.
* | Revert "Merge branch 'liw/hardlink-staging-area-pre-rebase'"Jannis Pohlmann2012-11-303-89/+33
|/ | | | | | | | | | | | | | This reverts commit c859d70d86423a52bc7053abf64e9ca21f62a487, reversing changes made to 3085a672d1e8b5177be33f0463385de72a0ef5bf. Unfortunately, hardlinking and linux-user-chroot both break builds in various ways. Hardlinking breaks the bootstrap process by creating symlinks like /usr/libexec that can then not be overwritten with real files by install scripts from morphologies like gcc. linux-user-chroot caused problems by breaking privileged operations such as chgrp and CAP_SETFCAP. As a consequence, chunks like util-linux and libcap can no longer be built.
* Merge branch 'liw/hardlink-staging-area-pre-rebase'Lars Wirzenius2012-11-293-33/+89
|\ | | | | | | | | | | | | | | This is based on, and incorporates, Joe Burmeister's changes to fill staging areas using hardlinking, for speed reasons. I have reformatted the code a bit, and fixed it to pass the test suite, and fixed a bug in how commands are run in the staging area chroot (preserving the environment).
| * Change method comments to docstringsLars Wirzenius2012-11-291-3/+6
| | | | | | | | This also makes coverage.py be silent on Debian squeeze.
| * Use the builder runcmd, to get build environment rightLars Wirzenius2012-11-291-6/+4
| |
| * Reformat code, plus adapt for non-staging-area buildsLars Wirzenius2012-11-292-16/+22
| |
| * Refactor and fix to make it pass (more of) the test suiteLars Wirzenius2012-11-292-10/+29
| |
| * Hardlinked chroot done with linux-user-chrootJoe Burmeister2012-11-292-34/+64
|/ | | | | | | | | | | | | | The patch gives two things. Improves morph build time by reusing decompressed files of chunks/stage-fillers with hardlinks from the chroot. Rather than decompressing each time into each chroot. Original: real 5h 17m 47s Hardlink: real 2h 52m 27s It uses linux-user-chroot to create the chroot and make all but the basics readonly.
* Fix line longer than 79 charsSam Thursfield2012-11-261-1/+1
|
* Fix another baserock: URLLars Wirzenius2012-11-211-1/+1
|
* Fix URLs in example in READMELars Wirzenius2012-11-211-2/+2
|
* Merge branch 'master' of git://git.baserock.org/baserock/baserock/morphLars Wirzenius2012-11-211-1/+2
|\
| * Merge branch 'samthursfield/remove-gzip-file-header'Sam Thursfield2012-11-161-1/+2
| |\ | | | | | | | | | Reviewed-By: Lars Wirzenius <lars.wirzenius@codethink.co.uk>
| | * Don't store original filename in compressed image filesSam Thursfield2012-11-161-1/+2
| |/ | | | | | | | | | | | | gzip files can store the name and date of the uncompressed original, and this is displayed in some GUI archive managers, or when gunzip -N is used. In our case the original filename is something like 'tmpXsgaY15', which is useless information and serves only to confuse.
* | Fix baserock: aliased URLs to point at new locationLars Wirzenius2012-11-211-6/+6
|/
* Merge branch 'samthursfield/handle-target-disk-full' of ↵Richard Maw2012-11-155-25/+101
|\ | | | | | | | | | | | | | | | | | | | | git://git.baserock.org/baserock/morph A couple of nasties are fixed in here. Previously when the disk was full, Morph logged a backtrace into morph.log and then tried to unmount the disk image, but as there were still open file handles inside it the unmount would fail and the user would end up with a backtrace for a failed unmount and a stuck loopback device that they would need to fix manually.
| * Cleanly handle out of disk space on target filesystem.Sam Thursfield2012-11-154-1/+60
| | | | | | | | Includes new test.
| * Override Python tarfile module to close file handles on exceptionSam Thursfield2012-11-151-0/+15
| | | | | | | | Reported upstream as: http://bugs.python.org/issue16477
| * Close file handles correctly on exceptions when unpacking strataSam Thursfield2012-11-152-23/+25
| | | | | | | | | | | | | | This prevents us from leaving file handles open when code throws an exception. When the file handle is on a loopback mount, this is a real problem because Morph then cannot unmount the image in its exception handler. In most cases 'with' is the best option.
| * Consistency fixSam Thursfield2012-11-151-1/+1
|/
* Merge branch 'samthursfield/test-tidying-3' of ↵Richard Maw2012-11-1514-307/+77
|\ | | | | | | | | | | git://git.baserock.org/baserock/morph Consolidate setup of tests which defined system morphologies.
| * Update as-root tests to use their setup infrastructureSam Thursfield2012-11-1414-307/+77
| | | | | | | | Code to generate system images was being duplicated in each test needlessly.
* | Merge branch 'samthursfield/test-tidying-2' of ↵Richard Maw2012-11-1585-285/+366
|\ \ | |/ | | | | git://git.baserock.org/baserock/morph
| * Tidy up command testsSam Thursfield2012-11-1485-285/+366
|/ | | | Be consistent about placement of test description, blank lines, etc.
* Merge branch 'baserock/richardmaw/fix-python-check'Sam Thursfield2012-11-1319-90/+56
|\
| * Consolidate checks for python versionRichard Maw2012-11-1319-90/+56
| | | | | | | | | | | | | | | | Most of the bespoke logic for the version check is unnecessary, since the output to display can be easily inferred from the filename. This fixes some test failures where the version check would cat a file to fake the output, but fail because the file was removed.
* | Revert "Merge remote-tracking branch 'origin/jonathanmaw/autotools-sysconfdir'"water-bombSam Thursfield2012-11-131-1/+1
|/ | | | | | | | | | cmake has a ./configure, which accepts --prefix, but chokes on --sysconfdir This means that bootstrap is broken by this commit. This reverts commit 5f22ded9711a047704fc91b68a182b057e29bc0f, reversing changes made to e13753d4f3e26f3a4c705fb3e694ae8dea860c2d.
* Merge branch 'samthursfield/build-without-push' of ↵Richard Maw2012-11-1225-116/+225
|\ | | | | | | git://git.baserock.org/baserock/morph
| * Avoid caching repos that are on the local machine anywaySam Thursfield2012-11-1211-16/+30
| | | | | | | | | | Currently the message is still displayed "Updating xxx" but no update is actually done.
| * Use git://localhost URL's instead of file:// in update-gits testsSam Thursfield2012-11-123-22/+48
| | | | | | | | This requires running git-daemon manually in the tests.