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