Diff for /parser3/INSTALL between versions 1.4 and 1.54

version 1.4, 2002/02/08 11:14:18 version 1.54, 2009/08/01 04:59:09
Line 1 Line 1
 0.Assuming your perform your builds in $D directory   Alexander Petrosian <paf@design.ru> (http://paf.design.ru)
   and suggested subdirectories.  $Id$
   
 1.What is the process to compile Parser3?   
   
   As most UNIX programs Parser3 follows the "standard":  
   
   mkdir $D/parser3project  
   cd $D/parser3project  
   gunzip -c parser3-x.x.tar.gz | tar xvf -  
   mv parser3-x.x parser3  
   cd parser3  
   ./configure --prefix=/usr/local  
   make  
     
   That renaming is needed for SQL drivers to be able to find   
   necessary include-file in Parser3 sources.  
   
   By default your would get 'parser3' binary without support of these features:  1.What is the process to compile Parser3?
         * cache(hashfile class)   
         * xml(xdoc and xnode classes)  
   
 2.What is the process to install Parser3?    Just start ./buildall-with-xml script and you would get $HOME/parser3install/bin/parser3 binary.
   
   make install  
   
   Installation layout:  
     $prefix/bin/  
       parser3             -- CGI and command line Parser3 interpreter  
     $prefix/etc/  
       parser3.conf        -- main configuration file  
       parser3.charsets/   -- charset definition files  
         windows-1251.cfg  -- cyrillic charset [windows-1251 encoding]  
         koi8-r.cfg        -- cyrillic charset [KOI8-R encoding]  
         windows-1250.cfg  -- central europian charset [windows-1250 encoding]  
   
   NOTE:    NOTE:
     For subsequent compilations+installs     In case you do not need XML support, use ./buildall-without-xml
     to prevent configuration files to be overwritten use  
     
     make install-exec  
       
     it will update parser3 binary only.  
   
 2.What other libraries are needed to compile/install libxml ?   
   
   * You can compile and use parser without any additional libraries.    NOTE:
     That would be 'basic' version of it.    On some platforms there is special version of libgc patched to support some
     local piece of subtlety.
     Official libgc does not work there, use special version instead.
     (OpenBSD reported to be one of those)
     If you need that special version, please change buildall script accordingly.
   
     NOTE:
     In case you later would experience problems with gcc runtime exception handling
     (most notable when reporting sql-related problems),
     add this to configure line in buildall script:
     --with-sjlj-exceptions
     (HPUX is reported to have such problems)
   
   * In case you wish cache(hashfile class) support you need library    NOTE:
       libdb 2.x.x >= 2.7.7    On some systems there are no "make" and you should run 'gmake', change buildall script accordingly then.
     on your system, and specify it to Parser3 configure script.  
   
     Installation sequence of this library to $D/BerkeleyDB:  2.What is the process to install Parser3?
       cd db-2.x.x  
       cd build_unix  
       ../dist/configure --prefix=$D  
       make install  
   
     Copy files from $HOME/parser3install directory into your cgi-bin directory.
   
     Parser3 configure option is --with-db2=$D/BerkeleyDB    Then install Parser3 as a handler of documents, step-by-step instrunctions:
       http://www.parser.ru/en/docs/lang/install4apachecgi.htm" in English
       http://www.parser.ru/docs/lang/install4apachecgi.htm" in Russian
   
     Directory layout:
       bin/
         parser3             -- CGI and command line Parser3 interpreter
         auto.p.dist         -- configuration file sample, 
                                copy it to auto.p and adjust to your needs
       etc/
         parser3.charsets/   -- charset definition files
           koi8-r.cfg        -- cyrillic charset [KOI8-R encoding]
           windows-1250.cfg  -- central europian charset [windows-1250 encoding]
           windows-1251.cfg  -- cyrillic charset [windows-1251 encoding]
           windows-1257.cfg  -- baltic charset [windows-1257 encoding]
   
   * In case you wish xml(xdoc and xnode classes) support you need libraries  3.I have heard about $mail:receive experimental support, how do I use it?
       libxml2 >= 2.3.6    You need to bulid these additional libraries
       libxslt >= 1.0.9  
       glib >= 1.2.10        glib >= 1.2.10
       gdome2 >= 0.7.0        gmime >= 1.0.1 [http://spruce.sourceforge.net/gmime/sources/v1.0/gmime-1.0.8.tar.gz]
     on your system, and specify path to them to Parser3 configure script.      on your system, and specify path to them to Parser3 configure script.
   
     Sources of these two libraries must be patched prior to compile:       glib:
       * libxml2  
       * libxslt  
   
     Installation sequence of these libraries to $D/gnome:  
   
     libxml2:   
   
     cd libxml2-x.x.x  
     patch -p0 < $D/parser3project/parser3/src/patches/libxml_error_column_tab.patch  
     patch -p0 < $D/parser3project/parser3/src/patches/libxml_htmloutput_of_xslemptyattr_emptyquotes.patch  
     patch -p0 < $D/parser3project/parser3/src/patches/libxml_transcoder_context1.patch  
     patch -p0 < $D/parser3project/parser3/src/patches/libxml_transcoder_context2.patch  
     patch -p0 < $D/parser3project/parser3/src/patches/libxml_transcoder_context3.patch  
     patch -p0 < $D/parser3project/parser3/src/patches/libxml_transcoder_context4.patch  
     ./configure --prefix=$D/gnome  
     make install  
   
     libxslt:  
   
     cd libxslt-x.x.x      cd $HOME/parser3project/src
     patch -p0 < $D/parser3project/parser3/src/patches/libxslt_html_output_no_charset_meta.patch      #on freebsd5 this is reported to work: ftp://ftp.gtk.org/pub/gtk/v1.1/glib-1.1.16.tar.gz
     ./configure --with-libxml-prefix=$D/gnome --prefix=$D/gnome --without-debug --without-debugger      wget --passive-ftp ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz
       gunzip -c glib-1.2.10.tar.gz | tar vxf -
       cd glib-1.2.10
       ./configure --prefix=$HOME/parser3project/gnome --silent
     make install      make install
   
     glib: [ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz]      gmime:
   
     cd glib-x.x.x      cd gmime-x.x.x
     ./configure --prefix=$D/gnome       ./configure --prefix=$HOME/parser3project/gnome
     make install      make install
   
     gdome2:      Then you need to change buildall script to add this to parser3 configure line:
           --with-static-mailreceive=$HOME/parser3project/gnome
       And start that changed ./buildall.
   
       NOTE:
       In case your glib as installed into some other prefix,
       specify it's configuration file with
           --with-glib-config=/path/to/your/glib-config
       NOTE:
       In case you are using SHARED mime library, you may want to link in direct path to it,
       use this key to specify which linker key to use do do that:
           --with-pathlink=LKEY    put dynamic libraries paths to binary
                                   using linker key (-R, -rpath-link)
   
   4.Security issues
     You can disable any exec operations by setting
     --disable-execs
     option to configure.
     file::exec, file::cgi and mail:send (unix version) methods would be disabled.
   
     You can enable reading and executing files, not belonging to group+user 
     other then effective by setting
     --disable-safe-mode
     option to configure.
     
     You can disable user-configured sendmail commands by forcing it, setting
     "--with=sendmail=COMMAND"
     option to configure, for example:
     "--with-sendmail=/usr/sbin/sendmail -i -t -f postmaster"
   
     By default libstdc++ is linked statically, you can re-enable dynamic libstdc++ linkage by specifying
     --with-dynamic-stdcpp
     option to configure.  
   
   
     Some root config options can be specified at configure time, and would override autodetects.
   
     List of enabled charsets:
     --with-charsets=CHARSET[,CHARSET,...]  Enables charsets in root config (windows-1251,
                             windows-1250 windows-1257 koi8-r; Default is windows-1251)
     SQL clients:
     --with-mysql-client=mysqlclientlib?params
     --with-pgsql-client=pgsqlclientlib?params
     --with-oracle-client=oracleclientlib?params
     
   5.
     If you need to build apache 1.3 parser module, get source distribution of apache 1.3,
     run configure there, then run parser configure with one more option:
     --with-apache13=Apache13 source distribution directory
     after 'make' go to that directory and run
   
     ./configure --with-glib-prefix=$D/gnome --disable-glibtest --with-libxml-prefix=$D/gnome --prefix=$D/gnome    ./p3runConfigure <any additional options to apache configure to pass>
     make install    
     example:
     ./p3runConfigure --prefix=$HOME/apache13install --enable-module=rewrite
   
     And patch+copy these additional headers into install includes directory    WARNING: if you want to use apache configure option --enable-shared=max, do this:
     ./p3runConfigure --enable-shared=max --disable-shared=mod_parser3.c
   
         patch -p0 < $D/parser3project/parser3/src/patches/libgdome_cpp_syntax1.patch  6.
         patch -p0 < $D/parser3project/parser3/src/patches/libgdome_cpp_syntax2.patch    Since Parser 3.4.0 the several optimisations were implemented.
     mkdir $D/gnome/include/libgdome/gdomecore    If you experience problems you can try to disable them by commenting corresponding defines and recompiling parser3.
     cp libgdome/gdomecore/gdome-xml-node.h $D/gnome/include/libgdome/gdomecore  
     cp libgdome/gdomecore/gdome-xml-document.h $D/gnome/include/libgdome/gdomecore    src/include/pa_opcode.h
           #define OPTIMIZE_BYTECODE_GET_CLASS               -- $a:
       #define OPTIMIZE_BYTECODE_GET_ELEMENT             -- $a ^a
       #define OPTIMIZE_BYTECODE_GET_OBJECT_ELEMENT      -- $a.b ^a.b
       #define OPTIMIZE_BYTECODE_GET_OBJECT_VAR_ELEMENT  -- $a.$b ^a.$b
       #define OPTIMIZE_BYTECODE_GET_SELF_ELEMENT        -- $self.a ^self.a
       #define OPTIMIZE_BYTECODE_CONSTRUCT               -- $a(expr),  $a[value]
                                                            $.a(expr), $.a[value]
                                                            $self.a(expr), $self.a[value]
       #define OPTIMIZE_BYTECODE_CUT_REM_OPERATOR        -- cut rem operator with any number of params during compilation
       #define OPTIMIZE_BYTECODE_STRING_POOL             -- simplifying string's bytecode into expression
   
     src/include/pa_string.h
       #define HASH_CODE_CACHING  -- calculated hash codes are cached and used for sequential hash lookups
   
     src/include/pa_memory.h
       #define USE_DESTRUCTORS    -- destructors are used to decrease memory consumption during code
                                     processing and make ^memory:compact[] calls non-essential.
   
     src/types/pa_method.h
       #define OPTIMIZE_CALL      -- allows faster operators execution by eliminating method frame
                                     with local variables creation and extra write context switches.
       #define OPTIMIZE_RESULT    -- parser methods are marked when the $result variable was used.
                                     This allows write operations and context switching optimization.
   
     src/types/pa_wwrapper.h
       #define OPTIMIZE_SINGLE_STRING_WRITE  -- reuse original VString in single string assignments.
   
     src/lib/cord/include/cord.h
       #define CORD_CAT_OPTIMIZATION -- CORD library never modifies source concatenations. But in parser
                                        write operations it is safe to modify them and save some memory.
       #define CORD_CHARS_CACHE      -- language cords with same language and length are cached and reused.
   
     Parser3 configure option is --with-gnome-xml=$D/gnome    src/include/pa_string.h
       #define STRING_LENGTH_CACHING -- cache String::Body.length() for char* strings
   
      src/include/pa_hash.h
 Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)      #define HASH_ORDER            -- hash keys are iterated in the order of insertion
   
 $Id$  

Removed from v.1.4  
changed lines
  Added in v.1.54


E-mail: