1*22dc650dSSadaf Ebrahimi#/bin/sh 2*22dc650dSSadaf Ebrahimi 3*22dc650dSSadaf Ebrahimi# Script to prepare the files for building a PCRE2 release. It does some 4*22dc650dSSadaf Ebrahimi# processing of the documentation, detrails files, and creates pcre2.h.generic 5*22dc650dSSadaf Ebrahimi# and config.h.generic (for use by builders who can't run ./configure). 6*22dc650dSSadaf Ebrahimi 7*22dc650dSSadaf Ebrahimi# You must run this script before runnning "make dist". If its first argument 8*22dc650dSSadaf Ebrahimi# is "doc", it stops after preparing the documentation. There are no other 9*22dc650dSSadaf Ebrahimi# arguments. The script makes use of the following files: 10*22dc650dSSadaf Ebrahimi 11*22dc650dSSadaf Ebrahimi# 132html A Perl script that converts a .1 or .3 man page into HTML. It 12*22dc650dSSadaf Ebrahimi# "knows" the relevant troff constructs that are used in the PCRE2 13*22dc650dSSadaf Ebrahimi# man pages. 14*22dc650dSSadaf Ebrahimi 15*22dc650dSSadaf Ebrahimi# CheckMan A Perl script that checks man pages for typos in the mark up. 16*22dc650dSSadaf Ebrahimi 17*22dc650dSSadaf Ebrahimi# CleanTxt A Perl script that cleans up the output of "nroff -man" by 18*22dc650dSSadaf Ebrahimi# removing backspaces and other redundant text so as to produce 19*22dc650dSSadaf Ebrahimi# a readable .txt file. 20*22dc650dSSadaf Ebrahimi 21*22dc650dSSadaf Ebrahimi# Detrail A Perl script that removes trailing spaces from files. 22*22dc650dSSadaf Ebrahimi 23*22dc650dSSadaf Ebrahimi# doc/index.html.src 24*22dc650dSSadaf Ebrahimi# A file that is copied as index.html into the doc/html directory 25*22dc650dSSadaf Ebrahimi# when the HTML documentation is built. It works like this so that 26*22dc650dSSadaf Ebrahimi# doc/html can be deleted and re-created from scratch. 27*22dc650dSSadaf Ebrahimi 28*22dc650dSSadaf Ebrahimi# README & NON-AUTOTOOLS-BUILD 29*22dc650dSSadaf Ebrahimi# These files are copied into the doc/html directory, with .txt 30*22dc650dSSadaf Ebrahimi# extensions so that they can by hyperlinked from the HTML 31*22dc650dSSadaf Ebrahimi# documentation, because some people just go to the HTML without 32*22dc650dSSadaf Ebrahimi# looking for text files. 33*22dc650dSSadaf Ebrahimi 34*22dc650dSSadaf Ebrahimi 35*22dc650dSSadaf Ebrahimi# First, sort out the documentation. Remove pcre2demo.3 first because it won't 36*22dc650dSSadaf Ebrahimi# pass the markup check (it is created below, using markup that none of the 37*22dc650dSSadaf Ebrahimi# other pages use). 38*22dc650dSSadaf Ebrahimi 39*22dc650dSSadaf Ebrahimicd doc 40*22dc650dSSadaf Ebrahimiecho Processing documentation 41*22dc650dSSadaf Ebrahimi 42*22dc650dSSadaf Ebrahimi/bin/rm -f pcre2demo.3 43*22dc650dSSadaf Ebrahimi 44*22dc650dSSadaf Ebrahimi# Check the remaining man pages 45*22dc650dSSadaf Ebrahimi 46*22dc650dSSadaf Ebrahimiperl ../CheckMan *.1 *.3 47*22dc650dSSadaf Ebrahimiif [ $? != 0 ] ; then exit 1; fi 48*22dc650dSSadaf Ebrahimi 49*22dc650dSSadaf Ebrahimi# Make Text form of the documentation. It needs some mangling to make it 50*22dc650dSSadaf Ebrahimi# tidy for online reading. Concatenate all the .3 stuff, but omit the 51*22dc650dSSadaf Ebrahimi# individual function pages. 52*22dc650dSSadaf Ebrahimi 53*22dc650dSSadaf Ebrahimicat <<End >pcre2.txt 54*22dc650dSSadaf Ebrahimi----------------------------------------------------------------------------- 55*22dc650dSSadaf EbrahimiThis file contains a concatenation of the PCRE2 man pages, converted to plain 56*22dc650dSSadaf Ebrahimitext format for ease of searching with a text editor, or for use on systems 57*22dc650dSSadaf Ebrahimithat do not have a man page processor. The small individual files that give 58*22dc650dSSadaf Ebrahimisynopses of each function in the library have not been included. Neither has 59*22dc650dSSadaf Ebrahimithe pcre2demo program. There are separate text files for the pcre2grep and 60*22dc650dSSadaf Ebrahimipcre2test commands. 61*22dc650dSSadaf Ebrahimi----------------------------------------------------------------------------- 62*22dc650dSSadaf Ebrahimi 63*22dc650dSSadaf Ebrahimi 64*22dc650dSSadaf EbrahimiEnd 65*22dc650dSSadaf Ebrahimi 66*22dc650dSSadaf Ebrahimiecho "Making pcre2.txt" 67*22dc650dSSadaf Ebrahimifor file in pcre2 pcre2api pcre2build pcre2callout pcre2compat pcre2jit \ 68*22dc650dSSadaf Ebrahimi pcre2limits pcre2matching pcre2partial pcre2pattern pcre2perform \ 69*22dc650dSSadaf Ebrahimi pcre2posix pcre2sample pcre2serialize pcre2syntax \ 70*22dc650dSSadaf Ebrahimi pcre2unicode ; do 71*22dc650dSSadaf Ebrahimi echo " Processing $file.3" 72*22dc650dSSadaf Ebrahimi nroff -c -man $file.3 >$file.rawtxt 73*22dc650dSSadaf Ebrahimi perl ../CleanTxt <$file.rawtxt >>pcre2.txt 74*22dc650dSSadaf Ebrahimi /bin/rm $file.rawtxt 75*22dc650dSSadaf Ebrahimi echo "------------------------------------------------------------------------------" >>pcre2.txt 76*22dc650dSSadaf Ebrahimi if [ "$file" != "pcre2sample" ] ; then 77*22dc650dSSadaf Ebrahimi echo " " >>pcre2.txt 78*22dc650dSSadaf Ebrahimi echo " " >>pcre2.txt 79*22dc650dSSadaf Ebrahimi fi 80*22dc650dSSadaf Ebrahimidone 81*22dc650dSSadaf Ebrahimi 82*22dc650dSSadaf Ebrahimi# The three commands 83*22dc650dSSadaf Ebrahimifor file in pcre2test pcre2grep pcre2-config ; do 84*22dc650dSSadaf Ebrahimi echo Making $file.txt 85*22dc650dSSadaf Ebrahimi nroff -c -man $file.1 >$file.rawtxt 86*22dc650dSSadaf Ebrahimi perl ../CleanTxt <$file.rawtxt >$file.txt 87*22dc650dSSadaf Ebrahimi /bin/rm $file.rawtxt 88*22dc650dSSadaf Ebrahimidone 89*22dc650dSSadaf Ebrahimi 90*22dc650dSSadaf Ebrahimi 91*22dc650dSSadaf Ebrahimi# Make pcre2demo.3 from the pcre2demo.c source file 92*22dc650dSSadaf Ebrahimi 93*22dc650dSSadaf Ebrahimiecho "Making pcre2demo.3" 94*22dc650dSSadaf Ebrahimiperl <<"END" >pcre2demo.3 95*22dc650dSSadaf Ebrahimi use Time::Piece; 96*22dc650dSSadaf Ebrahimi open(VH, "<", "../src/config.h.generic") || die "Failed to open src/config.h.generic\n"; 97*22dc650dSSadaf Ebrahimi open(IN, "../src/pcre2demo.c") || die "Failed to open src/pcre2demo.c\n"; 98*22dc650dSSadaf Ebrahimi open(OUT, ">pcre2demo.3") || die "Failed to open pcre2demo.3\n"; 99*22dc650dSSadaf Ebrahimi my $version; 100*22dc650dSSadaf Ebrahimi while (<VH>) 101*22dc650dSSadaf Ebrahimi { 102*22dc650dSSadaf Ebrahimi chomp; 103*22dc650dSSadaf Ebrahimi if ( /^#define PACKAGE_STRING "([^"]+)"/ ) { $version = $1 ; last } 104*22dc650dSSadaf Ebrahimi } 105*22dc650dSSadaf Ebrahimi my $t = localtime; 106*22dc650dSSadaf Ebrahimi print OUT ".TH PCRE2DEMO 3 \"", $t->strftime('%e %B %Y'), '" "', $version, "\"\n" . 107*22dc650dSSadaf Ebrahimi ".\\\"AUTOMATICALLY GENERATED BY PrepareRelease - do not EDIT!\n" . 108*22dc650dSSadaf Ebrahimi ".SH NAME\n" . 109*22dc650dSSadaf Ebrahimi "PCRE2DEMO - A demonstration C program for PCRE2\n" . 110*22dc650dSSadaf Ebrahimi ".SH \"SOURCE CODE\"\n" . 111*22dc650dSSadaf Ebrahimi ".rs\n" . 112*22dc650dSSadaf Ebrahimi ".sp\n" . 113*22dc650dSSadaf Ebrahimi ".\\\" Start example.\n" . 114*22dc650dSSadaf Ebrahimi ".de EX\n" . 115*22dc650dSSadaf Ebrahimi ". do ds mF \\\\n[.fam]\n" . 116*22dc650dSSadaf Ebrahimi ". nr mE \\\\n(.f\n" . 117*22dc650dSSadaf Ebrahimi ". nf\n" . 118*22dc650dSSadaf Ebrahimi ". nh\n" . 119*22dc650dSSadaf Ebrahimi ". do fam C\n" . 120*22dc650dSSadaf Ebrahimi ". ft CW\n" . 121*22dc650dSSadaf Ebrahimi "..\n" . 122*22dc650dSSadaf Ebrahimi ".\n" . 123*22dc650dSSadaf Ebrahimi ".\n" . 124*22dc650dSSadaf Ebrahimi ".\\\" End example.\n" . 125*22dc650dSSadaf Ebrahimi ".de EE\n" . 126*22dc650dSSadaf Ebrahimi ". do fam \\\\*(mF\n" . 127*22dc650dSSadaf Ebrahimi ". ft \\\\n(mE\n" . 128*22dc650dSSadaf Ebrahimi ". fi\n" . 129*22dc650dSSadaf Ebrahimi ". hy \\\\n(HY\n" . 130*22dc650dSSadaf Ebrahimi "..\n" . 131*22dc650dSSadaf Ebrahimi ".\n" . 132*22dc650dSSadaf Ebrahimi ".RS -7\n" . 133*22dc650dSSadaf Ebrahimi ".EX\n" ; 134*22dc650dSSadaf Ebrahimi while (<IN>) 135*22dc650dSSadaf Ebrahimi { 136*22dc650dSSadaf Ebrahimi s/\\/\\e/g; 137*22dc650dSSadaf Ebrahimi print OUT; 138*22dc650dSSadaf Ebrahimi } 139*22dc650dSSadaf Ebrahimi print OUT ".EE\n"; 140*22dc650dSSadaf Ebrahimi close(IN); 141*22dc650dSSadaf Ebrahimi close(OUT); 142*22dc650dSSadaf EbrahimiEND 143*22dc650dSSadaf Ebrahimiif [ $? != 0 ] ; then exit 1; fi 144*22dc650dSSadaf Ebrahimi 145*22dc650dSSadaf Ebrahimi 146*22dc650dSSadaf Ebrahimi# Make HTML form of the documentation. 147*22dc650dSSadaf Ebrahimi 148*22dc650dSSadaf Ebrahimiecho "Making HTML documentation" 149*22dc650dSSadaf Ebrahimi/bin/rm html/* 150*22dc650dSSadaf Ebrahimicp index.html.src html/index.html 151*22dc650dSSadaf Ebrahimicp ../README html/README.txt 152*22dc650dSSadaf Ebrahimicp ../NON-AUTOTOOLS-BUILD html/NON-AUTOTOOLS-BUILD.txt 153*22dc650dSSadaf Ebrahimi 154*22dc650dSSadaf Ebrahimifor file in *.1 ; do 155*22dc650dSSadaf Ebrahimi base=`basename $file .1` 156*22dc650dSSadaf Ebrahimi echo " Making $base.html" 157*22dc650dSSadaf Ebrahimi perl ../132html -toc $base <$file >html/$base.html 158*22dc650dSSadaf Ebrahimidone 159*22dc650dSSadaf Ebrahimi 160*22dc650dSSadaf Ebrahimi# Exclude table of contents for function summaries. It seems that expr 161*22dc650dSSadaf Ebrahimi# forces an anchored regex. Also exclude them for small pages that have 162*22dc650dSSadaf Ebrahimi# only one section. 163*22dc650dSSadaf Ebrahimi 164*22dc650dSSadaf Ebrahimifor file in *.3 ; do 165*22dc650dSSadaf Ebrahimi base=`basename $file .3` 166*22dc650dSSadaf Ebrahimi toc=-toc 167*22dc650dSSadaf Ebrahimi if [ `expr $base : '.*_'` -ne 0 ] ; then toc="" ; fi 168*22dc650dSSadaf Ebrahimi if [ "$base" = "pcre2sample" ] || \ 169*22dc650dSSadaf Ebrahimi [ "$base" = "pcre2compat" ] || \ 170*22dc650dSSadaf Ebrahimi [ "$base" = "pcre2demo" ] || \ 171*22dc650dSSadaf Ebrahimi [ "$base" = "pcre2limits" ] || \ 172*22dc650dSSadaf Ebrahimi [ "$base" = "pcre2unicode" ] ; then 173*22dc650dSSadaf Ebrahimi toc="" 174*22dc650dSSadaf Ebrahimi fi 175*22dc650dSSadaf Ebrahimi echo " Making $base.html" 176*22dc650dSSadaf Ebrahimi perl ../132html $toc $base <$file >html/$base.html 177*22dc650dSSadaf Ebrahimi if [ $? != 0 ] ; then exit 1; fi 178*22dc650dSSadaf Ebrahimidone 179*22dc650dSSadaf Ebrahimi 180*22dc650dSSadaf Ebrahimi# End of documentation processing; stop if only documentation required. 181*22dc650dSSadaf Ebrahimi 182*22dc650dSSadaf Ebrahimicd .. 183*22dc650dSSadaf Ebrahimiecho Documentation done 184*22dc650dSSadaf Ebrahimiif [ "$1" = "doc" ] ; then exit; fi 185*22dc650dSSadaf Ebrahimi 186*22dc650dSSadaf Ebrahimi# These files are detrailed; do not detrail the test data because there may be 187*22dc650dSSadaf Ebrahimi# significant trailing spaces. Do not detrail RunTest.bat, because it has CRLF 188*22dc650dSSadaf Ebrahimi# line endings and the detrail script removes all trailing white space. The 189*22dc650dSSadaf Ebrahimi# configure files are also omitted from the detrailing. 190*22dc650dSSadaf Ebrahimi 191*22dc650dSSadaf Ebrahimifiles="\ 192*22dc650dSSadaf Ebrahimi Makefile.am \ 193*22dc650dSSadaf Ebrahimi configure.ac \ 194*22dc650dSSadaf Ebrahimi README \ 195*22dc650dSSadaf Ebrahimi LICENCE \ 196*22dc650dSSadaf Ebrahimi COPYING \ 197*22dc650dSSadaf Ebrahimi AUTHORS \ 198*22dc650dSSadaf Ebrahimi NEWS \ 199*22dc650dSSadaf Ebrahimi NON-AUTOTOOLS-BUILD \ 200*22dc650dSSadaf Ebrahimi INSTALL \ 201*22dc650dSSadaf Ebrahimi 132html \ 202*22dc650dSSadaf Ebrahimi CleanTxt \ 203*22dc650dSSadaf Ebrahimi Detrail \ 204*22dc650dSSadaf Ebrahimi ChangeLog \ 205*22dc650dSSadaf Ebrahimi CMakeLists.txt \ 206*22dc650dSSadaf Ebrahimi RunGrepTest \ 207*22dc650dSSadaf Ebrahimi RunTest \ 208*22dc650dSSadaf Ebrahimi pcre2-config.in \ 209*22dc650dSSadaf Ebrahimi perltest.sh \ 210*22dc650dSSadaf Ebrahimi libpcre2-8.pc.in \ 211*22dc650dSSadaf Ebrahimi libpcre2-16.pc.in \ 212*22dc650dSSadaf Ebrahimi libpcre2-32.pc.in \ 213*22dc650dSSadaf Ebrahimi libpcre2-posix.pc.in \ 214*22dc650dSSadaf Ebrahimi src/pcre2_dftables.c \ 215*22dc650dSSadaf Ebrahimi src/pcre2.h.in \ 216*22dc650dSSadaf Ebrahimi src/pcre2_auto_possess.c \ 217*22dc650dSSadaf Ebrahimi src/pcre2_compile.c \ 218*22dc650dSSadaf Ebrahimi src/pcre2_config.c \ 219*22dc650dSSadaf Ebrahimi src/pcre2_context.c \ 220*22dc650dSSadaf Ebrahimi src/pcre2_convert.c \ 221*22dc650dSSadaf Ebrahimi src/pcre2_dfa_match.c \ 222*22dc650dSSadaf Ebrahimi src/pcre2_error.c \ 223*22dc650dSSadaf Ebrahimi src/pcre2_extuni.c \ 224*22dc650dSSadaf Ebrahimi src/pcre2_find_bracket.c \ 225*22dc650dSSadaf Ebrahimi src/pcre2_internal.h \ 226*22dc650dSSadaf Ebrahimi src/pcre2_intmodedep.h \ 227*22dc650dSSadaf Ebrahimi src/pcre2_jit_compile.c \ 228*22dc650dSSadaf Ebrahimi src/pcre2_jit_match.c \ 229*22dc650dSSadaf Ebrahimi src/pcre2_jit_misc.c \ 230*22dc650dSSadaf Ebrahimi src/pcre2_jit_test.c \ 231*22dc650dSSadaf Ebrahimi src/pcre2_maketables.c \ 232*22dc650dSSadaf Ebrahimi src/pcre2_match.c \ 233*22dc650dSSadaf Ebrahimi src/pcre2_match_data.c \ 234*22dc650dSSadaf Ebrahimi src/pcre2_newline.c \ 235*22dc650dSSadaf Ebrahimi src/pcre2_ord2utf.c \ 236*22dc650dSSadaf Ebrahimi src/pcre2_pattern_info.c \ 237*22dc650dSSadaf Ebrahimi src/pcre2_printint.c \ 238*22dc650dSSadaf Ebrahimi src/pcre2_string_utils.c \ 239*22dc650dSSadaf Ebrahimi src/pcre2_study.c \ 240*22dc650dSSadaf Ebrahimi src/pcre2_substring.c \ 241*22dc650dSSadaf Ebrahimi src/pcre2_tables.c \ 242*22dc650dSSadaf Ebrahimi src/pcre2_ucd.c \ 243*22dc650dSSadaf Ebrahimi src/pcre2_ucp.h \ 244*22dc650dSSadaf Ebrahimi src/pcre2_valid_utf.c \ 245*22dc650dSSadaf Ebrahimi src/pcre2_xclass.c \ 246*22dc650dSSadaf Ebrahimi src/pcre2demo.c \ 247*22dc650dSSadaf Ebrahimi src/pcre2grep.c \ 248*22dc650dSSadaf Ebrahimi src/pcre2posix.c \ 249*22dc650dSSadaf Ebrahimi src/pcre2posix.h \ 250*22dc650dSSadaf Ebrahimi src/pcre2test.c" 251*22dc650dSSadaf Ebrahimi 252*22dc650dSSadaf Ebrahimiecho Detrailing 253*22dc650dSSadaf Ebrahimiperl ./Detrail $files doc/p* doc/html/* 254*22dc650dSSadaf Ebrahimi 255*22dc650dSSadaf Ebrahimiecho Done 256*22dc650dSSadaf Ebrahimi 257*22dc650dSSadaf Ebrahimi#End 258