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: