aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Pirogov <vbnet.ru@gmail.com>2019-08-26 15:59:33 +0300
committerLeo <thinkabit.ukim@gmail.com>2019-08-26 13:01:57 -0300
commit5802326e734c4f1ef929e4c07afefe7f579186fb (patch)
tree7796098d4a268771e4df10eb71e62f94fc658933
parentcc7d9e47c5801b5f1b497ba9c508101bce6caddf (diff)
downloadaports-5802326e734c4f1ef929e4c07afefe7f579186fb.tar.bz2
aports-5802326e734c4f1ef929e4c07afefe7f579186fb.tar.xz
testing/litespeed: upgrade to 1.4.50
-rw-r--r--testing/litespeed/APKBUILD14
-rw-r--r--testing/litespeed/include.patch106
-rw-r--r--testing/litespeed/install.patch68
-rw-r--r--testing/litespeed/ls_lock.patch5
4 files changed, 138 insertions, 55 deletions
diff --git a/testing/litespeed/APKBUILD b/testing/litespeed/APKBUILD
index 2d451740bc..20b6776589 100644
--- a/testing/litespeed/APKBUILD
+++ b/testing/litespeed/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: Valery Kartel <valery.kartel@gmail.com>
pkgname=litespeed
-pkgver=1.4.41
+pkgver=1.4.50
pkgrel=0
_pkgreal=open$pkgname
_pkghome=var/lib/$pkgname
@@ -15,7 +15,7 @@ pkggroups=litespeed
depends="$_php-$pkgname $_php-bcmath $_php-json $_php-mcrypt $_php-session $_php-sockets $_php-posix"
depends_dev=
makedepends="linux-headers openssl-dev geoip-dev expat-dev pcre-dev zlib-dev
- bsd-compat-headers"
+ bsd-compat-headers lua-dev luajit-dev brotli-dev"
install="$pkgname.pre-install"
subpackages="$pkgname-openrc $pkgname-snmp::noarch"
source="https://openlitespeed.org/packages/openlitespeed-$pkgver.src.tgz
@@ -41,6 +41,8 @@ build() {
--with-openssl=/usr \
--with-expat \
--with-pcre \
+ --with-lua \
+ --with-brotli=/usr/lib/ \
--with-zlib
make
}
@@ -126,9 +128,9 @@ snmp() {
"$subpkgdir"/$_pkghome/add-ons
}
-sha512sums="c770e46f3ad18e6e6a80164b86e00da15eaa974292e46a18a866fe5426ec6fc266b8174c437bf7c76c05df55da0c8853d3a73f39eab5a5eb42f49a7e4b41c40d openlitespeed-1.4.41.src.tgz
+sha512sums="1d16eec757876f55950afa09d9aeb454b18b4446ca859ee26c73a5200a0bea5e666283812bb35345b2d2a807d20df0095aceca32ebd16c84316ae5c0111c6cba openlitespeed-1.4.50.src.tgz
2b0299246aaeb885122d8f939437f0e4701f6a79ea976f725ba8765d8b295c2797c0cac30e639d5eda665b9589710ee55acc4d03b078c4b9cc1e564994ccb9f5 litespeed.initd
-5f45f665f8305d849ba58398700f83f4a9ded82b3b2445698ea5d12c3b7bfbb2cb55d0cfc13b6021326d140fbd84600503012e82d826f5767d8e4ee20f3ac912 include.patch
-4c8c3dc0624b7be30f25b5f25a9ab9890d6ffb101379b457e63e334cd42592eb1abef231506038ab6037040e7a98db02f00d6651547bd4a5f800c5ac671eba56 install.patch
-2211e6c787700fc08eaee56f049c80690ef53d2b14cfcf17099ed0e5dfbd28b76a7b30f0c8814901e3c72bd4fc63732196b6fa0a8231cc10f86ba5130810b3d6 ls_lock.patch
+50c21bf9cc12a8d7408c6e981f3264e4daeff8285f8544c4dbe3673773abde769d4386067d2b4c858b48ba496c384d69ff6aa1eee8291d8c09b213e847d50ff4 include.patch
+732bcdd87db538bfb3432abe42b6a7868ef97ef8b2d8063f3875879cb83079cf2a73e3a0a92c7dedfad6b454affabf9739580af9a4098f5fef942b3510a4ad28 install.patch
+d17fe323aa3dde1ce881c6bac8775abf1b45ed83db57f6a3dc1c458e48e0d42ad65944bd364590b79fef425f3ff55966586f9760396af4556d25f06f4a70b7ad ls_lock.patch
c7775836ee13b082e5c2ce011673b1a30b5ca83765d6d81ff1359110ba970808de6a87cd6d61fd688c9d2037451598154b429d70ad25094b9e9f10938aea00fd thread.patch"
diff --git a/testing/litespeed/include.patch b/testing/litespeed/include.patch
index 3396e94c7d..fe37d1c1c9 100644
--- a/testing/litespeed/include.patch
+++ b/testing/litespeed/include.patch
@@ -1,6 +1,6 @@
---- a/src/main/httpserver.cpp
+--- a/src/main/httpserver.cpp.orig
+++ b/src/main/httpserver.cpp
-@@ -127,7 +127,7 @@
+@@ -138,7 +138,7 @@
#if defined(__FreeBSD__ ) || defined(__NetBSD__) || defined(__OpenBSD__) \
|| defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
@@ -9,22 +9,21 @@
#endif
#define FILEMODE 0644
---- a/src/main/lshttpdmain.cpp
+--- a/src/main/lshttpdmain.cpp.orig
+++ b/src/main/lshttpdmain.cpp
-@@ -46,7 +46,7 @@
- #include <util/stringlist.h>
- #include <util/signalutil.h>
- #include <util/vmembuf.h>
+@@ -50,7 +50,7 @@
+ #include <util/httpfetch.h>
+ #include <socket/gsockaddr.h>
+
-#include <sys/sysctl.h>
+#include <linux/sysctl.h>
#include <extensions/cgi/cgidworker.h>
#include <extensions/registry/extappregistry.h>
-diff --git a/src/sslpp/sslsesscache.h b/src/sslpp/sslsesscache.h
-index 4f8d061..edc1788 100644
---- a/src/sslpp/sslsesscache.h
+
+--- a/src/sslpp/sslsesscache.h.orig
+++ b/src/sslpp/sslsesscache.h
-@@ -23,6 +23,7 @@
+@@ -24,6 +24,7 @@
#include <util/tsingleton.h>
#include <stdint.h>
#include <unistd.h>
@@ -32,3 +31,88 @@ index 4f8d061..edc1788 100644
#define LS_SSLSESSCACHE_DEFAULTSIZE 40*1024
+--- a/src/modules/lua/lsluadefs.h.orig
++++ b/src/modules/lua/lsluadefs.h
+@@ -22,8 +22,8 @@
+ extern "C" {
+ #endif
+ /* need lua_State * */
+-#include <luajit.h>
+-#include <lauxlib.h>
++#include <luajit-2.1/luajit.h>
++#include <luajit-2.1/lauxlib.h>
+ #ifdef __cplusplus
+ };
+ #endif
+--- a/configure.orig
++++ b/configure
+@@ -16031,16 +16031,16 @@
+ if test "$OPENLSWS_BROTLI" = "no" ; then
+ echo "Brotli compression disabled!!!"
+ else
+- LIBBROTLI=" $OPENLSWS_BROTLI/out/libbrotlidec-static.a $OPENLSWS_BROTLI/out/libbrotlienc-static.a $OPENLSWS_BROTLI/out/libbrotlicommon-static.a "
+- as_ac_File=`$as_echo "ac_cv_file_$OPENLSWS_BROTLI/out/libbrotlidec-static.a" | $as_tr_sh`
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $OPENLSWS_BROTLI/out/libbrotlidec-static.a" >&5
+-$as_echo_n "checking for $OPENLSWS_BROTLI/out/libbrotlidec-static.a... " >&6; }
++ LIBBROTLI=" /usr/lib/libbrotlidec-static.a /usr/lib/libbrotlienc-static.a /usr/lib/libbrotlicommon-static.a "
++ as_ac_File=`$as_echo "ac_cv_file_/usr/lib/libbrotlidec-static.a" | $as_tr_sh`
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/lib/libbrotlidec-static.a" >&5
++$as_echo_n "checking for /usr/lib/libbrotlidec-static.a... " >&6; }
+ if eval \${$as_ac_File+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+-if test -r "$OPENLSWS_BROTLI/out/libbrotlidec-static.a"; then
++if test -r "/usr/lib/libbrotlidec-static.a"; then
+ eval "$as_ac_File=yes"
+ else
+ eval "$as_ac_File=no"
+@@ -16052,21 +16052,21 @@
+ if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+
+ cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$OPENLSWS_BROTLI/out/libbrotlidec-static.a" | $as_tr_cpp` 1
++#define `$as_echo "HAVE_/usr/lib/libbrotlidec-static.a" | $as_tr_cpp` 1
+ _ACEOF
+
+ else
+ LIBBROTLI=
+ fi
+-as_ac_File=`$as_echo "ac_cv_file_$OPENLSWS_BROTLI/c/include/brotli/decode.h" | $as_tr_sh`
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $OPENLSWS_BROTLI/c/include/brotli/decode.h" >&5
+-$as_echo_n "checking for $OPENLSWS_BROTLI/c/include/brotli/decode.h... " >&6; }
++as_ac_File=`$as_echo "ac_cv_file_/usr/include/brotli/decode.h" | $as_tr_sh`
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/include/brotli/decode.h" >&5
++$as_echo_n "checking for /usr/include/brotli/decode.h... " >&6; }
+ if eval \${$as_ac_File+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+-if test -r "$OPENLSWS_BROTLI/c/include/brotli/decode.h"; then
++if test -r "/usr/include/brotli/decode.h"; then
+ eval "$as_ac_File=yes"
+ else
+ eval "$as_ac_File=no"
+@@ -16078,7 +16078,7 @@
+ if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+
+ cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$OPENLSWS_BROTLI/c/include/brotli/decode.h" | $as_tr_cpp` 1
++#define `$as_echo "HAVE_/sur/include/brotli/decode.h" | $as_tr_cpp` 1
+ _ACEOF
+
+ else
+@@ -16089,8 +16089,8 @@
+ echo "Brotli files check failed. If continue, brotli compression will be disabled."
+ else
+ echo "Brotli checked and enabled!!!"
+- CPPFLAGS="$CPPFLAGS -I$OPENLSWS_BROTLI/c/include "
+- LIBBROTLI=" $OPENLSWS_BROTLI/out/libbrotlidec-static.a $OPENLSWS_BROTLI/out/libbrotlienc-static.a $OPENLSWS_BROTLI/out/libbrotlicommon-static.a "
++ CPPFLAGS="$CPPFLAGS -I/usr/include "
++ LIBBROTLI=" /usr/lib/libbrotlidec-static.a /usr/lib/libbrotlienc-static.a /usr/lib/libbrotlicommon-static.a "
+
+ cat >>confdefs.h <<_ACEOF
+ #define USE_BROTLI 1
+
diff --git a/testing/litespeed/install.patch b/testing/litespeed/install.patch
index 89192af851..cd8e3c6804 100644
--- a/testing/litespeed/install.patch
+++ b/testing/litespeed/install.patch
@@ -1,15 +1,15 @@
---- a/configure
+--- a/configure.orig
+++ b/configure
-@@ -15863,7 +15863,7 @@
+@@ -16220,7 +16220,7 @@
if test "$OPENLSWS_BSSL" = no ; then
- if test "$OSNAME" = Darwin ; then
+ if test "$OSNAME" = Linux ; then
usedynossl=yes
- CPPFLAGS="$CPPFLAGS -I../../src -I../../include -I/usr/local/include -I/usr/local -I/usr -I/usr/pkg "
+ CPPFLAGS=" $CPPFLAGS -I../../src -I../../include -I/usr/local/include -I/usr/local -I/usr -I/usr/pkg "
else
-@@ -16131,7 +16131,7 @@
+@@ -16606,7 +16606,7 @@
@@ -18,9 +18,9 @@
# Check whether --with-openssl was given.
---- a/dist/install.sh
+--- a/dist/install.sh.orig
+++ b/dist/install.sh
-@@ -49,11 +49,7 @@
+@@ -25,11 +25,7 @@
fi
if [ "x$OS" = "xLinux" ] ; then
@@ -33,9 +33,9 @@
if [ $? = 0 ] ; then
HASADMINPHP=y
---- a/dist/functions.sh
+--- a/dist/functions.sh.orig
+++ b/dist/functions.sh
-@@ -375,7 +375,7 @@
+@@ -399,7 +399,7 @@
if [ $INST_USER = "root" ]; then
if [ $SUCC -eq "1" ]; then
@@ -44,7 +44,7 @@
fi
fi
}
-@@ -626,7 +626,7 @@
+@@ -649,7 +649,7 @@
if [ ! -d "$LSWS_HOME/$arg" ]; then
mkdir "$LSWS_HOME/$arg"
fi
@@ -53,7 +53,7 @@
chmod $PERM "$LSWS_HOME/$arg"
done
-@@ -643,7 +643,7 @@
+@@ -666,7 +666,7 @@
do
if [ -f "$LSINSTALL_DIR/$arg" ]; then
cp -f "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg"
@@ -62,7 +62,7 @@
chmod $PERM "$LSWS_HOME/$arg"
fi
done
-@@ -662,7 +662,7 @@
+@@ -685,7 +685,7 @@
cp "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg"
fi
if [ -f "$LSWS_HOME/$arg" ]; then
@@ -71,7 +71,7 @@
chmod $PERM "$LSWS_HOME/$arg"
fi
done
-@@ -678,7 +678,7 @@
+@@ -701,7 +701,7 @@
for arg
do
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg/"
@@ -80,7 +80,7 @@
#chmod -R $PERM $LSWS_HOME/$arg/*
done
}
-@@ -696,7 +696,7 @@
+@@ -728,7 +728,7 @@
for arg
do
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg.$VERSION/"
@@ -89,7 +89,7 @@
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
rm -f "$LSWS_HOME/$arg"
-@@ -718,7 +718,7 @@
+@@ -750,7 +750,7 @@
for arg
do
cp -f "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg.$VERSION"
@@ -98,7 +98,7 @@
chmod $PERM "$LSWS_HOME/$arg.$VERSION"
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
-@@ -735,11 +735,11 @@
+@@ -767,11 +767,11 @@
umask 022
if [ $INST_USER = "root" ]; then
SDIR_OWN="root:$ROOTGROUP"
@@ -112,7 +112,7 @@
OWNER=$1
PERM=$2
-@@ -750,7 +750,7 @@
+@@ -782,7 +782,7 @@
if [ ! -f "$LSWS_HOME/$arg" ]; then
cp "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg"
fi
@@ -121,7 +121,7 @@
chmod $PERM "$LSWS_HOME/$arg"
done
}
-@@ -765,7 +765,7 @@
+@@ -797,7 +797,7 @@
for arg
do
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg/"
@@ -130,7 +130,7 @@
#chmod -R $PERM $LSWS_HOME/$arg/*
done
}
-@@ -784,7 +784,7 @@
+@@ -816,7 +816,7 @@
do
if [ -d "$LSINSTALL_DIR/$arg" ]; then
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg.$VERSION/"
@@ -139,7 +139,7 @@
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
rm -f "$LSWS_HOME/$arg"
-@@ -809,7 +809,7 @@
+@@ -841,7 +841,7 @@
if [ -f "$LSINSTALL_DIR/$arg" ]; then
cp -f "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg.$VERSION"
@@ -148,7 +148,7 @@
chmod $PERM "$LSWS_HOME/$arg.$VERSION"
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
-@@ -841,11 +841,11 @@
+@@ -873,11 +873,11 @@
create_lsadm()
{
@@ -163,7 +163,7 @@
#1>/dev/null 2>&1
}
-@@ -880,12 +880,12 @@
+@@ -950,12 +950,12 @@
CONF_OWN="lsadm:lsadm"
fi
SDIR_OWN="root:$ROOTGROUP"
@@ -179,35 +179,31 @@
if [ -d "$LSWS_HOME/admin/html.$VERSION" ]; then
rm -rf "$LSWS_HOME/admin/html.$VERSION"
fi
-@@ -894,10 +894,10 @@
+@@ -967,10 +967,7 @@
util_mkdir "$CONF_OWN" $SDIR_MOD conf conf/cert conf/templates conf/vhosts conf/vhosts/Example admin/conf admin/tmp phpbuild
- util_mkdir "$SDIR_OWN" $SDIR_MOD admin/cgid admin/cgid/secret
+ util_mkdir "$SDIR_OWN" $SDIR_MOD cgid admin/cgid admin/cgid/secret
util_mkdir "$DIR_OWN" $SDIR_MOD tmp/ocspcache
-- chgrp $WS_GROUP $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid
-+ #chgrp $WS_GROUP $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid
- chmod g+x $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid
+- chgrp $WS_GROUP $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid $LSWS_HOME/cgid
+ chmod g+x $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid $LSWS_HOME/cgid
- chown $CONF_OWN $LSWS_HOME/admin/tmp/sess_* 1>/dev/null 2>&1
- chown $DIR_OWN $LSWS_HOME/cachedata
-+ #chown $CONF_OWN $LSWS_HOME/admin/tmp/sess_* 1>/dev/null 2>&1
-+ #chown $DIR_OWN $LSWS_HOME/cachedata
+ chown $DIR_OWN $LSWS_HOME/autoupdate
util_mkdir "$SDIR_OWN" $DIR_MOD Example
- find "$LSWS_HOME/admin/tmp" -type s -atime +1 -delete 2>/dev/null
-@@ -919,7 +919,7 @@
+@@ -993,7 +990,6 @@
- util_ccpfile "$SDIR_OWN" $EXEC_MOD fcgi-bin/lsperld.fpl fcgi-bin/RackRunner.rb
+ util_ccpfile "$SDIR_OWN" $EXEC_MOD fcgi-bin/lsperld.fpl fcgi-bin/RackRunner.rb fcgi-bin/lsnode.js
util_cpfile "$SDIR_OWN" $EXEC_MOD fcgi-bin/RailsRunner.rb fcgi-bin/RailsRunner.rb.2.3
-- util_cpfile "$SDIR_OWN" $EXEC_MOD admin/misc/rc-inst.sh admin/misc/admpass.sh admin/misc/rc-uninst.sh admin/misc/uninstall.sh admin/misc/lsws.rc admin/misc/lsws.rc.gentoo admin/misc/enable_phpa.sh admin/misc/mgr_ver.sh admin/misc/gzipStatic.sh admin/misc/fp_install.sh admin/misc/create_admin_keypair.sh admin/misc/awstats_install.sh admin/misc/update.sh admin/misc/cleancache.sh admin/misc/lsup.sh
-+ #util_cpfile "$SDIR_OWN" $EXEC_MOD admin/misc/rc-inst.sh admin/misc/admpass.sh admin/misc/rc-uninst.sh admin/misc/uninstall.sh admin/misc/lsws.rc admin/misc/lsws.rc.gentoo admin/misc/enable_phpa.sh admin/misc/mgr_ver.sh admin/misc/gzipStatic.sh admin/misc/fp_install.sh admin/misc/create_admin_keypair.sh admin/misc/awstats_install.sh admin/misc/update.sh admin/misc/cleancache.sh admin/misc/lsup.sh
+- util_cpfile "$SDIR_OWN" $EXEC_MOD admin/misc/rc-inst.sh admin/misc/admpass.sh admin/misc/rc-uninst.sh admin/misc/uninstall.sh admin/misc/lsws.rc admin/misc/lsws.rc.gentoo admin/misc/enable_phpa.sh admin/misc/mgr_ver.sh admin/misc/gzipStatic.sh admin/misc/fp_install.sh admin/misc/create_admin_keypair.sh admin/misc/awstats_install.sh admin/misc/update.sh admin/misc/cleancache.sh admin/misc/lsup.sh admin/misc/testbeta.sh
util_cpfile "$SDIR_OWN" $EXEC_MOD admin/misc/ap_lsws.sh.in admin/misc/build_ap_wrapper.sh admin/misc/cpanel_restart_httpd.in admin/misc/build_admin_php.sh admin/misc/convertxml.sh
util_cpfile "$SDIR_OWN" $DOC_MOD admin/misc/gdb-bt admin/misc/htpasswd.php admin/misc/php.ini admin/misc/genjCryptionKeyPair.php admin/misc/purge_cache_byurl.php
util_cpfile "$SDIR_OWN" $DOC_MOD admin/misc/convertxml.php
-@@ -971,7 +971,7 @@
- util_cpdir "$SDIR_OWN" $DOC_MOD Example/html Example/cgi-bin
+@@ -1047,7 +1043,6 @@
+ util_cp_htaccess "$SDIR_OWN" $DOC_MOD Example/html
fi
- chown -R "$CONF_OWN" "$LSWS_HOME/conf/"
-+ #chown -R "$CONF_OWN" "$LSWS_HOME/conf/"
chmod -R 0755 "$LSWS_HOME/conf/"
chmod 0600 "$LSWS_HOME/conf/httpd_config.conf"
chmod 0600 "$LSWS_HOME/conf/vhosts/Example/vhconf.conf"
+
diff --git a/testing/litespeed/ls_lock.patch b/testing/litespeed/ls_lock.patch
index a41b14cbb9..8d6a465817 100644
--- a/testing/litespeed/ls_lock.patch
+++ b/testing/litespeed/ls_lock.patch
@@ -17,9 +17,9 @@
#define USE_ATOMIC_SPIN
#define MAX_FUTEX_SPINCNT 10
---- a/src/lsr/ls_lock.c
+--- a/src/lsr/ls_lock.c.orig
+++ b/src/lsr/ls_lock.c
-@@ -79,11 +79,7 @@
+@@ -118,11 +118,7 @@
#else /* defined(USE_MUTEX_ADAPTIVE) */
/* pthread_mutexattr_settype(&myAttr, PTHREAD_MUTEX_NORMAL); */
pthread_mutexattr_settype(&myAttr,
@@ -31,3 +31,4 @@
);
#endif /* defined(USE_MUTEX_ADAPTIVE) */
/* pthread_mutexattr_settype(&myAttr, PTHREAD_MUTEX_RECURSIVE); */
+