Add push recipe to existing image

This commit is contained in:
Wildan M 2025-09-04 23:37:38 +07:00
parent f469e9f34a
commit a521b5fc8c
3 changed files with 42 additions and 13 deletions

View File

@ -109,6 +109,7 @@ else
export GNU_TARGET=$(TARGET)
endif
BUILD=build/$(ARCH)/$(CONFIG_NAME)
MOUNT_DIR=$(BUILD)/filesystem
HOST_FSTOOLS=build/fstools
INSTALLER=$(HOST_FSTOOLS)/bin/redox_installer
INSTALLER_OPTS=

View File

@ -27,8 +27,8 @@ $(BUILD)/redox-live.iso: $(HOST_FSTOOLS) $(REPO_TAG) redox.ipxe
$(BUILD)/filesystem.img: $(HOST_FSTOOLS) $(REPO_TAG)
mkdir -p $(BUILD)
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $@ $@.partial $(BUILD)/filesystem/
-$(FUMOUNT) $(MOUNT_DIR) || true
rm -rf $@ $@.partial $(MOUNT_DIR)
-$(FUMOUNT) /tmp/redox_installer || true
FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \
if [ -z "$$FILESYSTEM_SIZE" ] ; then \
@ -36,30 +36,30 @@ $(BUILD)/filesystem.img: $(HOST_FSTOOLS) $(REPO_TAG)
fi && \
truncate -s "$$FILESYSTEM_SIZE"m $@.partial
$(REDOXFS_MKFS) $(REDOXFS_MKFS_FLAGS) $@.partial
mkdir -p $(BUILD)/filesystem/
$(REDOXFS) $@.partial $(BUILD)/filesystem/
mkdir -p $(MOUNT_DIR)
$(REDOXFS) $@.partial $(MOUNT_DIR)
sleep 1
pgrep redoxfs
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $(BUILD)/filesystem/
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $(MOUNT_DIR)
sync
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $(BUILD)/filesystem/
-$(FUMOUNT) $(MOUNT_DIR) || true
rm -rf $(MOUNT_DIR)
mv $@.partial $@
mount: $(HOST_FSTOOLS) FORCE
mkdir -p $(BUILD)/filesystem/
$(REDOXFS) $(BUILD)/harddrive.img $(BUILD)/filesystem/
mkdir -p $(MOUNT_DIR)
$(REDOXFS) $(BUILD)/harddrive.img $(MOUNT_DIR)
sleep 2
pgrep redoxfs
mount_extra: $(HOST_FSTOOLS) FORCE
mkdir -p $(BUILD)/filesystem/
$(REDOXFS) $(BUILD)/extra.img $(BUILD)/filesystem/
mkdir -p $(MOUNT_DIR)
$(REDOXFS) $(BUILD)/extra.img $(MOUNT_DIR)
sleep 2
pgrep redoxfs
unmount: FORCE
sync
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $(BUILD)/filesystem/
-$(FUMOUNT) $(MOUNT_DIR) || true
rm -rf $(MOUNT_DIR)
-$(FUMOUNT) /tmp/redox_installer || true

View File

@ -87,6 +87,34 @@ else
fi
endif
MOUNTED_TAG=$(MOUNT_DIR)~
# Push compiled package into existing image
# DO NOT RUN THIS WHILE QEMU ALIVE, THE DISK MIGHT CORRUPT IN DOING SO
p.%: $(FSTOOLS_TAG) FORCE
@rm -f $(MOUNTED_TAG)
@if [ ! -d "$(MOUNT_DIR)" ]; then \
$(MAKE) mount; \
touch $(MOUNTED_TAG); \
fi
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) make $@
else
@if echo "$*" | grep -q ','; then \
$(MAKE) $(foreach f,$(subst $(comma), ,$*),p.$(f)); \
else \
export RECIPE_PATH=cookbook/$(shell make find.$* | grep ^recipes) && \
export RECIPE_STAGE=$$RECIPE_PATH/target/$(TARGET)/stage.pkgar && \
./cookbook/pkgar/target/release/pkgar extract $(MOUNT_DIR)/ --archive $$RECIPE_STAGE \
--pkey ./cookbook/build/id_ed25519.pub.toml && \
echo "extracted $$RECIPE_PATH"; \
fi
endif
@if [ -f $(MOUNTED_TAG) ]; then \
$(MAKE) unmount; && rm -f $(MOUNTED_TAG); \
else echo "Not unmounting by ourself, don't forget to do it"; \
fi
# Invoke unfetch.sh for one or more targets separated by comma
u.%: $(FSTOOLS_TAG) FORCE
ifeq ($(PODMAN_BUILD),1)