Makefile
f4d17450
 #
 # Copyright VMware, Inc 2015
 #
 
060670a4
 SRCROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
f4d17450
 MAKEROOT=$(SRCROOT)/support/make
8bb8e36e
 
 # do not build these targets as '%'
 $(MAKEROOT)/makedefs.mk: ;
 Makefile: ;
 
f4d17450
 include $(MAKEROOT)/makedefs.mk
 
a6c9285c
 export PATH := $(SRCROOT)/tools/bin:$(PATH)
2c153d29
 export PHOTON_BUILD_NUM=$(PHOTON_BUILD_NUMBER)
 export PHOTON_RELEASE_VER=$(PHOTON_RELEASE_VERSION)
a6c9285c
 
f4d17450
 ifdef PHOTON_CACHE_PATH
5d05cfcc
 PHOTON_PACKAGES_MICRO := packages-cached
 PHOTON_PACKAGES_MINIMAL := packages-cached
f4d17450
 PHOTON_PACKAGES := packages-cached
 else
5d05cfcc
 PHOTON_PACKAGES_MICRO := packages-micro
 PHOTON_PACKAGES_MINIMAL := packages-minimal
f4d17450
 PHOTON_PACKAGES := packages
 endif
 
 ifdef PHOTON_SOURCES_PATH
 PHOTON_SOURCES := sources-cached
 else
56ec252d
 PHOTON_SOURCES ?= sources
f4d17450
 endif
 
94cdb4d4
 MICRO_PACKAGE_LIST_FILE := build_install_options_micro.json
 FULL_PACKAGE_LIST_FILE := build_install_options_all.json
 
0bba3e62
 ifdef PHOTON_PUBLISH_RPMS_PATH
 PHOTON_PUBLISH_RPMS := publish-rpms-cached
 else
 PHOTON_PUBLISH_RPMS := publish-rpms
 endif
 
062d56d1
 ifdef PHOTON_PUBLISH_XRPMS_PATH
 PHOTON_PUBLISH_XRPMS := publish-x-rpms-cached
 else
 PHOTON_PUBLISH_XRPMS := publish-x-rpms
 endif
 
b5e09fac
 # Tri state RPMCHECK:
 # 1) RPMCHECK is not specified:  just build
 # 2) RPMCHECK=enable: build and run %check section. do not stop on error. will generate report file.
 # 3) RPMCHECK=enable_stop_on_error: build and run %check section. stop on first error.
 #
 # We use 2 parameters:
 # -u: enable checking.
 # -q: quit on error. if -q is not specified it will keep going
 
 ifeq ($(RPMCHECK),enable)
 PHOTON_RPMCHECK_FLAGS := -u
 else ifeq ($(RPMCHECK),enable_stop_on_error)
 PHOTON_RPMCHECK_FLAGS := -u -q
f5001053
 else
b5e09fac
 PHOTON_RPMCHECK_FLAGS :=
f5001053
 endif
 
343d89e8
 # KAT build for FIPS certification
 ifdef KAT_BUILD
 PHOTON_KAT_BUILD_FLAGS := -F $(KAT_BUILD)
 endif
 
620867de
 ifeq ($(BUILDDEPS),true)
 PUBLISH_BUILD_DEPENDENCIES := -bd True
 else
 PUBLISH_BUILD_DEPENDENCIES :=
 endif
 
 ifdef WEIGHTS
 PACKAGE_WEIGHTS_PATH = -pw $(WEIGHTS)
 else
 PACKAGE_WEIGHTS_PATH =
 endif
 
a6c9285c
 TOOLS_BIN := $(SRCROOT)/tools/bin
 CONTAIN := $(TOOLS_BIN)/contain
e7eb736d
 VIXDISKUTIL := $(TOOLS_BIN)/vixdiskutil
8ff5c437
 IMGCONVERTER := $(TOOLS_BIN)/imgconverter
a6c9285c
 
624d1cc2
 .PHONY : all iso clean photon-build-machine photon-vagrant-build photon-vagrant-local cloud-image \
8ff5c437
 check-tools check-docker check-bison check-g++ check-gawk check-createrepo check-kpartx check-vagrant check-packer check-packer-ovf-plugin check-sanity \
a4676edd
 clean-install clean-chroot build-updated-packages check generate-yaml-files
f4d17450
 
6a4bde38
 THREADS?=1
8bcb2fdd
 
380c6dd1
 all: iso photon-docker-image k8s-docker-images live-iso cloud-image-all src-iso
f4d17450
 
66b3bc73
 micro: micro-iso
2cbd5a80
 	@:
66b3bc73
 
