summaryrefslogtreecommitdiff
path: root/web/pwebmac/makeall
diff options
context:
space:
mode:
Diffstat (limited to 'web/pwebmac/makeall')
-rwxr-xr-xweb/pwebmac/makeall151
1 files changed, 151 insertions, 0 deletions
diff --git a/web/pwebmac/makeall b/web/pwebmac/makeall
new file mode 100755
index 0000000000..22e4f4662e
--- /dev/null
+++ b/web/pwebmac/makeall
@@ -0,0 +1,151 @@
+#!/bin/sh
+
+LONGOPTS=changes,new,pdftocfront,tex:
+SHRTOPTS=cnpt:
+
+CHANGES=false
+NEW=false
+PDFTOCFRONT=false
+TEX=tex
+
+getopt -T >/dev/null
+
+if [ $? -eq 4 ] # Check for Linux-getopt with extensions
+then OPTS=$(getopt -n downloadable-programs -o $SHRTOPTS -l $LONGOPTS -- "$@")
+else OPTS=$(getopt $SHRTOPTS $*)
+fi
+
+if [ $? -eq 0 ] # Check return code from getopt
+then eval set -- "$OPTS"
+else echo "Failed to parse options." >&2; exit 1
+fi
+
+while true
+do
+ case "$1" in
+ -c | --changes ) CHANGES=true; shift ;;
+ -n | --new ) NEW=true; export TEXINPUTS=".:/opt/github/web//:"
+ shift ;;
+ -p | --pdftocfront ) PDFTOCFRONT=true; shift ;;
+ -t | --tex ) TEX="$2"; shift 2 ;;
+ -- ) shift; break ;;
+ * ) break ;;
+ esac
+done
+
+KNUTHWHERE=$(locate /bibtex.web)
+KNUTHWARE=$(dirname $KNUTHWHERE)
+
+for f in \
+ $KNUTHWARE/*.web \
+ $KNUTHWARE/pdftexdir/pdftex.web \
+ $KNUTHWARE/xetexdir/xetex.web
+do
+ if $CHANGES
+ then
+ c=$(basename $f .web).ch
+ case $c in
+ "pdftex.ch"|"xetex.ch" )
+ c=$KNUTHWARE/$c
+ c=$(echo $c | sed -e 's?\(texk/\)?Work/\1?') ;;
+ * ) c=$KNUTHWARE/$c ;;
+ esac
+ weave $f $c
+ sed -i -e "s/\(\\\\let\\\\maybe=\)\\\\iftrue/\1\\\\iffalse/" \
+ $(basename $f .web).tex
+ else
+ weave $f
+ fi
+
+ f=$(basename $f .web)
+
+ # use extended macros for TeX Live PDF documentation
+ if $NEW
+ then
+ sed -i -e "1 s/\\\\input webmac/\\\\input pwebmac/" $f.tex
+ fi
+
+ # replace former convention to indicate "not a title page"
+ # to include page headers for table-of-contents
+ sed -i -e "s/\\\\def\\\\titlepage{F}/\\\\titlefalse/" $f.tex
+
+ # special treatment for individual WEB programs
+ case $f in
+ # purge conflict between bibtex.web and webmac.tex
+ # 'E' no longer free to be active character
+ # fix table-of-contents page for bibtex
+ "bibtex") sed -i -e "s/titlefalse/titletrue/" \
+ -e "70,77d" $f.tex ;;
+
+ # make room for new material in weave.web
+ "tangle" ) sed -i -e "s/number{123}/number{125}/" $f.tex ;;
+
+ # amend '\N' redefinition for PDF outlines in mf.tex and
+ # tex.tex (also pdftex.web and xetex.web); depends on the
+ # extended 'pwebmac.tex' macros
+ "mf"|"tex"|"pdftex"|"xetex" )
+ if [ "xetex" = $f ]
+ then
+ # purge obsolete macros from XeTeX
+ sed -i -e "/\\\\input xewebmac/d" $f.tex
+ # only XeTeX can process XeTeX
+ TEX=xetex
+ fi
+ if $NEW
+ then
+ if [ "pdftex" = $f ]
+ then
+ # pdfTeX has a looong table-of-contents
+ cat > pdftex.patch << FI
+ \advance\vsize by 4\baselineskip
+ \ifacro\advance\pdfpageheight by 4\baselineskip\fi
+FI
+ sed -i -e "/\\\\def\\\\topofcontents.*/ {
+ r pdftex.patch
+ }" $f.tex
+ fi
+ cat > texmf-pdf.patch << FI
+ \ifacro{\toksF={}\makeoutlinetoks{[#2] #3}\outlinedone\outlinedone}\fi
+FI
+ sed -i -e "/\\\\outer\\\\def\\\\N.*/ {
+ r texmf-pdf.patch
+ }" $f.tex
+ cat > texmf-pdf.patch << FI
+ \ifpdf\special{pdf: outline 0 << /Title (\the\toksE) /Dest
+ [ @thispage /FitH @ypos ] >>}\fi
+FI
+ sed -i -e "/ \\\\edef\\\\next.*/ {
+ r texmf-pdf.patch
+ }" $f.tex
+ rm texmf-pdf.patch
+ fi ;;
+ esac
+
+ if $PDFTOCFRONT
+ then
+ # shift table-of-contents pages to the front in PDF
+ export TEXINPUTS=".:/opt/github/cwebbin//:"$TEXINPUTS
+ sed -i -e "1 s/\(webmac\)/\1\n\\\\input pdfwebtocfront/" $f.tex
+ $TEX $f.tex # run TeX twice
+ fi
+
+ $TEX $f
+done
+
+if $PDFTOCFRONT
+then
+ # create tarballs for publication
+ pax vftovp.pdf vptovf.pdf -wvzf etc.tar.gz -s ,^,etc/,
+ pax mf.pdf -wvzf mf.tar.gz -s ,^,mf/,
+ pax gftodvi.pdf gftopk.pdf gftype.pdf mft.pdf \
+ -wvzf mfware.tar.gz -s ,^,mfware/,
+ pax tex.pdf -wvzf tex.tar.gz -s ,^,tex/,
+ pax dvitype.pdf pltotf.pdf pooltype.pdf tftopl.pdf \
+ -wvzf texware.tar.gz -s ,^,texware/,
+ pax tangle.pdf weave.pdf -wvzf web.tar.gz -s ,^,web/,
+ pax bibtex.pdf -wvzf bibtex.tar.gz -s ,^,bibtex/,
+ pax dvicopy.pdf patgen.pdf pktogf.pdf pktype.pdf \
+ -wvzf other.tar.gz -s ,^,other/,
+ pax pdftex.pdf -wvzf pdftex.tar.gz -s ,^,pdftex/,
+ pax xetex.pdf -wvzf xetex.tar.gz -s ,^,xetex/,
+fi