mirror of
https://github.com/moby/moby.git
synced 2026-01-11 02:31:44 +00:00
Support the use of `make install` in packaging scripts, where the $mandir tree might not exist under $DESTDIR. For portability, create the parent directories using a separate install command instead of relying on the non-portable `-D` flag. Set errexit so the install target fails if any install step fails. Signed-off-by: Cory Snider <csnider@mirantis.com>
50 lines
1.5 KiB
Makefile
50 lines
1.5 KiB
Makefile
prefix = /usr/local
|
|
mandir = $(prefix)/man
|
|
INSTALL = install
|
|
INSTALL_DATA = ${INSTALL} -m 644
|
|
|
|
# By default, the man pages are generated using a copy of go-md2man built from
|
|
# the vendored sources in this directory. This behavior can be overridden by
|
|
# setting the GO_MD2MAN variable to the name/path of an existing go-md2man
|
|
# binary.
|
|
GO_MD2MAN ?= .build/go-md2man
|
|
|
|
ALL_PAGES := $(wildcard *.*.md)
|
|
|
|
# Determine which manual sections we are generating pages for
|
|
# by isolating the last part of the filename before the extension
|
|
# and eliminating duplicates.
|
|
man_section = $(lastword $(subst ., ,$(1)))
|
|
sections := $(sort $(foreach page,$(ALL_PAGES:.md=),$(call man_section,$(page))))
|
|
|
|
# Dynamically generate pattern rules for each manual section
|
|
# so make knows how to build a target like man8/dockerd.8.
|
|
define MANPAGE_template
|
|
man$(1)/%.$(1): %.$(1).md $(if $(findstring file,$(origin GO_MD2MAN)),$(GO_MD2MAN)) | man$(1)
|
|
$(GO_MD2MAN) -in $$< -out $$@
|
|
endef
|
|
$(foreach sec,$(sections),$(eval $(call MANPAGE_template,$(sec))))
|
|
|
|
# Default target: build all man pages.
|
|
all: $(foreach page,$(ALL_PAGES:.md=),man$(call man_section,$(page))/$(page))
|
|
|
|
# Target for creating the man{1..8} directories as needed.
|
|
.PRECIOUS: man%
|
|
man%:
|
|
-mkdir $@
|
|
|
|
.PHONY: install
|
|
install: all
|
|
@set -ex; \
|
|
for sec in $(sections); do \
|
|
$(INSTALL) -d $(DESTDIR)$(mandir)/man$$sec && \
|
|
$(INSTALL_DATA) man$$sec/* $(DESTDIR)$(mandir)/man$$sec; \
|
|
done
|
|
|
|
.build/go-md2man: go.mod go.sum
|
|
GO111MODULE=auto go build -o $@ github.com/cpuguy83/go-md2man/v2
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -r man* .build
|