threads / patch / 8383

patchcatch asciidoc failures

Subject: [PATCH] catch asciidoc failures

## tl;dr

7 messages between Jun 1, 2007 and Jun 1, 2007. Diffs are folded; open one to read it.

replies: 6people: 4as markdown or json

Scott Lamb· Jun 1, 2007, 06:23 UTC · lore

If pipefail is available (GNU bash >= 3.00), fail when asciidoc returns error rather than possibly later during XSLT.

Signed-off-by: Scott Lamb <slamb@slamb.org>
---
This is my first git patch, so please let me know if I got the procedure
wrong.
 Documentation/Makefile |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Show changes to Documentation/Makefile +2 −0
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 3f92783..48c245c 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -111,6 +111,7 @@ clean:
 
 %.html : %.txt
 	rm -f $@+ $@
+	set -o pipefail 2>/dev/null; \
 	$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
 		$(ASCIIDOC_EXTRA) -o - $< | \
 		sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
@@ -121,6 +122,7 @@ clean:
 
 %.xml : %.txt
 	rm -f $@+ $@
+	set -o pipefail 2>/dev/null; \
 	$(ASCIIDOC) -b docbook -d manpage -f asciidoc.conf \
 		$(ASCIIDOC_EXTRA) -o - $< | \
 		sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
-- 
1.5.2
Martin Waitz· Jun 1, 2007, 08:36 UTC · re: Scott Lamb · lore

Re: [PATCH] catch asciidoc failures

hoi :)
On Thu, May 31, 2007 at 11:23:57PM -0700, Scott Lamb wrote:
> If pipefail is available (GNU bash >= 3.00), fail when asciidoc returns
> error rather than possibly later during XSLT.

perhaps we should simply change the pipe ordering to get asciidoc to the end of the pipeline so that all shells respect its exit code?

Show 10 quoted lines
> --- a/Documentation/Makefile
> +++ b/Documentation/Makefile
> @@ -111,6 +111,7 @@ clean:
>  
>  %.html : %.txt
>  	rm -f $@+ $@
> +	set -o pipefail 2>/dev/null; \
>  	$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
>  		$(ASCIIDOC_EXTRA) -o - $< | \
>  		sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
something like (untested):
	sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' $< |
		$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
			$(ASCIIDOC_EXTRA) -o $@+ -
-- 
Martin Waitz
Jonas Fonseca· Jun 1, 2007, 08:55 UTC · re: Martin Waitz · lore

Re: [PATCH] catch asciidoc failures

On 6/1/07, Martin Waitz <tali@admingilde.org> wrote:
Show 6 quoted lines
> On Thu, May 31, 2007 at 11:23:57PM -0700, Scott Lamb wrote:
> > If pipefail is available (GNU bash >= 3.00), fail when asciidoc returns
> > error rather than possibly later during XSLT.
>
> perhaps we should simply change the pipe ordering to get asciidoc
> to the end of the pipeline so that all shells respect its exit code?

For tig I also adopted the nice man page headers git has. However, I have used asciidoc attributes provided on the command line avoid having to use sed. I can make a patch later if nobody beats me. The required changes are outlined below.

