Generate info/dir from .texi files rather than .info files

* Makefile.in (install-info): Handle missing info/dir.
(info_dir_deps): New variable.
(${srcdir}/info/dir): Depend on .texi files rather than .info files.
(check-info): Update topics.

* build-aux/make-info-dir: Use .texi files rather than .info files.
Update topics.

* doc/lispintro/emacs-lisp-intro.texi:
* doc/lispref/elisp.texi:
Tweak dircategory (all the others use "Emacs" + lower-case).
This commit is contained in:
Glenn Morris 2013-12-12 17:41:31 -05:00
parent 2cc82b9fbc
commit b55e11bf85
7 changed files with 49 additions and 11 deletions

View file

@ -1,5 +1,12 @@
2013-12-12 Glenn Morris <rgm@gnu.org>
* Makefile.in (install-info): Handle missing info/dir.
(info_dir_deps): New variable.
(${srcdir}/info/dir): Depend on .texi files rather than .info files.
(check-info): Update topics.
* build-aux/make-info-dir: Use .texi files rather than .info files.
Update topics.
* Makefile.in (install-info): Remove some useless subshells.
Stop keeping info/dir in the repository.

View file

@ -643,6 +643,9 @@ install-etcdoc: src install-arch-indep
## If info/dir is missing, but we have install-info, we should let
## that handle it. If info/dir is present and we do not have install-info,
## we should check for missing entries and add them by hand.
##
## FIXME:
## If HAVE_MAKEINFO = no and there are no info files, do not install info/dir.
install-info: info
umask 022; ${MKDIR_P} "$(DESTDIR)${infodir}"
-unset CDPATH; \
@ -652,6 +655,7 @@ install-info: info
true; \
else \
[ -f "$(DESTDIR)${infodir}/dir" ] || \
[ ! -f ${srcdir}/info/dir ] || \
${INSTALL_DATA} ${srcdir}/info/dir "$(DESTDIR)${infodir}/dir"; \
info_misc=`cd doc/misc && $(QUIET_SUBMAKE) $(MAKE) -s echo-info`; \
cd ${srcdir}/info ; \
@ -961,12 +965,21 @@ ps: $(PSS)
info-dir: ${srcdir}/info/dir
## Not strictly necessary, but speeds things up a bit by stopping
## the info-dir rule from running when not needed.
## Hopefully doc/misc/*.texi is not too long for some systems?
info_dir_deps = ${srcdir}/build-aux/dir_top \
${srcdir}/doc/emacs/emacs.texi \
${srcdir}/doc/lispintro/emacs-lisp-intro.texi \
${srcdir}/doc/lispref/elisp.texi ${srcdir}/doc/misc/*.texi
## It would be much simpler if info/dir was only created in the
## installation location by the install-info rule, but we also
## need one in the source directory for people running uninstalled.
## FIXME Change make-info-dir to use texi files rather than info-files,
## depend on ${srcdir}/doc/*/*.texi here rather than info-real.
${srcdir}/info/dir: info-real ${srcdir}/build-aux/dir_top
## FIXME it would be faster to use the install-info program if we have it,
## but then we would need to depend on info-real, which would
## slow down parallelization.
${srcdir}/info/dir: ${info_dir_deps}
tempfile=info-dir.$$$$; \
rm -f $${tempfile}; \
thisdir=`pwd`; \
@ -1051,7 +1064,7 @@ check-info: info
esac ; \
cat=`sed -n 's/^INFO-DIR-SECTION //p' $${file}`; \
case $${cat} in \
"Texinfo documentation system" | "Emacs"| "GNU Emacs Lisp" | \
"Texinfo documentation system" | "Emacs"| "Emacs lisp" | \
"Emacs editing modes" | "Emacs network features" | \
"Emacs misc features" | "Emacs lisp libraries" ) : ;; \
*) bad="$${bad} $${file}" ;; \

View file

@ -60,7 +60,13 @@ cp $basefile $outfile
## FIXME inefficient looping.
for topic in "Texinfo documentation system" "Emacs" "GNU Emacs Lisp" \
## What we should do is loop once over files, collecting topic and
## direntry information for each. Then loop over topics and write
## out the results. But that seems to require associative arrays,
## and I do not know how to do that with portable sh.
## Could use Emacs instead of sh, but till now info generation does
## not require Emacs to have been built.
for topic in "Texinfo documentation system" "Emacs" "Emacs lisp" \
"Emacs editing modes" "Emacs network features" "Emacs misc features" \
"Emacs lisp libraries"; do
@ -68,19 +74,25 @@ for topic in "Texinfo documentation system" "Emacs" "GNU Emacs Lisp" \
$topic
EOF
for file in info/*.info; do
## Bit faster than doc/*/*.texi.
for file in doc/emacs/emacs.texi doc/lispintro/emacs-lisp-intro.texi \
doc/lispref/elisp.texi doc/misc/*.texi; do
## FIXME do not ignore w32 if OS is w32.
case $file in
*-xtra.info|*efaq-w32.info) continue ;;
*-xtra.texi|*efaq-w32.texi|*doclicense.texi) continue ;;
esac
dircat=`sed -n -e 's/^INFO-DIR-SECTION //p' $file`
dircat=`sed -n -e 's/@value{emacsname}/Emacs/' -e 's/^@dircategory //p' $file`
## TODO warn about unknown topics.
## (check-info in top-level Makefile does that.)
test "$dircat" = "$topic" || continue
sed -n -e '/^START-INFO-DIR-ENTRY/,/^END-INFO-DIR-ENTRY/ s/^\([^SE]\)/\1/p' \
sed -n -e 's/@value{emacsname}/Emacs/' \
-e 's/@acronym{\([A-Z]*\)}/\1/' \
-e '/^@direntry/,/^@end direntry/ s/^\([^@]\)/\1/p' \
$file >> $outfile
done

View file

@ -1,5 +1,7 @@
2013-12-12 Glenn Morris <rgm@gnu.org>
* emacs-lisp-intro.texi: Tweak dircategory.
* emacs-lisp-intro.texi: Sync direntry with info/dir version.
2013-12-02 Paul Eggert <eggert@cs.ucla.edu>

View file

@ -96,7 +96,7 @@
@c ----------------------------------------------------
@dircategory GNU Emacs Lisp
@dircategory Emacs lisp
@direntry
* Emacs Lisp Intro: (eintr). A simple introduction to Emacs Lisp programming.
@end direntry

View file

@ -1,3 +1,7 @@
2013-12-12 Glenn Morris <rgm@gnu.org>
* elisp.texi: Tweak dircategory.
2013-12-12 Eli Zaretskii <eliz@gnu.org>
* nonascii.texi (Encoding and I/O): Document file-name encoding

View file

@ -117,7 +117,7 @@ developing GNU and promoting software freedom.''
@documentencoding UTF-8
@dircategory GNU Emacs Lisp
@dircategory Emacs lisp
@direntry
* Elisp: (elisp). The Emacs Lisp Reference Manual.
@end direntry