--- parser3/buildall 2024/12/08 13:13:09 1.38 +++ parser3/buildall 2026/10/09 16:40:14 1.47 @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: buildall,v 1.38 2024/12/08 13:13:09 moko Exp $ +# $Id: buildall,v 1.47 2026/10/09 16:40:14 moko Exp $ install_directory=$HOME/parser3install sendmail_command="/usr/sbin/sendmail -i -t -f postmaster" @@ -16,7 +16,7 @@ build_stripped="" direct_download="" options="--with-included-ltdl" -options="$options --with-gc=$project_dir/gc/lib" +options="$options --with-gc=$project_dir/lib/gc/lib" #options="$options --disable-stringstream" printf "Building statically linked parser3" @@ -37,13 +37,31 @@ for PARAM in "$@"; do ;; "--with-mailreceive") printf ", with mail receiving" - options="$options --with-mailreceive=$project_dir/gnome" + options="$options --with-mailreceive=$project_dir/gmime" build_gmime="yes" ;; "--with-system-mailreceive") printf ", with mail receiving" options="$options --with-mailreceive" ;; + "--with-amqp") + printf ", with amqp" + options="$options --with-amqp=$project_dir/lib/amqp" + build_amqp="yes" + ;; + "--with-system-amqp") + printf ", with amqp" + options="$options --with-amqp" + ;; + "--with-redis") + printf ", with redis" + options="$options --with-redis=$project_dir/lib/redis" + build_redis="yes" + ;; + "--with-system-redis") + printf ", with redis" + options="$options --with-redis" + ;; "--strip") printf ", without debug information" build_stripped="yes" @@ -67,15 +85,10 @@ if test "$build_xml" = "yes"; then options="$options --with-xml=$project_dir/gnome" fi -bits=`getconf LONG_BIT` -if test "$bits" = "64" -o "$build_apache" = "yes"; then - cflags="$cflags --with-pic" -else - cflags="$cflags --without-pic" -fi +cflags="$cflags --with-pic" if test ! "$build_apache" = "yes"; then - cflags="$cflags --disable-shared" + cflags="$cflags --disable-shared" # .so is needed only for parser3 Apache module, not bundled libs fi download=`which fetch 2>/dev/null` @@ -93,7 +106,10 @@ prepare () { if test ! -f "$1"; then if test "$direct_download" = "yes"; then echo "Downloading $lib from $2..." - $download $2$1 + $download $2$3 + if test "$3" != "$1"; then + mv "$3" "$1" + fi else echo "Downloading $lib (master at $2)..." $download https://www.parser.ru/off-line/download/libs/$1 @@ -105,13 +121,13 @@ prepare () { } prepare_gz () { - prepare $1 $2 + prepare $1 $2 ${3:-$1} gunzip -c $1 | tar xf - >/dev/null cd $lib } prepare_xz () { - prepare $1 $2 + prepare $1 $2 ${3:-$1} xzcat $1 | tar xf - >/dev/null cd $lib } @@ -126,18 +142,18 @@ cleanup () { echo mkdir src >/dev/null 2>&1 -if test ! -f "$project_dir/gc/lib/libgc.a"; then - lib="libatomic_ops-7.6.2" - prepare_gz ${lib}.tar.gz http://www.hboehm.info/gc/gc_source/ +if test ! -f "$project_dir/lib/gc/lib/libgc.a"; then + lib="libatomic_ops-7.10.0" + prepare_gz ${lib}.tar.gz https://github.com/bdwgc/libatomic_ops/releases/download/v7.10.0/ - lib="gc-8.0.4" - prepare_gz ${lib}.tar.gz http://www.hboehm.info/gc/gc_source/ + lib="gc-8.2.12" + prepare_gz ${lib}.tar.gz https://github.com/bdwgc/bdwgc/releases/download/v8.2.12/ - mv ../libatomic_ops-7.6.2 libatomic_ops + mv ../libatomic_ops-7.10.0 libatomic_ops echo "Configuring $lib..." CPPFLAGS="-DUSE_MMAP -DDONT_ADD_BYTE_AT_END" \ - ./configure --prefix=$project_dir/gc \ + ./configure --prefix=$project_dir/lib/gc \ --disable-shared \ --disable-parallel-mark \ --silent $cflags @@ -148,14 +164,14 @@ fi if test "$build_pcre2" = "yes"; then -options="$options --with-pcre=$project_dir/pcre2" +options="$options --with-pcre=$project_dir/lib/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/ +if test ! -f "$project_dir/lib/pcre2/lib/libpcre2-8.a"; then + lib="pcre2-10.49" + prepare_gz $lib.tar.gz https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.49/ echo "Configuring $lib..." - ./configure --prefix="$project_dir/pcre2" \ - --enable-jit \ + ./configure --prefix="$project_dir/lib/pcre2" \ + --disable-jit \ --with-match-limit-depth=10000 \ --disable-shared \ --silent $cflags @@ -166,13 +182,13 @@ fi else -options="$options --with-pcre=$project_dir/pcre" +options="$options --with-pcre=$project_dir/lib/pcre" -if test ! -f "$project_dir/pcre/lib/libpcre.a"; then +if test ! -f "$project_dir/lib/pcre/lib/libpcre.a"; then 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" \ + ./configure --prefix="$project_dir/lib/pcre" \ --with-match-limit-recursion=10000 \ --enable-utf8 \ --enable-unicode-properties \ @@ -241,20 +257,19 @@ if test "$build_gmime" = "yes"; then glib_ldflags="" gmime_cflags="" -gmime_ldflags="-L$project_dir/gnome/lib/" +gmime_ldflags="-L$project_dir/gmime/lib/" -os=`uname` -if test "$os" = "FreeBSD"; then +if test "$(uname)" = "FreeBSD"; then gmime_cflags="CFLAGS=-I/usr/local/include CXXFLAGS=-I/usr/local/include" glib_ldflags="LDFLAGS=-L/usr/local/lib" gmime_ldflags="$gmime_ldflags -L/usr/local/lib" fi -if test ! -f "$project_dir/gnome/lib/libglib-2.0.a"; then +if test ! -f "$project_dir/gmime/lib/libglib-2.0.a"; then lib="glib-2.28.8" prepare_xz $lib.tar.xz ftp://ftp.gnome.org/pub/GNOME/sources/glib/2.28/ echo "Configuring $lib..." - ./configure --prefix=$project_dir/gnome \ + ./configure --prefix=$project_dir/gmime \ --enable-dtrace=no \ --enable-debug=no \ --enable-iconv-cache=no \ @@ -269,16 +284,16 @@ if test ! -f "$project_dir/gnome/lib/lib cleanup fi -if test ! -f "$project_dir/gnome/lib/libgmime-2.4.a"; then +if test ! -f "$project_dir/gmime/lib/libgmime-2.4.a"; then lib="gmime-2.4.32" prepare_xz $lib.tar.xz ftp://ftp.gnome.org/pub/GNOME/sources/gmime/2.4/ echo "Configuring $lib..." - ./configure --prefix=$project_dir/gnome \ + ./configure --prefix=$project_dir/gmime \ --disable-glibtest \ --disable-mono \ --disable-shared \ --enable-static \ - --silent $cflags $gmime_cflags LDFLAGS="$gmime_ldflags" PKG_CONFIG_PATH="$project_dir/gnome/lib/pkgconfig" + --silent $cflags $gmime_cflags LDFLAGS="$gmime_ldflags" PKG_CONFIG_PATH="$project_dir/gmime/lib/pkgconfig" echo "Building $lib..." make install cleanup @@ -286,6 +301,33 @@ fi fi + +if test "$build_amqp" = "yes" -a ! -f "$project_dir/lib/amqp/lib/librabbitmq.a"; then + lib="rabbitmq-c-0.17.0" + prepare_gz $lib.tar.gz https://github.com/alanxz/rabbitmq-c/archive/refs/tags/ v0.17.0.tar.gz + echo "Configuring $lib..." + cmake -S . -B build \ + -DCMAKE_INSTALL_PREFIX="$project_dir/lib/amqp" \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DENABLE_SSL_SUPPORT=OFF + echo "Building $lib..." + cmake --build build --target install + cleanup +fi + +if test "$build_redis" = "yes" -a ! -f "$project_dir/lib/redis/lib/libhiredis.a"; then + lib="hiredis-1.4.1" + prepare_gz $lib.tar.gz https://github.com/redis/hiredis/archive/refs/tags/ v1.4.1.tar.gz + echo "Building $lib..." + gnu_make=make + test "$(uname)" = "FreeBSD" && gnu_make="gmake CC=cc" + $gnu_make PREFIX="$project_dir/lib/redis" install + cleanup +fi + cd $parser3_dir if test ! -f "Makefile"; then echo "Configuring parser3..." @@ -311,7 +353,7 @@ echo echo "********************************************************************************************************" echo "Now you can copy $install_directory/bin to your cgi-bin directory" echo "Read more about installing Parser here:" -echo " http://www.parser.ru/en/docs/lang/install4apachecgi.htm in English" -echo " http://www.parser.ru/docs/lang/install4apachecgi.htm in Russian" +echo " https://www.parser.ru/en/docs/lang/install4apachecgi.htm in English" +echo " https://www.parser.ru/docs/lang/install4apachecgi.htm in Russian" echo "********************************************************************************************************"