build: Fix the caching mechanisms

The debootstrap tarball and the rootfs image caching
routines weren't functioning right and would cause
multiple debootstrap invocations, as well as causing
a total overwrite of the rootfs.img.

Change-Id: Ib55e2df1c5b113ef20d2a26817dbd548752b7faf
diff --git a/debootstrap.mk b/debootstrap.mk
index d43eb71..0aa21f2 100644
--- a/debootstrap.mk
+++ b/debootstrap.mk
@@ -7,27 +7,21 @@
 DEBOOTSTRAP_TARBALL_REVISION ?= latest
 DEBOOTSTRAP_FETCH_TARBALL ?= true
 
-validate-bootstrap-tarball:
 ifeq ($(DEBOOTSTRAP_FETCH_TARBALL),true)
-		make -f $(ROOTDIR)/build/debootstrap.mk fetch-bootstrap-tarball
+validate-bootstrap-tarball: fetch-bootstrap-tarball
 else
-		make -f $(ROOTDIR)/build/debootstrap.mk make-bootstrap-tarball
+validate-bootstrap-tarball: $(DEBOOTSTRAP_TARBALL)
 endif
 	cd $(ROOTDIR)/cache && \
 		sha256sum -c $(DEBOOTSTRAP_TARBALL_SHA256)
 
-fetch-bootstrap-tarball:
+fetch-bootstrap-tarball: $(TARBALL_FETCH_ROOT_DIRECTORY)/$(DEBOOTSTRAP_TARBALL_REVISION)/debootstrap.tgz
 	mkdir -p $(ROOTDIR)/cache
-	cp \
-		$(TARBALL_FETCH_ROOT_DIRECTORY)/$(DEBOOTSTRAP_TARBALL_REVISION)/debootstrap.tgz \
-		$(TARBALL_FETCH_ROOT_DIRECTORY)/$(DEBOOTSTRAP_TARBALL_REVISION)/debootstrap.tgz.sha256sum
-		$(ROOTDIR)/cache
+	cp $< $<.sha256sum $(ROOTDIR)/cache
 
-make-bootstrap-sha256sum: $(DEBOOTSTRAP_TARBALL)
-	cd $(ROOTDIR)/cache && \
-		sha256sum $(notdir $(DEBOOTSTRAP_TARBALL)) > $(DEBOOTSTRAP_TARBALL_SHA256)
+make-bootstrap-tarball: $(DEBOOTSTRAP_TARBALL)
 
-make-bootstrap-tarball: $(ROOTDIR)/build/debootstrap.mk $(ROOTDIR)/build/preamble.mk
+$(DEBOOTSTRAP_TARBALL): $(ROOTDIR)/build/debootstrap.mk $(ROOTDIR)/build/preamble.mk
 	mkdir -p $(PRODUCT_OUT)/obj/DEBOOTSTRAP
 	mkdir -p $(ROOTDIR)/cache
 	/usr/sbin/debootstrap \
@@ -37,6 +31,10 @@
 		stretch $(PRODUCT_OUT)/obj/DEBOOTSTRAP
 	+make -f $(ROOTDIR)/build/debootstrap.mk make-bootstrap-sha256sum
 
+make-bootstrap-sha256sum: $(DEBOOTSTRAP_TARBALL)
+	cd $(ROOTDIR)/cache && \
+		sha256sum $(notdir $(DEBOOTSTRAP_TARBALL)) > $(DEBOOTSTRAP_TARBALL_SHA256)
+
 targets::
 	@echo "validate-bootstrap-tarball - validates the bootstrap tarball matches the SHA-256 sums"
 	@echo "make-bootstrap-tarball - makes the debootstrap tarball for faster rootfs building"
diff --git a/rootfs.mk b/rootfs.mk
index db5421d..e1e0475 100644
--- a/rootfs.mk
+++ b/rootfs.mk
@@ -28,7 +28,12 @@
 	video
 
 rootfs: $(PRODUCT_OUT)/rootfs.img
-rootfs_raw: $(ROOTFS_RAW_IMG)
+
+ifeq ($(ROOTFS_FETCH_TARBALL),true)
+rootfs_raw: fetch-rootfs
+else
+rootfs_raw: build-rootfs
+endif
 
 gpu:
 	sudo rsync -rl $(GPU_DIR)/gpu-core/ $(ROOTFS_DIR)
@@ -64,14 +69,9 @@
 
 	sudo $(ROOTDIR)/build/fix_permissions.sh -p $(ROOTDIR)/build/permissions.txt -t $(ROOTFS_DIR)
 
-$(ROOTFS_RAW_IMG): $(ROOTDIR)/build/debootstrap.mk $(ROOTDIR)/build/preamble.mk
-ifeq ($(ROOTFS_FETCH_TARBALL),true)
-		make -f $(ROOTDIR)/build/rootfs.mk fetch-rootfs
-else
-		make -f $(ROOTDIR)/build/rootfs.mk build-rootfs
-endif
+build-rootfs: $(ROOTFS_RAW_IMG)
 
-build-rootfs: $(DEBOOTSTRAP_TARBALL) $(ROOTDIR)/build/debootstrap.mk $(ROOTDIR)/build/preamble.mk
+$(ROOTFS_RAW_IMG): $(ROOTDIR)/build/debootstrap.mk $(ROOTDIR)/build/preamble.mk $(ROOTDIR)/build/rootfs.mk $(DEBOOTSTRAP_TARBALL)
 	+make -f $(ROOTDIR)/build/debootstrap.mk validate-bootstrap-tarball
 	mkdir -p $(ROOTFS_DIR)
 	rm -f $(ROOTFS_RAW_IMG)
@@ -90,7 +90,11 @@
 	sudo chown ${USER} $(ROOTFS_RAW_IMG)
 	sha256sum $(ROOTFS_RAW_IMG) > $(ROOTFS_RAW_IMG).sha256sum
 
+ifeq ($(ROOTFS_FETCH_TARBALL),true)
+$(ROOTFS_PATCHED_IMG): fetch-rootfs
+else
 $(ROOTFS_PATCHED_IMG): $(ROOTFS_RAW_IMG)
+endif
 	cp -r $(ROOTFS_RAW_IMG) $(ROOTFS_PATCHED_IMG)
 	mkdir -p $(ROOTFS_DIR)
 	-sudo umount $(ROOTFS_DIR)
@@ -109,12 +113,9 @@
 $(PRODUCT_OUT)/rootfs.img: $(HOST_OUT)/bin/img2simg $(ROOTFS_PATCHED_IMG)
 	$(HOST_OUT)/bin/img2simg $(ROOTFS_PATCHED_IMG) $(PRODUCT_OUT)/rootfs.img
 
-fetch-rootfs:
+fetch-rootfs: $(TARBALL_FETCH_ROOT_DIRECTORY)/$(ROOTFS_REVISION)/rootfs.raw.img
 	mkdir -p $(dir $(ROOTFS_RAW_IMG))
-	cp \
-		$(TARBALL_FETCH_ROOT_DIRECTORY)/$(ROOTFS_REVISION)/rootfs.raw.img \
-		$(TARBALL_FETCH_ROOT_DIRECTORY)/$(ROOTFS_REVISION)/rootfs.raw.img.sha256sum \
-		$(dir $(ROOTFS_RAW_IMG))
+	cp $< $<.sha256sum $(dir $(ROOTFS_RAW_IMG))
 
 clean::
 	if mount |grep -q $(ROOTFS_DIR); then sudo umount -R $(ROOTFS_DIR); fi