summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chat/ejabberd/Makefile38
-rw-r--r--chat/ejabberd/PLIST10
-rw-r--r--chat/ejabberd/distinfo14
-rw-r--r--chat/ejabberd/options.mk4
-rw-r--r--chat/ejabberd/patches/patch-ae19
-rw-r--r--chat/ejabberd/patches/patch-rebar.config73
6 files changed, 94 insertions, 64 deletions
diff --git a/chat/ejabberd/Makefile b/chat/ejabberd/Makefile
index 965a9bf4e99..6de047a2d09 100644
--- a/chat/ejabberd/Makefile
+++ b/chat/ejabberd/Makefile
@@ -1,7 +1,6 @@
-# $NetBSD: Makefile,v 1.63 2016/01/18 10:23:18 fhajny Exp $
+# $NetBSD: Makefile,v 1.64 2016/04/25 20:24:14 fhajny Exp $
-DISTNAME= ejabberd-16.01
-PKGREVISION= 1
+DISTNAME= ejabberd-16.03
CATEGORIES= chat
MASTER_SITES= http://www.process-one.net/downloads/ejabberd/${PKGVERSION_NOREV}/
EXTRACT_SUFX= .tgz
@@ -11,29 +10,28 @@ HOMEPAGE= http://www.ejabberd.im/
COMMENT= Free and Open Source distributed fault-tolerant Jabber server
LICENSE= gnu-gpl-v2
-DEPENDS+= erlang-cache_tab>=1.0.1:../../devel/erlang-p1_cache_tab
-DEPENDS+= erlang-goldrush-0.1.*:../../sysutils/erlang-goldrush
-DEPENDS+= erlang-jiffy>=0.14.5:../../textproc/erlang-jiffy
+DEPENDS+= erlang-cache_tab>=1.0.2:../../devel/erlang-cache_tab
+DEPENDS+= erlang-esip>=1.0.2:../../net/erlang-esip
+DEPENDS+= erlang-ezlib>=1.0.1:../../devel/erlang-ezlib
+DEPENDS+= erlang-fast_tls>=1.0.1:../../security/erlang-fast_tls
+DEPENDS+= erlang-fast_xml>=1.1.3:../../textproc/erlang-fast_xml
+DEPENDS+= erlang-fast_yaml>=1.0.3:../../textproc/erlang-fast_yaml
+DEPENDS+= erlang-iconv>=1.0.0:../../converters/erlang-iconv
+DEPENDS+= erlang-jiffy>=0.14.7:../../textproc/erlang-jiffy
DEPENDS+= erlang-lager>=3.0.2:../../sysutils/erlang-lager
-DEPENDS+= erlang-oauth2>=0.6.0.20150911:../../security/erlang-oauth2
-DEPENDS+= erlang-p1_iconv-0.9.*:../../converters/erlang-p1_iconv
-DEPENDS+= erlang-p1_mysql>=1.0.0:../../databases/erlang-p1_mysql
+DEPENDS+= erlang-luerl>=0.2:../../lang/erlang-luerl
+DEPENDS+= erlang-p1_mysql>=1.0.1:../../databases/erlang-p1_mysql
+DEPENDS+= erlang-p1_oauth2>=0.6.1:../../security/erlang-p1_oauth2
DEPENDS+= erlang-p1_pam>=1.0.0:../../security/erlang-p1_pam
-DEPENDS+= erlang-p1_pgsql>=1.0.0:../../databases/erlang-p1_pgsql
-DEPENDS+= erlang-p1_sip>=1.0.0:../../net/erlang-p1_sip
-DEPENDS+= erlang-p1_stringprep>=1.0.0:../../textproc/erlang-p1_stringprep
-DEPENDS+= erlang-p1_stun-0.9.*:../../net/erlang-p1_stun
-DEPENDS+= erlang-p1_tls>=1.0.0:../../security/erlang-p1_tls
-DEPENDS+= erlang-p1_utils>=1.0.2:../../misc/erlang-p1_utils
-DEPENDS+= erlang-p1_xml>=1.1.1:../../textproc/erlang-p1_xml
-DEPENDS+= erlang-p1_yaml>=1.0.0:../../textproc/erlang-p1_yaml
-DEPENDS+= erlang-p1_zlib>=1.0.0:../../devel/erlang-p1_zlib
-DEPENDS+= erlang-xmlrpc>=1.15.20150506:../../textproc/erlang-xmlrpc
+DEPENDS+= erlang-p1_pgsql>=1.1.0:../../databases/erlang-p1_pgsql
+DEPENDS+= erlang-p1_utils>=1.0.3:../../misc/erlang-p1_utils
+DEPENDS+= erlang-p1_xmlrpc>=1.15.1:../../textproc/erlang-p1_xmlrpc
+DEPENDS+= erlang-stringprep>=1.0.2:../../textproc/erlang-stringprep
+DEPENDS+= erlang-stun>=1.0.1:../../net/erlang-stun
CONFLICTS+= jabberd-[0-9]*
GNU_CONFIGURE= yes
USE_GCC_RUNTIME= yes
-USE_LANGUAGES= c c++
USE_TOOLS+= bash:run gmake patch
CONFIGURE_ARGS+= --disable-debug
diff --git a/chat/ejabberd/PLIST b/chat/ejabberd/PLIST
index d67b7947390..d57595f4fab 100644
--- a/chat/ejabberd/PLIST
+++ b/chat/ejabberd/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.38 2016/01/16 19:28:01 fhajny Exp $
+@comment $NetBSD: PLIST,v 1.39 2016/04/25 20:24:14 fhajny Exp $
lib/erlang/lib/${PKGNAME}/ebin/ELDAPv3.beam
lib/erlang/lib/${PKGNAME}/ebin/XmppAddr.beam
lib/erlang/lib/${PKGNAME}/ebin/acl.beam
@@ -59,6 +59,7 @@ lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sm_mnesia.beam
lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sm_odbc.beam
lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sm_redis.beam
lib/erlang/lib/${PKGNAME}/ebin/ejabberd_socket.beam
+lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sql_pt.beam
lib/erlang/lib/${PKGNAME}/ebin/ejabberd_stun.beam
lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sup.beam
lib/erlang/lib/${PKGNAME}/ebin/ejabberd_system_monitor.beam
@@ -74,6 +75,7 @@ lib/erlang/lib/${PKGNAME}/ebin/eldap_filter.beam
lib/erlang/lib/${PKGNAME}/ebin/eldap_filter_yecc.beam
lib/erlang/lib/${PKGNAME}/ebin/eldap_pool.beam
lib/erlang/lib/${PKGNAME}/ebin/eldap_utils.beam
+lib/erlang/lib/${PKGNAME}/ebin/elixir_logger_backend.beam
lib/erlang/lib/${PKGNAME}/ebin/ext_mod.beam
lib/erlang/lib/${PKGNAME}/ebin/extauth.beam
lib/erlang/lib/${PKGNAME}/ebin/gen_iq_handler.beam
@@ -106,6 +108,7 @@ lib/erlang/lib/${PKGNAME}/ebin/mod_irc_connection.beam
lib/erlang/lib/${PKGNAME}/ebin/mod_last.beam
lib/erlang/lib/${PKGNAME}/ebin/mod_mam.beam
lib/erlang/lib/${PKGNAME}/ebin/mod_metrics.beam
+lib/erlang/lib/${PKGNAME}/ebin/mod_mix.beam
lib/erlang/lib/${PKGNAME}/ebin/mod_muc.beam
lib/erlang/lib/${PKGNAME}/ebin/mod_muc_admin.beam
lib/erlang/lib/${PKGNAME}/ebin/mod_muc_log.beam
@@ -147,6 +150,8 @@ lib/erlang/lib/${PKGNAME}/ebin/node_flat_odbc.beam
lib/erlang/lib/${PKGNAME}/ebin/node_hometree.beam
lib/erlang/lib/${PKGNAME}/ebin/node_hometree_odbc.beam
lib/erlang/lib/${PKGNAME}/ebin/node_mb.beam
+lib/erlang/lib/${PKGNAME}/ebin/node_mix.beam
+lib/erlang/lib/${PKGNAME}/ebin/node_mix_odbc.beam
lib/erlang/lib/${PKGNAME}/ebin/node_online.beam
lib/erlang/lib/${PKGNAME}/ebin/node_pep.beam
lib/erlang/lib/${PKGNAME}/ebin/node_pep_odbc.beam
@@ -157,6 +162,7 @@ lib/erlang/lib/${PKGNAME}/ebin/nodetree_tree.beam
lib/erlang/lib/${PKGNAME}/ebin/nodetree_tree_odbc.beam
lib/erlang/lib/${PKGNAME}/ebin/nodetree_virtual.beam
lib/erlang/lib/${PKGNAME}/ebin/odbc_queries.beam
+lib/erlang/lib/${PKGNAME}/ebin/prosody2ejabberd.beam
lib/erlang/lib/${PKGNAME}/ebin/pubsub_db_odbc.beam
lib/erlang/lib/${PKGNAME}/ebin/pubsub_index.beam
lib/erlang/lib/${PKGNAME}/ebin/pubsub_migrate.beam
@@ -177,11 +183,13 @@ lib/erlang/lib/${PKGNAME}/include/ejabberd_config.hrl
lib/erlang/lib/${PKGNAME}/include/ejabberd_ctl.hrl
lib/erlang/lib/${PKGNAME}/include/ejabberd_http.hrl
lib/erlang/lib/${PKGNAME}/include/ejabberd_sm.hrl
+lib/erlang/lib/${PKGNAME}/include/ejabberd_sql_pt.hrl
lib/erlang/lib/${PKGNAME}/include/ejabberd_web_admin.hrl
lib/erlang/lib/${PKGNAME}/include/eldap.hrl
lib/erlang/lib/${PKGNAME}/include/http_bind.hrl
lib/erlang/lib/${PKGNAME}/include/jlib.hrl
lib/erlang/lib/${PKGNAME}/include/logger.hrl
+lib/erlang/lib/${PKGNAME}/include/mod_muc.hrl
lib/erlang/lib/${PKGNAME}/include/mod_muc_room.hrl
lib/erlang/lib/${PKGNAME}/include/mod_offline.hrl
lib/erlang/lib/${PKGNAME}/include/mod_privacy.hrl
diff --git a/chat/ejabberd/distinfo b/chat/ejabberd/distinfo
index 970c04a03d8..6d2e57e1654 100644
--- a/chat/ejabberd/distinfo
+++ b/chat/ejabberd/distinfo
@@ -1,12 +1,12 @@
-$NetBSD: distinfo,v 1.41 2016/01/16 19:28:01 fhajny Exp $
+$NetBSD: distinfo,v 1.42 2016/04/25 20:24:14 fhajny Exp $
-SHA1 (ejabberd-16.01.tgz) = a1b5d0783c7ece19ac60affafb08792fa860bfd2
-RMD160 (ejabberd-16.01.tgz) = 01bd16b4518a7934c8146a2770c2e4e45a89a891
-SHA512 (ejabberd-16.01.tgz) = f0614db0d0eaf6d4f25b75b8eefbcf93260549876535fd5d82498c75779d182b19ec249ffb9b1b168cb5a887e8e6933eb868892b4aa5cd2933b739d263adca8a
-Size (ejabberd-16.01.tgz) = 1651587 bytes
+SHA1 (ejabberd-16.03.tgz) = 48a8310b1b441f278f763f0c7c64165353fe3f6d
+RMD160 (ejabberd-16.03.tgz) = cc98f37bdf512163b3baa7087d71c4858e62f773
+SHA512 (ejabberd-16.03.tgz) = e5a12a85c0c9f18a85ef3506a1b5fd6468ad45bbb152014dfd6ad77a71d321e971f8ab92354aedef959e9f3899e10cbb302989ff216ff4ed4cbdc8a4ed55954d
+Size (ejabberd-16.03.tgz) = 1694054 bytes
SHA1 (patch-aa) = a9197c75afa9ea4a2fbad70aec894f1b28c7bc88
SHA1 (patch-ad) = 6a7cfbabb22cf362cf21791656be454f10ac5de8
-SHA1 (patch-ae) = 976b3e72807dc4912cc09b8e6f408ee88bda8d5a
+SHA1 (patch-ae) = da166a0ccfe49aa26b62f680af1c9bd7611c18e9
SHA1 (patch-configure) = 8cf03f571ef13ed825b445e0f1664d387895b8fe
-SHA1 (patch-rebar.config) = d763fc7e2ea2b5df6f587a15f59d756a6f846768
+SHA1 (patch-rebar.config) = 01e2e06bf8ad82dc01834972009c517dff7baed4
SHA1 (patch-tools_ejabberdctl.bc) = 3c7bc0ad14d5b266a192b29e4d075e8f93103569
diff --git a/chat/ejabberd/options.mk b/chat/ejabberd/options.mk
index 11de570de2c..cac7aef0037 100644
--- a/chat/ejabberd/options.mk
+++ b/chat/ejabberd/options.mk
@@ -1,4 +1,4 @@
-# $NetBSD: options.mk,v 1.3 2016/01/16 19:28:01 fhajny Exp $
+# $NetBSD: options.mk,v 1.4 2016/04/25 20:24:14 fhajny Exp $
PKG_OPTIONS_VAR= PKG_OPTIONS.ejabberd
PKG_SUPPORTED_OPTIONS= redis sqlite
@@ -17,5 +17,5 @@ DEPENDS+= erlang-eredis>=1.0.8.20150910:../../databases/erlang-eredis
# Add SQLite 3 support
#
.if !empty(PKG_OPTIONS:Msqlite)
-DEPENDS+= erlang-sqlite3>=1.1.5.20151221:../../databases/erlang-sqlite3
+DEPENDS+= erlang-sqlite3>=1.1.5:../../databases/erlang-sqlite3
.endif
diff --git a/chat/ejabberd/patches/patch-ae b/chat/ejabberd/patches/patch-ae
index 53f357d484d..513b881419f 100644
--- a/chat/ejabberd/patches/patch-ae
+++ b/chat/ejabberd/patches/patch-ae
@@ -1,10 +1,21 @@
-$NetBSD: patch-ae,v 1.13 2016/01/16 19:28:02 fhajny Exp $
+$NetBSD: patch-ae,v 1.14 2016/04/25 20:24:14 fhajny Exp $
- Default locations.
- Make it work with NetBSD's flock(1).
+- Use 'su -' instead of just 'su'. Fixes priv delegation on SunOS
+ and AIX where Erlang relies on $HOME set correctly.
---- ejabberdctl.template.orig 2016-01-12 11:07:58.000000000 +0000
+--- ejabberdctl.template.orig 2016-03-30 14:08:04.000000000 +0000
+++ ejabberdctl.template
+@@ -27,7 +27,7 @@ if [ "$INSTALLUSER" != "" ] ; then
+ mkdir -p "$INSTALLUSER_HOME"
+ chown "$INSTALLUSER" "$INSTALLUSER_HOME"
+ fi
+- EXEC_CMD="su $INSTALLUSER -c"
++ EXEC_CMD="su - $INSTALLUSER -c"
+ fi
+ done
+ if [ `id -g` -eq `id -g $INSTALLUSER` ] ; then
@@ -73,10 +73,10 @@ if [ "$EJABBERD_CONFIG_PATH" = "" ] ; th
EJABBERD_CONFIG_PATH=$ETC_DIR/ejabberd.yml
fi
@@ -27,7 +38,7 @@ $NetBSD: patch-ae,v 1.13 2016/01/16 19:28:02 fhajny Exp $
fi
if [ "$EJABBERD_PRIV_PATH" = "" ] ; then
EJABBERD_PRIV_PATH=$EJABBERDDIR/priv
-@@ -351,7 +351,7 @@ ctl()
+@@ -371,7 +371,7 @@ ctl()
# using flock if available. Expects a linux-style
# flock that can lock a file descriptor.
MAXCONNID=100
@@ -36,7 +47,7 @@ $NetBSD: patch-ae,v 1.13 2016/01/16 19:28:02 fhajny Exp $
FLOCK=/usr/bin/flock
if [ ! -x "$FLOCK" ] || [ ! -d "$CONNLOCKDIR" ] ; then
JOT=/usr/bin/jot
-@@ -378,7 +378,7 @@ ctl()
+@@ -398,7 +398,7 @@ ctl()
CTL_LOCKFILE="$CONNLOCKDIR/$CTL_CONN"
(
exec 8>"$CTL_LOCKFILE"
diff --git a/chat/ejabberd/patches/patch-rebar.config b/chat/ejabberd/patches/patch-rebar.config
index b306361f124..49739515541 100644
--- a/chat/ejabberd/patches/patch-rebar.config
+++ b/chat/ejabberd/patches/patch-rebar.config
@@ -1,39 +1,52 @@
-$NetBSD: patch-rebar.config,v 1.1 2016/01/16 19:28:02 fhajny Exp $
+$NetBSD: patch-rebar.config,v 1.2 2016/04/25 20:24:14 fhajny Exp $
Deps are handled by pkgsrc.
---- rebar.config.orig 2016-01-12 11:07:58.000000000 +0000
+--- rebar.config.orig 2016-03-30 14:08:04.000000000 +0000
+++ rebar.config
-@@ -7,32 +7,6 @@
+@@ -7,45 +7,6 @@
%%% Created : 1 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net>
%%%-------------------------------------------------------------------
--{deps, [{if_var_true, lager, {lager, ".*", {git, "https://github.com/basho/lager", {tag, "3.0.2"}}}},
-- {if_var_false, lager, {p1_logger, ".*", {git, "https://github.com/processone/p1_logger", {tag, "1.0.0"}}}},
-- {p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.2"}}},
-- {cache_tab, ".*", {git, "https://github.com/processone/cache_tab", {tag, "1.0.1"}}},
-- {p1_tls, ".*", {git, "https://github.com/processone/tls", {tag, "1.0.0"}}},
-- {p1_stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.0"}}},
-- {p1_xml, ".*", {git, "https://github.com/processone/xml", {tag, "1.1.1"}}},
-- {p1_stun, ".*", {git, "https://github.com/processone/stun", "0.9.0"}},
-- {esip, ".*", {git, "https://github.com/processone/p1_sip", "1.0.0"}},
-- {p1_yaml, ".*", {git, "https://github.com/processone/p1_yaml", {tag, "1.0.0"}}},
-- {jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "0.14.5"}}},
-- {oauth2, ".*", {git, "https://github.com/kivra/oauth2", "8d129fbf8866930b4ffa6dd84e65bd2b32b9acb8"}},
-- {xmlrpc, ".*", {git, "https://github.com/rds13/xmlrpc", {tag, "1.15"}}},
-- {if_var_true, mysql, {p1_mysql, ".*", {git, "https://github.com/processone/mysql", {tag, "1.0.0"}}}},
-- {if_var_true, pgsql, {p1_pgsql, ".*", {git, "https://github.com/processone/pgsql", {tag, "1.0.0"}}}},
-- {if_var_true, sqlite, {sqlite3, ".*", {git, "https://github.com/alexeyr/erlang-sqlite3", "cbc3505f7a131254265d3ef56191b2581b8cc172"}}},
-- {if_var_true, pam, {p1_pam, ".*", {git, "https://github.com/processone/epam", {tag, "1.0.0"}}}},
-- {if_var_true, zlib, {p1_zlib, ".*", {git, "https://github.com/processone/zlib", {tag, "1.0.0"}}}},
-- {if_var_true, riak, {hamcrest, ".*", {git, "https://github.com/hyperthunk/hamcrest-erlang", "908a24fda4a46776a5135db60ca071e3d783f9f6"}}}, % for riak_pb-2.1.0.7
-- {if_var_true, riak, {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", "527722d12d0433b837cdb92a60900c2cb5df8942"}}},
-- {if_var_true, elixir, {elixir, ".*", {git, "https://github.com/elixir-lang/elixir", {tag, "v1.1.0"}}}},
-- {if_var_true, elixir, {rebar_elixir_plugin, ".*", {git, "https://github.com/processone/rebar_elixir_plugin", "0.1.0"}}},
-- {if_var_true, iconv, {p1_iconv, ".*", {git, "https://github.com/processone/eiconv", {tag, "0.9.0"}}}},
-- {if_var_true, tools, {meck, "0.8.2", {git, "https://github.com/eproxus/meck", {tag, "0.8.2"}}}},
-- {if_var_true, redis, {eredis, ".*", {git, "https://github.com/wooga/eredis", {tag, "v1.0.8"}}}}]}.
+-{deps, [{lager, ".*", {git, "https://github.com/basho/lager", {tag, "3.0.2"}}},
+- {p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.3"}}},
+- {cache_tab, ".*", {git, "https://github.com/processone/cache_tab", {tag, "1.0.2"}}},
+- {fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.1"}}},
+- {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.2"}}},
+- {fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.3"}}},
+- {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.1"}}},
+- {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.2"}}},
+- {fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.3"}}},
+- {jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "0.14.7"}}},
+- {p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.1"}}},
+- {p1_xmlrpc, ".*", {git, "https://github.com/processone/p1_xmlrpc", {tag, "1.15.1"}}},
+- {luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "v0.2"}}},
+- {if_var_true, mysql, {p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql",
+- {tag, "1.0.1"}}}},
+- {if_var_true, pgsql, {p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql",
+- {tag, "1.1.0"}}}},
+- {if_var_true, sqlite, {sqlite3, ".*", {git, "https://github.com/processone/erlang-sqlite3",
+- {tag, "1.1.5"}}}},
+- {if_var_true, pam, {p1_pam, ".*", {git, "https://github.com/processone/epam",
+- {tag, "1.0.0"}}}},
+- {if_var_true, zlib, {ezlib, ".*", {git, "https://github.com/processone/ezlib",
+- {tag, "1.0.1"}}}},
+- {if_var_true, riak, {hamcrest, ".*", {git, "https://github.com/hyperthunk/hamcrest-erlang",
+- "908a24fda4a46776a5135db60ca071e3d783f9f6"}}}, % for riak_pb-2.1.0.7
+- {if_var_true, riak, {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client",
+- "527722d12d0433b837cdb92a60900c2cb5df8942"}}},
+- {if_var_true, elixir, {elixir, ".*", {git, "https://github.com/elixir-lang/elixir",
+- {tag, "v1.1.1"}}}},
+- %% TODO: When modules are fully migrated to new structure and mix, we will not need anymore rebar_elixir_plugin
+- {if_var_true, elixir, {rebar_elixir_plugin, ".*",
+- {git, "https://github.com/processone/rebar_elixir_plugin", "0.1.0"}}},
+- {if_var_true, iconv, {iconv, ".*", {git, "https://github.com/processone/iconv",
+- {tag, "1.0.0"}}}},
+- {if_var_true, tools, {meck, "0.8.2", {git, "https://github.com/eproxus/meck",
+- {tag, "0.8.2"}}}},
+- {if_var_true, redis, {eredis, ".*", {git, "https://github.com/wooga/eredis",
+- {tag, "v1.0.8"}}}}]}.
-
{if_var_true, latest_deps,
- {floating_deps, [p1_logger,
- cache_tab,
+ {floating_deps, [cache_tab,
+ fast_tls,