fdfd0034a241adb6763a5b9814d76caf262028e7
[genesis.git] / foreman / build / cache.mk
1 ##############################################################################
2 # Copyright (c) 2015 Ericsson AB and others.
3 # stefan.k.berg@ericsson.com
4 # jonas.bjurel@ericsson.com
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10
11 SHELL = /bin/bash
12 CACHEVALIDATE := $(addsuffix .validate,$(SUBDIRS))
13 CACHECLEAN := $(addsuffix .clean,$(CACHEFILES) $(CACHEDIRS))
14
15 ############################################################################
16 # BEGIN of variables to customize
17 #
18 CACHEFILES += .versions
19 CACHEFILES += $(shell basename $(ISOSRC))
20 #
21 # END of variables to customize
22 ############################################################################
23
24 .PHONY: prepare-cache
25 prepare-cache: make-cache-dir $(CACHEDIRS) $(CACHEFILES)
26
27 .PHONY: make-cache-dir
28 make-cache-dir:
29         @rm -rf ${CACHE_DIR}
30         @mkdir ${CACHE_DIR}
31
32 .PHONY: clean-cache
33 clean-cache: $(CACHECLEAN)
34         @rm -rf ${CACHE_DIR}
35
36 .PHONY: $(CACHEDIRS)
37 $(CACHEDIRS):
38         @mkdir -p $(dir $(CACHE_DIR)/$@)
39         @if [ ! -d $(BUILD_BASE)/$@ ]; then\
40            mkdir -p $(BUILD_BASE)/$@;\
41         fi
42         @ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@
43
44 .PHONY: $(CACHEFILES)
45 $(CACHEFILES):
46         @mkdir -p $(dir $(CACHE_DIR)/$@)
47         @if [ ! -d $(dir $(BUILD_BASE)/$@) ]; then\
48            mkdir -p $(dir $(BUILD_BASE)/$@);\
49         fi
50
51         @if [ ! -f $(BUILD_BASE)/$@ ]; then\
52            echo " " > $(BUILD_BASE)/$@;\
53            ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
54            rm -f $(BUILD_BASE)/$@;\
55         else\
56            ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
57         fi
58
59 .PHONY: validate-cache
60 validate-cache: $(CACHEVALIDATE)
61         @if [[ $(shell md5sum $(BUILD_BASE)/config.mk | cut -f1 -d " ") != $(shell cat $(VERSION_FILE) | grep config.mk | awk '{print $$NF}') ]]; then\
62            echo "Cache does not match current config.mk definition, cache must be rebuilt";\
63            exit 1;\
64         fi;
65
66         @if [[ $(shell md5sum $(BUILD_BASE)/cache.mk | cut -f1 -d " ") != $(shell cat $(VERSION_FILE) | grep cache.mk | awk '{print $$NF}') ]]; then\
67            echo "Cache does not match current cache.mk definition, cache must be rebuilt";\
68            exit 1;\
69         fi;
70
71 .PHONY: $(CACHEVALIDATE)
72 $(CACHEVALIDATE): %.validate:
73         @echo VALIDATE $(CACHEVALIDATE)
74         $(MAKE) -C $* -f Makefile validate-cache
75
76 .PHONY: $(CACHECLEAN)
77 $(CACHECLEAN): %.clean:
78         rm -rf ${CACHE_DIR}/$*