Show 15 quoted lines
> > --- a/Documentation/Makefile
> > +++ b/Documentation/Makefile
> > @@ -111,6 +111,7 @@ clean:
> >
> >  %.html : %.txt
> >       rm -f $@+ $@
> > +     set -o pipefail 2>/dev/null; \
> >       $(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
> >               $(ASCIIDOC_EXTRA) -o - $< | \
> >               sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
>
> something like (untested):
>         sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' $< |
>                 $(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
>                         $(ASCIIDOC_EXTRA) -o $@+ -
More untested stuff. Use -a to define git_version attribute:
$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
                         $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@ $<
Then change the @@GIT_VERSION@@ symbol in asciidoc.conf to {git_version}.
-- 
Jonas Fonseca
Jeff King· Jun 1, 2007, 09:10 UTC · re: Martin Waitz · lore

Re: [PATCH] catch asciidoc failures

On Fri, Jun 01, 2007 at 10:36:21AM +0200, Martin Waitz wrote:
Show 7 quoted lines
> perhaps we should simply change the pipe ordering to get asciidoc
> to the end of the pipeline so that all shells respect its exit code?
> [...]
> something like (untested):
> 	sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' $< |
> 		$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
> 			$(ASCIIDOC_EXTRA) -o $@+ -

That won't work. The text @@GIT_VERSION@@ is pulled in from the asciidoc.conf file, so it's not even in the source file; it's only in the built product.

As Jonas suggested, making it an asciidoc attribute is much more elegant (patch even tested!):

-- >8 --
Documentation: robustify asciidoc GIT_VERSION replacement

Instead of using sed on the resulting file, we now have a git_version asciidoc attribute. This means that we don't pipe the output of asciidoc, which means we can detect build failures.

Problem reported by Scott Lamb, solution suggested by Jonas Fonseca.
Signed-off-by: Jeff King <peff@peff.net>
---
 Documentation/Makefile      |    6 ++----
 Documentation/asciidoc.conf |    2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)
Show changes to 2 files +3 −5

Documentation/Makefile, Documentation/asciidoc.conf

diff --git a/Documentation/Makefile b/Documentation/Makefile
index 3f92783..4064b38 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -112,8 +112,7 @@ clean:
 %.html : %.txt
 	rm -f $@+ $@
 	$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
-		$(ASCIIDOC_EXTRA) -o - $< | \
-		sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
+		$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $<
 	mv $@+ $@
 
 %.1 %.5 %.7 : %.xml
@@ -122,8 +121,7 @@ clean:
 %.xml : %.txt
 	rm -f $@+ $@
 	$(ASCIIDOC) -b docbook -d manpage -f asciidoc.conf \
-		$(ASCIIDOC_EXTRA) -o - $< | \
-		sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
+		$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $<
 	mv $@+ $@
 
 user-manual.xml: user-manual.txt user-manual.conf
diff --git a/Documentation/asciidoc.conf b/Documentation/asciidoc.conf
index fa7dc94..60e15ba 100644
--- a/Documentation/asciidoc.conf
+++ b/Documentation/asciidoc.conf
@@ -40,7 +40,7 @@ template::[header-declarations]
 <refentrytitle>{mantitle}</refentrytitle>
 <manvolnum>{manvolnum}</manvolnum>
 <refmiscinfo class="source">Git</refmiscinfo>
-<refmiscinfo class="version">@@GIT_VERSION@@</refmiscinfo>
+<refmiscinfo class="version">{git_version}</refmiscinfo>
 <refmiscinfo class="manual">Git Manual</refmiscinfo>
 </refmeta>
 <refnamediv>
-- 
1.5.2.871.g0ff23
Martin Waitz· Jun 1, 2007, 09:39 UTC · re: Jeff King · lore

Re: [PATCH] catch asciidoc failures

hoi :)
On Fri, Jun 01, 2007 at 05:10:30AM -0400, Jeff King wrote:
> As Jonas suggested, making it an asciidoc attribute is much more
> elegant (patch even tested!):

very nice! Does that need any special asciidoc version?

-- 
Martin Waitz
Jeff King· Jun 1, 2007, 09:43 UTC · re: Martin Waitz · lore

Re: [PATCH] catch asciidoc failures

On Fri, Jun 01, 2007 at 11:39:29AM +0200, Martin Waitz wrote:
> very nice!
> Does that need any special asciidoc version?

I don't think so, but I'm not an asciidoc expert. Flipping through the changelog, it looks like '-a' has existed since before 7.0.

-Peff
Scott Lamb· Jun 1, 2007, 09:46 UTC · re: Jeff King · lore

Re: [PATCH] catch asciidoc failures

On Jun 1, 2007, at 2:10 AM, Jeff King wrote:
Show 7 quoted lines
>  %.html : %.txt
>  	rm -f $@+ $@
>  	$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
> -		$(ASCIIDOC_EXTRA) -o - $< | \
> -		sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
> +		$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $<
>  	mv $@+ $@

Hmm, now the $@+ intermediary shouldn't be necessary anymore - with "- o" it's asciidoc's responsibility to handle the output file correctly.

I think there's a lightbulb joke here somewhere. ;)
-- 
Scott Lamb <http://www.slamb.org/>

← back to recent threads