X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/2abf678682c42842c16e026c51d96b1fa86be88f..a8f20f63dce1f41126bbc0fdbe6a3b1bf28fb69d:/doc.am diff --git a/doc.am b/doc.am index ee896c189b..127029c1ca 100644 --- a/doc.am +++ b/doc.am @@ -1,6 +1,9 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès +# Copyright © 2016 Eric Bavier +# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès # Copyright © 2013 Andreas Enge +# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer +# Copyright © 2016 Mathieu Lirzin # # This file is part of GNU Guix. # @@ -18,13 +21,29 @@ # along with GNU Guix. If not, see . info_TEXINFOS = doc/guix.texi + +DOT_FILES = \ + doc/images/bootstrap-graph.dot \ + doc/images/bootstrap-packages.dot \ + doc/images/coreutils-graph.dot \ + doc/images/coreutils-bag-graph.dot \ + doc/images/service-graph.dot \ + doc/images/shepherd-graph.dot + +DOT_VECTOR_GRAPHICS = \ + $(DOT_FILES:%.dot=%.eps) \ + $(DOT_FILES:%.dot=%.pdf) + EXTRA_DIST += \ + doc/htmlxref.cnf \ doc/contributing.texi \ doc/emacs.texi \ doc/fdl-1.3.texi \ - doc/images/bootstrap-graph.dot \ - doc/images/bootstrap-graph.eps \ - doc/images/bootstrap-graph.pdf + $(DOT_FILES) \ + $(DOT_VECTOR_GRAPHICS) \ + doc/images/coreutils-size-map.eps \ + doc/environment-gdb.scm \ + doc/package-hello.scm OS_CONFIG_EXAMPLES_TEXI = \ doc/os-config-bare-bones.texi \ @@ -36,11 +55,13 @@ EXTRA_DIST += $(OS_CONFIG_EXAMPLES_TEXI) MAINTAINERCLEANFILES = $(OS_CONFIG_EXAMPLES_TEXI) doc/os-config-%.texi: gnu/system/examples/%.tmpl - $(MKDIR_P) "`dirname "$@"`" + $(AM_V_GEN)$(MKDIR_P) "`dirname $@`"; \ cp "$<" "$@" infoimagedir = $(infodir)/images -dist_infoimage_DATA = doc/images/bootstrap-graph.png +dist_infoimage_DATA = \ + $(DOT_FILES:%.dot=%.png) \ + doc/images/coreutils-size-map.png # Try hard to obtain an image size and aspect that's reasonable for inclusion # in an Info or PDF document. @@ -49,70 +70,86 @@ DOT_OPTIONS = \ -Nfontsize=9 -Nheight=.1 -Nwidth=.1 .dot.png: - $(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp" - mv "$@.tmp" "$@" + $(AM_V_DOT)$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \ + mv "$(srcdir)/$@.tmp" "$(srcdir)/$@" .dot.pdf: - $(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$@.tmp" - mv "$@.tmp" "$@" + $(AM_V_DOT)$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \ + mv "$(srcdir)/$@.tmp" "$(srcdir)/$@" .dot.eps: - $(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp" - mv "$@.tmp" "$@" + $(AM_V_DOT)$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \ + mv "$(srcdir)/$@.tmp" "$(srcdir)/$@" + +.png.eps: + $(AM_V_GEN)convert "$<" "$@-tmp.eps"; \ + mv "$@-tmp.eps" "$@" # We cannot add new dependencies to `doc/guix.pdf' & co. (info "(automake) # Extending"). Using the `-local' rules is imperfect, because they may be # triggered after the main rule. Oh, well. -pdf-local: $(top_srcdir)/doc/images/bootstrap-graph.pdf -info-local: $(top_srcdir)/doc/images/bootstrap-graph.png -ps-local: $(top_srcdir)/doc/images/bootstrap-graph.eps - - -# Manual pages. - -doc/guix.1: scripts/guix - -LANGUAGE= $(top_builddir)/pre-inst-env \ - $(HELP2MAN) --output="$@" guix - -doc/guix-daemon.1: guix-daemon - -LANGUAGE= $(top_builddir)/pre-inst-env \ - $(HELP2MAN) --output="$@" guix-daemon - -define subcommand-manual-target - -doc/guix-$(1).1: scripts/guix guix/scripts/$(1).go - -LANGUAGE= $(top_builddir)/pre-inst-env \ - $(HELP2MAN) --output="$$@" "guix $(1)" - -endef - -SUBCOMMANDS := \ - archive \ - build \ - download \ - edit \ - environment \ - gc \ - hash \ - import \ - lint \ - package \ - publish \ - pull \ - refresh \ - size \ - system - -$(eval $(foreach subcommand,$(SUBCOMMANDS), \ - $(call subcommand-manual-target,$(subcommand)))) +pdf-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.pdf) +info-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.png) +ps-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.eps) \ + $(top_srcdir)/doc/images/coreutils-size-map.eps +dvi-local: ps-local + +## ----------- ## +## Man pages. ## +## ----------- ## + +sub_commands_mans = \ + doc/guix-archive.1 \ + doc/guix-build.1 \ + doc/guix-challenge.1 \ + doc/guix-download.1 \ + doc/guix-edit.1 \ + doc/guix-environment.1 \ + doc/guix-gc.1 \ + doc/guix-hash.1 \ + doc/guix-import.1 \ + doc/guix-lint.1 \ + doc/guix-package.1 \ + doc/guix-publish.1 \ + doc/guix-pull.1 \ + doc/guix-refresh.1 \ + doc/guix-size.1 \ + doc/guix-system.1 dist_man1_MANS = \ doc/guix.1 \ - $(SUBCOMMANDS:%=doc/guix-%.1) + $(sub_commands_mans) + +# Man pages are generated using GNU help2man. +gen_man = \ + LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN) \ + $(HELP2MANFLAGS) + +HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME) + +# Note: Do not depend on 'scripts/guix' since that would trigger a rebuild +# even for people building from a tarball. +doc/guix.1: $(sub_commands_mans) + -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` + +# Note: The dependency on $(GOBJECTS) is meant to force these docs to be made +# only after all Guile modules have been compiled. The 'case' ensures the man +# pages are only generated if the corresponding script source has been +# changed. +doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS) + -@case '$?' in \ + *$<*) $(AM_V_P) && set -x || echo " HELP2MAN $@"; \ + $(gen_man) --output="$@" "guix $*";; \ + *) : ;; \ + esac if BUILD_DAEMON -dist_man1_MANS += \ - doc/guix-daemon.1 +dist_man1_MANS += doc/guix-daemon.1 + +# Note: Do not depend on 'guix-daemon' since that would trigger a rebuild even +# for people building from a tarball. +doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc + -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` endif