2008-08-06 14:32:29 +00:00
|
|
|
# -*- Autoconf -*-
|
|
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
|
2012-11-11 03:34:22 +01:00
|
|
|
AC_INIT([lxc], [0.8.0])
|
2008-08-06 14:32:29 +00:00
|
|
|
|
2009-04-26 11:43:41 +02:00
|
|
|
AC_CONFIG_SRCDIR([configure.ac])
|
2008-08-06 14:32:29 +00:00
|
|
|
AC_CONFIG_AUX_DIR([config])
|
|
|
|
AM_CONFIG_HEADER([src/config.h])
|
|
|
|
AM_INIT_AUTOMAKE([-Wno-portability])
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
AM_PROG_CC_C_O
|
|
|
|
AC_GNU_SOURCE
|
2009-07-02 15:42:18 +02:00
|
|
|
AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin)
|
configure.ac - allow user to switch off/on documentation generation
Andrian Nord <NightNord@gmail.com>:
>> > > As documentation requires docbook2man to be installed, which is not,
>> > > otherwise, required for proper LXC work or compilation process, it
>> > > might be usefull to be able to switch it off.
Michel Normand <normand@fr.ibm.com>:
> > For me, it is Ok to add a --enable/disable/-doc,
> > but not make configure to fail if no option specified
> > and no docbook2man package.
> >
> > For me it should be optionnal.
> > I like the current behaviour where configure is running without option
> > and is enabling/disabling by itself the doc building.
> > Could you send a new patch with this idea ?
Andrian Nord <NightNord@gmail.com>:
Of course. You mean, that you what default behaviour to remain
auto-detection? That is:
--enable-doc: require docbook2man or fail, generate mans
--enable-doc=auto, or not specified (default): check for docbook2man,
generate mans if found, silently ignore if not found (I suppose
diagnostic message is redundant, as information already contains into
./configure --help)
--disable-doc: never check for docbook2man and don't gen mans
Here comes a patch what do this, as far as I see
(I'm sorry for violating post-rules in previous mail, now I'll do all
right, I hope. Should I attach patch anyway, as it might be usefull
for applying?)
Signed-off-by: Andrian Nord <NightNord@gmail.com>
Acked-by: Michel Normand <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
2009-11-04 14:03:44 +01:00
|
|
|
|
2012-08-27 19:04:43 -04:00
|
|
|
if test -f /etc/debian_version; then
|
|
|
|
osname="debian"
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_DEBIAN], [test x"$osname" == xdebian])
|
|
|
|
|
2011-09-13 15:08:04 +02:00
|
|
|
AC_ARG_ENABLE([rpath],
|
|
|
|
[AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])],
|
|
|
|
[], [enable_rpath=yes])
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"])
|
|
|
|
|
configure.ac - allow user to switch off/on documentation generation
Andrian Nord <NightNord@gmail.com>:
>> > > As documentation requires docbook2man to be installed, which is not,
>> > > otherwise, required for proper LXC work or compilation process, it
>> > > might be usefull to be able to switch it off.
Michel Normand <normand@fr.ibm.com>:
> > For me, it is Ok to add a --enable/disable/-doc,
> > but not make configure to fail if no option specified
> > and no docbook2man package.
> >
> > For me it should be optionnal.
> > I like the current behaviour where configure is running without option
> > and is enabling/disabling by itself the doc building.
> > Could you send a new patch with this idea ?
Andrian Nord <NightNord@gmail.com>:
Of course. You mean, that you what default behaviour to remain
auto-detection? That is:
--enable-doc: require docbook2man or fail, generate mans
--enable-doc=auto, or not specified (default): check for docbook2man,
generate mans if found, silently ignore if not found (I suppose
diagnostic message is redundant, as information already contains into
./configure --help)
--disable-doc: never check for docbook2man and don't gen mans
Here comes a patch what do this, as far as I see
(I'm sorry for violating post-rules in previous mail, now I'll do all
right, I hope. Should I attach patch anyway, as it might be usefull
for applying?)
Signed-off-by: Andrian Nord <NightNord@gmail.com>
Acked-by: Michel Normand <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
2009-11-04 14:03:44 +01:00
|
|
|
AC_ARG_ENABLE([doc],
|
|
|
|
[AC_HELP_STRING([--enable-doc], [make mans (require docbook2man installed) [default=auto]])],
|
|
|
|
[], [enable_doc=auto])
|
|
|
|
|
|
|
|
if test "x$enable_doc" = "xyes" -o "x$enable_doc" = "xauto"; then
|
|
|
|
AC_CHECK_PROG(have_docbook, [docbook2man], [yes], [no])
|
|
|
|
|
|
|
|
test "x$have_docbook" = "xno" -a "x$enable_doc" = "xyes" && \
|
|
|
|
AC_MSG_ERROR([docbook2man required by man request, but not found])
|
|
|
|
fi
|
|
|
|
|
2012-08-17 13:04:34 -05:00
|
|
|
AC_ARG_ENABLE([apparmor],
|
|
|
|
[AC_HELP_STRING([--enable-apparmor], [enable apparmor])],
|
|
|
|
[], [enable_apparmor=check])
|
|
|
|
|
|
|
|
if test "$enable_apparmor" = "check" ; then
|
|
|
|
AC_CHECK_LIB([apparmor],[aa_change_profile],[enable_apparmor=yes], [enable_apparmor=no])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_APPARMOR], [test "x$enable_apparmor" = "xyes"])
|
|
|
|
|
2012-07-31 16:04:33 +02:00
|
|
|
AM_COND_IF([ENABLE_APPARMOR],
|
|
|
|
[AC_CHECK_HEADER([sys/apparmor.h],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])])
|
|
|
|
AC_CHECK_LIB([apparmor], [aa_change_profile],[],[AC_MSG_ERROR([You must install the AppArmor development package in order to compile lxc])])
|
|
|
|
AC_SUBST([APPARMOR_LIBS], [-lapparmor])])
|
|
|
|
|
2012-08-17 13:04:34 -05:00
|
|
|
AC_ARG_ENABLE([seccomp],
|
|
|
|
[AC_HELP_STRING([--enable-seccomp], [enable seccomp])],
|
|
|
|
[], [enable_seccomp=check])
|
|
|
|
|
|
|
|
if test "$enable_seccomp" = "check" ; then
|
|
|
|
AC_CHECK_LIB([seccomp],[seccomp_init],[enable_seccomp=yes],[enable_seccomp=no])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_SECCOMP], [test "x$enable_seccomp" = "xyes"])
|
|
|
|
|
2012-07-27 21:13:53 -05:00
|
|
|
AM_COND_IF([ENABLE_SECCOMP],
|
|
|
|
[AC_CHECK_HEADER([seccomp.h],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])])
|
|
|
|
AC_CHECK_LIB([seccomp], [seccomp_init],[],[AC_MSG_ERROR([You must install the seccomp development package in order to compile lxc])])
|
|
|
|
AC_SUBST([SECCOMP_LIBS], [-lseccomp])])
|
|
|
|
|
configure.ac - allow user to switch off/on documentation generation
Andrian Nord <NightNord@gmail.com>:
>> > > As documentation requires docbook2man to be installed, which is not,
>> > > otherwise, required for proper LXC work or compilation process, it
>> > > might be usefull to be able to switch it off.
Michel Normand <normand@fr.ibm.com>:
> > For me, it is Ok to add a --enable/disable/-doc,
> > but not make configure to fail if no option specified
> > and no docbook2man package.
> >
> > For me it should be optionnal.
> > I like the current behaviour where configure is running without option
> > and is enabling/disabling by itself the doc building.
> > Could you send a new patch with this idea ?
Andrian Nord <NightNord@gmail.com>:
Of course. You mean, that you what default behaviour to remain
auto-detection? That is:
--enable-doc: require docbook2man or fail, generate mans
--enable-doc=auto, or not specified (default): check for docbook2man,
generate mans if found, silently ignore if not found (I suppose
diagnostic message is redundant, as information already contains into
./configure --help)
--disable-doc: never check for docbook2man and don't gen mans
Here comes a patch what do this, as far as I see
(I'm sorry for violating post-rules in previous mail, now I'll do all
right, I hope. Should I attach patch anyway, as it might be usefull
for applying?)
Signed-off-by: Andrian Nord <NightNord@gmail.com>
Acked-by: Michel Normand <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
2009-11-04 14:03:44 +01:00
|
|
|
AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$have_docbook" = "xyes"])
|
|
|
|
|
2009-11-13 11:48:29 +01:00
|
|
|
AC_ARG_ENABLE([examples],
|
|
|
|
[AC_HELP_STRING([--disable-examples], [do not install configuration examples])],
|
|
|
|
[], [enable_examples=yes])
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"])
|
|
|
|
|
2012-08-27 19:04:43 -04:00
|
|
|
AC_ARG_ENABLE([python],
|
|
|
|
[AC_HELP_STRING([--enable-python], [enable python binding])],
|
|
|
|
[enable_python=yes], [enable_python=no])
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"])
|
|
|
|
|
|
|
|
AM_COND_IF([ENABLE_PYTHON],
|
|
|
|
[AM_PATH_PYTHON([3.2], [], [AC_MSG_ERROR([You must install python3])])
|
|
|
|
AC_CHECK_HEADER([python$PYTHON_VERSION/Python.h],[],[AC_MSG_ERROR([You must install python3-dev])])
|
|
|
|
AC_DEFINE_UNQUOTED([ENABLE_PYTHON], 1, [Python3 is available])])
|
|
|
|
|
2012-09-01 19:57:11 -04:00
|
|
|
AC_ARG_ENABLE([tests],
|
|
|
|
[AC_HELP_STRING([--enable-tests], [build test/example binaries])],
|
|
|
|
[enable_tests=yes], [enable_tests=no])
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
|
|
|
|
|
2009-06-10 18:21:48 +02:00
|
|
|
AS_AC_EXPAND(PREFIX, $prefix)
|
|
|
|
AS_AC_EXPAND(LIBDIR, $libdir)
|
2008-12-01 11:50:43 +00:00
|
|
|
AS_AC_EXPAND(BINDIR, $bindir)
|
2012-05-04 00:50:15 +02:00
|
|
|
AS_AC_EXPAND(LIBEXECDIR, $libexecdir)
|
2009-06-10 18:21:48 +02:00
|
|
|
AS_AC_EXPAND(INCLUDEDIR, $includedir)
|
2008-12-01 11:50:43 +00:00
|
|
|
AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
|
2009-06-10 18:21:48 +02:00
|
|
|
AS_AC_EXPAND(DATADIR, $datadir)
|
2008-12-01 11:50:43 +00:00
|
|
|
AS_AC_EXPAND(LOCALSTATEDIR, $localstatedir)
|
2009-11-19 15:06:02 +01:00
|
|
|
AS_AC_EXPAND(DOCDIR, $docdir)
|
2008-10-24 20:14:57 +00:00
|
|
|
|
2009-11-17 10:56:23 +01:00
|
|
|
AC_ARG_WITH([config-path],
|
|
|
|
[AC_HELP_STRING(
|
|
|
|
[--with-config-path=dir],
|
2009-12-28 22:10:11 +01:00
|
|
|
[lxc configuration repository path]
|
2011-09-13 15:08:04 +02:00
|
|
|
)], [], [with_config_path=['${localstatedir}/lib/lxc']])
|
2009-11-17 10:56:23 +01:00
|
|
|
|
2010-05-12 23:44:28 +02:00
|
|
|
AC_ARG_WITH([rootfs-path],
|
|
|
|
[AC_HELP_STRING(
|
|
|
|
[--with-rootfs-path=dir],
|
|
|
|
[lxc rootfs mount point]
|
2011-09-13 15:08:04 +02:00
|
|
|
)], [], [with_rootfs_path=['${libdir}/lxc/rootfs']])
|
2010-05-12 23:44:28 +02:00
|
|
|
|
2009-11-17 10:56:23 +01:00
|
|
|
AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
|
2012-09-11 17:06:05 -04:00
|
|
|
AS_AC_EXPAND(LXCPATH, "${with_config_path}")
|
|
|
|
AS_AC_EXPAND(LXCROOTFSMOUNT, "${with_rootfs_path}")
|
|
|
|
AS_AC_EXPAND(LXCTEMPLATEDIR, ['${datadir}/lxc/templates'])
|
2010-05-27 14:27:13 +02:00
|
|
|
|
2012-06-28 08:51:10 -05:00
|
|
|
AC_SUBST(LXCINITDIR, ['${libexecdir}'])
|
2009-10-22 15:33:40 +02:00
|
|
|
|
2012-05-04 00:50:15 +02:00
|
|
|
AC_CHECK_HEADERS([linux/unistd.h linux/netlink.h linux/genetlink.h],
|
2010-05-12 23:44:28 +02:00
|
|
|
[],
|
2012-05-04 00:50:15 +02:00
|
|
|
AC_MSG_ERROR([Please install the Linux kernel headers.]),
|
2010-05-12 23:44:28 +02:00
|
|
|
[#include <sys/socket.h>
|
2009-07-26 17:44:12 +02:00
|
|
|
])
|
2008-12-09 17:49:21 +00:00
|
|
|
|
2012-05-04 00:50:15 +02:00
|
|
|
AC_CHECK_HEADERS([sys/capability.h], [], AC_MSG_ERROR([Please install the libcap development files.]),
|
2009-06-12 16:02:14 +02:00
|
|
|
[#include <sys/types.h>
|
|
|
|
#include <sys/capability.h>])
|
2010-05-27 12:17:40 +02:00
|
|
|
AC_CHECK_LIB(cap,cap_set_proc,caplib=yes,caplib=no)
|
|
|
|
AC_MSG_CHECKING([linux capabilities])
|
|
|
|
if test "x$caplib" = "xyes" ; then
|
|
|
|
CAP_LIBS="-lcap"
|
|
|
|
AC_MSG_RESULT([$CAP_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([not found])
|
|
|
|
fi
|
|
|
|
AC_SUBST([CAP_LIBS])
|
2008-12-09 17:49:21 +00:00
|
|
|
|
2009-03-08 17:09:27 +01:00
|
|
|
# Some systems lack PR_CAPBSET_DROP definition => HAVE_DECL_PR_CAPBSET_DROP
|
|
|
|
AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
|
|
|
|
|
2009-02-02 14:50:00 +00:00
|
|
|
AC_CHECK_HEADERS([sys/signalfd.h])
|
|
|
|
|
2008-08-06 14:32:29 +00:00
|
|
|
AC_PROG_GCC_TRADITIONAL
|
2012-09-07 14:53:19 -04:00
|
|
|
AC_PROG_SED
|
2008-08-06 14:32:29 +00:00
|
|
|
|
|
|
|
if test "x$GCC" = "xyes"; then
|
2008-08-06 14:54:00 +00:00
|
|
|
CFLAGS="$CFLAGS -Wall"
|
2008-08-06 14:32:29 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
AC_CONFIG_FILES([
|
2010-05-12 23:44:28 +02:00
|
|
|
Makefile
|
2009-06-10 18:21:48 +02:00
|
|
|
lxc.pc
|
2008-08-06 14:32:29 +00:00
|
|
|
lxc.spec
|
2010-05-12 23:44:28 +02:00
|
|
|
config/Makefile
|
2008-11-18 13:45:49 +00:00
|
|
|
|
2010-05-12 23:44:28 +02:00
|
|
|
doc/Makefile
|
2008-11-18 13:45:49 +00:00
|
|
|
doc/lxc-create.sgml
|
|
|
|
doc/lxc-destroy.sgml
|
|
|
|
doc/lxc-execute.sgml
|
|
|
|
doc/lxc-start.sgml
|
2010-05-28 17:01:45 +02:00
|
|
|
doc/lxc-checkpoint.sgml
|
|
|
|
doc/lxc-restart.sgml
|
2008-11-18 13:45:49 +00:00
|
|
|
doc/lxc-stop.sgml
|
2009-01-25 21:52:38 +00:00
|
|
|
doc/lxc-console.sgml
|
2008-11-18 13:45:49 +00:00
|
|
|
doc/lxc-freeze.sgml
|
|
|
|
doc/lxc-unfreeze.sgml
|
|
|
|
doc/lxc-monitor.sgml
|
|
|
|
doc/lxc-wait.sgml
|
|
|
|
doc/lxc-ls.sgml
|
|
|
|
doc/lxc-ps.sgml
|
2008-11-18 14:27:12 +00:00
|
|
|
doc/lxc-cgroup.sgml
|
2010-04-29 10:03:59 +02:00
|
|
|
doc/lxc-kill.sgml
|
2012-02-23 09:57:14 +01:00
|
|
|
doc/lxc-attach.sgml
|
2008-11-19 16:58:09 +00:00
|
|
|
doc/lxc.conf.sgml
|
2008-11-20 15:04:09 +00:00
|
|
|
doc/lxc.sgml
|
2009-05-28 15:32:30 +02:00
|
|
|
doc/common_options.sgml
|
2009-05-28 15:32:29 +02:00
|
|
|
doc/see_also.sgml
|
2008-11-18 13:45:49 +00:00
|
|
|
|
2010-05-27 14:27:13 +02:00
|
|
|
doc/rootfs/Makefile
|
|
|
|
|
2009-11-19 15:06:02 +01:00
|
|
|
doc/examples/Makefile
|
|
|
|
doc/examples/lxc-macvlan.conf
|
2009-12-15 10:14:27 +01:00
|
|
|
doc/examples/lxc-vlan.conf
|
2009-11-19 15:06:02 +01:00
|
|
|
doc/examples/lxc-no-netns.conf
|
|
|
|
doc/examples/lxc-empty-netns.conf
|
|
|
|
doc/examples/lxc-phys.conf
|
|
|
|
doc/examples/lxc-veth.conf
|
2010-01-08 15:19:20 +01:00
|
|
|
doc/examples/lxc-complex.conf
|
2009-11-19 15:06:02 +01:00
|
|
|
|
2010-06-07 11:33:55 +02:00
|
|
|
templates/Makefile
|
2011-01-13 16:25:14 +01:00
|
|
|
templates/lxc-lenny
|
2010-06-07 11:33:55 +02:00
|
|
|
templates/lxc-debian
|
consolidate ubuntu templates
Consolidate lucid, maverick, natty, and oneiric templates into one 'ubuntu'
template.
Add support for specifying architecture.
Add support for '--trim|-x' option, which removes services like the lucid
template used to. This creates smaller, faster-booting containers, but they
will not be safe with certain upgrades, like mountall or udev. When -x is
not specified for lucid or maverick container, then install lxcguest from
the ubuntu-virt ppa, since it does not exist in the official archives, and
the container is not safe to boot without lxcguest.
Add support for '--bindhome <user>' option, which will cause /home/<user>
to be bind-mounted into the container, and create the user with his
original password, shell, and group memberships in the container.
changelog:
june 23:
lxc-ubuntu template: set lxc.arch in config
install lxcguest when NOT trimming the container
lxc-ubuntu: always install lxcguest in postprocess
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
2011-06-25 15:17:47 +02:00
|
|
|
templates/lxc-ubuntu
|
2012-02-09 10:55:33 -06:00
|
|
|
templates/lxc-ubuntu-cloud
|
2011-07-04 00:35:52 +02:00
|
|
|
templates/lxc-opensuse
|
2010-06-07 11:33:55 +02:00
|
|
|
templates/lxc-busybox
|
|
|
|
templates/lxc-fedora
|
2011-08-16 16:00:51 +04:00
|
|
|
templates/lxc-altlinux
|
2010-06-07 11:33:55 +02:00
|
|
|
templates/lxc-sshd
|
2011-11-10 09:41:46 +01:00
|
|
|
templates/lxc-archlinux
|
2008-11-28 15:36:51 +00:00
|
|
|
|
2010-05-12 23:44:28 +02:00
|
|
|
src/Makefile
|
2008-08-06 14:32:29 +00:00
|
|
|
src/lxc/Makefile
|
|
|
|
src/lxc/lxc-ps
|
2008-11-18 13:45:49 +00:00
|
|
|
src/lxc/lxc-ls
|
2008-11-21 18:17:38 +00:00
|
|
|
src/lxc/lxc-netstat
|
2009-03-24 13:56:37 +01:00
|
|
|
src/lxc/lxc-checkconfig
|
|
|
|
src/lxc/lxc-setcap
|
2010-07-20 13:45:44 +02:00
|
|
|
src/lxc/lxc-setuid
|
2009-06-10 18:49:16 +02:00
|
|
|
src/lxc/lxc-version
|
2009-11-13 11:48:29 +01:00
|
|
|
src/lxc/lxc-create
|
2011-06-24 00:42:24 +02:00
|
|
|
src/lxc/lxc-clone
|
2012-07-31 16:04:33 +02:00
|
|
|
src/lxc/lxc-shutdown
|
2009-11-13 11:48:29 +01:00
|
|
|
src/lxc/lxc-destroy
|
2008-11-28 15:36:51 +00:00
|
|
|
|
2012-08-27 19:04:43 -04:00
|
|
|
src/python-lxc/Makefile
|
|
|
|
|
2012-08-27 18:53:00 -04:00
|
|
|
src/tests/Makefile
|
|
|
|
|
2008-08-06 14:32:29 +00:00
|
|
|
])
|
|
|
|
AC_CONFIG_COMMANDS([default],[[]],[[]])
|
|
|
|
AC_OUTPUT
|
2008-10-24 20:14:57 +00:00
|
|
|
|
|
|
|
if test "x$SETCAP" = "xno"; then
|
2009-04-26 11:43:41 +02:00
|
|
|
AC_MSG_NOTICE([
|
2008-10-24 20:14:57 +00:00
|
|
|
|
|
|
|
Warning:
|
|
|
|
--------
|
|
|
|
|
2009-07-02 15:42:18 +02:00
|
|
|
The setcap binary was not found. This means the tools to set the
|
|
|
|
privilege for the lxc commands are not available, that's ok, but you
|
|
|
|
will need to run these commands as root or install libcap-2.
|
2008-10-24 20:14:57 +00:00
|
|
|
|
|
|
|
])
|
|
|
|
|
|
|
|
else
|
|
|
|
|
2009-04-26 11:43:41 +02:00
|
|
|
AC_MSG_NOTICE([
|
2008-10-24 20:14:57 +00:00
|
|
|
|
|
|
|
Advice:
|
|
|
|
-------
|
|
|
|
|
2009-07-02 15:42:18 +02:00
|
|
|
If you wish to have a non root user to use the lxc tools,
|
2009-03-24 13:56:37 +01:00
|
|
|
you can add the needed capabilities to the tools by invoking
|
|
|
|
the 'lxc-setcap' script. To remove the capabilities, use
|
2009-07-02 15:42:18 +02:00
|
|
|
'lxc-setcap -d'.
|
2008-10-24 20:14:57 +00:00
|
|
|
])
|
|
|
|
|
|
|
|
fi
|