blob: d1d4b16d27b5e1fd6c79cb0986a06ba612d94b03 [file] [log] [blame] [edit]
#
# Maintenance Makefile
#
# Enforce bash with fatal errors.
SHELL := /bin/bash -eo pipefail
# Keep intermediates around on failures for better caching.
.SECONDARY:
# Default build and source directories.
BUILDDIR ?= ./build
SRCDIR ?= .
#
# Target: help
#
.PHONY: help
help:
@# 80-width marker:
@# 01234567012345670123456701234567012345670123456701234567012345670123456701234567
@echo "make [TARGETS...]"
@echo
@echo "The following targets are provided by this maintenance makefile:"
@echo
@echo " help: Print this usage information"
@echo
@echo " publish-github: Publish a release to GitHub"
#
# Target: BUILDDIR
#
$(BUILDDIR)/:
mkdir -p "$@"
$(BUILDDIR)/%/:
mkdir -p "$@"
#
# Target: FORCE
#
# Used as alternative to `.PHONY` if the target is not fixed.
#
.PHONY: FORCE
FORCE:
#
# Target: publish-*
#
PUBLISH_REPO ?= r-efi/r-efi
PUBLISH_VERSION ?=
define PUBLISH_RELNOTES_PY
with open('NEWS.md', 'r') as f:
notes = f.read().split("\n## CHANGES WITH ")[1:]
notes = dict(map(lambda v: (v[:v.find(":")], v), notes))
notes = notes["$(PUBLISH_VERSION)"].strip()
print(" # r-efi - UEFI Reference Specification Protocol Constants and Definitions\n")
print(" ## CHANGES WITH", notes)
endef
export PUBLISH_RELNOTES_PY
export PUBLISH_REPO
export PUBLISH_VERSION
.PHONY: publish-github
publish-github:
test ! -z "$${PUBLISH_REPO}"
test ! -z "$${PUBLISH_VERSION}"
python \
- \
<<<"$${PUBLISH_RELNOTES_PY}" \
| gh \
release \
--repo "$${PUBLISH_REPO}" \
create \
--verify-tag \
--title \
"r-efi-$${PUBLISH_VERSION}" \
--notes-file - \
"v$${PUBLISH_VERSION}"