summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2023-07-02 19:06:18 +0300
committerLars Wirzenius <liw@liw.fi>2023-07-02 19:06:18 +0300
commitccda137a15d74e14c393475f73fdb908ab4a0d12 (patch)
treeebfc263c9abb777f29381868f65de9985f5b8d0a
parent399744c38c2e1d4bcf7e2c9c25fa577f711af5a5 (diff)
downloadambient-ci-ccda137a15d74e14c393475f73fdb908ab4a0d12.tar.gz
feat: actually support cache and dependencies devices
Sponsored-by: author
-rw-r--r--ambient-build.service2
-rwxr-xr-xambient-run24
-rwxr-xr-xtest-project/.ambient-script2
3 files changed, 27 insertions, 1 deletions
diff --git a/ambient-build.service b/ambient-build.service
index b62a970..b739779 100644
--- a/ambient-build.service
+++ b/ambient-build.service
@@ -6,5 +6,5 @@ WantedBy=multi-user.target
[Service]
Type=oneshot
-ExecStart=/bin/ambient-run-script -t /dev/ttyS0 -s /dev/vdb -a /dev/vdc
+ExecStart=/bin/ambient-run-script -t /dev/ttyS0 -s /dev/vdb -a /dev/vdc -c /dev/vdd -d /dev/vde
ExecStart=/sbin/poweroff
diff --git a/ambient-run b/ambient-run
index f9b03e1..a691b49 100755
--- a/ambient-run
+++ b/ambient-run
@@ -20,6 +20,8 @@ def parse_args():
p.add_argument("--image", required=True)
p.add_argument("--log", required=True)
p.add_argument("--artifact")
+ p.add_argument("--cache")
+ p.add_argument("--dependencies")
p.add_argument("source_tree")
return p.parse_args()
@@ -92,6 +94,24 @@ def main():
["qemu-img", "create", "-q", "-f", "raw", output_drive, "1G"], check=True
)
+ if args.cache is None:
+ cache_drive = os.path.join(tmp, "cache.tar")
+ else:
+ cache_drive = args.cache
+ logging.info(f"using {cache_drive} as cache drive")
+ if not os.path.exists(cache_drive):
+ logging.info(f"creating empty tar archive as {cache_drive}")
+ tar = tarfile.open(name=cache_drive, mode="w:")
+ tar.close()
+
+ if args.dependencies is None:
+ deps_drive = os.path.join(tmp, "deps.tar")
+ tar = tarfile.open(name=deps_drive, mode="w:")
+ tar.close()
+ else:
+ deps.drive = args.dependencies
+ logging.info(f"using {deps_drive} as cache drive")
+
logging.info("run build in VM")
argv = [
"kvm",
@@ -107,6 +127,10 @@ def main():
f"format=raw,if=virtio,file={src_tar},readonly=on",
"-drive",
f"format=raw,if=virtio,file={output_drive}",
+ "-drive",
+ f"format=raw,if=virtio,file={cache_drive}",
+ "-drive",
+ f"format=raw,if=virtio,file={deps_drive}",
"-nodefaults",
"-display",
"none",
diff --git a/test-project/.ambient-script b/test-project/.ambient-script
index 5819e76..d80fa2a 100755
--- a/test-project/.ambient-script
+++ b/test-project/.ambient-script
@@ -5,6 +5,8 @@ set -euo pipefail
echo "hello from test-project's ambient script: $*"
cat /proc/cmdline
+ls -l /dev/vd?
+ls -l /workspace
output="$1"