From 8d7264debce05e84a1f77a3f80ed170792883190 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 18 Nov 2025 16:57:05 +0700 Subject: [PATCH] Fix make mount across containers --- mk/disk.mk | 16 ++++++++++++++-- mk/podman.mk | 5 ++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mk/disk.mk b/mk/disk.mk index 092862d57..e605365b8 100644 --- a/mk/disk.mk +++ b/mk/disk.mk @@ -58,15 +58,27 @@ else mv $@.partial $@ endif +DAEMONIZE_MOUNT=0 + mount: $(HOST_FSTOOLS) FORCE ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ + podman unshare mount --make-shared --bind $(ROOT) $(ROOT) + touch $(MOUNT_DIR).tag + $(PODMAN_RUN_DETACHED) make $@ DAEMONIZE_MOUNT=1 + sleep 2 else mkdir -p $(MOUNT_DIR) $(REDOXFS) $(BUILD)/harddrive.img $(MOUNT_DIR) +ifeq ($(DAEMONIZE_MOUNT),1) + @while test -f $(MOUNT_DIR).tag; do \ + sleep 1; \ + done + make unmount +else sleep 2 pgrep redoxfs endif +endif mount_extra: $(HOST_FSTOOLS) FORCE ifeq ($(PODMAN_BUILD),1) @@ -90,7 +102,7 @@ endif unmount: FORCE ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ + rm -f $(MOUNT_DIR).tag else sync -$(FUMOUNT) $(MOUNT_DIR) || true diff --git a/mk/podman.mk b/mk/podman.mk index 68f42c96c..630a19877 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -10,20 +10,23 @@ CONTAINER_WORKDIR?=/mnt/redox USE_SELINUX=1 ifeq ($(USE_SELINUX),1) PODMAN_VOLUME_FLAG=:Z +PORMAN_MOUNT_FLAG=,relabel=private else PODMAN_VOLUME_FLAG= +PORMAN_MOUNT_FLAG= endif ## Podman Home Directory PODMAN_HOME?=$(ROOT)/build/podman ## Podman command with its many arguments -PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_HOME):/root$(PODMAN_VOLUME_FLAG) +PODMAN_VOLUMES?=--mount type=bind,source=$(ROOT),destination=$(CONTAINER_WORKDIR),bind-propagation=rshared$(PORMAN_MOUNT_FLAG) --volume $(PODMAN_HOME):/root$(PODMAN_VOLUME_FLAG) PODMAN_ENV?=--env PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0 PODMAN_CONFIG?=--env ARCH=$(ARCH) --env BOARD=$(BOARD) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG) --env PREFIX_BINARY=$(PREFIX_BINARY) \ --env CI=$(CI) --env COOKBOOK_MAKE_JOBS=$(COOKBOOK_MAKE_JOBS) --env COOKBOOK_LOGS=$(COOKBOOK_LOGS) --env COOKBOOK_VERBOSE=$(COOKBOOK_VERBOSE) \ --env REPO_APPSTREAM=$(REPO_APPSTREAM) --env REPO_BINARY=$(REPO_BINARY) --env REPO_NONSTOP=$(REPO_NONSTOP) --env REPO_OFFLINE=$(REPO_OFFLINE) PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --interactive --tty --cap-add SYS_ADMIN --device /dev/fuse --network=host --env TERM=$(TERM) PODMAN_RUN?=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) +PODMAN_RUN_DETACHED?=podman run -d $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) container_shell: build/container.tag ifeq ($(PODMAN_BUILD),1)