From 03d0e2d2b9f9cc3be8e871842c11df9453e903bd Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Thu, 21 Apr 2016 18:07:52 +0200 Subject: build: Move 'Makefile' fragments to subdirectories. This follows a convention used by some other GNU packages like Autoconf, Bison, Coreutils, and Gnulib. * doc.am: Rename to ... * doc/local.mk: ... this. * emacs.am: Rename to ... * emacs/local.mk: ... this. * gnu-system.am: Rename to ... * gnu/local.mk: ... this. * daemon.am: Rename to ... * nix/local.mk: ... this. * Makefile.am: Adapt to them. * doc/guix.texi (Porting to a New Platform): Adapt documentation. * guix/config.scm.in (%state-directory, %config-directory): Adapt comments. * emacs/guix-config.el.in (guix-config-state-directory): Likewise. --- doc/guix.texi | 2 +- doc/local.mk | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 doc/local.mk (limited to 'doc') diff --git a/doc/guix.texi b/doc/guix.texi index 859db2be12..ab07d1066e 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -11286,7 +11286,7 @@ to be updated to refer to these binaries on the target platform. That is, the hashes and URLs of the bootstrap tarballs for the new platform must be added alongside those of the currently supported platforms. The bootstrap Guile tarball is treated specially: it is expected to be -available locally, and @file{gnu-system.am} has rules do download it for +available locally, and @file{gnu/local.mk} has rules do download it for the supported architectures; a rule for the new platform must be added as well. diff --git a/doc/local.mk b/doc/local.mk new file mode 100644 index 0000000000..b9f07c3590 --- /dev/null +++ b/doc/local.mk @@ -0,0 +1,157 @@ +# GNU Guix --- Functional package management for GNU +# 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. +# +# GNU Guix is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# GNU Guix is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# 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 \ + $(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 \ + doc/os-config-desktop.texi \ + doc/os-config-lightweight-desktop.texi + +# Bundle this file so that makeinfo finds it in out-of-source-tree builds. +BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) +EXTRA_DIST += $(OS_CONFIG_EXAMPLES_TEXI) +MAINTAINERCLEANFILES = $(OS_CONFIG_EXAMPLES_TEXI) + +doc/os-config-%.texi: gnu/system/examples/%.tmpl + $(AM_V_GEN)$(MKDIR_P) "`dirname $@`"; \ + cp "$<" "$@" + +infoimagedir = $(infodir)/images +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. +DOT_OPTIONS = \ + -Gratio=.9 -Gnodesep=.005 -Granksep=.00005 \ + -Nfontsize=9 -Nheight=.1 -Nwidth=.1 + +.dot.png: + $(AM_V_DOT)$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \ + mv "$(srcdir)/$@.tmp" "$(srcdir)/$@" + +.dot.pdf: + $(AM_V_DOT)$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \ + mv "$(srcdir)/$@.tmp" "$(srcdir)/$@" + +.dot.eps: + $(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: $(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. ## +## ----------- ## + +# The man pages are generated using GNU Help2man. In makefiles rules they +# depend not on the binary, but on the source files. This usage allows a +# manual page to be generated by the maintainer and included in the +# distribution without requiring the end-user to have 'help2man' installed. +# They are built in $(srcdir) like info manuals. + +sub_commands_mans = \ + $(srcdir)/doc/guix-archive.1 \ + $(srcdir)/doc/guix-build.1 \ + $(srcdir)/doc/guix-challenge.1 \ + $(srcdir)/doc/guix-download.1 \ + $(srcdir)/doc/guix-edit.1 \ + $(srcdir)/doc/guix-environment.1 \ + $(srcdir)/doc/guix-gc.1 \ + $(srcdir)/doc/guix-hash.1 \ + $(srcdir)/doc/guix-import.1 \ + $(srcdir)/doc/guix-lint.1 \ + $(srcdir)/doc/guix-package.1 \ + $(srcdir)/doc/guix-publish.1 \ + $(srcdir)/doc/guix-pull.1 \ + $(srcdir)/doc/guix-refresh.1 \ + $(srcdir)/doc/guix-size.1 \ + $(srcdir)/doc/guix-system.1 + +dist_man1_MANS = \ + $(srcdir)/doc/guix.1 \ + $(sub_commands_mans) + +gen_man = \ + LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN) \ + $(HELP2MANFLAGS) + +HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME) + +$(srcdir)/doc/guix.1: scripts/guix.in $(sub_commands_mans) + -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` + +# The 'case' ensures the man pages are only generated if the corresponding +# source script (the first prerequisite) has been changed. The $(GOBJECTS) +# prerequisite is solely meant to force these docs to be made only after all +# Guile modules have been compiled. +$(srcdir)/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 += $(srcdir)/doc/guix-daemon.1 + +$(srcdir)/doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc + -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` + +endif -- cgit v1.2.3