From: Glenn Morris Date: Thu, 12 Dec 2013 22:41:31 +0000 (-0500) Subject: Generate info/dir from .texi files rather than .info files X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~440 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b55e11bf851ac73e1041a4a24cca3f81d93039e4;p=emacs.git 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). --- diff --git a/ChangeLog b/ChangeLog index 09624a6cf96..d1404a0c01c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2013-12-12 Glenn Morris + * 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. diff --git a/Makefile.in b/Makefile.in index 7effadd6479..c2871d6f735 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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}" ;; \ diff --git a/build-aux/make-info-dir b/build-aux/make-info-dir index 61f3b1a243c..2bac1f89392 100755 --- a/build-aux/make-info-dir +++ b/build-aux/make-info-dir @@ -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 diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog index b8c2c93bbb6..57dc740fbfa 100644 --- a/doc/lispintro/ChangeLog +++ b/doc/lispintro/ChangeLog @@ -1,5 +1,7 @@ 2013-12-12 Glenn Morris + * emacs-lisp-intro.texi: Tweak dircategory. + * emacs-lisp-intro.texi: Sync direntry with info/dir version. 2013-12-02 Paul Eggert diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 0111c58ad82..396780408a5 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -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 diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index f2b6026fe26..9bdc35a112c 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,7 @@ +2013-12-12 Glenn Morris + + * elisp.texi: Tweak dircategory. + 2013-12-12 Eli Zaretskii * nonascii.texi (Encoding and I/O): Document file-name encoding diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 0e09b1eed2d..d6f7df5fb01 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -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