b5e09fac
 micro-iso: check-tools $(PHOTON_STAGE) $(PHOTON_PACKAGES_MICRO)
5d05cfcc
 	@echo "Building Photon Micro ISO..."
 	@cd $(PHOTON_INSTALLER_DIR) && \
2c153d29
         $(PHOTON_INSTALLER) \
                 -i $(PHOTON_STAGE)/photon-micro-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).iso \
7874af21
                 -k $(PHOTON_STAGE)/photon-micro-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).debug.iso \
5d05cfcc
                 -w $(PHOTON_STAGE)/photon_iso \
                 -l $(PHOTON_STAGE)/LOGS \
                 -r $(PHOTON_STAGE)/RPMS \
e3431859
                 -p $(PHOTON_GENERATED_DATA_DIR)/$(MICRO_PACKAGE_LIST_FILE) \
fcc5e76b
                 -c $(PHOTON_GENERATED_DATA_DIR)/$(MICRO_PACKAGE_LIST_FILE) \
94cdb4d4
                 -o $(PHOTON_STAGE)/common/data \
eccee406
                 -d $(PHOTON_STAGE)/pkg_info.json \
6860f77c
                 -s $(PHOTON_DATA_DIR) \
5d05cfcc
                 -f > \
332d24fa
                 $(PHOTON_LOGS_DIR)/installer.log 2>&1
5d05cfcc
 
b5e09fac
 packages-micro: check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) generate-dep-lists
5d05cfcc
 	@echo "Building all Micro RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
97a9151c
         $(PHOTON_PACKAGE_BUILDER) \
5d05cfcc
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
b5e09fac
                 $(PHOTON_RPMCHECK_FLAGS) \
620867de
 		$(PUBLISH_BUILD_DEPENDENCIES) \
 		$(PACKAGE_WEIGHTS_PATH) \
6a4bde38
                 -t ${THREADS}
5d05cfcc
 
1b06dbb5
 live-iso: check-tools $(PHOTON_STAGE) $(PHOTON_PACKAGES_MINIMAL)
07751fba
 	@echo "Building Photon Minimal LIVE ISO..."
 	@cd $(PHOTON_INSTALLER_DIR) && \
2c153d29
         $(PHOTON_INSTALLER) \
                 -i $(PHOTON_STAGE)/photon-live-iso-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).iso \
7874af21
                 -k $(PHOTON_STAGE)/photon-live-iso-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).debug.iso \
07751fba
                 -w $(PHOTON_STAGE)/photon_iso \
                 -l $(PHOTON_STAGE)/LOGS \
                 -r $(PHOTON_STAGE)/RPMS \
4120d50b
                 -p $(PHOTON_GENERATED_DATA_DIR)/build_install_options_livecd.json \
fcc5e76b
                 -c $(PHOTON_GENERATED_DATA_DIR)/build_install_options_livecd.json \
94cdb4d4
                 -o $(PHOTON_STAGE)/common/data \
eccee406
                 -d $(PHOTON_STAGE)/pkg_info.json \
6860f77c
                 -s $(PHOTON_DATA_DIR) \
07751fba
                 -f > \
332d24fa
                 $(PHOTON_LOGS_DIR)/installer.log 2>&1
07751fba
 
b5e09fac
 packages-minimal: check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) generate-dep-lists
5d05cfcc
 	@echo "Building all RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
97a9151c
         $(PHOTON_PACKAGE_BUILDER) \
5d05cfcc
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
b5e09fac
                 $(PHOTON_RPMCHECK_FLAGS) \
620867de
 		$(PUBLISH_BUILD_DEPENDENCIES) \
 		$(PACKAGE_WEIGHTS_PATH) \
6a4bde38
                 -t ${THREADS}
5d05cfcc
 
b3f64484
 iso: check-tools $(PHOTON_STAGE) $(PHOTON_PACKAGES)
71e6c92c
 	@echo "Building Photon Full ISO..."
f4d17450
 	@cd $(PHOTON_INSTALLER_DIR) && \
2c153d29
         sudo $(PHOTON_INSTALLER) \
                 -i $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).iso \
7874af21
                 -k $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).debug.iso \
83b16988
                 -w $(PHOTON_STAGE)/photon_iso \
                 -l $(PHOTON_STAGE)/LOGS \
                 -r $(PHOTON_STAGE)/RPMS \
2cfb758d
                 -x $(PHOTON_STAGE)/SRPMS \
e3431859
                 -p $(PHOTON_GENERATED_DATA_DIR)/$(FULL_PACKAGE_LIST_FILE) \
2c153d29
                 -o $(PHOTON_STAGE)/common/data \
