Annotation of parser3/INSTALL, revision 1.55
1.49 paf 1: Alexander Petrosian <paf@design.ru> (http://paf.design.ru)
1.55 ! misha 2: $Id: INSTALL,v 1.54 2009-08-01 04:59:09 misha Exp $
1.1 paf 3:
1.33 paf 4: 1.What is the process to compile Parser3?
5:
1.49 paf 6: Just start ./buildall-with-xml script and you would get $HOME/parser3install/bin/parser3 binary.
1.33 paf 7:
8:
1.49 paf 9: NOTE:
10: In case you do not need XML support, use ./buildall-without-xml
1.1 paf 11:
1.49 paf 12: NOTE:
13: On some platforms there is special version of libgc patched to support some
14: local piece of subtlety.
15: Official libgc does not work there, use special version instead.
16: (OpenBSD reported to be one of those)
17: If you need that special version, please change buildall script accordingly.
1.3 paf 18:
1.10 paf 19: NOTE:
1.49 paf 20: In case you later would experience problems with gcc runtime exception handling
21: (most notable when reporting sql-related problems),
22: add this to configure line in buildall script:
23: --with-sjlj-exceptions
24: (HPUX is reported to have such problems)
1.7 paf 25:
1.10 paf 26: NOTE:
1.49 paf 27: On some systems there are no "make" and you should run 'gmake', change buildall script accordingly then.
1.1 paf 28:
1.49 paf 29: 2.What is the process to install Parser3?
1.17 paf 30:
1.49 paf 31: Copy files from $HOME/parser3install directory into your cgi-bin directory.
1.2 paf 32:
1.49 paf 33: Then install Parser3 as a handler of documents, step-by-step instrunctions:
34: http://www.parser.ru/en/docs/lang/install4apachecgi.htm" in English
35: http://www.parser.ru/docs/lang/install4apachecgi.htm" in Russian
1.2 paf 36:
1.49 paf 37: Directory layout:
38: bin/
1.1 paf 39: parser3 -- CGI and command line Parser3 interpreter
1.22 paf 40: auto.p.dist -- configuration file sample,
41: copy it to auto.p and adjust to your needs
1.49 paf 42: etc/
1.1 paf 43: parser3.charsets/ -- charset definition files
1.2 paf 44: koi8-r.cfg -- cyrillic charset [KOI8-R encoding]
1.33 paf 45: windows-1250.cfg -- central europian charset [windows-1250 encoding]
1.5 paf 46: windows-1251.cfg -- cyrillic charset [windows-1251 encoding]
47: windows-1257.cfg -- baltic charset [windows-1257 encoding]
1.2 paf 48:
1.49 paf 49: 3.I have heard about $mail:receive experimental support, how do I use it?
50: You need to bulid these additional libraries
1.41 paf 51: glib >= 1.2.10
1.39 paf 52: gmime >= 1.0.1 [http://spruce.sourceforge.net/gmime/sources/v1.0/gmime-1.0.8.tar.gz]
1.24 paf 53: on your system, and specify path to them to Parser3 configure script.
54:
1.31 paf 55: glib:
1.24 paf 56:
1.44 paf 57: cd $HOME/parser3project/src
1.41 paf 58: #on freebsd5 this is reported to work: ftp://ftp.gtk.org/pub/gtk/v1.1/glib-1.1.16.tar.gz
1.45 paf 59: wget --passive-ftp ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz
1.44 paf 60: gunzip -c glib-1.2.10.tar.gz | tar vxf -
1.41 paf 61: cd glib-1.2.10
1.43 paf 62: ./configure --prefix=$HOME/parser3project/gnome --silent
1.24 paf 63: make install
64:
1.31 paf 65: gmime:
1.24 paf 66:
67: cd gmime-x.x.x
1.43 paf 68: ./configure --prefix=$HOME/parser3project/gnome
1.24 paf 69: make install
70:
1.49 paf 71: Then you need to change buildall script to add this to parser3 configure line:
1.43 paf 72: --with-static-mailreceive=$HOME/parser3project/gnome
1.49 paf 73: And start that changed ./buildall.
1.24 paf 74:
75: NOTE:
76: In case your glib as installed into some other prefix,
77: specify it's configuration file with
78: --with-glib-config=/path/to/your/glib-config
79: NOTE:
80: In case you are using SHARED mime library, you may want to link in direct path to it,
1.33 paf 81: use this key to specify which linker key to use do do that:
1.9 paf 82: --with-pathlink=LKEY put dynamic libraries paths to binary
83: using linker key (-R, -rpath-link)
84:
1.49 paf 85: 4.Security issues
1.18 paf 86: You can disable any exec operations by setting
87: --disable-execs
88: option to configure.
89: file::exec, file::cgi and mail:send (unix version) methods would be disabled.
90:
1.29 paf 91: You can enable reading and executing files, not belonging to group+user
92: other then effective by setting
93: --disable-safe-mode
1.18 paf 94: option to configure.
95:
96: You can disable user-configured sendmail commands by forcing it, setting
1.49 paf 97: "--with=sendmail=COMMAND"
1.41 paf 98: option to configure, for example:
1.49 paf 99: "--with-sendmail=/usr/sbin/sendmail -i -t -f postmaster"
1.18 paf 100:
1.33 paf 101: By default libstdc++ is linked statically, you can re-enable dynamic libstdc++ linkage by specifying
102: --with-dynamic-stdcpp
103: option to configure.
104:
105:
1.18 paf 106: Some root config options can be specified at configure time, and would override autodetects.
107:
108: List of enabled charsets:
109: --with-charsets=CHARSET[,CHARSET,...] Enables charsets in root config (windows-1251,
110: windows-1250 windows-1257 koi8-r; Default is windows-1251)
111: SQL clients:
1.21 paf 112: --with-mysql-client=mysqlclientlib?params
113: --with-pgsql-client=pgsqlclientlib?params
114: --with-oracle-client=oracleclientlib?params
1.18 paf 115:
1.37 paf 116: 5.
117: If you need to build apache 1.3 parser module, get source distribution of apache 1.3,
118: run configure there, then run parser configure with one more option:
119: --with-apache13=Apache13 source distribution directory
120: after 'make' go to that directory and run
121:
122: ./p3runConfigure <any additional options to apache configure to pass>
123:
124: example:
1.46 paf 125: ./p3runConfigure --prefix=$HOME/apache13install --enable-module=rewrite
1.37 paf 126:
127: WARNING: if you want to use apache configure option --enable-shared=max, do this:
128: ./p3runConfigure --enable-shared=max --disable-shared=mod_parser3.c
1.50 misha 129:
1.55 ! misha 130: Make build-std" command to compile just httpd binary, support stuff won't build with parser libs.
! 131:
1.50 misha 132: 6.
1.51 misha 133: Since Parser 3.4.0 the several optimisations were implemented.
134: If you experience problems you can try to disable them by commenting corresponding defines and recompiling parser3.
1.50 misha 135:
136: src/include/pa_opcode.h
137: #define OPTIMIZE_BYTECODE_GET_CLASS -- $a:
138: #define OPTIMIZE_BYTECODE_GET_ELEMENT -- $a ^a
139: #define OPTIMIZE_BYTECODE_GET_OBJECT_ELEMENT -- $a.b ^a.b
140: #define OPTIMIZE_BYTECODE_GET_OBJECT_VAR_ELEMENT -- $a.$b ^a.$b
1.52 misha 141: #define OPTIMIZE_BYTECODE_GET_SELF_ELEMENT -- $self.a ^self.a
142: #define OPTIMIZE_BYTECODE_CONSTRUCT -- $a(expr), $a[value]
143: $.a(expr), $.a[value]
144: $self.a(expr), $self.a[value]
145: #define OPTIMIZE_BYTECODE_CUT_REM_OPERATOR -- cut rem operator with any number of params during compilation
146: #define OPTIMIZE_BYTECODE_STRING_POOL -- simplifying string's bytecode into expression
1.50 misha 147:
148: src/include/pa_string.h
149: #define HASH_CODE_CACHING -- calculated hash codes are cached and used for sequential hash lookups
150:
151: src/include/pa_memory.h
152: #define USE_DESTRUCTORS -- destructors are used to decrease memory consumption during code
153: processing and make ^memory:compact[] calls non-essential.
154:
155: src/types/pa_method.h
156: #define OPTIMIZE_CALL -- allows faster operators execution by eliminating method frame
157: with local variables creation and extra write context switches.
158: #define OPTIMIZE_RESULT -- parser methods are marked when the $result variable was used.
159: This allows write operations and context switching optimization.
160:
1.52 misha 161: src/types/pa_wwrapper.h
162: #define OPTIMIZE_SINGLE_STRING_WRITE -- reuse original VString in single string assignments.
163:
1.51 misha 164: src/lib/cord/include/cord.h
1.50 misha 165: #define CORD_CAT_OPTIMIZATION -- CORD library never modifies source concatenations. But in parser
166: write operations it is safe to modify them and save some memory.
1.51 misha 167: #define CORD_CHARS_CACHE -- language cords with same language and length are cached and reused.
1.50 misha 168:
1.53 misha 169: src/include/pa_string.h
170: #define STRING_LENGTH_CACHING -- cache String::Body.length() for char* strings
171:
172: src/include/pa_hash.h
173: #define HASH_ORDER -- hash keys are iterated in the order of insertion
1.50 misha 174:
E-mail: