29a7c252e379e76275f05374b5d4e73c4c6889f0
[apex.git] / 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 += stack/deploy-ramdisk-ironic.initramfs
20 CACHEFILES += stack/deploy-ramdisk-ironic.kernel
21 CACHEFILES += stack/ironic-python-agent.initramfs
22 CACHEFILES += stack/ironic-python-agent.kernel
23 CACHEFILES += stack/ironic-python-agent.vmlinuz
24 CACHEFILES += stack/overcloud-full.initrd
25 CACHEFILES += stack/overcloud-full.qcow2
26 CACHEFILES += stack/overcloud-full.vmlinuz
27 CACHEFILES += $(shell basename $(ISOSRC))
28 #
29 # END of variables to customize
30 ############################################################################
31
32 .PHONY: prepare-cache
33 prepare-cache: make-cache-dir $(CACHEDIRS) $(CACHEFILES)
34
35 .PHONY: make-cache-dir
36 make-cache-dir:
37         @rm -rf ${CACHE_DIR}
38         @mkdir ${CACHE_DIR}
39
40 .PHONY: clean-cache
41 clean-cache: $(CACHECLEAN)
42         @rm -rf ${CACHE_DIR}
43
44 .PHONY: $(CACHEDIRS)
45 $(CACHEDIRS):
46         @mkdir -p $(dir $(CACHE_DIR)/$@)
47         @if [ ! -d $(BUILD_BASE)/$@ ]; then\
48            mkdir -p $(BUILD_BASE)/$@;\
49         fi
50         @ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@
51
52 .PHONY: $(CACHEFILES)
53 $(CACHEFILES):
54         @mkdir -p $(dir $(CACHE_DIR)/$@)
55         @if [ ! -d $(dir $(BUILD_BASE)/$@) ]; then\
56            mkdir -p $(dir $(BUILD_BASE)/$@);\
57         fi
58
59         @if [ ! -f $(BUILD_BASE)/$@ ]; then\
60            echo " " > $(BUILD_BASE)/$@;\
61            ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
62            rm -f $(BUILD_BASE)/$@;\
63         else\
64            ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
65         fi
66
67 .PHONY: validate-cache
68 validate-cache: $(CACHEVALIDATE)
69         @if [[ $(shell md5sum $(BUILD_BASE)/config.mk | cut -f1 -d " ") != $(shell cat $(VERSION_FILE) | grep config.mk | awk '{print $$NF}') ]]; then\
70            echo "Cache does not match current config.mk definition, cache must be rebuilt";\
71            exit 1;\
72         fi;
73
74         @if [[ $(shell md5sum $(BUILD_BASE)/cache.mk | cut -f1 -d " ") != $(shell cat $(VERSION_FILE) | grep cache.mk | awk '{print $$NF}') ]]; then\
75            echo "Cache does not match current cache.mk definition, cache must be rebuilt";\
76            exit 1;\
77         fi;
78
79 .PHONY: $(CACHEVALIDATE)
80 $(CACHEVALIDATE): %.validate:
81         @echo VALIDATE $(CACHEVALIDATE)
82         $(MAKE) -C $* -f Makefile validate-cache
83
84 .PHONY: $(CACHECLEAN)
85 $(CACHECLEAN): %.clean:
86         rm -rf ${CACHE_DIR}/$*