eccee406
                 -d $(PHOTON_STAGE)/pkg_info.json \
6860f77c
                 -s $(PHOTON_DATA_DIR) \
83b16988
                 -f > \
332d24fa
                 $(PHOTON_LOGS_DIR)/installer.log 2>&1
f4d17450
 
b5e09fac
 custom-iso: check-tools $(PHOTON_STAGE) $(PHOTON_PACKAGES)
b2cc88d9
 	@echo "Building Photon custom ISO..."
 	@cd $(PHOTON_INSTALLER_DIR) && \
         sudo $(PHOTON_INSTALLER) \
                 -i $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER)-custom.iso \
7874af21
                 -k $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER)-custom.debug.iso \
b2cc88d9
                 -w $(PHOTON_STAGE)/photon_iso \
                 -l $(PHOTON_STAGE)/LOGS \
                 -r $(PHOTON_STAGE)/RPMS \
                 -x $(PHOTON_STAGE)/SRPMS \
                 -p $(PHOTON_GENERATED_DATA_DIR)/build_install_options_custom.json \
                 -o $(PHOTON_STAGE)/common/data \
eccee406
                 -d $(PHOTON_STAGE)/pkg_info.json \
b2cc88d9
                 -s $(PHOTON_DATA_DIR) \
                 -f > \
                 $(PHOTON_LOGS_DIR)/installer.log 2>&1
 
b5e09fac
 src-iso: check-tools $(PHOTON_STAGE) $(PHOTON_PACKAGES)
2cfb758d
 	@echo "Building Photon Full Source ISO..."
 	@cd $(PHOTON_INSTALLER_DIR) && \
         sudo $(PHOTON_INSTALLER) \
                 -j $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).src.iso \
                 -w $(PHOTON_STAGE)/photon_iso \
                 -l $(PHOTON_STAGE)/LOGS \
                 -r $(PHOTON_STAGE)/RPMS \
                 -x $(PHOTON_STAGE)/SRPMS \
                 -p $(PHOTON_GENERATED_DATA_DIR)/$(FULL_PACKAGE_LIST_FILE) \
                 -o $(PHOTON_STAGE)/common/data \
eccee406
                 -d $(PHOTON_STAGE)/pkg_info.json \
2cfb758d
                 -s $(PHOTON_DATA_DIR) \
                 -f > \
                 $(PHOTON_LOGS_DIR)/sourceiso-installer.log 2>&1
 
83a89199
 pkgtree:
2cbd5a80
 	@cd $(PHOTON_SPECDEPS_DIR) && \
 		$(PHOTON_SPECDEPS) -s $(PHOTON_SPECS_DIR) -i pkg -p $(pkg)
 
c7b7f84e
 imgtree:
83a89199
 	@cd $(PHOTON_SPECDEPS_DIR) && \
c7b7f84e
 		$(PHOTON_SPECDEPS) -s $(PHOTON_SPECS_DIR) -i json -f $(PHOTON_DATA_DIR)/build_install_options_$(img).json
83a89199
 
2cbd5a80
 who-needs:
 	@cd $(PHOTON_SPECDEPS_DIR) && \
97a9151c
 		$(PHOTON_SPECDEPS) -s $(PHOTON_SPECS_DIR) -i who-needs -p $(pkg)
2cbd5a80
 
7418d2bf
 packages: check-docker-py check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_XRPMS) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) $(CONTAIN) generate-dep-lists
f4d17450
 	@echo "Building all RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
97a9151c
         $(PHOTON_PACKAGE_BUILDER) \
7418d2bf
                 -bt $(PHOTON_BUILD_TYPE) \
83b16988
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
d2526915
                 -a $(PHOTON_SRPMS_DIR) \
83b16988
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
062d56d1
                 -e $(PHOTON_PUBLISH_XRPMS_DIR) \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
97a9151c
                 -w $(PHOTON_STAGE)/pkg_info.json \
90d8acae
                 -g $(PHOTON_DATA_DIR)/pkg_build_options.json \
b5e09fac
                 $(PHOTON_RPMCHECK_FLAGS) \
343d89e8
 		$(PHOTON_KAT_BUILD_FLAGS) \
620867de
 		$(PUBLISH_BUILD_DEPENDENCIES) \
 		$(PACKAGE_WEIGHTS_PATH) \
6a4bde38
                 -t ${THREADS}
f4d17450
 
