xref: /aosp_15_r20/external/pcre/PrepareRelease (revision 22dc650d8ae982c6770746019a6f94af92b0f024)
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