--- parser3/buildall 2012/07/20 21:48:48 1.5 +++ parser3/buildall 2024/12/08 13:13:09 1.38 @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: buildall,v 1.5 2012/07/20 21:48:48 moko Exp $ +# $Id: buildall,v 1.38 2024/12/08 13:13:09 moko Exp $ install_directory=$HOME/parser3install sendmail_command="/usr/sbin/sendmail -i -t -f postmaster" @@ -9,35 +9,52 @@ cd .. project_dir=`pwd` build_xml="yes" +build_pcre2="yes" build_gmime="" build_apache="" +build_stripped="" +direct_download="" options="--with-included-ltdl" options="$options --with-gc=$project_dir/gc/lib" -options="$options --with-pcre=$project_dir/pcre" -#options="$options --disable-safe-mode" #options="$options --disable-stringstream" -echo -n "Building statically linked parser3" -for PARAM; do +printf "Building statically linked parser3" +for PARAM in "$@"; do case "$PARAM" in "--without-xml") - echo -n ", without xml" + printf ", without xml" build_xml="" ;; + "--without-pcre2") + printf ", without pcre2 library" + build_pcre2="" + ;; "--with-apache") - echo -n ", with apache module" + printf ", with apache module" options="$options --with-apache" build_apache="yes" ;; "--with-mailreceive") - echo -n ", with mail receiving" + printf ", with mail receiving" options="$options --with-mailreceive=$project_dir/gnome" build_gmime="yes" ;; + "--with-system-mailreceive") + printf ", with mail receiving" + options="$options --with-mailreceive" + ;; + "--strip") + printf ", without debug information" + build_stripped="yes" + ;; + "--direct-download") + printf ", download sources from master" + direct_download="yes" + ;; "--help") echo - echo "Usage: buildall [--without-xml] [--with-apache] [--with-mailreceive] [other configure options ...]" + echo "Usage: buildall [--without-xml] [--without-pcre2] [--with-apache] [--with-mailreceive] [--with-system-mailreceive] [--strip] [--direct-download] [--disable-safe-mode] [other configure options ...]" exit 1 ;; *) @@ -51,7 +68,7 @@ if test "$build_xml" = "yes"; then fi bits=`getconf LONG_BIT` -if test "$bits" = "64" -a "$build_apache" = "yes"; then +if test "$bits" = "64" -o "$build_apache" = "yes"; then cflags="$cflags --with-pic" else cflags="$cflags --without-pic" @@ -70,31 +87,32 @@ fi ############################### Support functions ################################ -prepare_gz () { +prepare () { cd $project_dir/src - if test ! -f "$lib.tar.gz"; then - echo "Downloading $1..." - $download $2 + if test ! -f "$1"; then + if test "$direct_download" = "yes"; then + echo "Downloading $lib from $2..." + $download $2$1 + else + echo "Downloading $lib (master at $2)..." + $download https://www.parser.ru/off-line/download/libs/$1 + fi fi - echo "Unpacking $1..." + echo "Unpacking $lib..." rm -rf $lib - gunzip -c $lib.tar.gz | tar xf - >/dev/null +} + +prepare_gz () { + prepare $1 $2 + gunzip -c $1 | tar xf - >/dev/null cd $lib } prepare_xz () { - cd $project_dir/src - - if test ! -f "$lib.tar.xz"; then - echo "Downloading $1..." - $download $2 - fi - - echo "Unpacking $1..." - rm -rf $lib - xzcat $lib.tar.xz | tar xf - >/dev/null + prepare $1 $2 + xzcat $1 | tar xf - >/dev/null cd $lib } @@ -109,24 +127,51 @@ echo mkdir src >/dev/null 2>&1 if test ! -f "$project_dir/gc/lib/libgc.a"; then -# libgc="gc6.8" # FreeBSD 4.X is not supported in newer gc version - lib="gc-7.1" - prepare_gz gc http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/$lib.tar.gz - echo "Configuring gc..." - CPPFLAGS="-DUSE_LIBC_PRIVATES -DUSE_MMAP -DDONT_ADD_BYTE_AT_END" \ + lib="libatomic_ops-7.6.2" + prepare_gz ${lib}.tar.gz http://www.hboehm.info/gc/gc_source/ + + lib="gc-8.0.4" + prepare_gz ${lib}.tar.gz http://www.hboehm.info/gc/gc_source/ + + mv ../libatomic_ops-7.6.2 libatomic_ops + + echo "Configuring $lib..." + CPPFLAGS="-DUSE_MMAP -DDONT_ADD_BYTE_AT_END" \ ./configure --prefix=$project_dir/gc \ - --disable-threads \ + --disable-shared \ + --disable-parallel-mark \ + --silent $cflags + echo "Building $lib..." + make install + cleanup +fi + +if test "$build_pcre2" = "yes"; then + +options="$options --with-pcre=$project_dir/pcre2" + +if test ! -f "$project_dir/pcre2/lib/libpcre2-8.a"; then + lib="pcre2-10.42" + prepare_gz $lib.tar.gz https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/ + echo "Configuring $lib..." + ./configure --prefix="$project_dir/pcre2" \ + --enable-jit \ + --with-match-limit-depth=10000 \ --disable-shared \ --silent $cflags - echo "Building gc..." + echo "Building $lib..." make install cleanup fi +else + +options="$options --with-pcre=$project_dir/pcre" + if test ! -f "$project_dir/pcre/lib/libpcre.a"; then - lib="pcre-8.30" - prepare_gz pcre ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/$lib.tar.gz - echo "Configuring pcre..." + lib="pcre-8.45" + prepare_gz $lib.tar.gz https://sourceforge.net/projects/pcre/files/pcre/8.45/ + echo "Configuring $lib..." ./configure --prefix="$project_dir/pcre" \ --with-match-limit-recursion=10000 \ --enable-utf8 \ @@ -136,26 +181,26 @@ if test ! -f "$project_dir/pcre/lib/libp --disable-pcregrep-libz \ --disable-pcregrep-libbz2 \ --silent $cflags - echo "Building pcre..." + echo "Building $lib..." make install cleanup fi +fi + if test "$build_xml" = "yes" -a ! -f "$project_dir/gnome/lib/libxml2.a"; then - lib="libxml2-2.8.0" - prepare_gz libxml ftp://xmlsoft.org/libxml2/$lib.tar.gz + lib="libxml2-2.9.9" + prepare_gz $lib.tar.gz http://xmlsoft.org/download/ #sax1, output, tree, xinclude[in libxslt], html[in libxslt, mode=html?], xptr[xinclude], pattern -- needed! - echo "Configuring libxml..." + echo "Configuring $lib..." ./configure --prefix=$project_dir/gnome \ --without-catalog \ --without-iconv \ - --without-threads \ --without-debug \ --without-iso8859x \ --without-legacy \ --without-push \ --without-python \ - --without-reader \ --without-writer \ --without-readline \ --without-regexps \ @@ -169,15 +214,16 @@ if test "$build_xml" = "yes" -a ! -f "$p --without-lzma \ --disable-shared \ --silent $cflags - echo "Building libxml..." + echo "Building $lib..." make install cleanup fi if test "$build_xml" = "yes" -a ! -f "$project_dir/gnome/lib/libxslt.a"; then - lib="libxslt-1.1.26" - prepare_gz libxslt ftp://xmlsoft.org/libxslt/$lib.tar.gz - echo "Configuring libxslt..." + lib="libxslt-1.1.34" + prepare_gz $lib.tar.gz http://xmlsoft.org/download/ + echo "Configuring $lib..." + CFLAGS="$CFLAGS -D__stub_clock_gettime -Dclock_gettime=choke_me" \ ./configure --prefix=$project_dir/gnome \ --with-libxml-prefix=$project_dir/gnome \ --without-debug \ @@ -186,7 +232,7 @@ if test "$build_xml" = "yes" -a ! -f "$p --without-plugins \ --disable-shared \ --silent $cflags - echo "Building libxslt..." + echo "Building $lib..." make install cleanup fi @@ -206,8 +252,8 @@ fi if test ! -f "$project_dir/gnome/lib/libglib-2.0.a"; then lib="glib-2.28.8" - prepare_xz glib ftp://ftp.gnome.org/pub/GNOME/sources/glib/2.28/$lib.tar.xz - echo "Configuring glib..." + prepare_xz $lib.tar.xz ftp://ftp.gnome.org/pub/GNOME/sources/glib/2.28/ + echo "Configuring $lib..." ./configure --prefix=$project_dir/gnome \ --enable-dtrace=no \ --enable-debug=no \ @@ -218,22 +264,22 @@ if test ! -f "$project_dir/gnome/lib/lib --disable-shared \ --enable-static \ --silent $cflags $gmime_cflags $glib_ldflags - echo "Building glib..." + echo "Building $lib..." make install cleanup fi if test ! -f "$project_dir/gnome/lib/libgmime-2.4.a"; then lib="gmime-2.4.32" - prepare_xz gmime ftp://ftp.gnome.org/pub/GNOME/sources/gmime/2.4/$lib.tar.xz - echo "Configuring gmime..." + prepare_xz $lib.tar.xz ftp://ftp.gnome.org/pub/GNOME/sources/gmime/2.4/ + echo "Configuring $lib..." ./configure --prefix=$project_dir/gnome \ --disable-glibtest \ --disable-mono \ --disable-shared \ --enable-static \ --silent $cflags $gmime_cflags LDFLAGS="$gmime_ldflags" PKG_CONFIG_PATH="$project_dir/gnome/lib/pkgconfig" - echo "Building libgmime..." + echo "Building $lib..." make install cleanup fi @@ -243,15 +289,22 @@ fi cd $parser3_dir if test ! -f "Makefile"; then echo "Configuring parser3..." - ./configure --prefix=$install_directory "--with-sendmail=$sendmail_command" $options --silent $cflags $gmime_cflags + ./configure --prefix=$install_directory \ + --sysconfdir=$install_directory/bin \ + --datadir=$install_directory/bin \ + --datarootdir="\$confdir" \ + --libdir="\$confdir/lib" \ + --with-sendmail="$sendmail_command" \ + $options $cflags $gmime_cflags fi echo "Building parser3..." make install if test $? -ne 0; then exit 1; fi -#remove debug info -#strip ${install_directory}/bin/parser3 +if test "$build_stripped" = "yes"; then + strip ${install_directory}/bin/parser3 +fi echo "DONE" echo