From 94f1562ec5788e1b7193e19cbe4bb5dd3b233a65 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Fri, 29 Mar 2024 09:16:15 -0600 Subject: [PATCH] choose base image by arch instead of platform --- Makefile | 12 +++++++----- build/.gitignore | 3 +-- container-runtime/.gitignore | 2 +- container-runtime/download-base-image.sh | 11 ++++++----- container-runtime/update-image.sh | 6 +++--- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index f6cc6b21b..9c6f89003 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ IMAGE_TYPE=$(shell if [ "$(PLATFORM)" = raspberrypi ]; then echo img; else echo BINS := core/target/$(ARCH)-unknown-linux-musl/release/startbox core/target/$(ARCH)-unknown-linux-musl/release/containerbox WEB_UIS := web/dist/raw/ui web/dist/raw/setup-wizard web/dist/raw/diagnostic-ui web/dist/raw/install-wizard FIRMWARE_ROMS := ./firmware/$(PLATFORM) $(shell jq --raw-output '.[] | select(.platform[] | contains("$(PLATFORM)")) | "./firmware/$(PLATFORM)/" + .id + ".rom.gz"' build/lib/firmware.json) -BUILD_SRC := $(shell git ls-files build) build/lib/depends build/lib/conflicts build/lib/container-runtime/rootfs.squashfs $(FIRMWARE_ROMS) +BUILD_SRC := $(shell git ls-files build) build/lib/depends build/lib/conflicts container-runtime/rootfs.$(ARCH).squashfs $(FIRMWARE_ROMS) DEBIAN_SRC := $(shell git ls-files debian/) IMAGE_RECIPE_SRC := $(shell git ls-files image-recipe/) STARTD_SRC := core/startos/startd.service $(BUILD_SRC) @@ -25,7 +25,7 @@ WEB_INSTALL_WIZARD_SRC := $(shell git ls-files web/projects/install-wizard) PATCH_DB_CLIENT_SRC := $(shell git ls-files --recurse-submodules patch-db/client) GZIP_BIN := $(shell which pigz || which gzip) TAR_BIN := $(shell which gtar || which tar) -COMPILED_TARGETS := $(BINS) system-images/compat/docker-images/$(ARCH).tar system-images/utils/docker-images/$(ARCH).tar system-images/binfmt/docker-images/$(ARCH).tar build/lib/container-runtime/rootfs.squashfs +COMPILED_TARGETS := $(BINS) system-images/compat/docker-images/$(ARCH).tar system-images/utils/docker-images/$(ARCH).tar system-images/binfmt/docker-images/$(ARCH).tar container-runtime/rootfs.$(ARCH).squashfs ALL_TARGETS := $(STARTD_SRC) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) $(VERSION_FILE) $(COMPILED_TARGETS) $(shell if [ "$(PLATFORM)" = "raspberrypi" ]; then echo cargo-deps/aarch64-unknown-linux-musl/release/pi-beep; fi) $(shell /bin/bash -c 'if [[ "${ENVIRONMENT}" =~ (^|-)unstable($$|-) ]]; then echo cargo-deps/$(ARCH)-unknown-linux-musl/release/tokio-console; fi') $(PLATFORM_FILE) sdk/lib/test ifeq ($(REMOTE),) @@ -76,7 +76,7 @@ clean: rm -rf build/lib/firmware rm -rf container-runtime/dist rm -rf container-runtime/node_modules - rm -f build/lib/container-runtime/rootfs.squashfs + rm -f container-runtime/*.squashfs rm -rf sdk/dist rm -rf sdk/node_modules rm -f ENVIRONMENT.txt @@ -127,6 +127,8 @@ install: $(ALL_TARGETS) $(call mkdir,$(DESTDIR)/usr/lib) $(call rm,$(DESTDIR)/usr/lib/startos) $(call cp,build/lib,$(DESTDIR)/usr/lib/startos) + $(call mkdir,$(DESTDIR)/usr/lib/startos/container-runtime) + $(call cp,container-runtime/rootfs.$(ARCH).squashfs,$(DESTDIR)/usr/lib/startos/container-runtime/rootfs.squashfs) $(call cp,PLATFORM.txt,$(DESTDIR)/usr/lib/startos/PLATFORM.txt) $(call cp,ENVIRONMENT.txt,$(DESTDIR)/usr/lib/startos/ENVIRONMENT.txt) @@ -168,7 +170,7 @@ emulate-reflash: $(ALL_TARGETS) upload-ota: results/$(BASENAME).squashfs TARGET=$(TARGET) KEY=$(KEY) ./upload-ota.sh -container-runtime/alpine.squashfs: $(PLATFORM_FILE) +container-runtime/alpine.$(ARCH).squashfs: ARCH=$(ARCH) ./container-runtime/download-base-image.sh container-runtime/node_modules: container-runtime/package.json container-runtime/package-lock.json sdk/dist @@ -193,7 +195,7 @@ container-runtime/dist/node_modules container-runtime/dist/package.json containe ./container-runtime/install-dist-deps.sh touch container-runtime/dist/node_modules -build/lib/container-runtime/rootfs.squashfs: container-runtime/alpine.squashfs container-runtime/containerRuntime.rc container-runtime/update-image.sh container-runtime/dist container-runtime/dist/node_modules core/target/$(ARCH)-unknown-linux-musl/release/containerbox $(PLATFORM_FILE) | sudo +container-runtime/rootfs.$(ARCH).squashfs: container-runtime/alpine.$(ARCH).squashfs container-runtime/containerRuntime.rc container-runtime/update-image.sh container-runtime/dist container-runtime/dist/node_modules core/target/$(ARCH)-unknown-linux-musl/release/containerbox | sudo ARCH=$(ARCH) ./container-runtime/update-image.sh build/lib/depends build/lib/conflicts: build/dpkg-deps/* diff --git a/build/.gitignore b/build/.gitignore index f24aa0255..497f4b913 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -1,3 +1,2 @@ /lib/depends -/lib/conflicts -/lib/container-runtime/rootfs.squashfs \ No newline at end of file +/lib/conflicts \ No newline at end of file diff --git a/container-runtime/.gitignore b/container-runtime/.gitignore index 1764c1d17..8aa4208b7 100644 --- a/container-runtime/.gitignore +++ b/container-runtime/.gitignore @@ -4,5 +4,5 @@ bundle.js startInit.js service/ service.js -alpine.squashfs +*.squashfs /tmp \ No newline at end of file diff --git a/container-runtime/download-base-image.sh b/container-runtime/download-base-image.sh index e708478e1..23a140ea5 100755 --- a/container-runtime/download-base-image.sh +++ b/container-runtime/download-base-image.sh @@ -9,10 +9,11 @@ VERSION=3.19 ARCH=${ARCH:-$(uname -m)} FLAVOR=default -if [ "$ARCH" = "x86_64" ]; then - ARCH=amd64 -elif [ "$ARCH" = "aarch64" ]; then - ARCH=arm64 +_ARCH=$ARCH +if [ "$_ARCH" = "x86_64" ]; then + _ARCH=amd64 +elif [ "$_ARCH" = "aarch64" ]; then + _ARCH=arm64 fi -curl https://images.linuxcontainers.org/$(curl --silent https://images.linuxcontainers.org/meta/1.0/index-system | grep "^$DISTRO;$VERSION;$ARCH;$FLAVOR;" | head -n1 | sed 's/^.*;//g')/rootfs.squashfs --output alpine.squashfs \ No newline at end of file +curl https://images.linuxcontainers.org/$(curl --silent https://images.linuxcontainers.org/meta/1.0/index-system | grep "^$DISTRO;$VERSION;$_ARCH;$FLAVOR;" | head -n1 | sed 's/^.*;//g')/rootfs.squashfs --output alpine.${ARCH}.squashfs \ No newline at end of file diff --git a/container-runtime/update-image.sh b/container-runtime/update-image.sh index 64ca503cf..e0d5dc0c3 100755 --- a/container-runtime/update-image.sh +++ b/container-runtime/update-image.sh @@ -9,7 +9,7 @@ set -e if mountpoint tmp/combined; then sudo umount tmp/combined; fi if mountpoint tmp/lower; then sudo umount tmp/lower; fi mkdir -p tmp/lower tmp/upper tmp/work tmp/combined -sudo mount alpine.squashfs tmp/lower +sudo mount alpine.${ARCH}.squashfs tmp/lower sudo mount -t overlay -olowerdir=tmp/lower,upperdir=tmp/upper,workdir=tmp/work overlay tmp/combined QEMU= @@ -33,9 +33,9 @@ fi sudo truncate -s 0 tmp/combined/etc/resolv.conf sudo chown -R 0:0 tmp/combined -rm -f ../build/lib/container-runtime/rootfs.squashfs +rm -f rootfs.${ARCH}.squashfs mkdir -p ../build/lib/container-runtime -sudo mksquashfs tmp/combined ../build/lib/container-runtime/rootfs.squashfs +sudo mksquashfs tmp/combined rootfs.${ARCH}.squashfs sudo umount tmp/combined sudo umount tmp/lower sudo rm -rf tmp \ No newline at end of file