summaryrefslogtreecommitdiff
path: root/morphlib
Commit message (Collapse)AuthorAgeFilesLines
* fixup: line length in the artifacts helperAdam Coldrick2015-04-141-2/+2
|
* fixup: Copyright years in artifact cache helpersAdam Coldrick2015-04-141-1/+1
|
* Add a plugin containing some commands to help with the OSTree artifact cacheAdam Coldrick2015-04-141-0/+169
|
* fixup: Fixes to ostreeartifactcacheAdam Coldrick2015-04-141-14/+46
|
* fixup: Fix local-artifact-cache list-allAdam Coldrick2015-04-141-2/+3
|
* fixup: Fix gcAdam Coldrick2015-04-101-2/+1
|
* fixup: tidy up deploymentAdam Coldrick2015-04-101-24/+79
|
* fixup: ostreeartifactcache: Change some exception stuffAdam Coldrick2015-04-101-2/+7
|
* fixup: More fixes to ostreeartifactcacheAdam Coldrick2015-04-101-1/+4
|
* fixup: Some fixes for ostreeartifactcacheAdam Coldrick2015-04-101-4/+13
|
* fixup: Redundancy is better than silenceAdam Coldrick2015-04-101-3/+3
|
* fixup: ostreeartifactcache fixesAdam Coldrick2015-04-101-4/+5
|
* fixup: Move fetching to local cache messageAdam Coldrick2015-04-101-3/+3
|
* fixup: artifact.name does not workAdam Coldrick2015-04-101-3/+5
|
* fixup: Finish removing hardlink cacheAdam Coldrick2015-04-102-6/+23
|
* Improve downloading artifacts for OSTree artifact cacheAdam Coldrick2015-04-101-23/+25
| | | | | | | | | | | | | This fixes two issues: first, downloads were being put into the default TMPDIR, which is an in-memory file system. When large artifacts are put into /tmp such as gcc-devel, which is over 400MB, I found that my system became unusable due to out of memory / swap death. Ideally we'd fix Linux's memory management, but a more practical solution for now is to download the files to the artifact cache directory. I've not noticed any loss in speed from this change. Second, temporary files should always cleaned up now, even when there are errors during transfer or extraction.
* Output more information in --verbose modeAdam Coldrick2015-04-103-12/+24
| | | | | | | | | | | | | | | | | Previously this info was just in the log file, but I think it should be on the console too. Also, the 'Downloading xx as tarball' message would appear even when there was no tarball to download, which was a bit weird. Output with `morph build --verbose` now looks like this: 2015-03-25 15:00:53 [Build 8/226] [stage2-gcc] Fetching to local cache: artifact stage2-gcc-locale 2015-03-25 15:00:53 [Build 8/226] [stage2-gcc] Downloading stage2-gcc-locale as a tarball. 2015-03-25 15:00:53 [Build 8/226] [stage2-gcc] Committing stage2-gcc-locale to artifact cache at 14ae4efeeaeea43f8a4f9198172ca9961f343cde663ec98e7061259d6542c35a-locale. 2015-03-25 15:00:53 [Build 8/226] [stage2-gcc] Fetching to local cache: artifact stage2-gcc-libs 2015-03-25 15:00:53 [Build 8/226] [stage2-gcc] Downloading stage2-gcc-libs as a tarball. 2015-03-25 15:00:53 [Build 8/226] [stage2-gcc] Committing stage2-gcc-libs to artifact cache at 14ae4efeeaeea43f8a4f9198172ca9961f343cde663ec98e7061259d6542c35a-libs.
* SUGGESTED: remove the chunk hardlink cacheAdam Coldrick2015-04-103-75/+7
| | | | | The OSTree checkout uses hardlinks anyway, so this is thankfully now redundant.
* fixup: commented codeAdam Coldrick2015-04-101-4/+3
|
* fixup: remove OSTreeArtifactCache.get() status callbackAdam Coldrick2015-04-101-1/+1
|
* fixup: Clean up OSTreeArtifactCacheAdam Coldrick2015-04-101-4/+5
|
* fixup: Its unionfs-fuse, not unionfsAdam Coldrick2015-04-101-3/+2
|
* fixup: Be a sneaky boop when building systemsAdam Coldrick2015-04-101-1/+1
|
* fixup: Clean up OSTree wrapperAdam Coldrick2015-04-101-35/+74
|
* fixup: Add a command line option for repo modeAdam Coldrick2015-04-101-0/+9
|
* gc: Make `morph gc` use the OSTree artifact cacheAdam Coldrick2015-04-101-2/+6
|
* deploy: Use OSTree to checkout the system for deploymentAdam Coldrick2015-04-101-7/+30
| | | | | | | | | Now that we have an OSTree artifact cache, the deploy plugin needs to use that to get the system to be deployed. Due to the changes in how we store systems, we need to get the contents of each stratum then put the system delta on top of that. This is still much quicker than unpacking stuff from tarballs.
* builder: Use the OSTree artifact cache when buildingAdam Coldrick2015-04-103-45/+49
| | | | | | | The API of the OSTree artifact cache is slightly different to that of the old tarball cache, so adjust things accordingly. Also, only store the files changed at system-construction-time rather than everything in system artifacts.
* Make morph use OSTreeArtifactCache instead of LocalArtifactCacheAdam Coldrick2015-04-101-2/+4
|
* RemoteArtifactCache: Support multiple cache methodsAdam Coldrick2015-04-101-0/+25
| | | | | This commit updates RemoteArtifactCache to enable it to interact with a remote OSTree artifact cache.
* Add an artifact cache which uses OSTreeAdam Coldrick2015-04-103-5/+231
|
* Add a class to wrap the OSTree APIAdam Coldrick2015-04-102-0/+140
|
* bins: We no longer want chunks to be tarballsAdam Coldrick2015-04-102-120/+37
| | | | | | Change create_chunk to put the contents of an artifact into a directory rather than storing them in a tarball, as we want to store chunks as directory trees in OSTree rather than tarballs now.
* Move the chunk cache logic into buildcommandAdam Coldrick2015-04-102-23/+23
| | | | | | This avoids needing to pass the cache to the staging area since lac.get returns a path to a directory tree rather than a file handle now, so we also don't need to do any unpacking.
* Create device nodes in staging areaAdam Coldrick2015-04-103-35/+39
| | | | | | | | | We can't store devices nodes in OSTree, so we can't create them at artifact build time and store them in the chunk artifacts anymore. Instead, we should create them in the staging area when installing an artifact with a source which has a morphology which defines them into the staging area.
* Add support for unionfs-fuseAdam Coldrick2015-04-104-16/+40
| | | | | | Overlayfs is new in version 3.18 of the kernel, so add support for a different implementation of a union/overlay filesystem in order to allow morph to work on older kernels.
* Use overlayfs when deployingAdam Coldrick2015-04-101-4/+34
| | | | | | | | | | | | When deploying, configuration extensions are run against the unpacked tarball of a system created by a build. If we are to use OSTree to store systems (rather than tarballs) this will not be possible as the result of `ostree checkout` would be read-only. To solve this, we use overlayfs to mount the unpacked tarball underneath a temporary directory somewhere, and run the configuration extensions on that mount point. This means that the changes are made in the temporary directory rather than directly on the tarball.
* Use overlayfs when building systemsAdam Coldrick2015-04-103-5/+45
| | | | | This will allow us to cache systems as a list of chunks and a small filesystem delta, rather than a massive tarball.
* Allow the passing of options to fsutils.mountAdam Coldrick2015-04-101-2/+5
| | | | | In order to mount using overlayfs, fsutils.mount needs to take a string of options to pass to the mount command.
* Fix _env_for_arch()Paul Martin2015-04-101-1/+1
| | | | Change-Id: I1ffb63340d3facb608708d04a0a21c5a9e290c14
* Change build environment to support MIPS32/64 BE and LESimon Hoinkis2015-04-103-6/+36
| | | | Change-Id: I9344b9b80a6ec008715559390b63c9003f34bf90
* Make kvm deploy check that host has virt-installRichard Ipsum2015-04-071-0/+9
| | | | | | | This allows us to catch a case where virt-install hasn't been installed on the host we're deploying to much earlier in the deployment process. Change-Id: I413ad804a7e8bef4fc2d1231411e01d30d0cb9e8
* Make source resolver pass filenameRichard Ipsum2015-04-041-1/+1
| | | | | | | | | | | | | Passing the filename when loading a morphology lets us give a more useful error message: e.g. ERROR: Missing field name from morphology strata/build-essential.morph instead of ERROR: Missing field name from morphology string Change-Id: I2e5b33e8154567469aa56adbf942fb7b6e9dd1ac
* Implement partial distbuildsAdam Coldrick2015-04-022-6/+24
| | | | | | | | | | | | | | In addition to partial builds we also want to be able to do partial distbuilds, and distbuild uses a different codepath. This commit updates the distbuild code to know what to do if a partial build is requested. It only builds up to the latest chunk/stratum that was requested, and displays where to find the artifacts for each of the chunks/strata requested upon completion of the build. The usage is the same as for local builds. Change-Id: I0537f74e2e65c7aefe5e71795f17999e2415fce5
* Add `morph certify` plugin to check for build reproducibility.Michael Drake2015-04-011-0/+140
| | | | | | | | | | | Currently does three checks: 1. Checks that all chunks in given system(s) have sha1 refs. 2. Checks that all sha1 refs are anchored. Unanchored refs can be removed on `git gc`. 3. Checks that all chunk repos are on the trove-host. Change-Id: Iaf105b1614a45616684e68a08f28b8529d4321fa
* Make warning messages more user friendly.Michael Drake2015-04-011-0/+7
| | | | | | | | Printing the file and line number of the warning's origin makes the warning itself harder to spot, and can make it appear as if something has actually gone wrong. Change-Id: Ie77357d9a061d31e234e6e434521d2d274409773
* Functions for checking if ref is in branches/tags of a cached repoMichael Drake2015-04-011-0/+20
| | | | Change-Id: I63f0d9da8b12930bd9539710429756a0821ce884
* Add functions for checking which tags/branches contain a refMichael Drake2015-04-012-0/+58
| | | | Change-Id: Ic6e613c21ed26c528ad7c75f41af01d7552729fd
* Improve build starting outputAdam Coldrick2015-04-011-1/+2
| | | | Change-Id: Ica2a270b254b01b9fb15956556efb74ee641e1b4
* Implement partial buildsAdam Coldrick2015-04-012-21/+92
| | | | | | | | | | | | | | | | | | This commit allows you to build only a single chunk or stratum and its dependencies, instead of a whole system. This will be useful for developers who want to quickly check the build commands of a chunk for example. You can give more than one chunk or stratum to the command, and the build will run up to the latest one, building the dependencies of both. An example of the usage: morph build systems/devel-system-x86_64-generic.morph \ strata/build-essential.morph strata/core/curl.morph This will only build up to curl in the core stratum. Change-Id: Id55b8335fc61e8fdf847f5e383cfedd13d07e6d2