| TEST_CASE ?= |
| BASE_IMAGE ?= |
| |
| TEST_ROOT := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) |
| BUILD_ROOT := $(TEST_ROOT)/build |
| REPO = $(shell realpath $(TEST_ROOT)/../) |
| ARCH ?= $(shell arch) |
| SPEC = kexec-tools.spec |
| |
| DIST ?= fedora |
| DIST_ABR ?= f |
| DIST_ABRL ?= fc |
| DIST_UNSET ?= rhel |
| RELEASE ?= 33 |
| |
| DEFAULT_BASE_IMAGE_VER ?= 1.2 |
| DEFAULT_BASE_IMAGE ?= Fedora-Cloud-Base-$(RELEASE)-$(DEFAULT_BASE_IMAGE_VER).$(ARCH).raw.xz |
| DEFAULT_BASE_IMAGE_URL ?= https://dl.fedoraproject.org/pub/fedora/linux/releases/$(RELEASE)/Cloud/$(ARCH)/images/$(DEFAULT_BASE_IMAGE) |
| |
| BUILD_ROOT = $(TEST_ROOT)/build |
| RPMDEFINE = --define '_sourcedir $(REPO)'\ |
| --define '_specdir $(REPO)'\ |
| --define '_builddir $(BUILD_ROOT)'\ |
| --define '_srcrpmdir $(BUILD_ROOT)'\ |
| --define '_rpmdir $(BUILD_ROOT)'\ |
| --define 'dist %{?distprefix}.$(DIST_ABRL)$(RELEASE)'\ |
| --define '$(DIST) $(RELEASE)'\ |
| --eval '%undefine $(DIST_UNSET)'\ |
| --define '$(DIST_ABRL)$(RELEASE) 1'\ |
| |
| KEXEC_TOOLS_SRC = $(filter-out $(REPO)/tests,$(wildcard $(REPO)/*)) |
| KEXEC_TOOLS_TEST_SRC = $(wildcard $(REPO)/tests/scripts/**/*) |
| KEXEC_TOOLS_NVR = $(shell rpm $(RPMDEFINE) -q --specfile $(REPO)/$(SPEC) 2>/dev/null | grep -m 1 .) |
| KEXEC_TOOLS_RPM = $(BUILD_ROOT)/$(ARCH)/$(KEXEC_TOOLS_NVR).rpm |
| |
| all: $(TEST_ROOT)/output/test-base-image |
| |
| # Use either: |
| # fedpkg --release $(DIST_ABR)$(RELEASE) --path ../../ local |
| # or |
| # rpmbuild $(RPMDEFINE) -ba $(REPO)/$(SPEC) |
| # to rebuild the rpm, currently use rpmbuild to have better control over the rpm building process |
| # |
| $(KEXEC_TOOLS_RPM): $(KEXEC_TOOLS_SRC) |
| sh -c "cd .. && fedpkg sources" |
| @echo Rebuilding RPM due to modification of sources: $? |
| rpmbuild $(RPMDEFINE) -ba $(REPO)/$(SPEC) |
| |
| $(BUILD_ROOT)/base-image: |
| mkdir -p $(BUILD_ROOT) |
| ifeq ($(strip $(BASE_IMAGE)),) |
| wget $(DEFAULT_BASE_IMAGE_URL) -O $(BUILD_ROOT)/$(DEFAULT_BASE_IMAGE) |
| $(TEST_ROOT)/scripts/build-image.sh \ |
| $(BUILD_ROOT)/$(DEFAULT_BASE_IMAGE)\ |
| $(BUILD_ROOT)/base-image |
| else |
| $(TEST_ROOT)/scripts/build-image.sh \ |
| $(BASE_IMAGE)\ |
| $(BUILD_ROOT)/base-image |
| endif |
| |
| $(BUILD_ROOT)/inst-base-image: $(BUILD_ROOT)/base-image |
| @echo "Building installation base image" |
| echo $(KEXEC_TOOLS_NVR) |
| $(TEST_ROOT)/scripts/build-image.sh \ |
| $(BUILD_ROOT)/base-image \ |
| $(BUILD_ROOT)/inst-base-image \ |
| $(TEST_ROOT)/scripts/build-scripts/base-image.sh |
| |
| $(TEST_ROOT)/output/test-base-image: $(BUILD_ROOT)/inst-base-image $(KEXEC_TOOLS_RPM) $(KEXEC_TOOLS_TEST_SRC) |
| @echo "Building test base image" |
| mkdir -p $(TEST_ROOT)/output |
| $(TEST_ROOT)/scripts/build-image.sh \ |
| $(BUILD_ROOT)/inst-base-image \ |
| $(TEST_ROOT)/output/test-base-image \ |
| $(TEST_ROOT)/scripts/build-scripts/test-base-image.sh \ |
| $(KEXEC_TOOLS_RPM) |
| |
| test-run: $(TEST_ROOT)/output/test-base-image |
| ifeq ($(strip $(TEST_CASE)),) |
| $(TEST_ROOT)/scripts/run-test.sh |
| else |
| $(TEST_ROOT)/scripts/run-test.sh --console $(TEST_CASE) |
| endif |
| |
| clean: |
| rm -rf $(TEST_ROOT)/build |
| rm -rf $(TEST_ROOT)/output |