git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [install info (using perl) 1/2] Add support for an info version of the user manual

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 8, 2007, 23:18 UTC
Message-ID
<7v1wed1up3.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<7v643p1vbr.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <gitster@pobox.com> writes:
Show 7 quoted lines
>> This part worries me.
>
> Aside from possible portability issue of multi-line script,
> there is another slight problem I am not sure if it is worth
> fixing.  If you do not have docbook2x-texi installed, nobody
> notices that resulting $*.texi was a garbage and an almost empty
> git.info is generated.
How about doing something like this instead?
---
 Documentation/Makefile      |   13 ++++---------
 Documentation/fix-texi.perl |   15 +++++++++++++++
 2 files changed, 19 insertions(+), 9 deletions(-)
 create mode 100755 Documentation/fix-texi.perl
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 56d12aa..8c33729 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -154,16 +154,11 @@ user-manual.html: user-manual.xml
 	xsltproc $(XSLTOPTS) -o $@ $(XSLT) $<
 
 git.info: user-manual.xml
-	$(RM) $@ $*.texi
-	$(DOCBOOK2X_TEXI) user-manual.xml --to-stdout | \
-	perl -ne 'if (/^\@setfilename/) {$$_="\@setfilename git.info\
-"} elsif (/^\@direntry/) {print "\@dircategory Development\
-\@direntry\
-* Git: (git).           A fast distributed revision control system\
-\@end direntry\
-"} print unless (/^\@direntry/ .. /^\@end direntry/)' > $*.texi
+	$(RM) $@ $*.texi $*.texi+
+	$(DOCBOOK2X_TEXI) user-manual.xml --to-stdout >$*.texi+
+	perl fix-texi.perl <$*.texi+ >$*.texi
 	$(MAKEINFO) --no-split $*.texi
-	$(RM) $*.texi
+	$(RM) $*.texi $*.texi+
 
 howto-index.txt: howto-index.sh $(wildcard howto/*.txt)
 	$(RM) $@+ $@
diff --git a/Documentation/fix-texi.perl b/Documentation/fix-texi.perl
new file mode 100755
index 0000000..ff7d78f
--- /dev/null
+++ b/Documentation/fix-texi.perl
@@ -0,0 +1,15 @@
+#!/usr/bin/perl -w
+
+while (<>) {
+	if (/^\@setfilename/) {
+		$_ = "\@setfilename git.info\n";
+	} elsif (/^\@direntry/) {
+		print '@dircategory Development
+@direntry
+* Git: (git).           A fast distributed revision control system
+@end direntry
+';	}
+	unless (/^\@direntry/../^\@end direntry/) {
+		print;
+	}
+}
Previous: Junio C HamanoNext: David Kastrup
Message 5 of 8 in “[install info (using perl) 1/2] Add support for an info version of the user manual”
  1. David KastrupAug 6, 2007
  2. 2/2 INSTALL: explain info installation and dependencies.David Kastrup, Aug 7, 2007
  3. Junio C HamanoAug 8, 2007
  4. Junio C HamanoAug 8, 2007
  5. Junio C HamanoAug 8, 2007
  6. David KastrupAug 8, 2007
  7. David KastrupAug 8, 2007
  8. David KastrupAug 8, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.