chiark / gitweb /
pcre3 (1:8.30-5) unstable; urgency=low
[pcre3.git] / PrepareRelease
1 #/bin/sh
2
3 # Script to prepare the files for building a PCRE release. It does some
4 # processing of the documentation, detrails files, and creates pcre.h.generic
5 # and config.h.generic (for use by builders who can't run ./configure).
6
7 # You must run this script before runnning "make dist". If its first argument
8 # is "doc", it stops after preparing the documentation. There are no other
9 # arguments. The script makes use of the following files:
10
11 # 132html     A Perl script that converts a .1 or .3 man page into HTML. It
12 #             "knows" the relevant troff constructs that are used in the PCRE
13 #             man pages.
14
15 # CheckMan    A Perl script that checks man pages for typos in the mark up.
16
17 # CleanTxt    A Perl script that cleans up the output of "nroff -man" by
18 #             removing backspaces and other redundant text so as to produce
19 #             a readable .txt file.
20
21 # Detrail     A Perl script that removes trailing spaces from files.
22
23 # doc/index.html.src
24 #             A file that is copied as index.html into the doc/html directory
25 #             when the HTML documentation is built. It works like this so that
26 #             doc/html can be deleted and re-created from scratch.
27
28
29 # First, sort out the documentation. Remove pcredemo.3 first because it won't
30 # pass the markup check (it is created below, using markup that none of the
31 # other pages use).
32
33 cd doc
34 echo Processing documentation
35
36 /bin/rm -f pcredemo.3
37
38 # Check the remaining man pages
39
40 perl ../CheckMan *.1 *.3
41 if [ $? != 0 ] ; then exit 1; fi
42
43 # Make Text form of the documentation. It needs some mangling to make it
44 # tidy for online reading. Concatenate all the .3 stuff, but omit the
45 # individual function pages.
46
47 cat <<End >pcre.txt
48 -----------------------------------------------------------------------------
49 This file contains a concatenation of the PCRE man pages, converted to plain
50 text format for ease of searching with a text editor, or for use on systems
51 that do not have a man page processor. The small individual files that give
52 synopses of each function in the library have not been included. Neither has
53 the pcredemo program. There are separate text files for the pcregrep and
54 pcretest commands.
55 -----------------------------------------------------------------------------
56
57
58 End
59
60 echo "Making pcre.txt"
61 for file in pcre pcre16 pcrebuild pcrematching pcreapi pcrecallout pcrecompat \
62             pcrepattern pcresyntax pcreunicode pcrejit pcrepartial \
63             pcreprecompile pcreperform pcreposix pcrecpp pcresample \
64             pcrelimits pcrestack ; do
65   echo "  Processing $file.3"
66   nroff -c -man $file.3 >$file.rawtxt
67   perl ../CleanTxt <$file.rawtxt >>pcre.txt
68   /bin/rm $file.rawtxt
69   echo "------------------------------------------------------------------------------" >>pcre.txt
70   if [ "$file" != "pcresample" ] ; then
71     echo " " >>pcre.txt
72     echo " " >>pcre.txt
73   fi
74 done
75
76 # The three commands
77 for file in pcretest pcregrep pcre-config ; do
78   echo Making $file.txt
79   nroff -c -man $file.1 >$file.rawtxt
80   perl ../CleanTxt <$file.rawtxt >$file.txt
81   /bin/rm $file.rawtxt
82 done
83
84
85 # Make pcredemo.3 from the pcredemo.c source file
86
87 echo "Making pcredemo.3"
88 perl <<"END" >pcredemo.3
89   open(IN, "../pcredemo.c") || die "Failed to open pcredemo.c\n";
90   open(OUT, ">pcredemo.3") || die "Failed to open pcredemo.3\n";
91   print OUT ".\\\" Start example.\n" .
92             ".de EX\n" .
93             ".  nr mE \\\\n(.f\n" .
94             ".  nf\n" .
95             ".  nh\n" .
96             ".  ft CW\n" .
97             "..\n" .
98             ".\n" .
99             ".\n" .
100             ".\\\" End example.\n" .
101             ".de EE\n" .
102             ".  ft \\\\n(mE\n" .
103             ".  fi\n" .
104             ".  hy \\\\n(HY\n" .
105             "..\n" .
106             ".\n" .
107             ".EX\n" ;
108   while (<IN>)
109     {
110     s/\\/\\e/g;
111     print OUT;
112     }
113   print OUT ".EE\n";
114   close(IN);
115   close(OUT);
116 END
117 if [ $? != 0 ] ; then exit 1; fi
118
119
120 # Make HTML form of the documentation.
121
122 echo "Making HTML documentation"
123 /bin/rm html/*
124 cp index.html.src html/index.html
125
126 for file in *.1 ; do
127   base=`basename $file .1`
128   echo "  Making $base.html"
129   perl ../132html -toc $base <$file >html/$base.html
130 done
131
132 # Exclude table of contents for function summaries. It seems that expr
133 # forces an anchored regex. Also exclude them for small pages that have
134 # only one section.
135
136 for file in *.3 ; do
137   base=`basename $file .3`
138   toc=-toc
139   if [ `expr $base : '.*_'` -ne 0 ] ; then toc="" ; fi
140   if [ "$base" = "pcresample" ]  || \
141      [ "$base" = "pcrestack" ]   || \
142      [ "$base" = "pcrecompat" ]  || \
143      [ "$base" = "pcrelimits" ]  || \
144      [ "$base" = "pcreperform" ] || \
145      [ "$base" = "pcreunicode" ] ; then
146     toc=""
147   fi
148   echo "  Making $base.html"
149   perl ../132html $toc $base <$file >html/$base.html
150   if [ $? != 0 ] ; then exit 1; fi
151 done
152
153 # End of documentation processing; stop if only documentation required.
154
155 cd ..
156 echo Documentation done
157 if [ "$1" = "doc" ] ; then exit; fi
158
159 # These files are detrailed; do not detrail the test data because there may be
160 # significant trailing spaces. Do not detrail RunTest.bat, because it has CRLF
161 # line endings and the detrail script removes all trailing white space. The
162 # configure files are also omitted from the detrailing. We don't bother with
163 # those pcre16_xx files that just define COMPILE_PCRE16 and then #include the
164 # common file, because they aren't going to change.
165
166 files="\
167   Makefile.am \
168   Makefile.in \
169   configure.ac \
170   README \
171   LICENCE \
172   COPYING \
173   AUTHORS \
174   NEWS \
175   NON-UNIX-USE \
176   INSTALL \
177   132html \
178   CleanTxt \
179   Detrail \
180   ChangeLog \
181   CMakeLists.txt \
182   RunGrepTest \
183   RunTest \
184   pcre-config.in \
185   libpcre.pc.in \
186   libpcre16.pc.in \
187   libpcreposix.pc.in \
188   libpcrecpp.pc.in \
189   config.h.in \
190   pcre_chartables.c.dist \
191   pcredemo.c \
192   pcregrep.c \
193   pcretest.c \
194   dftables.c \
195   pcreposix.c \
196   pcreposix.h \
197   pcre.h.in \
198   pcre_internal.h
199   pcre_byte_order.c \
200   pcre_compile.c \
201   pcre_config.c \
202   pcre_dfa_exec.c \
203   pcre_exec.c \
204   pcre_fullinfo.c \
205   pcre_get.c \
206   pcre_globals.c \
207   pcre_jit_compile.c \
208   pcre_jit_test.c \
209   pcre_maketables.c \
210   pcre_newline.c \
211   pcre_ord2utf8.c \
212   pcre16_ord2utf16.c \
213   pcre_printint.c \
214   pcre_refcount.c \
215   pcre_string_utils.c \
216   pcre_study.c \
217   pcre_tables.c \
218   pcre_ucp_searchfuncs.c \
219   pcre_valid_utf8.c \
220   pcre_version.c \
221   pcre_xclass.c \
222   pcre16_utf16_utils.c \
223   pcre16_valid_utf16.c \
224   pcre_scanner.cc \
225   pcre_scanner.h \
226   pcre_scanner_unittest.cc \
227   pcrecpp.cc \
228   pcrecpp.h \
229   pcrecpparg.h.in \
230   pcrecpp_unittest.cc \
231   pcre_stringpiece.cc \
232   pcre_stringpiece.h.in \
233   pcre_stringpiece_unittest.cc \
234   perltest.pl \
235   ucp.h \
236   ucpinternal.h \
237   ucptable.h \
238   makevp.bat \
239   pcre.def \
240   libpcre.def \
241   libpcreposix.def"
242
243 echo Detrailing
244 perl ./Detrail $files doc/p* doc/html/*
245
246 echo Doing basic configure to get default pcre.h and config.h
247 # This is in case the caller has set aliases (as I do - PH)
248 unset cp ls mv rm
249 ./configure >/dev/null
250
251 echo Converting pcre.h and config.h to generic forms
252 cp -f pcre.h pcre.h.generic
253
254 perl <<'END'
255   open(IN, "<config.h") || die "Can't open config.h: $!\n";
256   open(OUT, ">config.h.generic") || die "Can't open config.h.generic: $!\n";
257   while (<IN>)
258     {
259     if (/^#define\s(?!PACKAGE)(\w+)/)
260       {
261       print OUT "#ifndef $1\n";
262       print OUT;
263       print OUT "#endif\n";
264       }
265     else
266       {
267       print OUT;
268       }
269     }
270   close IN;
271   close OUT;
272 END
273
274 echo Done
275
276 #End