e359539f
 packages-docker: check-docker-py check-docker-service check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_XRPMS) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) $(CONTAIN) generate-dep-lists
 	@echo "Building all RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
         $(PHOTON_PACKAGE_BUILDER) \
                 -bt $(PHOTON_BUILD_TYPE) \
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
                 -a $(PHOTON_SRPMS_DIR) \
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
                 -e $(PHOTON_PUBLISH_XRPMS_DIR) \
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
                 -w $(PHOTON_STAGE)/pkg_info.json \
                 -g $(PHOTON_DATA_DIR)/pkg_build_options.json \
                 $(PHOTON_RPMCHECK_FLAGS) \
 		$(PUBLISH_BUILD_DEPENDENCIES) \
 		$(PACKAGE_WEIGHTS_PATH) \
                 -t ${THREADS}
 
062d56d1
 updated-packages: check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_XRPMS) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) $(CONTAIN) generate-dep-lists
42ffccb5
 	@echo "Building only updated RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
97a9151c
         $(PHOTON_PACKAGE_BUILDER) \
42ffccb5
                 -s $(PHOTON_SPECS_DIR) \
83a89199
                 -r $(PHOTON_UPDATED_RPMS_DIR) \
42ffccb5
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
062d56d1
                 -e $(PHOTON_PUBLISH_XRPMS_DIR) \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
42ffccb5
                 -k $(PHOTON_INPUT_RPMS_DIR) \
343d89e8
 		$(PHOTON_KAT_BUILD_FLAGS) \
b5e09fac
                 $(PHOTON_RPMCHECK_FLAGS) \
620867de
 		$(PUBLISH_BUILD_DEPENDENCIES) \
 		$(PACKAGE_WEIGHTS_PATH) \
42ffccb5
                 -t ${THREADS}
 
b5e09fac
 tool-chain-stage1: check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) $(CONTAIN) generate-dep-lists
db36e75e
 	@echo "Building all RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
97a9151c
         $(PHOTON_PACKAGE_BUILDER) \
db36e75e
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
d2526915
                 -a $(PHOTON_SRPMS_DIR) \
db36e75e
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
6a4bde38
                 -t ${THREADS} \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
b5e09fac
                 $(PHOTON_RPMCHECK_FLAGS) \
db36e75e
                 -m stage1
 
b5e09fac
 tool-chain-stage2: check-tools $(PHOTON_STAGE) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) $(CONTAIN) generate-dep-lists
db36e75e
 	@echo "Building all RPMS..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
97a9151c
         $(PHOTON_PACKAGE_BUILDER) \
db36e75e
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
d2526915
                 -a $(PHOTON_SRPMS_DIR) \
db36e75e
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
6a4bde38
                 -t ${THREADS} \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
b5e09fac
                 $(PHOTON_RPMCHECK_FLAGS) \
db36e75e
                 -m stage2
 
 
0bba3e62
 packages-cached:
f4d17450
 	@echo "Using cached RPMS..."
 	@$(RM) -f $(PHOTON_RPMS_DIR_NOARCH)/* && \
0f1fdc4b
      $(RM) -f $(PHOTON_RPMS_DIR_ARCH)/* && \
f4d17450
      $(CP) -f $(PHOTON_CACHE_PATH)/RPMS/noarch/* $(PHOTON_RPMS_DIR_NOARCH)/ && \
0f1fdc4b
      $(CP) -f $(PHOTON_CACHE_PATH)/RPMS/$(ARCH)/* $(PHOTON_RPMS_DIR_ARCH)/
f4d17450
 
 sources:
9922bb69
 	@$(MKDIR) -p $(PHOTON_SRCS_DIR)
f4d17450
 
9821c565
 sources-cached:
f4d17450
 	@echo "Using cached SOURCES..."
7fbd3a1e
 	@ln -sf $(PHOTON_SOURCES_PATH) $(PHOTON_SRCS_DIR)
f4d17450
 
0bba3e62
 publish-rpms:
 	@echo "Pulling publish rpms from bintray..."
 	@cd $(PHOTON_PULL_PUBLISH_RPMS_DIR) && \
 	$(PHOTON_PULL_PUBLISH_RPMS) $(PHOTON_PUBLISH_RPMS_DIR)
 
062d56d1
 publish-x-rpms:
 	@echo "Pulling publish X rpms from bintray..."
 	@cd $(PHOTON_PULL_PUBLISH_RPMS_DIR) && \
 	$(PHOTON_PULL_PUBLISH_X_RPMS) $(PHOTON_PUBLISH_XRPMS_DIR)
 
0bba3e62
 publish-rpms-cached:
 	@echo "Using cached publish rpms..."
0f1fdc4b
 	@$(MKDIR) -p $(PHOTON_PUBLISH_RPMS_DIR)/{$(ARCH),noarch} && \
f0bfcef4
 	cd $(PHOTON_PULL_PUBLISH_RPMS_DIR) && \
         $(PHOTON_PULL_PUBLISH_RPMS) $(PHOTON_PUBLISH_RPMS_DIR) $(PHOTON_PUBLISH_RPMS_PATH)
0bba3e62
 
062d56d1
 publish-x-rpms-cached:
 	@echo "Using ..."
0f1fdc4b
 	@$(MKDIR) -p $(PHOTON_PUBLISH_XRPMS_DIR)/{$(ARCH),noarch} && \
f0bfcef4
 	cd $(PHOTON_PULL_PUBLISH_RPMS_DIR) && \
         $(PHOTON_PULL_PUBLISH_X_RPMS) $(PHOTON_PUBLISH_XRPMS_DIR) $(PHOTON_PUBLISH_XRPMS_PATH)
062d56d1
 
b596b7f0
 $(PHOTON_STAGE):
f4d17450
 	@echo "Creating staging folder..."
 	$(MKDIR) -p $(PHOTON_STAGE)
 	@echo "Creating chroot path..."
 	$(MKDIR) -p $(PHOTON_CHROOT_PATH)
 	@echo "Building RPMS folders..."
 	@test -d $(PHOTON_RPMS_DIR_NOARCH) || $(MKDIR) -p $(PHOTON_RPMS_DIR_NOARCH)
0f1fdc4b
 	@test -d $(PHOTON_RPMS_DIR_ARCH) || $(MKDIR) -p $(PHOTON_RPMS_DIR_ARCH)
d2526915
 	@echo "Building SRPMS folders..."
 	@test -d $(PHOTON_SRPMS_DIR) || $(MKDIR) -p $(PHOTON_SRPMS_DIR)
83a89199
 	@echo "Building UPDATED_RPMS folders..."
 	@test -d $(PHOTON_UPDATED_RPMS_DIR_NOARCH) || $(MKDIR) -p $(PHOTON_UPDATED_RPMS_DIR_NOARCH)
0f1fdc4b
 	@test -d $(PHOTON_UPDATED_RPMS_DIR_ARCH) || $(MKDIR) -p $(PHOTON_UPDATED_RPMS_DIR_ARCH)
f4d17450
 	@echo "Building SOURCES folder..."
 	@test -d $(PHOTON_SRCS_DIR) || $(MKDIR) -p $(PHOTON_SRCS_DIR)
 	@echo "Building LOGS folder..."
 	@test -d $(PHOTON_LOGS_DIR) || $(MKDIR) -p $(PHOTON_LOGS_DIR)
65b7c387
 	@echo "Creating COPYING file..."
 	install -m 444 $(SRCROOT)/COPYING $(PHOTON_STAGE)/COPYING
7acc3889
 	@echo "Creating open_source_license.txt file..."
 	install -m 444 $(SRCROOT)/installer/open_source_license.txt $(PHOTON_STAGE)/open_source_license.txt
ba21ea11
 	@echo "Creating NOTICE file..."
 	install -m 444 $(SRCROOT)/NOTICE $(PHOTON_STAGE)/NOTICE
65b7c387
 
2cbd5a80
 
3dc1b460
 generate-dep-lists:
2eccd628
 	$(RMDIR) $(PHOTON_GENERATED_DATA_DIR)
3dc1b460
 	$(MKDIR) -p $(PHOTON_GENERATED_DATA_DIR)
 	@for f in $$(ls $(PHOTON_DATA_DIR)/build_install_options*.json) ; \
 	do \
 		cp $$f $(PHOTON_GENERATED_DATA_DIR); \
 		echo "Generating the install time dependency list for " $$f; \
 		cd $(PHOTON_SPECDEPS_DIR) && \
 		$(PHOTON_SPECDEPS) \
 		-s $(PHOTON_SPECS_DIR) \
 		-t $(PHOTON_STAGE) \
 		--input-type=json --file $$f -d json -a $(PHOTON_DATA_DIR); \
 	done
f4d17450
 
380c6dd1
 photon-docker-image:
424bbd1e
 	createrepo $(PHOTON_RPMS_DIR)
615f2667
 	sudo docker build --no-cache --tag photon-build ./support/dockerfiles/photon
16934d5c
 	sudo docker run \
 		-it \
 		--rm \
 		--privileged \
 		--net=host \
2c153d29
 		-e PHOTON_BUILD_NUMBER=$(PHOTON_BUILD_NUMBER) \
 		-e PHOTON_RELEASE_VERSION=$(PHOTON_RELEASE_VERSION) \
16934d5c
 		-v `pwd`:/workspace \
615f2667
 		photon-build \
f093864e
 		./support/dockerfiles/photon/make-docker-image.sh tdnf
16934d5c
 
e055b2c4
 start-docker: check-docker
 	systemctl start docker
 
 k8s-docker-images: start-docker photon-docker-image
da354604
 	mkdir -p $(PHOTON_STAGE)/docker_images && \
380c6dd1
 	cd ./support/dockerfiles/k8s-docker-images && \
e055b2c4
 	./build-k8s-base-image.sh $(PHOTON_RELEASE_VERSION) $(PHOTON_BUILD_NUMBER) $(PHOTON_STAGE)  && \
49c49299
 	./build-k8s-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \
380c6dd1
 	./build-k8s-dns-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \
ea8a3d4a
 	./build-k8s-dashboard-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \
 	./build-flannel-docker-image.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \
 	./build-calico-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \
457e39ae
 	./build-k8s-heapster-image.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \
2d02818f
 	./build-k8s-nginx-ingress.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE)  && \
 	./build-wavefront-proxy-docker-image.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE)
380c6dd1
 
 install-photon-docker-image: photon-docker-image
f093864e
 	sudo docker build -t photon:tdnf .
16934d5c
 
f4d17450
 clean: clean-install clean-chroot
 	@echo "Deleting Photon ISO..."
2c153d29
 	@$(RM) -f $(PHOTON_STAGE)/photon-*.iso
f4d17450
 	@echo "Deleting stage dir..."
 	@$(RMDIR) $(PHOTON_STAGE)
 	@echo "Deleting chroot path..."
 	@$(RMDIR) $(PHOTON_CHROOT_PATH)
a6c9285c
 	@echo "Deleting tools/bin..."
 	@$(RMDIR) $(TOOLS_BIN)
f4d17450
 
 clean-install:
 	@echo "Cleaning installer working directory..."
 	@if [ -d $(PHOTON_STAGE)/photon_iso ]; then \
a8025533
 		$(PHOTON_CHROOT_CLEANER) $(PHOTON_STAGE)/photon_iso; \
f4d17450
 	fi
 
 clean-chroot:
 	@echo "Cleaning chroot path..."
 	@if [ -d $(PHOTON_CHROOT_PATH) ]; then \
 		$(PHOTON_CHROOT_CLEANER) $(PHOTON_CHROOT_PATH); \
 	fi
 
 photon-build-machine: check-packer check-vagrant
 	@echo "Building photon-build-machine with Packer..."
 	@cd $(PHOTON_PACKER_TEMPLATES) && \
 	$(PACKER) build photon-build-machine.json
 	@echo "Adding box to Vagrant boxes..."
9821c565
 	@$(VAGRANT) box add $(PHOTON_PACKER_TEMPLATES)/photon-build-machine.box --name photon-build-machine --force && \
 	$(RM) $(PHOTON_PACKER_TEMPLATES)/photon-build-machine.box
f4d17450
 
9821c565
 photon-vagrant-build: check-vagrant
 	@echo "Starting Photon build using Vagrant..."
 	@cd $(SRCROOT) && \
 	$(VAGRANT) up && \
 	$(VAGRANT) destroy -f
 
 ifeq ($(VAGRANT_BUILD),all)
 PACKER_ARGS=""
 else
 PACKER_ARGS="-only=$(VAGRANT_BUILD)"
 endif
 
 photon-vagrant-local: check-packer check-vagrant
 	@echo "Building a Photon Vagrant box with Packer..."
2c153d29
 	@if [ -e $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).iso ]; then \
f4d17450
 		cd $(PHOTON_PACKER_TEMPLATES) && \
2c153d29
 		$(SED) -i "" -e "s#\"iso_checksum_value\":.*#\"iso_checksum_value\": \"$$($(SHASUM) ../../stage/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).iso | cut -f 1 -d ' ')\",#" photon.json && \
9821c565
 		$(PACKER) build $(PACKER_ARGS) photon.json && \
 		$(SED) -i "" -e "s#\"iso_checksum_value\":.*#\"iso_checksum_value\": \"\",#" photon.json; \
f4d17450
 		echo "Moving boxes to $(PHOTON_STAGE)..." && \
 		$(MV) *.box $(PHOTON_STAGE); \
9821c565
 	else \
2c153d29
 		echo "Unable to find $(PHOTON_STAGE)/photon-$(PHOTON_RELEASE_VERSION)-$(PHOTON_BUILD_NUMBER).iso ... aborting build"; \
f4d17450
 	fi
 
baea322e
 cloud-image: check-kpartx $(PHOTON_STAGE) $(VIXDISKUTIL) $(IMGCONVERTER) $(PHOTON_PACKAGES)
624d1cc2
 	@echo "Building cloud image $(IMG_NAME)..."
 	@cd $(PHOTON_CLOUD_IMAGE_BUILDER_DIR)
baea322e
 	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) $(IMG_NAME) $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
624d1cc2
 
fc9f6700
 
baea322e
 cloud-image-all: check-kpartx $(PHOTON_STAGE) $(VIXDISKUTIL) $(IMGCONVERTER) $(PHOTON_PACKAGES)
fc9f6700
 	@echo "Building cloud images - gce, ami, azure and ova..."
 	@cd $(PHOTON_CLOUD_IMAGE_BUILDER_DIR)
baea322e
 	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) gce $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
 	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ami $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
 	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) azure $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
 	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ova $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
 	$(PHOTON_CLOUD_IMAGE_BUILDER) $(PHOTON_CLOUD_IMAGE_BUILDER_DIR) ova_micro $(SRCROOT) $(PHOTON_GENERATED_DATA_DIR) $(PHOTON_STAGE) $(ADDITIONAL_RPMS_PATH)
c20a93b2
 
fc9f6700
 
b5e09fac
 check-tools: check-bison check-g++ check-gawk check-createrepo check-texinfo check-sanity check-docker
07751fba
 
 check-docker:
 	@command -v docker >/dev/null 2>&1 || { echo "Package docker not installed. Aborting." >&2; exit 1; }
f4d17450
 
e359539f
 check-docker-service:
 	@docker ps >/dev/null 2>&1 || { echo "Docker service is not running. Aborting." >&2; exit 1; }
 
7418d2bf
 check-docker-py:
87815216
 	@python3 -c "import docker; assert docker.__version__ == '$(PHOTON_DOCKER_PY_VER)'" >/dev/null 2>&1 || { echo "Error: Python3 package docker-py3 2.3.0 not installed.\nPlease use: pip3 install docker==2.3.0" >&2; exit 1; }
7418d2bf
 
f4d17450
 check-bison:
 	@command -v bison >/dev/null 2>&1 || { echo "Package bison not installed. Aborting." >&2; exit 1; }
6c85c764
 
 check-texinfo:
 	@command -v makeinfo >/dev/null 2>&1 || { echo "Package texinfo not installed. Aborting." >&2; exit 1; }
f4d17450
 
 check-g++:
 	@command -v g++ >/dev/null 2>&1 || { echo "Package g++ not installed. Aborting." >&2; exit 1; }
 
 check-gawk:
 	@command -v gawk >/dev/null 2>&1 || { echo "Package gawk not installed. Aborting." >&2; exit 1; }
 
 check-createrepo:
 	@command -v createrepo >/dev/null 2>&1 || { echo "Package createrepo not installed. Aborting." >&2; exit 1; }
 
8ff5c437
 check-kpartx:
 	@command -v kpartx >/dev/null 2>&1 || { echo "Package kpartx not installed. Aborting." >&2; exit 1; }
 
f4d17450
 check-vagrant: check-packer
 	@command -v $(VAGRANT) >/dev/null 2>&1 || { echo "Vagrant not installed or wrong path, expecting $(VAGRANT). Aborting" >&2; exit 1; }
 
4d6a578d
 check-sanity:
 	$(SRCROOT)/support/sanity_check.sh
9821c565
 
 ifeq ($(VAGRANT_BUILD),vcloudair)
 check-packer: check-packer-ovf-plugin
 else ifeq ($(VAGRANT_BUILD),all)
f4d17450
 check-packer: check-packer-ovf-plugin
9821c565
 else
 check-packer:
 endif
f4d17450
 	@command -v $(PACKER) >/dev/null 2>&1 || { echo "Packer not installed or wrong path, expecting $(PACKER). Aborting" >&2; exit 1; }
 
 check-packer-ovf-plugin:
 	@[[ -e ~/.packer.d/plugins/packer-post-processor-vagrant-vmware-ovf ]] || { echo "Packer OVF post processor not installed. Aborting" >&2; exit 1; }
ab168615
 
b5e09fac
 check: packages
     ifeq ($(RPMCHECK),enable_stop_on_error)
 	    $(eval rpmcheck_stop_on_error = -q)
     endif
 	@echo "Testing all RPMS ..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
8978e916
         $(PHOTON_PACKAGE_BUILDER) \
7418d2bf
                 -bt $(PHOTON_BUILD_TYPE) \
b5e09fac
                 -s $(PHOTON_SPECS_DIR) \
                 -r $(PHOTON_RPMS_DIR) \
                 -a $(PHOTON_SRPMS_DIR) \
                 -x $(PHOTON_SRCS_DIR) \
                 -b $(PHOTON_CHROOT_PATH) \
                 -l $(PHOTON_LOGS_DIR) \
                 -p $(PHOTON_PUBLISH_RPMS_DIR) \
7418d2bf
                 -e $(PHOTON_PUBLISH_XRPMS_DIR) \
c28f9c61
                 -c $(PHOTON_PULLSOURCES_CONFIG) \
b5e09fac
                 -d $(PHOTON_DIST_TAG) \
                 -n $(PHOTON_BUILD_NUMBER) \
                 -v $(PHOTON_RELEASE_VERSION) \
                 -w $(PHOTON_DATA_DIR)/pkg_info.json \
                 -g $(PHOTON_DATA_DIR)/pkg_build_options.json \
                 -u \
                 $(rpmcheck_stop_on_error) \
                 -t ${THREADS}
 
062d56d1
 %: check-tools $(PHOTON_PUBLISH_RPMS) $(PHOTON_PUBLISH_XRPMS) $(PHOTON_SOURCES) $(CONTAIN) $(eval PKG_NAME = $@)
8bb8e36e
 	$(eval PKG_NAME = $@)
 	@echo "Building package $(PKG_NAME) ..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
2c153d29
         $(PHOTON_PACKAGE_BUILDER) -i $(PKG_NAME)\
7418d2bf
                               -bt $(PHOTON_BUILD_TYPE) \
8bb8e36e
                               -b $(PHOTON_CHROOT_PATH) \
                               -s $(PHOTON_SPECS_DIR) \
                               -r $(PHOTON_RPMS_DIR) \
d2526915
                               -a $(PHOTON_SRPMS_DIR) \
8bb8e36e
                               -x $(PHOTON_SRCS_DIR) \
                               -p $(PHOTON_PUBLISH_RPMS_DIR) \
7418d2bf
                               -e $(PHOTON_PUBLISH_XRPMS_DIR) \
c28f9c61
                               -c $(PHOTON_PULLSOURCES_CONFIG) \
2c153d29
                               -d $(PHOTON_DIST_TAG) \
                               -n $(PHOTON_BUILD_NUMBER) \
                               -v $(PHOTON_RELEASE_VERSION) \
90d8acae
                               -g $(PHOTON_DATA_DIR)/pkg_build_options.json \
b5e09fac
                               $(PHOTON_RPMCHECK_FLAGS) \
343d89e8
 				$(PHOTON_KAT_BUILD_FLAGS) \
8bb8e36e
                               -l $(PHOTON_LOGS_DIR)
a6c9285c
 
fc8abdd1
 generate-yaml-files: check-tools $(PHOTON_STAGE) $(PHOTON_PACKAGES)
a4676edd
 	@echo "Generating yaml files for packages ..."
 	@cd $(PHOTON_PKG_BUILDER_DIR) && \
         $(PHOTON_PACKAGE_BUILDER) -y \
                               -b $(PHOTON_CHROOT_PATH) \
                               -s $(PHOTON_SPECS_DIR) \
                               -r $(PHOTON_RPMS_DIR) \
                               -a $(PHOTON_SRPMS_DIR) \
                               -x $(PHOTON_SRCS_DIR) \
                               -p $(PHOTON_PUBLISH_RPMS_DIR) \
                               -e $(PHOTON_PUBLISH_XRPMS_DIR) \
                               -c $(PHOTON_PULLSOURCES_CONFIG) \
                               -d $(PHOTON_DIST_TAG) \
                               -n $(PHOTON_BUILD_NUMBER) \
                               -v $(PHOTON_RELEASE_VERSION) \
                               -g $(PHOTON_DATA_DIR)/pkg_build_options.json \
                               $(PHOTON_RPMCHECK_OPTION) \
                               -l $(PHOTON_LOGS_DIR) \
                               -j $(PHOTON_STAGE) \
                               -f $(PHOTON_PKG_BLACKLIST_FILE)
 
a6c9285c
 $(TOOLS_BIN):
 	mkdir -p $(TOOLS_BIN)
 
 $(CONTAIN): $(TOOLS_BIN)
775c0d4b
 	gcc -O2 -std=gnu99 -Wall -Wextra $(SRCROOT)/tools/src/contain/*.c -o $@_unpriv
 	sudo install -o root -g root -m 4755 $@_unpriv $@
2a62af70
 
e7eb736d
 $(VIXDISKUTIL): $(TOOLS_BIN)
 	@cd $(SRCROOT)/tools/src/vixDiskUtil && \
 	make
 
8ff5c437
 $(IMGCONVERTER): $(TOOLS_BIN)
 	@cd $(SRCROOT)/tools/src/imgconverter && \
 	make