Use imprimatur to maintain docs.

This commit is contained in:
Sergey Poznyakoff 2012-05-13 15:31:31 +03:00
parent 803b69beb3
commit 00c1786bc2
12 changed files with 45 additions and 342 deletions

1
.gitignore vendored
View file

@ -24,4 +24,5 @@ config.status
configure
core
libtool
m4
stamp-h1

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "imprimatur"]
path = imprimatur
url = git://git.gnu.org.ua/imprimatur.git

View file

@ -14,6 +14,8 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
AUTOMAKE_OPTIONS = gnits 1.8
ACLOCAL_AMFLAGS = -I m4 -I imprimatur
if PAM_COND_FSHADOW
FSHADOW_DIR=pam_fshadow
endif
@ -27,6 +29,7 @@ if PAM_COND_LDAPHOME
LDAPHOME_DIR=pam_ldaphome
endif
SUBDIRS = \
imprimatur\
doc\
lib\
$(FSHADOW_DIR)\

View file

@ -1,3 +1,3 @@
#! /bin/sh
test -d m4 || mkdir m4
autoreconf -f -i -s

View file

@ -19,6 +19,7 @@ AC_PREREQ(2.63)
AC_INIT(pam-modules, 1.7, bug-pam-modules@gnu.org.ua)
AC_CONFIG_SRCDIR(pam_fshadow/pam_fshadow.c)
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.11 no-exeext tar-ustar dist-xz silent-rules])
AM_CONFIG_HEADER(config.h)
@ -188,6 +189,11 @@ AC_ARG_WITH(pamdir,
[PAMDIR=$withval])
AC_SUBST(PAMDIR)
## **************
## Imprimatur
## **************
IMPRIMATUR_INIT
## **************
## Summary
## **************

View file

@ -15,10 +15,9 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
info_TEXINFOS=pam-modules.texi
pam_modules_TEXINFOS=fdl.texi macros.texi rendition.texi
pam_modules_TEXINFOS=fdl.texi macros.texi
EXTRA_DIST = \
check-docs.sh\
gendocs_template\
mastermenu.el\
untabify.el
@ -26,55 +25,14 @@ EXTRA_DIST = \
clean-local:
rm -rf manual
AM_MAKEINFOFLAGS=@IMPRIMATUR_MAKEINFOFLAGS@
imprimatur_INPUT=$(info_TEXINFOS) $(pam_modules_TEXINFOS)
CHECK_DOCS=$(top_srcdir)/@IMPRIMATUR_MODULE_DIR@/check-docs.sh
include ../imprimatur/imprimatur.mk
# Checking
check-format:
@if test -n "`cat $(info_TEXINFOS) $(pam_modules_TEXINFOS) | tr -d -c '\t'`"; then \
echo "Sources contain tabs; run make untabify"; \
false; \
fi
check-refs:
@for file in $(info_TEXINFOS) $(mailfromd_TEXINFOS); \
do \
sed -e = $$file | \
sed -n 'N;/@FIXME-.*ref/{s/\(^[0-9][0-9]*\).*@FIXME-.*ref{\([^}]*\)}.*/'$$file':\1: \2/gp}'; \
done > $@-t; \
if [ -s $@-t ]; then \
echo "Unresolved cross-references:"; \
cat $@-t;\
rm $@-t; \
else \
rm -f $@-t; \
fi
check-fixmes:
@for file in $(info_TEXINFOS); \
do \
sed -e = $$file | \
sed -n 'N;/@FIXME{/{s/\(^[0-9][0-9]*\).*@FIXME{\([^}]*\).*/'$$file':\1: \2/gp}'; \
done > $@-t; \
if [ -s $@-t ]; then \
echo "Unresolved FIXMEs:"; \
cat $@-t; \
rm $@-t; \
false; \
else \
rm -f $@-t; \
fi
check-unrevised:
@grep -Hn @UNREVISED $(info_TEXINFOS) > $@-t; \
if [ -s $@-t ]; then \
echo "Unrevised nodes:"; \
cat $@-t; \
rm $@-t; \
false;\
else \
rm $@-t; \
fi
check-log-options:
@check-docs.sh "pam_log options" \
@$(CHECK_DOCS) "pam_log options" \
'/struct pam_opt .*\[\] = /,/^}/s/[ \t]*{ *PAM_OPTSTR(\([^,)]*\)).*/\1/p' \
'/@set MODULE pam_log/,/@set MODULE/{s/@value{MODULE}/pam_log/g;there;:here;s/@opindex *\([^@,]*\),.*@command{pam_log}.*/\1/;t lab;b;: lab;{s/^-//;s/^no//;p;}}' \
$(top_srcdir)/pam_log/*.c -- \
@ -85,7 +43,7 @@ check-log-options:
check-all-options:
@for mod in fshadow regex sql; \
do \
check-docs.sh "pam_$$mod options" \
$(CHECK_DOCS) "pam_$$mod options" \
'/struct pam_opt .*\[\] = /,/^}/s/[ \t]*{ *PAM_OPTSTR(\([^,)]*\)).*/\1/;t lab;b;: lab {/audit/d;/debug/d;/waitdebug/d;p}' \
'/@set MODULE pam_'$$mod'/,/@set MODULE/{s/@value{MODULE}/pam_'$$mod'/g;there;:here;s/@opindex *\([^@,]*\),.*@command{pam_'$$mod'}.*/\1/;t lab;b;: lab;{s/^-//;s/^no//;p;}}' \
$(top_srcdir)/pam_$$mod/*.c -- \
@ -94,7 +52,7 @@ check-all-options:
done
check-sql-config:
@check-docs.sh 'SQL configuration keywords' \
@$(CHECK_DOCS) 'SQL configuration keywords' \
's/.*check_boolean_config *("\([^"]*\)".*/\1/p;s/.*find_config *("\([^"]*\)".*/\1/p' \
's/@kwindex *\([^@,]*\).*/\1/p' \
$(top_srcdir)/pam_sql/*.c -- \
@ -103,19 +61,15 @@ check-sql-config:
check-options: check-all-options check-log-options
all-check-docs: check-format check-refs check-fixmes check-unrevised check-options check-sql-config
all-check-docs: imprimatur-basic-checks check-options check-sql-config
check-docs:
$(MAKE) -k all-check-docs
#
master-menu:
emacs -batch -l mastermenu.el -f make-master-menu $(info_TEXINFOS)
untabify:
emacs -batch -l untabify.el $(info_TEXINFOS) $(pam_modules_TEXINFOS)
final: untabify master-menu
master-menu: imprimatur-master-menu
untabify: imprimatur-untabify
final: imprimatur-final
#
@ -123,8 +77,6 @@ final: untabify master-menu
# Just call `make RENDITION=PROOF [target]' if you want PROOF rendition.
RENDITION = DISTRIB
MAKEINFOFLAGS=-D$(RENDITION)
GENDOCS=gendocs.sh
TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
@ -134,11 +86,10 @@ TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
.PHONY: manual
manual:
TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \
MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \
MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS) $(AM_MAKEINFOFLAGS)" \
TEXI2DVI="$(TEXI2DVI) -t @finalout" \
$(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual'
manual.tar.bz2: manual
tar cfj manual.tar.bz2 manual

