mirror of
https://github.com/hectorm/docker-qemu-reactos
synced 2025-09-11 06:14:32 +00:00
First commit
This commit is contained in:
112
Makefile
Normal file
112
Makefile
Normal file
@ -0,0 +1,112 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
SHELL := /bin/sh
|
||||
.SHELLFLAGS = -eu -c
|
||||
|
||||
DOCKER := $(shell command -v docker 2>/dev/null)
|
||||
GIT := $(shell command -v git 2>/dev/null)
|
||||
|
||||
DISTDIR := ./dist
|
||||
|
||||
IMAGE_NAMESPACE := hectormolinero
|
||||
IMAGE_NAME := qemu-reactos
|
||||
IMAGE_VERSION := v0
|
||||
|
||||
# If git is available and the directory is a repository, use the latest tag as IMAGE_VERSION.
|
||||
ifeq ([$(notdir $(GIT))][$(wildcard .git/.)],[git][.git/.])
|
||||
IMAGE_VERSION := $(shell '$(GIT)' describe --abbrev=0 --tags 2>/dev/null || printf '%s' '$(IMAGE_VERSION)')
|
||||
endif
|
||||
|
||||
IMAGE_LATEST_TAG := $(IMAGE_NAMESPACE)/$(IMAGE_NAME):latest
|
||||
IMAGE_VERSION_TAG := $(IMAGE_NAMESPACE)/$(IMAGE_NAME):$(IMAGE_VERSION)
|
||||
|
||||
IMAGE_DOCKERFILE := ./Dockerfile
|
||||
IMAGE_TARBALL := $(DISTDIR)/$(IMAGE_NAME).tgz
|
||||
|
||||
##################################################
|
||||
## "all" target
|
||||
##################################################
|
||||
|
||||
.PHONY: all
|
||||
all: save-image
|
||||
|
||||
##################################################
|
||||
## "build-*" targets
|
||||
##################################################
|
||||
|
||||
.PHONY: build-image
|
||||
build-image:
|
||||
'$(DOCKER)' build \
|
||||
--tag '$(IMAGE_LATEST_TAG)' \
|
||||
--tag '$(IMAGE_VERSION_TAG)' \
|
||||
--file '$(IMAGE_DOCKERFILE)' ./
|
||||
|
||||
##################################################
|
||||
## "save-*" targets
|
||||
##################################################
|
||||
|
||||
define save_image
|
||||
'$(DOCKER)' save '$(1)' | gzip -n > '$(2)'
|
||||
endef
|
||||
|
||||
.PHONY: save-image
|
||||
save-image: $(IMAGE_TARBALL)
|
||||
|
||||
$(IMAGE_TARBALL): build-image
|
||||
mkdir -p '$(DISTDIR)'
|
||||
$(call save_image,$(IMAGE_VERSION_TAG),$@)
|
||||
|
||||
##################################################
|
||||
## "load-*" targets
|
||||
##################################################
|
||||
|
||||
define load_image
|
||||
'$(DOCKER)' load -i '$(1)'
|
||||
endef
|
||||
|
||||
define tag_image
|
||||
'$(DOCKER)' tag '$(1)' '$(2)'
|
||||
endef
|
||||
|
||||
.PHONY: load-image
|
||||
load-image:
|
||||
$(call load_image,$(IMAGE_TARBALL))
|
||||
$(call tag_image,$(IMAGE_VERSION_TAG),$(IMAGE_LATEST_TAG))
|
||||
|
||||
##################################################
|
||||
## "push-*" targets
|
||||
##################################################
|
||||
|
||||
define push_image
|
||||
'$(DOCKER)' push '$(1)'
|
||||
endef
|
||||
|
||||
.PHONY: push-image
|
||||
push-image:
|
||||
$(call push_image,$(IMAGE_VERSION_TAG))
|
||||
$(call push_image,$(IMAGE_LATEST_TAG))
|
||||
|
||||
##################################################
|
||||
## "version" target
|
||||
##################################################
|
||||
|
||||
.PHONY: version
|
||||
version:
|
||||
@if printf -- '%s' '$(IMAGE_VERSION)' | grep -q '^v[0-9]\{1,\}$$'; then \
|
||||
NEW_IMAGE_VERSION=$$(awk -v 'v=$(IMAGE_VERSION)' 'BEGIN {printf "v%.0f", substr(v,2)+1}'); \
|
||||
printf -- '%s\n' "$${NEW_IMAGE_VERSION}" > ./VERSION; \
|
||||
'$(GIT)' add ./VERSION; '$(GIT)' commit -m "$${NEW_IMAGE_VERSION}"; \
|
||||
'$(GIT)' tag -a "$${NEW_IMAGE_VERSION}" -m "$${NEW_IMAGE_VERSION}"; \
|
||||
else \
|
||||
>&2 printf -- 'Malformed version string: %s\n' '$(IMAGE_VERSION)'; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
##################################################
|
||||
## "clean" target
|
||||
##################################################
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f '$(IMAGE_TARBALL)'
|
||||
if [ -d '$(DISTDIR)' ]; then rmdir '$(DISTDIR)'; fi
|
Reference in New Issue
Block a user