github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/contrib/cirrus/packer/Makefile (about)

     1  PACKER_VER ?= 1.4.3
     2  GOARCH=$(shell go env GOARCH)
     3  ARCH=$(uname -m)
     4  PACKER_DIST_FILENAME := packer_${PACKER_VER}_linux_${GOARCH}.zip
     5  
     6  # Only needed for libpod_base_images target
     7  TIMESTAMP := $(shell date +%s)
     8  GOSRC ?= $(shell realpath "./../../../")
     9  PACKER_BASE ?= contrib/cirrus/packer
    10  SCRIPT_BASE ?= contrib/cirrus
    11  POST_MERGE_BUCKET_SUFFIX ?=
    12  
    13  UBUNTU_BASE_IMAGE = $(shell source ../lib.sh && echo "$$UBUNTU_BASE_IMAGE")
    14  PRIOR_UBUNTU_BASE_IMAGE = $(shell source ../lib.sh && echo "$$PRIOR_UBUNTU_BASE_IMAGE")
    15  
    16  # For debugging nested-virt, use
    17  #TTYDEV := $(shell tty)
    18  TTYDEV := /dev/null
    19  
    20  .PHONY: all
    21  all: libpod_images
    22  
    23  # Utility target for checking required parameters
    24  .PHONY: guard-%
    25  guard-%:
    26  	@if [[ -z "$($*)" ]]; then \
    27  		echo "Missing or empty required make variable '$*'."; \
    28  		exit 1; \
    29  	fi;
    30  
    31  %.json: %.yml
    32  	@python3 -c 'import json,yaml; json.dump( yaml.safe_load(open("$<").read()), open("$@","w"), indent=2);'
    33  
    34  ${PACKER_DIST_FILENAME}:
    35  	@curl -L --silent --show-error \
    36  		-O https://releases.hashicorp.com/packer/${PACKER_VER}/${PACKER_DIST_FILENAME}
    37  
    38  packer: ${PACKER_DIST_FILENAME}
    39  	@curl -L --silent --show-error \
    40  		https://releases.hashicorp.com/packer/${PACKER_VER}/packer_${PACKER_VER}_SHA256SUMS \
    41  		| grep linux_${GOARCH} > /tmp/packer_sha256sums
    42  	@sha256sum --check /tmp/packer_sha256sums
    43  	@unzip -o ${PACKER_DIST_FILENAME}
    44  	@touch --reference=Makefile ${PACKER_DIST_FILENAME}
    45  
    46  .PHONY: test
    47  test: libpod_base_images.json libpod_images.json packer
    48  	./packer inspect libpod_base_images.json > /dev/null
    49  	./packer inspect libpod_images.json > /dev/null
    50  	@echo "All good"
    51  
    52  .PHONY: libpod_images
    53  libpod_images: guard-PACKER_BUILDS libpod_images.json packer
    54  	./packer build \
    55  		-force \
    56  		$(shell test -z "${PACKER_BUILDS}" || echo "-only=${PACKER_BUILDS}") \
    57  		-var GOSRC=$(GOSRC) \
    58  		-var PACKER_BASE=$(PACKER_BASE) \
    59  		-var SCRIPT_BASE=$(SCRIPT_BASE) \
    60  		libpod_images.json
    61  
    62  cidata.ssh:
    63  	ssh-keygen -f $@ -P "" -q
    64  
    65  cidata.ssh.pub: cidata.ssh
    66  	touch $@
    67  
    68  meta-data:
    69  	echo "local-hostname: localhost.localdomain" > $@
    70  
    71  user-data: cidata.ssh.pub
    72  	bash make-user-data.sh
    73  
    74  cidata.iso: user-data meta-data
    75  	genisoimage -output cidata.iso -volid cidata -input-charset utf-8 -joliet -rock user-data meta-data
    76  
    77  # This is intended to be run by a human, with admin access to the libpod GCE project.
    78  .PHONY: libpod_base_images
    79  libpod_base_images: guard-GCP_PROJECT_ID guard-GOOGLE_APPLICATION_CREDENTIALS libpod_base_images.json cidata.iso cidata.ssh packer
    80  	PACKER_CACHE_DIR=/tmp ./packer build \
    81  		$(shell test -z "${PACKER_BUILDS}" || echo "-only=${PACKER_BUILDS}") \
    82  		-force \
    83  		-var TIMESTAMP=$(TIMESTAMP) \
    84  		-var TTYDEV=$(TTYDEV) \
    85  		-var GCP_PROJECT_ID=$(GCP_PROJECT_ID) \
    86  		-var GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) \
    87  		-var GOSRC=$(GOSRC) \
    88  		-var PACKER_BASE=$(PACKER_BASE) \
    89  		-var SCRIPT_BASE=$(SCRIPT_BASE) \
    90  		-var UBUNTU_BASE_IMAGE=$(UBUNTU_BASE_IMAGE) \
    91  		-var PRIOR_UBUNTU_BASE_IMAGE=$(PRIOR_UBUNTU_BASE_IMAGE) \
    92  		libpod_base_images.json