X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=build%2FMakefile;h=ac854986c460c4de72d9f852497c7c88c52304e7;hb=c89e6cfb6d5cded1f80196094f90a7b56a9081ee;hp=fa708696e3808ec38408a5354a79e66ebbde5078;hpb=14c4e711f59917e1b299230668d8a4439f09d943;p=fuel.git diff --git a/build/Makefile b/build/Makefile index fa708696e..ac854986c 100644 --- a/build/Makefile +++ b/build/Makefile @@ -21,11 +21,11 @@ SHELL = /bin/bash export MOSVERSION = 9.0 export ISOSRC = file:$(shell pwd)/fuel-$(MOSVERSION).iso export ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC)) -export PRODNO = "OPNFV_FUEL" +export PRODNO ?= "OPNFV_FUEL" export REVSTATE = "P0000" export USER ?= $(shell whoami) export BUILD_DATE = $(shell date --utc +%Y-%m-%d:%H:%M) -export OPNFV_GIT_SHA = $(shell git rev-parse HEAD) +export OPNFV_GIT_SHA ?= $(shell git rev-parse HEAD) # Store in /etc/fuel_build_id on fuel master export BUILD_ID := $(PRODNO)_$(BUILD_DATE)_$(OPNFV_GIT_SHA) @@ -80,6 +80,8 @@ ORIGDIR := $(TOPDIR)/origiso # END of variables to customize ############################################################################# +FUEL_MAIN_DIR := /tmp/fuel-main + SUBCLEAN = $(addsuffix .clean,$(SUBDIRS)) .PHONY: all @@ -105,10 +107,13 @@ include cache.mk $(ISOCACHE): # Clone Fuel to non-persistent location and build - sudo rm -rf /tmp/fuel-main - cd /tmp && git clone $(FUEL_MAIN_REPO) - cd /tmp/fuel-main && git checkout $(FUEL_MAIN_TAG) - @echo "fuel" `git -C /tmp/fuel-main rev-parse HEAD` >> $(VERSION_FILE) + sudo rm -rf $(FUEL_MAIN_DIR) + $(MAKE) -C f_repos -f Makefile release + git clone $(FUEL_MAIN_REPO) $(FUEL_MAIN_DIR) + # Save upstream ref, checkout OPNFV tag (upstream ref + patches) + @echo "fuel" `git -C $(FUEL_MAIN_DIR) \ + rev-parse $(F_OPNFV_TAG)-root` >> $(VERSION_FILE) + git -C $(FUEL_MAIN_DIR) checkout $(F_OPNFV_TAG) # Remove Docker optimizations, otherwise multistrap will fail during # Fuel build. sudo rm -f /etc/apt/apt.conf.d/docker* @@ -124,21 +129,16 @@ $(ISOCACHE): sudo service docker stop || exit 0 sudo service docker start - cd /tmp/fuel-main && ./prepare-build-env.sh + cd $(FUEL_MAIN_DIR) && ./prepare-build-env.sh # Verify that Docker is alive sudo docker info - cd /tmp/fuel-main && make repos - $(REPOINFO) -r /tmp/fuel-main > gitinfo_fuel.txt - # OPNFV patches at Fuel build time - # Need to be commited in order for them to be considered by the Fuel - # build system - cd /tmp/fuel-main && git am $(TOPDIR)/bootstrap_admin_node.sh.patch - cd /tmp/fuel-main && git am $(TOPDIR)/isolinux.cfg.patch - cd /tmp/fuel-main/build/repos/fuel-nailgun && git am $(TOPDIR)/Mark-Intel-82599-10-Gigabit-NIC-as-DPDK-capable.patch - cd /tmp/fuel-main && git am $(TOPDIR)/repo-multi-arch-local-mirrors.patch + # fuel-main Makefiles do not like `make -C` + cd $(FUEL_MAIN_DIR) && make repos + cp f_repos/.cachefuelinfo gitinfo_fuel.txt + # Repeat build up to three times sudo -E ./fuel_build_loop - cp /tmp/fuel-main/build/artifacts/fuel*.iso . + cp $(FUEL_MAIN_DIR)/build/artifacts/fuel*.iso . # Store artifact in cache straight away if caching is enabled # (no .cacheid will be present unless this is a cached build) test -f .cacheid && $(MAKE) -f Makefile put-cache || exit 0 @@ -165,6 +165,7 @@ patch-packages: .PHONY: clean $(SUBCLEAN) clean: $(SUBCLEAN) + $(MAKE) -C f_repos -f Makefile clean $(MAKE) -C patch-packages -f Makefile clean @rm -f *.iso @rm -Rf release @@ -175,7 +176,8 @@ clean: $(SUBCLEAN) .PHONY: deepclean deepclean: clean clean-cache - make -C docker clean + $(MAKE) -C f_repos -f Makefile deepclean + $(MAKE) -C docker clean docker rmi opnfv.org/ubuntu-builder:14.04 &>/dev/null || exit 0 docker rmi opnfv.org/ubuntu-builder:latest &>/dev/null || exit 0 docker rmi ubuntu:14.04 &>/dev/null || exit 0 @@ -217,24 +219,26 @@ debug: ############################################################################# # Create a unique hash to be used for getting and putting cache, based on: -# - The commit ID of the full Fuel repo structre +# - The commit ID of the full Fuel repo structure # - The contents of all local Fuel patches +# - Makefile, config and sensitive build scripts fingerprints +# NOTE: Patching is deterministic, so we can fingerprint (submodule root commit +# info + OPNFV patches) at once, after patches-import. +# NOTE: When git submodule remote tracking is active, `git submodule status` +# will point to the latest commits (remote/branch/HEAD) + OPNFV patches. .cacheid: - cd /tmp && git clone $(FUEL_MAIN_REPO) - cd /tmp/fuel-main && git checkout $(FUEL_MAIN_TAG) - cd /tmp/fuel-main && make repos - $(REPOINFO) -r /tmp/fuel-main > .cachedata - sha1sum *.patch >> .cachedata + $(MAKE) -C f_repos -f Makefile get-cache release + git submodule status | cut -c2-41 > .cachedata sha1sum fuel_build_loop >> .cachedata sha1sum config.mk >> .cachedata sha1sum Makefile >> .cachedata $(CACHETOOL) getbiweek >> .cachedata cat .cachedata | $(CACHETOOL) getid > .cacheid - # Not removing fuel-main as it is re-used in build # Clean local data related to caching - called prior to ordinary build .PHONY: clean-cache clean-cache: $(SUBCLEANCACHE) + $(MAKE) -C f_repos -f Makefile clean-cache rm -f .cachedata .cacheid # Try to download cache - called prior to ordinary build