View file

@ -1,74 +0,0 @@
#! /bin/sh
# This file is part of mailfrom filter.
# Copyright (C) 2006-2007, 2010-2011 Sergey Poznyakoff
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
usage() {
cat <<EOT
usage: $0 item code-sed doc-sed sources -- args...
EOT
}
if [ $# -le 4 ]; then
usage
exit 2
fi
item=$1
shift
codesexp="$1"
shift
docsexp=$1
shift
source=
while [ $# -ne 0 ]
do
if [ "$1" = "--" ]; then
shift
break;
fi
source="$source $1"
shift
done
TEMPDIR=/tmp/mfck.$$
mkdir $TEMPDIR || exit 1
trap 'rm -rf $TEMPDIR' 1 2 13 15
sed -n "$codesexp" $source | sort | uniq > $TEMPDIR/src
$* | \
sed -n '/^@macro/,/^@end macro/d;'"$docsexp" \
| sort | uniq > $TEMPDIR/doc
join -v1 $TEMPDIR/src $TEMPDIR/doc > $TEMPDIR/src-doc
join -v2 $TEMPDIR/src $TEMPDIR/doc > $TEMPDIR/doc-src
(if [ -s $TEMPDIR/src-doc ]; then
echo "Not documented $item:"
cat $TEMPDIR/src-doc
fi
if [ -s $TEMPDIR/doc-src ]; then
echo "Non-existing $item:"
cat $TEMPDIR/doc-src
fi) > $TEMPDIR/report
if [ -s $TEMPDIR/report ]; then
cat $TEMPDIR/report
rm -rf $TEMPDIR
exit 1
else
rm -rf $TEMPDIR
exit 0
fi

View file

@ -1,90 +0,0 @@
;;; mastermenu.el --- Redefinition of texinfo-master-menu-list
;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
;; Author: Sergey Poznyakoff
;; Maintainer: bug-tar@gnu.org
;; Keywords: maint, tex, docs
;; This file is part of GNU tar documentation suite
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file redefines texinfo-master-menu-list so that it takes into
;; account included files.
;; Known bugs: @menu without previous sectioning command will inherit
;; documentation string from the previous menu. However, since such a
;; menu is illegal in a texinfo file, we can live with it.
(require 'texinfo)
(require 'texnfo-upd)
(defun texinfo-master-menu-list-recursive (title)
"Auxiliary function used by `texinfo-master-menu-list'."
(save-excursion
(let (master-menu-list)
(while (re-search-forward "\\(^@menu\\|^@include\\)" nil t)
(cond
((string= (match-string 0) "@include")
(skip-chars-forward " \t")
(let ((included-name (let ((start (point)))
(end-of-line)
(skip-chars-backward " \t")
(buffer-substring start (point)))))
(end-of-line)
(let ((prev-title (texinfo-copy-menu-title)))
(save-excursion
(set-buffer (find-file-noselect included-name))
(setq master-menu-list
(append (texinfo-master-menu-list-recursive prev-title)
master-menu-list))))))
(t
(setq master-menu-list
(cons (list
(texinfo-copy-menu)
(let ((menu-title (texinfo-copy-menu-title)))
(if (string= menu-title "")
title
menu-title)))
master-menu-list)))))
master-menu-list)))
(defun texinfo-master-menu-list ()
"Return a list of menu entries and header lines for the master menu,
recursing into included files.
Start with the menu for chapters and indices and then find each
following menu and the title of the node preceding that menu.
The master menu list has this form:
\(\(\(... \"entry-1-2\" \"entry-1\"\) \"title-1\"\)
\(\(... \"entry-2-2\" \"entry-2-1\"\) \"title-2\"\)
...\)
However, there does not need to be a title field."
(reverse (texinfo-master-menu-list-recursive "")))
(defun make-master-menu ()
"Create master menu in the first Emacs argument."
(find-file (car command-line-args-left))
(texinfo-master-menu nil)
(save-buffer))
;;; mastermenu.el ends here

View file

@ -1,85 +0,0 @@
@c Let's use the concept of 'renditions' by Fra@,{c}ois Pinard
@c I extended it by adding a FIXME_FOOTNOTE variable, which controls
@c whether FIXME information should be placed in footnotes or
@c inlined.
@c ======================================================================
@c This document has three levels of rendition: PUBLISH, DISTRIB or PROOF,
@c as decided by @set symbols. The PUBLISH rendition does not show
@c notes or marks asking for revision. Most users will prefer having more
@c information, even if this information is not fully revised for adequacy,
@c so DISTRIB is the default for distributions. The PROOF rendition
@c show all marks to the point of ugliness, but is nevertheless useful to
@c those working on the manual itself.
@c ======================================================================
@c Set this symbol if you wish FIXMEs to appear in footnotes, instead
@c of being inserted into the text.
@c @set PROOF_FOOTNOTED
@ifclear PUBLISH
@ifclear DISTRIB
@ifclear PROOF
@set DISTRIB
@end ifclear
@end ifclear
@end ifclear
@ifset PUBLISH
@set RENDITION The book, version
@end ifset
@ifset DISTRIB
@set RENDITION FTP release, version
@end ifset
@ifset PROOF
@set RENDITION Proof reading version
@end ifset
@c Output marks for nodes needing revision, but not in PUBLISH rendition.
@macro UNREVISED
@ifclear PUBLISH
@quotation
@emph{(This message will disappear, once this node revised.)}
@end quotation
@end ifclear
@end macro
@c Output various FIXME information only in PROOF rendition.
@macro FIXME{string}
@ifset PROOF
@ifset PROOF_FOOTNOTED
@footnote{@strong{FIXME:} \string\}
@end ifset
@ifclear PROOF_FOOTNOTED
@cartouche
@strong{<FIXME>} \string\ @strong{</>}
@end cartouche
@end ifclear
@end ifset
@end macro
@macro FIXME-ref{string}
@ifset PROOF
@strong{<REF>} \string\ @strong{</>}
@end ifset
@end macro
@macro FIXME-pxref{string}
@ifset PROOF
@strong{<PXREF>} \string\ @strong{</>}
@end ifset
@end macro
@macro FIXME-xref{string}
@ifset PROOF
@strong{<XREF>} \string\ @strong{</>}
@end ifset
@end macro

View file

@ -1,13 +0,0 @@
;;;; Untabify the sources.
;;;; Usage: emacs -batch -l untabify.el [file ...]
(defun global-untabify (buflist)
(mapcar
(lambda (bufname)
(set-buffer (find-file bufname))
(untabify (point-min) (point-max))
(save-buffer)
(kill-buffer (current-buffer)))
buflist))
(global-untabify command-line-args-left)

1
imprimatur Submodule

@ -0,0 +1 @@
Subproject commit f32ef1983968e755cd580b06e369476d7e7f88b6