From c5f5d615a66c2b9411857914893eb854796a482f Mon Sep 17 00:00:00 2001 From: regnat Date: Fri, 16 Jul 2021 14:15:38 +0200 Subject: [PATCH] Cleanup the generation of the nix3 manpages Use a dedicated make target for the man page rather than bundling the generation as part of `install`. Also make sure that `make install` is a fixpoint by - Removing the generated markdown files from `MANUAL_SRCS` - Not having the manpage generation write in its source directory so as to not update its timestamp (it would run each time otherwise) --- .gitignore | 2 +- doc/manual/local.mk | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 5f402dbc3..ef0298417 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ perl/Makefile.config /libtool # /doc/manual/ -/doc/manual/*.1 +/doc/manual/**/*.1 /doc/manual/*.5 /doc/manual/*.8 /doc/manual/nix.json diff --git a/doc/manual/local.mk b/doc/manual/local.mk index e25157af8..435301279 100644 --- a/doc/manual/local.mk +++ b/doc/manual/local.mk @@ -1,6 +1,8 @@ ifeq ($(doc_generate),yes) -MANUAL_SRCS := $(call rwildcard, $(d)/src, *.md) +ALL_MD_FILES := $(call rwildcard, $(d)/src, *.md) +GENERATED_MD_FILES := $(call rwildcard, $(d)/src/command-ref/new-cli, *.md) +MANUAL_SRCS := $(filter-out $(GENERATED_MD_FILES), $(ALL_MD_FILES)) # Generate man pages. man-pages := $(foreach n, \ @@ -75,13 +77,20 @@ $(d)/builtins.json: $(bindir)/nix install: $(docdir)/manual/index.html # Generate 'nix' manpages. -install: $(d)/src/command-ref/new-cli +install: $(mandir)/man1/nix3-build.1 + +# Technically this rule generates all the `nix3-*` manpages, but since we don’t +# know their list statically and they are all generated at once anyways, we can +# just be dirty and only track one +$(mandir)/man1/nix3-build.1: $(d)/src/command-ref/new-cli $(trace-gen) for i in doc/manual/src/command-ref/new-cli/*.md; do \ name=$$(basename $$i .md); \ + tmpFile=$$(mktemp); \ if [[ $$name = SUMMARY ]]; then continue; fi; \ - printf "Title: %s\n\n" "$$name" > $$i.tmp; \ - cat $$i >> $$i.tmp; \ - lowdown -sT man -M section=1 $$i.tmp -o $(mandir)/man1/$$name.1; \ + printf "Title: %s\n\n" "$$name" > $$tmpFile; \ + cat $$i >> $$tmpFile; \ + lowdown -sT man -M section=1 $$tmpFile -o $(mandir)/man1/$$name.1; \ + rm $$tmpFile; \ done $(docdir)/manual/index.html: $(MANUAL_SRCS) $(d)/book.toml $(d)/custom.css $(d)/src/SUMMARY.md $(d)/src/command-ref/new-cli $(d)/src/command-ref/conf-file.md $(d)/src/expressions/builtins.md