all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mathieu Lirzin <mthl@gnu.org>
To: Eric Bavier <ericbavier@openmailbox.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH 06/13] build: Generate man pages after compiling guile objects.
Date: Thu, 28 Jan 2016 18:00:35 +0100	[thread overview]
Message-ID: <87k2mtk5ak.fsf@gnu.org> (raw)
In-Reply-To: <7bfbfb841466c6889effbd21d089d616@openmailbox.org> (Eric Bavier's message of "Thu, 28 Jan 2016 09:59:43 -0600")

Eric Bavier <ericbavier@openmailbox.org> writes:

>>> diff --git a/doc.am b/doc.am
>>> index f15efcc..b3996d1 100644
>>> --- a/doc.am
>>> +++ b/doc.am
>>> @@ -106,9 +106,18 @@ doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
>>>
>>>  define subcommand-manual-target
>>>
>>> -doc/guix-$(1).1: guix/scripts/$(1).scm
>>> -	-LANGUAGE= $(top_builddir)/pre-inst-env		\
>>> -	  $(HELP2MAN) --output="$$@" "guix $(1)"
>>> +# Note: The dependency on make-go.stamp is to force these docs to
>>> be made only
>>> +# after all guile modules have been compiled, so that they are not
>>> compiled
>>> +# during this rule.  But we only want to actually generate the
>>> manpages if the
>>> +# corresponding script source has been changed.
>>> +doc/guix-$(1).1: guix/scripts/$(1).scm make-go.stamp
>>> +	-$(AM_V_at)case '$$?' in \
>>> +	  *$$<*) \
>>> +	    echo "  GEN     $$@"; \
>>> +	    LANGUAGE= $(top_builddir)/pre-inst-env \
>>> +	    $(HELP2MAN) --output="$$@" "guix $(1)" ;; \
>>> +	  *) : ;; \
>>> +	esac
>>
>> IIUC, there is a problem with adding ‘make-go.stamp’ as a prerequisite
>> here.  Since building ‘.go’ files from the tarball will trigger the
>> rebuild of man pages.
>
> That's what the case statement is for, it skips the invocation of
> help2man if the script source was not among the dependents updated.  A
> 'touch' could be run on $@ in that case, rather than just exiting, so
> that the rule in not run repeatedly.

Oh, I overlooked that.  So the ‘make-go.stamp’ is for Delaying help2man
when building from Git, and the ‘case’ is for rebuilding the man pages
only when the corresponding ‘.scm’ script file has changed.  That's
smart and seems to fix the problem perfectly.

OTOH I must admit that for maintainability reasons I would prefer
avoiding complexity in Makefiles as much as possible.  This means using
Automake's abstract concepts as much as possible, having a simple
dependency graph on top of that, and put things that don't fit well in
this scheme in individual "build-aux/" scripts.  For that reason I still
prefer the embed help2man solution.  but otherwise it looks nice.  :)

Thanks.

--
Mathieu Lirzin

  reply	other threads:[~2016-01-28 17:00 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-24 20:19 [PATCH 00/13] New syntax 'package@version' and compilation improvements Mathieu Lirzin
2016-01-24 20:19 ` [PATCH 01/13] tests: Use 'dummy-origin' for lint tests when possible Mathieu Lirzin
2016-01-26 15:58   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 02/13] lint: Remove an unneeded clause in 'check-patch-file-names' Mathieu Lirzin
2016-01-26 16:00   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 03/13] lint: Rewrite 'check-patch-file-names' Mathieu Lirzin
2016-01-26 16:01   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 04/13] utils: Use '@' for separating package names and version numbers Mathieu Lirzin
2016-01-25 11:37   ` Alex Kost
2016-01-25 20:56     ` Mathieu Lirzin
2016-01-26 16:22       ` Ludovic Courtès
2016-01-26 20:52         ` Mathieu Lirzin
2016-01-26 21:08           ` Ludovic Courtès
2016-02-19 20:49         ` Mathieu Lirzin
2016-02-23 11:11           ` Ludovic Courtès
2016-02-29  0:28             ` Mathieu Lirzin
2016-02-29 16:00               ` Ludovic Courtès
2016-03-02 21:35                 ` Mathieu Lirzin
2016-03-05  1:28                 ` Nils Gillmann
2016-03-05  9:24                   ` Alex Kost
2016-03-05  9:36                   ` Mathieu Lirzin
2016-03-03 10:29               ` Alex Kost
2016-03-03 16:55                 ` Ludovic Courtès
2016-03-04 10:19                   ` Alex Kost
2016-03-04 23:03                 ` Mathieu Lirzin
2016-03-04 23:25                   ` Ludovic Courtès
2016-03-05  1:08                     ` Mathieu Lirzin
2016-03-05  9:16                   ` Alex Kost
2016-01-25 14:04   ` Thompson, David
2016-01-25 21:41     ` Mathieu Lirzin
2016-01-25 23:33       ` Alex Kost
2016-01-26 17:57         ` Mathieu Lirzin
2016-01-24 20:19 ` [PATCH 05/13] packages: Use '@' in package record printers Mathieu Lirzin
2016-01-26 16:22   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 06/13] build: Generate man pages after compiling guile objects Mathieu Lirzin
2016-01-26 16:52   ` Ludovic Courtès
2016-01-26 20:08     ` Mathieu Lirzin
2016-01-28  2:37       ` Eric Bavier
2016-01-28 15:44         ` Mathieu Lirzin
2016-01-28 15:59           ` Eric Bavier
2016-01-28 17:00             ` Mathieu Lirzin [this message]
2016-01-29  0:27               ` Eric Bavier
2016-01-29 16:17                 ` Mathieu Lirzin
2016-01-29 16:46                   ` Eric Bavier
2016-01-29 22:56                     ` Mathieu Lirzin
2016-01-31  9:17                       ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 07/13] build: Add 'DL' silent rule Mathieu Lirzin
2016-01-26 16:28   ` Ludovic Courtès
2016-01-26 17:44     ` Mathieu Lirzin
2016-01-26 19:22       ` Taylan Ulrich Bayırlı/Kammer
2016-01-26 21:06       ` Ludovic Courtès
2016-01-26 21:14         ` Mathieu Lirzin
2016-01-24 20:19 ` [PATCH 08/13] build: Add 'DOT' " Mathieu Lirzin
2016-01-26 16:28   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 09/13] build: Add 'EMACS' " Mathieu Lirzin
2016-01-26 16:28   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 10/13] build: Add 'HELP2MAN' " Mathieu Lirzin
2016-01-26 16:29   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 11/13] build: Delete emacs/guix-autoloads.el when 'make clean' Mathieu Lirzin
2016-01-26 16:33   ` Ludovic Courtès
2016-01-26 22:55     ` Mathieu Lirzin
2016-01-24 20:19 ` [PATCH 12/13] build: Use 'GEN' and 'at' silent rules Mathieu Lirzin
2016-01-26 16:34   ` Ludovic Courtès
2016-01-24 20:19 ` [PATCH 13/13] Update .gitignore Mathieu Lirzin
2016-01-26 16:34   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k2mtk5ak.fsf@gnu.org \
    --to=mthl@gnu.org \
    --cc=ericbavier@openmailbox.org \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.