From 625178782fc054b6e722db666eddeee8b5513a90 Mon Sep 17 00:00:00 2001
From: Christopher Spinrath <christopher.spinrath@rwth-aachen.de>
Date: Tue, 1 Sep 2015 21:44:16 +0200
Subject: [PATCH] ensure mounted partition for all targets accessing
 $(IMAGE_DIR)

---
 Makefile | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/Makefile b/Makefile
index 52d4a58..b2f25ac 100644
--- a/Makefile
+++ b/Makefile
@@ -363,7 +363,7 @@ $(call gentargets,$(INITRD_TARGET)) : $(call archdir,%)$(STATE_DIR)/initrd_remas
 
 clean_really_all: iso_clean_both rootfs_clean_both rootfs_common_clean initrd_clean_both image_clean
 
-image_git $(IMAGE_DIR)/.git: |$(WORKSPACE)
+$(call ensure_mount,image_git) $(IMAGE_DIR)/.git: |$(WORKSPACE)
 	test ! -e "$(IMAGE_DIR)/.git"
 	mkdir -p "$(IMAGE_DIR)"
 	cd "$(IMAGE_DIR)" && git init
@@ -371,7 +371,7 @@ image_git $(IMAGE_DIR)/.git: |$(WORKSPACE)
 	cd "$(IMAGE_DIR)" && git fetch
 	cd "$(IMAGE_DIR)" && git checkout -t "origin/$(IMAGE_GIT_BRANCH)"
 
-image_git_pull: |$(IMAGE_DIR)/.git
+$(call ensure_mount,image_git_pull): |$(IMAGE_DIR)/.git
 	cd "$(IMAGE_DIR)" && $(SHELL) ./scripts/update_stick.sh "$(IMAGE_GIT_BRANCH)"
 
 IMAGE_BINARIES= $(COMMON_DIR)/lip-$(PRIMARY_ARCH).squashfs $(COMMON_DIR)/lip-$(SECONDARY_ARCH).squashfs $(COMMON_DIR)/lip-common.squashfs \
@@ -379,7 +379,7 @@ $(PRIMARY_ARCH_DIR)$(INITRD_TARGET) $(SECONDARY_ARCH_DIR)$(INITRD_TARGET) \
 $(PRIMARY_ARCH_DIR)$(STATE_DIR)/iso_extracted $(SECONDARY_ARCH_DIR)$(STATE_DIR)/iso_extracted \
 $(PRIMARY_ARCH_DIR)/filesystem.size \
 $(PRIMARY_ARCH_DIR)/gparted-live.iso $(SECONDARY_ARCH_DIR)/gparted-live.iso
-image_binary_files $(IMAGE_DIR)/.lipbinaries: image_git_pull $(IMAGE_BINARIES)
+$(call ensure_mount,image_binary_files) $(IMAGE_DIR)/.lipbinaries: image_git_pull $(IMAGE_BINARIES)
 	$(RSYNC) "$(PRIMARY_ARCH_DIR)$(ISO_CONTENT)/dists" \
 		 "$(PRIMARY_ARCH_DIR)$(ISO_CONTENT)/isolinux" \
 		 "$(PRIMARY_ARCH_DIR)$(ISO_CONTENT)/pool" \
@@ -408,11 +408,11 @@ image_binary_files $(IMAGE_DIR)/.lipbinaries: image_git_pull $(IMAGE_BINARIES)
 		 "$(IMAGE_DIR)/boot/grub/"
 	touch "$(IMAGE_DIR)/.lipbinaries"
 
-image_remaster $(IMAGE_DIR)/.remastered: $(IMAGE_DIR)/.lipbinaries
+$(call ensure_mount,image_remaster) $(IMAGE_DIR)/.remastered: $(IMAGE_DIR)/.lipbinaries
 	$(call patch_all,$(CURDIR)/patches/iso/,$(IMAGE_DIR))
 	touch "$(IMAGE_DIR)/.remastered"
 
-image_content: image_git_pull $(IMAGE_DIR)/.remastered $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/lipinfo.cfg $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/.lipgrub
+$(call ensure_mount,image_content): image_git_pull $(IMAGE_DIR)/.remastered $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/lipinfo.cfg $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/.lipgrub
 	@echo
 	@echo "Image content is ready: $(IMAGE_DIR)"
 
@@ -443,7 +443,7 @@ $(GRUB_ASSEMBLE_DIR)/mbr.img : $(GRUB_ASSEMBLE_DIR)/grub.i386-pc
 	dd if=/usr/lib/grub/i386-pc/boot.img of="$@" bs=446 count=1
 	dd if="$(GRUB_ASSEMBLE_DIR)/grub.i386-pc" of="$@" bs=512 seek=1
 
-image_grub_install: $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/.lipgrub
+$(call ensure_mount,image_grub_install): $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/.lipgrub
 $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/.lipgrub: $(GRUB_ASSEMBLE_DIR)/grub.x86_64-efi $(GRUB_ASSEMBLE_DIR)/grub.i386-efi
 	mkdir -p "$(IMAGE_DIR)$(GRUB_INSTALL_DIR)"
 	$(RSYNC) "/usr/lib/grub/x86_64-efi" "$(IMAGE_DIR)$(GRUB_INSTALL_DIR)/"
@@ -478,7 +478,7 @@ image_clean:
 	$(RM) "$(IMAGE_PART_FILE)"
 	$(RM) -r "$(GRUB_ASSEMBLE_DIR)"
 
-image_grub_lipinfo : $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/lipinfo.cfg
+$(call ensure_mount,image_grub_lipinfo) : $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/lipinfo.cfg
 $(IMAGE_DIR)$(GRUB_INSTALL_DIR)/lipinfo.cfg : | $(WORKSPACE)
 	mkdir -p "$(IMAGE_DIR)$(GRUB_INSTALL_DIR)"
 	echo "#This file was generated by lipck." > "$@"
