X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=build%2FMakefile;h=fadb8a8ba443d1c61d21d4d9600f60685c5395c7;hb=0799bce0ce6fb46cbf1c5a2d3b505627d963428a;hp=fa708696e3808ec38408a5354a79e66ebbde5078;hpb=6222031ed4e195fee85d6e3bdb5f34845fa061e9;p=fuel.git diff --git a/build/Makefile b/build/Makefile index fa708696e..fadb8a8ba 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) @@ -58,7 +58,9 @@ export MIRROR_UBUNTU_ROOT := $(shell echo -n '/' ; echo "$(MIRROR_UBUNTU_URL)" | export LATEST_MIRROR_ID_URL := http://$(shell ./select_closest_fuel_mirror.py) export MIRROR_MOS_UBUNTU ?= $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3) -export LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/$(MOSVERSION).target.txt" | head -1) +#export LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/$(MOSVERSION).target.txt" | head -1) +# Fuel 9.0 +export LATEST_TARGET_UBUNTU := snapshots/9.0-2016-06-23-164100-copy export MIRROR_MOS_UBUNTU_ROOT := /mos-repos/ubuntu/$(LATEST_TARGET_UBUNTU) export LATEST_TARGET_CENTOS := $(shell curl -sSf "$(LATEST_MIRROR_ID_URL)/mos-repos/centos/mos$(MOSVERSION)-centos7/os.target.txt" | head -1) @@ -80,6 +82,8 @@ ORIGDIR := $(TOPDIR)/origiso # END of variables to customize ############################################################################# +FUEL_MAIN_DIR := /tmp/fuel-main + SUBCLEAN = $(addsuffix .clean,$(SUBDIRS)) .PHONY: all @@ -105,10 +109,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 +131,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 +167,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 +178,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 +221,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