mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-24 05:44:17 +08:00
Add push recipe to existing image
This commit is contained in:
parent
f469e9f34a
commit
a521b5fc8c
@ -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=
|
||||
|
||||
26
mk/disk.mk
26
mk/disk.mk
@ -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
|
||||
|
||||
28
mk/repo.mk
28
mk/repo.mk
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user