@@ -498,7 +498,7 @@ image_umount_if :
 	[ "$$(findmnt --target "$(IMAGE_DIR)" -f -n --output=target)" != "$(IMAGE_DIR)" ] \
 		|| umount -d "$(IMAGE_DIR)"
 
-image : image_content $(GRUB_ASSEMBLE_DIR)/mbr.img
+$(call ensure_mount,image) : image_content $(GRUB_ASSEMBLE_DIR)/mbr.img
 
 #The following target is not used by lipck itself. It may be used to create
 #an empty (only the bootloader will be installed) manually. In particular,
@@ -509,7 +509,7 @@ multiboot :
 		image_skel_file
 	mkdir -p "$(WORKSPACE)/multiboot.work"
 	mount "$(WORKSPACE)/multiboot.part" "$(WORKSPACE)/multiboot.work"
-	$(MAKE) "IMAGE_DIR=$(WORKSPACE)/multiboot.work" image_grub_install \
+	$(MAKE) "IMAGE_DIR=$(WORKSPACE)/multiboot.work" image_grub_install__ignore_mount \
 		|| (umount "$(WORKSPACE)/multiboot.work" && exit 1)
 	#since this is most likely a standalone image make the lipck grubx64 the
 	#default bootloader for 64bit efi systems
@@ -523,7 +523,7 @@ gparted : $(call archdir,$(PRIMARY_ARCH))/gparted-live.iso $(call archdir,$(SECO
 $(call gentargets,/gparted-live.iso) :
 	wget -O "$@" "$(GPARTED_BASE_URL)/gparted-live-$(GPARTED_VERSION)-$(subst $(SECONDARY_ARCH),i686-pae,$(subst $(PRIMARY_ARCH),amd64,$*)).iso"
 
-repo_packages : $(REPO_ARCHIVE_DIR)/Packages.$(call altarch,$(ARCH))
+$(call ensure_mount,repo_packages) : $(REPO_ARCHIVE_DIR)/Packages.$(call altarch,$(ARCH))
 $(REPO_ARCHIVE_DIR)/Packages.$(call altarch,$(PRIMARY_ARCH)) $(REPO_ARCHIVE_DIR)/Packages.$(call altarch,$(SECONDARY_ARCH)) : $(REPO_ARCHIVE_DIR)/Packages.% : $(call archdir,$*)$(STATE_DIR)/rootfs_remastered | $(IMAGE_DIR)
 	$(MAKE) ARCH=$(call to_arch,$*) rootfs_prepare
 	mkdir -p "$(call archdir,$*)$(ROOTFS)/cdrom"
@@ -539,7 +539,7 @@ $(REPO_ARCHIVE_DIR)/Packages.$(call altarch,$(PRIMARY_ARCH)) $(REPO_ARCHIVE_DIR)
 	rmdir "$(call archdir,$*)$(ROOTFS)/cdrom"
 	$(MAKE) ARCH=$(call to_arch,$*) rootfs_finalize
 
-repo_package_info : $(REPO_DIST_DIR)/binary-$(call altarch,$(ARCH))/Packages.bz2
+$(call ensure_mount,repo_package_info) : $(REPO_DIST_DIR)/binary-$(call altarch,$(ARCH))/Packages.bz2
 $(REPO_DIST_DIR)/binary-$(call altarch,$(PRIMARY_ARCH))/Packages.bz2 $(REPO_DIST_DIR)/binary-$(call altarch,$(SECONDARY_ARCH))/Packages.bz2 : $(REPO_DIST_DIR)/binary-%/Packages.bz2 : $(REPO_ARCHIVE_DIR)/Packages.%
 	mkdir -p "$(REPO_ARCHIVE_DIR)"
 	mkdir -p "$(REPO_DIST_DIR)/binary-$*/"
@@ -561,7 +561,7 @@ $(REPO_DIST_DIR)/binary-$(call altarch,$(PRIMARY_ARCH))/Packages.bz2 $(REPO_DIST
 
 #The following rules requires none of its dependencies. However, it writes a timestamp to the metadata
 #that should always be "newer" than the dependencies.
-repo_metadata : $(REPO_ARCHIVE_DIR)/Release
+$(call ensure_mount,repo_metadata) : $(REPO_ARCHIVE_DIR)/Release
 $(REPO_ARCHIVE_DIR)/Release : $(REPO_DIST_DIR)/binary-$(call altarch,$(PRIMARY_ARCH))/Packages.bz2 $(REPO_DIST_DIR)/binary-$(call altarch,$(SECONDARY_ARCH))/Packages.bz2
 	mkdir -p "$(REPO_ARCHIVE_DIR)"
 
@@ -587,7 +587,7 @@ repo_clean:
 	$(RM) -r "$(REPO_DIST_DIR)"
 	$(RM) -r "$(REPO_ARCHIVE_DIR)"
 
-repo: repo_packages repo_package_info repo_metadata
+$(call ensure_mount,repo): repo_packages repo_package_info repo_metadata
 
 config $(CONFIG_FILE):
 	@echo "Generating configuration $(CONFIG_FILE)"
@@ -610,7 +610,6 @@ help:
 	@echo
 	@echo "=== Example run of lipck ==="
 	@echo "\$$ make WORKSPACE=/media/drivewithspace config #configure lipck"
-	@echo "# make image_mount_if #create and mount a partition"
 	@echo "# make image #main remaster process (requires several cups of coffee)"
 	@echo "# make repo #build offline repo"
 	@echo "# make image_umount #umount the image partition"
-- 
GitLab