-build:
- cd ${root}/upstream/fuel/build && \
- time make \
- BUILD_FUEL_PLUGINS=f_odlpluginbuild \
- FUEL_MAIN_REPO=${root}/upstream/fuel-main \
- FUEL_MAIN_TAG= \
- UBUNTU_ARCH="amd64 arm64" \
- SEPARATE_IMAGES="/boot,ext2 /,ext4 /boot/efi,vfat" \
- FUELLIB_REPO=${root}/upstream/fuel-library \
- NAILGUN_REPO=${root}/upstream/fuel-web \
- FUEL_AGENT_REPO=${root}/upstream/fuel-agent \
- FUEL_MIRROR_REPO=${root}/upstream/fuel-mirror \
- QEMU_REPO=${root}/upstream/fuel-plugin-qemu \
- OVSNFV_DPDK_REPO=${root}/upstream/fuel-plugin-ovsnfv \
- FUELLIB_COMMIT=HEAD \
- NAILGUN_COMMIT=HEAD \
- FUEL_AGENT_COMMIT=HEAD \
- FUEL_MIRROR_COMMIT=HEAD \
- QEMU_BRANCH=HEAD \
- OVSNFV_DPDK_BRANCH=armband-workbench \
- PRODUCT_VERSION=8.0 \
- PRODUCT_NAME=mos \
- CENTOS_MAJOR=7 \
- MIRROR_FUEL=http://linux.enea.com/mos-repos/centos/mos8.0-centos7-fuel/os/x86_64/ \
- MIRROR_UBUNTU_URL=http://archive.ubuntu.com/ubuntu/ \
- LATEST_MIRROR_ID_URL=http://linux.enea.com/ \
- JAVA8_URL=https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa/+files/openjdk-8-jre-headless_8u72-b15-1~trusty1_arm64.deb \
- iso 2>&1 | tee ${root}/build.log
+# Apply patches from patches/* to respective submodules
+.PHONY: patches-import
+patches-import: .submodules-init .submodules-patched
+
+.submodules-patched: ${A_PATCHES}
+ @$(MAKE) submodules-clean
+ @git submodule -q foreach ' \
+ SUB_DIR=${A_PATCH_DIR}/$$name; mkdir -p $$SUB_DIR && \
+ git tag ${A_OPNFV_TAG}-root && \
+ git checkout -q -b opnfv-armband && \
+ find $$SUB_DIR -type d | sort | while read p_dir; do \
+ SUB_PATCHES=$$(ls $$p_dir/*.patch 2>/dev/null); \
+ if [ -n "$$SUB_PATCHES" ]; then \
+ SUB_FEATURE=$${p_dir#$$SUB_DIR} \
+ SUB_TAG=${A_OPNFV_TAG}-fuel$$SUB_FEATURE/patch; \
+ echo "`tput setaf 2`== patching $$name ($$SUB_TAG)`tput sgr0`";\
+ git tag $$SUB_TAG-root && git am -3 --whitespace=nowarn \
+ --committer-date-is-author-date $$SUB_PATCHES && \
+ git tag $$SUB_TAG || exit 1; \
+ fi \
+ done && \
+ git tag ${A_OPNFV_TAG}'
+ # Staging Fuel@OPNFV patches
+ @ls -d ${F_SUB_DIR}/* 2>/dev/null | while read p_sub_path; do \
+ SUB_NAME=`basename $$p_sub_path`; \
+ find ${A_PATCH_DIR}/$$SUB_NAME -name '*.patch' 2>/dev/null -exec sh -c '\
+ A_PATCH={}; R_PATCH=$${A_PATCH#${A_PATCH_DIR}/}; \
+ F_PATCH=${F_PATCH_DIR}/$${0}/armband/$${R_PATCH#$${0}/}; \
+ if [ -f $$F_PATCH ]; then \
+ echo "`tput setaf 3`* WARN: $$R_PATCH upstream.`tput sgr0`"; \
+ else \
+ if [ -h $$A_PATCH ]; then \
+ echo "`tput setaf 3`* PHONY: $$R_PATCH`tput sgr0`"; \
+ else \
+ echo "`tput setaf 6`* Staging $$R_PATCH`tput sgr0`"; \
+ mkdir -p `dirname $$F_PATCH` && cp $$A_PATCH $$F_PATCH; \
+ fi; \
+ fi' "$$SUB_NAME" \; || true ; \
+ done
+ @touch $@
+
+# Pass down debug/clean/deepclean/build to Fuel@OPNFV
+.PHONY: clean debug
+clean: .submodules-init
+debug: fuel-patches-import
+clean debug:
+ $(MAKE) -e --no-print-directory -C ${F_BUILD_DIR} $@
+
+.PHONY: deepclean
+deepclean: clean
+ $(MAKE) -e --no-print-directory -C ${F_BUILD_DIR} deepclean
+ @git submodule deinit -f .
+ @rm -f .submodules*
+
+.PHONY: build
+build: patches-import
+ $(MAKE) -e --no-print-directory -C ${F_BUILD_DIR} all
+
+.PHONY: release
+release: export LC_ALL=en_US.UTF-8
+release: build
+
+##############################################################################
+# Fuel@OPNFV patch operations - to be used only during development
+##############################################################################
+
+# Apply all Fuel@OPNFV patches, including Armband patches
+.PHONY: fuel-patches-import
+fuel-patches-import: .submodules-patched fuel-patches-clean
+ $(MAKE) -e -C ${F_REPOS_DIR} patches-import
+
+# Export Fuel@OPNFV patches, including Armband patches
+.PHONY: fuel-patches-export
+fuel-patches-export: .submodules-patched
+ $(MAKE) -e -C ${F_REPOS_DIR} patches-export
+ @ls -d ${F_PATCH_DIR}/* 2>/dev/null | while read p_sub_path; do \
+ SUB_NAME=`basename $$p_sub_path`; \
+ if [ -d $$p_sub_path/armband ]; then \
+ echo "`tput setaf 6`* Pulling $$SUB_NAME patches.`tput sgr0`"; \
+ cp -R $$p_sub_path/armband/* ${A_PATCH_DIR}/$$SUB_NAME && \
+ rm -rf $$p_sub_path/armband; \
+ fi \
+ done