* [Buildroot] [PATCH 00/15] ejabberd: XMPP server
@ 2014-10-28 13:33 Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 01/15] package/pkg-autotools.mk: Factorize hooks Johan Oudinet
` (14 more replies)
0 siblings, 15 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Since ejabberd build system relies on rebar to download its
dependencies, we've packaged all of them separately and modified
ejabberd makefile to not download any dependency.
Actually, every erlang package that is introduced here rely on the
rebar software. Thus, we also introduce a new infrastructure to
simplify the development of such packages in buildroot.
Johan Oudinet (15):
package/pkg-autotools.mk: Factorize hooks.
rebar package infrastructure: new infrastructure.
erlang-goldrush: new package.
erlang-lager: new package.
erlang-p1-zlib: new package.
erlang-p1-yaml: new package.
erlang-p1-xml: new package.
erlang-p1-utils: new package.
erlang-p1-tls: new package.
erlang-p1-stun: new package.
erlang-p1-stringprep: new package.
erlang-p1-sip: new package.
erlang-p1-iconv: new package.
erlang-p1-cache-tab: new package.
ejabberd: new package.
docs/manual/adding-packages-rebar.txt | 157 ++++++++++++++
docs/manual/adding-packages.txt | 2 +
package/Config.in | 17 ++
package/Makefile.in | 1 +
package/ejabberd/0001-remove-deps.patch | 20 ++
package/ejabberd/0002-disable-rebar-deps.patch | 70 +++++++
package/ejabberd/0003-disable-test.patch | 21 ++
package/ejabberd/0004-disable-version-check.patch | 20 ++
package/ejabberd/0005-fix-includes.patch | 45 ++++
package/ejabberd/0006-remove-doc.patch | 26 +++
package/ejabberd/0007-fix-init.patch | 99 +++++++++
.../ejabberd/0008-fix-install-permissions.patch | 76 +++++++
package/ejabberd/Config.in | 21 ++
package/ejabberd/S50ejabberd | 35 ++++
package/ejabberd/check-erlang-lib | 55 +++++
package/ejabberd/ejabberd.mk | 51 +++++
package/erlang-goldrush/Config.in | 6 +
package/erlang-goldrush/erlang-goldrush.mk | 14 ++
package/erlang-lager/Config.in | 12 ++
package/erlang-lager/erlang-lager.mk | 14 ++
package/erlang-p1-cache-tab/Config.in | 6 +
package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk | 13 ++
package/erlang-p1-iconv/Config.in | 6 +
package/erlang-p1-iconv/erlang-p1-iconv.mk | 17 ++
package/erlang-p1-sip/Config.in | 8 +
.../erlang-p1-sip-01-fix-includes.patch | 19 ++
package/erlang-p1-sip/erlang-p1-sip.mk | 14 ++
package/erlang-p1-stringprep/Config.in | 5 +
.../erlang-p1-stringprep/erlang-p1-stringprep.mk | 13 ++
package/erlang-p1-stun/Config.in | 7 +
package/erlang-p1-stun/erlang-p1-stun.mk | 14 ++
package/erlang-p1-tls/Config.in | 5 +
package/erlang-p1-tls/erlang-p1-tls.mk | 14 ++
package/erlang-p1-utils/Config.in | 5 +
package/erlang-p1-utils/erlang-p1-utils.mk | 14 ++
package/erlang-p1-xml/Config.in | 6 +
package/erlang-p1-xml/erlang-p1-xml.mk | 14 ++
package/erlang-p1-yaml/Config.in | 6 +
package/erlang-p1-yaml/erlang-p1-yaml.mk | 13 ++
package/erlang-p1-zlib/Config.in | 5 +
package/erlang-p1-zlib/erlang-p1-zlib.mk | 13 ++
package/erlang-rebar/erlang-rebar.mk | 20 ++
package/pkg-autotools.mk | 119 +++++------
package/pkg-rebar.mk | 229 +++++++++++++++++++++
support/scripts/erlang-ei-vsn | 19 ++
45 files changed, 1303 insertions(+), 63 deletions(-)
create mode 100644 docs/manual/adding-packages-rebar.txt
create mode 100644 package/ejabberd/0001-remove-deps.patch
create mode 100644 package/ejabberd/0002-disable-rebar-deps.patch
create mode 100644 package/ejabberd/0003-disable-test.patch
create mode 100644 package/ejabberd/0004-disable-version-check.patch
create mode 100644 package/ejabberd/0005-fix-includes.patch
create mode 100644 package/ejabberd/0006-remove-doc.patch
create mode 100644 package/ejabberd/0007-fix-init.patch
create mode 100644 package/ejabberd/0008-fix-install-permissions.patch
create mode 100644 package/ejabberd/Config.in
create mode 100644 package/ejabberd/S50ejabberd
create mode 100755 package/ejabberd/check-erlang-lib
create mode 100644 package/ejabberd/ejabberd.mk
create mode 100644 package/erlang-goldrush/Config.in
create mode 100644 package/erlang-goldrush/erlang-goldrush.mk
create mode 100644 package/erlang-lager/Config.in
create mode 100644 package/erlang-lager/erlang-lager.mk
create mode 100644 package/erlang-p1-cache-tab/Config.in
create mode 100644 package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk
create mode 100644 package/erlang-p1-iconv/Config.in
create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk
create mode 100644 package/erlang-p1-sip/Config.in
create mode 100644 package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch
create mode 100644 package/erlang-p1-sip/erlang-p1-sip.mk
create mode 100644 package/erlang-p1-stringprep/Config.in
create mode 100644 package/erlang-p1-stringprep/erlang-p1-stringprep.mk
create mode 100644 package/erlang-p1-stun/Config.in
create mode 100644 package/erlang-p1-stun/erlang-p1-stun.mk
create mode 100644 package/erlang-p1-tls/Config.in
create mode 100644 package/erlang-p1-tls/erlang-p1-tls.mk
create mode 100644 package/erlang-p1-utils/Config.in
create mode 100644 package/erlang-p1-utils/erlang-p1-utils.mk
create mode 100644 package/erlang-p1-xml/Config.in
create mode 100644 package/erlang-p1-xml/erlang-p1-xml.mk
create mode 100644 package/erlang-p1-yaml/Config.in
create mode 100644 package/erlang-p1-yaml/erlang-p1-yaml.mk
create mode 100644 package/erlang-p1-zlib/Config.in
create mode 100644 package/erlang-p1-zlib/erlang-p1-zlib.mk
create mode 100644 package/erlang-rebar/erlang-rebar.mk
create mode 100644 package/pkg-rebar.mk
create mode 100755 support/scripts/erlang-ei-vsn
--
2.1.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 01/15] package/pkg-autotools.mk: Factorize hooks.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 02/15] rebar package infrastructure: new infrastructure Johan Oudinet
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Define common macros only once (instead of as many times as
there are inner-autotools-package calls).
Factorize LIBTOOL_PATCH_HOOK and AUTORECONF_HOOK to avoid duplicated
code.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/pkg-autotools.mk | 119 ++++++++++++++++++++++-------------------------
1 file changed, 56 insertions(+), 63 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 09f9412..65af6f0 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -46,6 +46,57 @@ endef
# $(call AUTOCONF_AC_CHECK_FILE_VAL,/dev/random)=yes
AUTOCONF_AC_CHECK_FILE_VAL = ac_cv_file_$(subst -,_,$(subst /,_,$(subst .,_,$(1))))
+# Recipe that patches libtool so it works properly with
+# cross-compilation.
+define PATCH_LIBTOOL
+ $(Q)if test "$($(PKG)_LIBTOOL_PATCH)" = "YES"; then \
+ for i in `find $($(PKG)_SRCDIR) -name ltmain.sh`; do \
+ ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \
+ sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
+ if test $${ltmain_version} = 1.5; then \
+ $(APPLY_PATCHES) $${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
+ elif test $${ltmain_version} = 2.2; then\
+ $(APPLY_PATCHES) $${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
+ elif test $${ltmain_version} = 2.4; then\
+ $(APPLY_PATCHES) $${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
+ fi \
+ done \
+ fi
+endef
+
+#
+# Hook to update config.sub and config.guess if needed
+#
+define UPDATE_CONFIG_HOOK
+ @$(call MESSAGE,"Updating config.sub and config.guess")
+ $(call CONFIG_UPDATE,$(@D))
+endef
+
+#
+# Hook to patch libtool to make it work properly for cross-compilation
+#
+define LIBTOOL_PATCH_HOOK
+ @$(call MESSAGE,"Patching libtool")
+ $(call PATCH_LIBTOOL)
+endef
+
+#
+# Hook to gettextize the package if needed
+#
+define GETTEXTIZE_HOOK
+ @$(call MESSAGE,"Gettextizing")
+ $(Q)cd $($(PKG)_SRCDIR) && $(GETTEXTIZE) $($(PKG)_GETTEXTIZE_OPTS)
+endef
+
+#
+# Hook to autoreconf the package if needed
+#
+define AUTORECONF_HOOK
+ @$(call MESSAGE,"Autoreconfiguring")
+ $(Q)cd $($(PKG)_SRCDIR) && $($(PKG)_AUTORECONF_ENV) $(AUTORECONF) $($(PKG)_AUTORECONF_OPTS)
+ $(call PATCH_LIBTOOL)
+endef
+
################################################################################
# inner-autotools-package -- defines how the configuration, compilation and
# installation of an autotools package should be done, implements a
@@ -183,71 +234,8 @@ endef
endif
endif
-#
-# Hook to update config.sub and config.guess if needed
-#
-define UPDATE_CONFIG_HOOK
- @$$(call MESSAGE,"Updating config.sub and config.guess")
- $$(call CONFIG_UPDATE,$$(@D))
-endef
-
$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
-#
-# Hook to patch libtool to make it work properly for cross-compilation
-#
-define LIBTOOL_PATCH_HOOK
- @$$(call MESSAGE,"Patching libtool")
- $$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" \
- -a "$$($$(PKG)_AUTORECONF)" != "YES"; then \
- for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
- ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \
- sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
- if test $$$${ltmain_version} = '1.5'; then \
- $$(APPLY_PATCHES) $$$${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
- elif test $$$${ltmain_version} = "2.2"; then\
- $$(APPLY_PATCHES) $$$${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
- elif test $$$${ltmain_version} = "2.4"; then\
- $$(APPLY_PATCHES) $$$${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
- fi \
- done \
- fi
-endef
-
-# default values are not evaluated yet, so don't rely on this defaulting to YES
-ifneq ($$($(2)_LIBTOOL_PATCH),NO)
-$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK
-endif
-
-#
-# Hook to gettextize the package if needed
-#
-define GETTEXTIZE_HOOK
- @$$(call MESSAGE,"Gettextizing")
- $(Q)cd $$($$(PKG)_SRCDIR) && $$(GETTEXTIZE) $$($$(PKG)_GETTEXTIZE_OPTS)
-endef
-
-#
-# Hook to autoreconf the package if needed
-#
-define AUTORECONF_HOOK
- @$$(call MESSAGE,"Autoreconfiguring")
- $$(Q)cd $$($$(PKG)_SRCDIR) && $$($$(PKG)_AUTORECONF_ENV) $$(AUTORECONF) $$($$(PKG)_AUTORECONF_OPTS)
- $$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \
- for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
- ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \
- sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
- if test $$$${ltmain_version} = "1.5"; then \
- $$(APPLY_PATCHES) $$$${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
- elif test $$$${ltmain_version} = "2.2"; then\
- $$(APPLY_PATCHES) $$$${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
- elif test $$$${ltmain_version} = "2.4"; then\
- $$(APPLY_PATCHES) $$$${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
- fi \
- done \
- fi
-endef
-
# This must be repeated from inner-generic-package, otherwise we get an empty
# _DEPENDENCIES if _AUTORECONF is YES. Also filter the result of _AUTORECONF
# and _GETTEXTIZE away from the non-host rule
@@ -265,6 +253,11 @@ $(2)_DEPENDENCIES += host-gettext
endif
$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK
$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool
+else
+# default values are not evaluated yet, so don't rely on this defaulting to YES
+ifneq ($$($(2)_LIBTOOL_PATCH),NO)
+$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK
+endif
endif
#
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 02/15] rebar package infrastructure: new infrastructure.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 01/15] package/pkg-autotools.mk: Factorize hooks Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 03/15] erlang-goldrush: new package Johan Oudinet
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Ease the development of packages that use the erlang rebar tool as
their build system.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
docs/manual/adding-packages-rebar.txt | 157 +++++++++++++++++++++++
docs/manual/adding-packages.txt | 2 +
package/Makefile.in | 1 +
package/erlang-rebar/erlang-rebar.mk | 20 +++
package/pkg-rebar.mk | 229 ++++++++++++++++++++++++++++++++++
support/scripts/erlang-ei-vsn | 19 +++
6 files changed, 428 insertions(+)
create mode 100644 docs/manual/adding-packages-rebar.txt
create mode 100644 package/erlang-rebar/erlang-rebar.mk
create mode 100644 package/pkg-rebar.mk
create mode 100755 support/scripts/erlang-ei-vsn
diff --git a/docs/manual/adding-packages-rebar.txt b/docs/manual/adding-packages-rebar.txt
new file mode 100644
index 0000000..c132a4a
--- /dev/null
+++ b/docs/manual/adding-packages-rebar.txt
@@ -0,0 +1,157 @@
+// -*- mode:doc; -*-
+// vim: set syntax=asciidoc:
+
+=== Infrastructure for rebar-based packages
+
+[[rebar-package-tutorial]]
+
+==== +rebar-package+ tutorial
+
+First, let's see how to write a +.mk+ file for a rebar-based package,
+with an example :
+
+------------------------------
+01: ################################################################################
+02: #
+03: # erlang-foobar
+04: #
+05: ################################################################################
+06:
+07: ERLANG_FOOBAR_VERSION = 1.0
+08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.gz
+09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download
+10: ERLANG_FOOBAR_INSTALL_STAGING = YES
+11: ERLANG_FOOBAR_CONF_OPTS = --enable-bar
+12: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb
+13:
+14: $(eval $(rebar-package))
+--------------------------------
+
+On line 7, we declare the version of the package.
+
+On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended)
+and the location of the tarball on the Web. Buildroot will automatically
+download the tarball from this location.
+
+On line 10, we tell Buildroot to install the package to the staging
+directory. The staging directory, located in +output/staging/+
+is the directory where all the packages are installed, including their
+development files, etc. By default, packages are not installed to the
+staging directory, since usually, only libraries need to be installed in
+the staging directory: their development files are needed to compile
+other libraries or applications depending on them.
+
+On line 11, we tell Buildroot to pass a custom configure option, that
+will be passed to the +./configure+ script before configuring
+and building the package.
+
+On line 12, we declare our dependencies, so that they are built
+before the build process of our package starts.
+
+Finally, on line line 14, we invoke the +rebar-package+
+macro that generates all the Makefile rules that actually allows the
+package to be built.
+
+[[rebar-package-reference]]
+
+==== +rebar-package+ reference
+
+The main macro of the rebar package infrastructure is
++rebar-package+. It is similar to the +generic-package+ macro. The
+ability to have target and host packages is also available, with the
++host-rebar-package+ macro.
+
+Just like the generic infrastructure, the rebar infrastructure works
+by defining a number of variables before calling the +rebar-package+
+macro.
+
+First, all the package metadata information variables that exist in
+the generic infrastructure also exist in the rebar infrastructure:
++ERLANG_FOOBAR_VERSION+, +ERLANG_FOOBAR_SOURCE+,
++ERLANG_FOOBAR_PATCH+, +ERLANG_FOOBAR_SITE+,
++ERLANG_FOOBAR_SUBDIR+, +ERLANG_FOOBAR_DEPENDENCIES+,
++ERLANG_FOOBAR_INSTALL_STAGING+, +ERLANG_FOOBAR_INSTALL_TARGET+.
+
+Note that the rebar infrastructure does not expect a configure script,
+but does call such a script when it exists. When a package uses both
+the Autotools and rebar, it should use the rebar infrastructure. In
+this case however, the build commands do not call make, but only
++rebar compile+; this avoids triggering the download of dependencies
+(as most Makefile's do when combined with rebar). Also, note that the
+install commands never call +make install+. Instead, they install
+Erlang's application directories (ebin, priv, etc.) into a proper
+location. If this is not what you want, add custom hooks or override
+rebar commands (see below).
+
+A few additional variables, specific to the rebar infrastructure,
+can also be defined. Many of them are only useful in very specific
+cases, typical packages will therefore only use a few of them.
+
+* +ERLANG_FOOBAR_CONF_ENV+, to specify additional environment
+ variables to pass to the configure script. By default, empty.
+
+* +ERLANG_FOOBAR_CONF_OPTS+, to specify additional configure options
+ to pass to the configure script. By default, empty.
+
+* +ERLANG_FOOBAR_AUTORECONF+, tells whether the package should be
+ autoreconfigured or not (i.e. if the configure script and
+ Makefile.in files should be re-generated by re-running autoconf,
+ automake, libtool, etc.). Valid values are +YES+ and +NO+. By
+ default, the value is +NO+
+
+* +ERLANG_FOOBAR_AUTORECONF_ENV+, to specify additional environment
+ variables to pass to the 'autoreconf' program if
+ +ERLANG_FOOBAR_AUTORECONF=YES+. These are passed in the environment
+ of the 'autoreconf' command. By default, empty.
+
+* +ERLANG_FOOBAR_AUTORECONF_OPTS+ to specify additional options passed
+ to the 'autoreconf' program if +ERLANG_FOOBAR_AUTORECONF=YES+. By
+ default, empty.
+
+* +ERLANG_FOOBAR_REBAR_ENV+, to specify additional environment
+ variables to pass to rebar. By default, the value sets a minimal
+ PATH that only includes +HOST_DIR/bin+, +HOST_DIR/usr/bin+, and
+ +/bin+.
+
+* +ERLANG_FOOBAR_REBAR_FLAGS+, to specify rebar flags. By default, the
+ value is +deps_dir=ERLANG_FOOBAR_REBAR_DEPS_DIR+.
+
+* +ERLANG_FOOBAR_REBAR_DEPS_DIR+, to specify where to look for the
+ package's dependencies. By default, the value is
+ +output/build/erlang-rebar-deps/target+, or
+ +output/build/erlang-rebar-deps/host+ for host packages. Note that
+ if the package installs to staging as well, the rebar infrastructure
+ then creates a symbolic link in this directory to
+ +ERLANG_FOOBAR_ERLANG_LIBDIR+ so other packages may use it as
+ a dependency.
+
+* +ERLANG_FOOBAR_ERLANG_LIBDIR+, to specify where to install the
+ Erlang application. By default, the value is
+ +/usr/lib/erlang/lib/ERLANG_FOOBAR_ERLANG_APP-ERLANG_FOOBAR_VERSION+.
+
+* +ERLANG_FOOBAR_ERLANG_APP+, to specify the name of the Erlang
+ application to be installed. This modifies where the application is
+ installed (e.g., +/usr/lib/erlang/lib/ERLANG_FOOBAR_ERLANG_APP-ERLANG_FOOBAR_VERSION+)
+ and the name of the symbolic link in +ERLANG_FOOBAR_REBAR_DEPS_DIR+,
+ if any (e.g., +output/build/erlang-rebar-deps/target/ERLANG_FOOBAR_ERLANG_APP+.
+ By default, the value is the lowercase package name stripped from
+ any +erlang-+ prefix, and with dashes converted to underscores.
+
+* +ERLANG_FOOBAR_ENV+, to specify additional environment variables to
+ pass both to the configure script and rebar. By default, sets CC,
+ CFLAGS, LDFLAGS, ERL_COMPILER_OPTIONS, and ERL_EI_LIBDIR.
+
+With the rebar infrastructure, all the steps required to build
+and install the packages are already defined, and they generally work
+well for most rebar-based packages. However, when required, it is
+still possible to customize what is done in any particular step:
+
+* By adding a post-operation hook (after extract, patch, configure,
+ build or install). See xref:hooks[] for details.
+
+* By overriding one of the steps. For example, even if the rebar
+ infrastructure is used, if the package +.mk+ file defines its
+ own +ERLANG_FOOBAR_CONFIGURE_CMDS+ variable, it will be used
+ instead of the default rebar one. However, using this method
+ should be restricted to very specific cases. Do not use it in the
+ general case.
diff --git a/docs/manual/adding-packages.txt b/docs/manual/adding-packages.txt
index feb0d13..b8674f8 100644
--- a/docs/manual/adding-packages.txt
+++ b/docs/manual/adding-packages.txt
@@ -27,6 +27,8 @@ include::adding-packages-virtual.txt[]
include::adding-packages-kconfig.txt[]
+include::adding-packages-rebar.txt[]
+
include::adding-packages-asciidoc.txt[]
include::adding-packages-hooks.txt[]
diff --git a/package/Makefile.in b/package/Makefile.in
index ff2ee2d..560ea8c 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -406,3 +406,4 @@ include package/pkg-python.mk
include package/pkg-virtual.mk
include package/pkg-generic.mk
include package/pkg-kconfig.mk
+include package/pkg-rebar.mk
diff --git a/package/erlang-rebar/erlang-rebar.mk b/package/erlang-rebar/erlang-rebar.mk
new file mode 100644
index 0000000..b3fcbf0
--- /dev/null
+++ b/package/erlang-rebar/erlang-rebar.mk
@@ -0,0 +1,20 @@
+################################################################################
+#
+# erlang-rebar
+#
+################################################################################
+
+ERLANG_REBAR_VERSION = 2.5.1
+ERLANG_REBAR_SOURCE = $(ERLANG_REBAR_VERSION).tar.gz
+ERLANG_REBAR_SITE = https://github.com/rebar/rebar/archive
+ERLANG_REBAR_DEPENDENCIES = host-erlang
+
+define HOST_ERLANG_REBAR_BUILD_CMDS
+ cd $(@D) && PATH=$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:/bin $(MAKE)
+endef
+
+define HOST_ERLANG_REBAR_INSTALL_CMDS
+ $(INSTALL) -D $(@D)/rebar $(HOST_DIR)/usr/bin/rebar
+endef
+
+$(eval $(host-generic-package))
diff --git a/package/pkg-rebar.mk b/package/pkg-rebar.mk
new file mode 100644
index 0000000..7293fa6
--- /dev/null
+++ b/package/pkg-rebar.mk
@@ -0,0 +1,229 @@
+################################################################################
+# rebar package infrastructure
+#
+# This file implements an infrastructure that eases development of
+# package .mk files for rebar packages. It should be used for all
+# packages that use rebar as their build system.
+#
+# In terms of implementation, this rebar infrastructure requires the
+# .mk file to only specify metadata information about the package:
+# name, version, download URL, etc.
+#
+# We still allow the package .mk file to override what the different
+# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is
+# already defined, it is used as the list of commands to perform to
+# build the package, instead of the default rebar behaviour. The
+# package can also define some post operation hooks.
+#
+################################################################################
+
+# Version of Erlang's erl_interface module. One needs this to setup
+# proper linker flags when building Erlang modules written in C.
+#
+ERLANG_EI_VSN = $(shell support/scripts/erlang-ei-vsn)
+
+# Directories to store rebar dependencies in.
+#
+# These directories actually only contain symbolic links to Erlang
+# applications in either $(HOST_DIR) or $(STAGING_DIR). One needs
+# them to avoid rebar complaining about missing dependencies, as this
+# infrastructure does NOT tell rebar to download dependencies during
+# the build stage.
+#
+REBAR_HOST_DEPS_DIR = $(BUILD_DIR)/erlang-rebar-deps/host
+REBAR_TARGET_DEPS_DIR = $(BUILD_DIR)/erlang-rebar-deps/target
+
+################################################################################
+# Helper functions
+################################################################################
+
+# Install an Erlang application from $(@D).
+#
+# i.e., define a recipe that installs the "ebin priv $(2)" directories
+# from $(@D) to $(1)$($(PKG)_ERLANG_LIBDIR).
+#
+# argument 1 should typically be $(HOST_DIR), $(TARGET_DIR),
+# or $(STAGING_DIR).
+# argument 2 is typically empty when installing in $(TARGET_DIR) and
+# "include" when installing in $(HOST_DIR) or
+# $(STAGING_DIR).
+#
+define install-erlang-directories
+ $$(INSTALL) --directory '$(1)$$($$(PKG)_ERLANG_LIBDIR)'
+ for dir in ebin priv $(2); do \
+ if test -d "$$(@D)/$$$$dir"; then \
+ cp -r "$$(@D)/$$$$dir" \
+ '$(1)$$($$(PKG)_ERLANG_LIBDIR)'; \
+ fi; \
+ done
+endef
+
+# Setup a symbolic link in rebar's deps_dir to the actual location
+# where an Erlang application is installed.
+#
+# i.e., define a recipe that creates a symbolic link
+# from $($(PKG)_REBAR_DEPS_DIR)/$($(PKG)_ERLANG_APP)
+# to $(1)$($(PKG)_ERLANG_LIBDIR).
+#
+# One typically uses this to setup symbolic links from
+# $(BUILD_DIR)/rebar-deps/<HOST_OR_TARGET>/<ERLANG_APP> to the
+# appropriate application directory in $(HOST_DIR) or $(STAGING_DIR).
+# This avoids rebar complaining about missing dependencies, as this
+# infrastructure does NOT tell rebar to download dependencies during
+# the build stage.
+#
+# Therefore,
+# argument 1 is $$(HOST_DIR) (for host packages) or
+# $$(STAGING_DIR) (for target packages).
+#
+define install-rebar-deps
+ $$(INSTALL) --directory '$$($$(PKG)_REBAR_DEPS_DIR)'
+ ln -f -s \
+ '$(1)$$($$(PKG)_ERLANG_LIBDIR)' \
+ '$$($$(PKG)_REBAR_DEPS_DIR)/$$($$(PKG)_ERLANG_APP)'
+endef
+
+################################################################################
+# inner-rebar-package -- defines how the configuration, compilation
+# and installation of a rebar package should be done, implements a few
+# hooks to tune the build process according to rebar specifities, and
+# calls the generic package infrastructure to generate the necessary
+# make targets.
+#
+# argument 1 is the lowercase package name
+# argument 2 is the uppercase package name, including a HOST_ prefix
+# for host packages
+# argument 3 is the uppercase package name, without the HOST_ prefix
+# for host packages
+# argument 4 is the type (target or host)
+#
+################################################################################
+
+define inner-rebar-package
+
+$(2)_ERLANG_APP ?= $(subst -,_,$(call LOWERCASE,$(patsubst ERLANG_%,%,$(3))))
+$(2)_ERLANG_LIBDIR ?= \
+ /usr/lib/erlang/lib/$$($$(PKG)_ERLANG_APP)-$$($$(PKG)_VERSION)
+$(2)_ENV ?= \
+ CC='$$($(call UPPERCASE,$(4))_CC)' \
+ CFLAGS='$$($(call UPPERCASE,$(4))_CFLAGS)' \
+ LDFLAGS='$$($(call UPPERCASE,$(4))_LDFLAGS)' \
+ ERL_COMPILER_OPTIONS='{i, "$$($$(PKG)_REBAR_DEPS_DIR)"}' \
+ ERL_EI_LIBDIR='$$($(call UPPERCASE,$(4))_DIR)/usr/lib/erlang/lib/erl_interface-$$(ERLANG_EI_VSN)/lib'
+
+$(2)_REBAR_DEPS_DIR ?= $$(REBAR_$(call UPPERCASE,$(4))_DEPS_DIR)
+$(2)_REBAR_FLAGS ?= deps_dir='$$($$(PKG)_REBAR_DEPS_DIR)'
+$(2)_REBAR_ENV ?= PATH='$$(HOST_DIR)/bin:$$(HOST_DIR)/usr/bin:/bin'
+
+ifndef $(2)_AUTORECONF
+ ifdef $(3)_AUTORECONF
+ $(2)_AUTORECONF = $$($(3)_AUTORECONF)
+ else
+ $(2)_AUTORECONF ?= NO
+ endif
+endif
+
+$(2)_INTERNAL_CONF_ENV = \
+ CONFIG_SITE=/dev/null \
+ PATH='$$(HOST_DIR)/bin:$$(HOST_DIR)/usr/bin:/bin:/usr/bin' \
+ $$($$(PKG)_ENV) \
+ $$($$(PKG)_CONF_ENV)
+
+ifeq ($(4),target)
+$(2)_INTERNAL_CONF_FLAGS = \
+ --target=$$(GNU_TARGET_NAME) \
+ --host=$$(GNU_TARGET_NAME) \
+ --build=$$(GNU_HOST_NAME) \
+ --prefix=/usr \
+ --exec-prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --program-prefix= \
+ $$(DISABLE_NLS) \
+ $$(DISABLE_LARGEFILE) \
+ $$(DISABLE_IPV6) \
+ $$(ENABLE_DEBUG) \
+ $$(SHARED_STATIC_LIBS_OPTS) \
+ $$($$(PKG)_CONF_OPTS)
+else
+$(2)_INTERNAL_CONF_FLAGS = \
+ --prefix='$$(HOST_DIR)/usr' \
+ --sysconfdir='$$(HOST_DIR)/etc' \
+ --localstatedir='$$(HOST_DIR)/var' \
+ --enable-shared --disable-static \
+ --disable-debug \
+ $$($$(PKG)_CONF_OPTS)
+endif
+
+ifeq ($$($(2)_AUTORECONF),YES)
+$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK
+$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool
+endif
+
+ifndef $(2)_CONFIGURE_CMDS
+define $(2)_CONFIGURE_CMDS
+ if [ -f '$$(@D)/configure' ]; then \
+ cd '$$(@D)' && \
+ rm -rf config.cache && \
+ $$($$(PKG)_INTERNAL_CONF_ENV) \
+ ./configure \
+ --disable-gtk-doc \
+ --disable-doc \
+ --disable-docs \
+ --disable-documentation \
+ --with-xmlto=no \
+ --with-fop=no \
+ --disable-dependency-tracking \
+ $$(QUIET) $$($$(PKG)_INTERNAL_CONF_FLAGS); \
+ fi
+endef
+endif
+
+ifndef $(2)_BUILD_CMDS
+define $(2)_BUILD_CMDS
+ cd '$$(@D)' && \
+ if [ -f ./rebar ]; then \
+ $$($$(PKG)_ENV) \
+ $$($$(PKG)_REBAR_ENV) \
+ ./rebar $$($$(PKG)_REBAR_FLAGS) compile; \
+ else \
+ $$($$(PKG)_ENV) \
+ $$($$(PKG)_REBAR_ENV) \
+ rebar $$($$(PKG)_REBAR_FLAGS) compile; \
+ fi
+endef
+endif
+
+ifeq ($(4),host) # Install host files.
+
+ifndef $(2)_INSTALL_CMDS
+define $(2)_INSTALL_CMDS
+ $(call install-erlang-directories,$$(HOST_DIR),include)
+ $(call install-rebar-deps,$$(HOST_DIR))
+endef
+endif
+
+else # Install staging/target files.
+
+ifndef $(2)_INSTALL_STAGING_CMDS
+define $(2)_INSTALL_STAGING_CMDS
+ $(call install-erlang-directories,$$(STAGING_DIR),include)
+ $(call install-rebar-deps,$$(STAGING_DIR))
+endef
+endif
+
+ifndef $(2)_INSTALL_TARGET_CMDS
+define $(2)_INSTALL_TARGET_CMDS
+ $(call install-erlang-directories,$$(TARGET_DIR))
+endef
+endif
+
+endif
+
+$(call inner-generic-package,$(1),$(2),$(3),$(4))
+
+endef # inner-rebar-package
+
+rebar-package = $(call inner-rebar-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
+
+host-rebar-package = $(call inner-rebar-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)
diff --git a/support/scripts/erlang-ei-vsn b/support/scripts/erlang-ei-vsn
new file mode 100755
index 0000000..cdab8e9
--- /dev/null
+++ b/support/scripts/erlang-ei-vsn
@@ -0,0 +1,19 @@
+#! /bin/sh
+# Extract and print the version of Erlang's erl_interface module.
+#
+# Exit non-zero and print nothing if Erlang has not been extracted in
+# output/build.
+
+S=[:space:]
+
+# Extract the BAR part from all lines matching "$2 = BAR" in file $1.
+get_make_variable() {
+ local file="$1" name="$2"
+
+ sed "s/^[$S]*$name[$S]*=[$S]*\\([^$S]*\\)[$S]*\$/\\1/; t; d" "$file"
+}
+
+ERLANG_VSN=$(get_make_variable package/erlang/erlang.mk ERLANG_VERSION)
+EI_VSN_FILE=output/build/erlang-$ERLANG_VSN/lib/erl_interface/vsn.mk
+
+[ -f "$EI_VSN_FILE" ] && get_make_variable "$EI_VSN_FILE" EI_VSN
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 03/15] erlang-goldrush: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 01/15] package/pkg-autotools.mk: Factorize hooks Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 02/15] rebar package infrastructure: new infrastructure Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 04/15] erlang-lager: " Johan Oudinet
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 5 +++++
package/erlang-goldrush/Config.in | 6 ++++++
package/erlang-goldrush/erlang-goldrush.mk | 14 ++++++++++++++
3 files changed, 25 insertions(+)
create mode 100644 package/erlang-goldrush/Config.in
create mode 100644 package/erlang-goldrush/erlang-goldrush.mk
diff --git a/package/Config.in b/package/Config.in
index 8865c1e..c3932af 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -392,6 +392,11 @@ endmenu
menu "Interpreter languages and scripting"
source "package/enscript/Config.in"
source "package/erlang/Config.in"
+if BR2_PACKAGE_ERLANG
+menu "Erlang libraries/modules"
+ source "package/erlang-goldrush/Config.in"
+endmenu
+endif
source "package/haserl/Config.in"
source "package/jamvm/Config.in"
source "package/jimtcl/Config.in"
diff --git a/package/erlang-goldrush/Config.in b/package/erlang-goldrush/Config.in
new file mode 100644
index 0000000..685a887
--- /dev/null
+++ b/package/erlang-goldrush/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_ERLANG_GOLDRUSH
+ bool "erlang-goldrush"
+ depends on BR2_PACKAGE_ERLANG
+ help
+ Goldrush is a small Erlang app that provides fast event
+ stream processing.
diff --git a/package/erlang-goldrush/erlang-goldrush.mk b/package/erlang-goldrush/erlang-goldrush.mk
new file mode 100644
index 0000000..7537e76
--- /dev/null
+++ b/package/erlang-goldrush/erlang-goldrush.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-goldrush
+#
+################################################################################
+
+ERLANG_GOLDRUSH_VERSION = 0.1.6
+ERLANG_GOLDRUSH_SITE = $(call github,DeadZen,goldrush,$(ERLANG_GOLDRUSH_VERSION))
+ERLANG_GOLDRUSH_LICENSE_FILES = LICENSE
+ERLANG_GOLDRUSH_DEPENDENCIES = erlang host-erlang-rebar
+ERLANG_GOLDRUSH_INSTALL_STAGING = YES
+
+$(eval $(rebar-package))
+$(eval $(host-rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 04/15] erlang-lager: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (2 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 03/15] erlang-goldrush: new package Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 05/15] erlang-p1-zlib: " Johan Oudinet
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-lager/Config.in | 12 ++++++++++++
package/erlang-lager/erlang-lager.mk | 14 ++++++++++++++
3 files changed, 27 insertions(+)
create mode 100644 package/erlang-lager/Config.in
create mode 100644 package/erlang-lager/erlang-lager.mk
diff --git a/package/Config.in b/package/Config.in
index c3932af..b3b67a8 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,7 @@ menu "Interpreter languages and scripting"
if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
+ source "package/erlang-lager/Config.in"
endmenu
endif
source "package/haserl/Config.in"
diff --git a/package/erlang-lager/Config.in b/package/erlang-lager/Config.in
new file mode 100644
index 0000000..f83239e
--- /dev/null
+++ b/package/erlang-lager/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_ERLANG_LAGER
+ bool "erlang-lager"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_ERLANG_GOLDRUSH
+ help
+ Logging framework for Erlang.
+
+ Lager (as in the beer) is a logging framework for
+ Erlang. Its purpose is to provide a more traditional way to
+ perform logging in an erlang application that plays nicely
+ with traditional UNIX logging tools like logrotate and
+ syslog.
diff --git a/package/erlang-lager/erlang-lager.mk b/package/erlang-lager/erlang-lager.mk
new file mode 100644
index 0000000..b530c8e
--- /dev/null
+++ b/package/erlang-lager/erlang-lager.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-lager
+#
+################################################################################
+
+ERLANG_LAGER_VERSION = 2.0.3
+ERLANG_LAGER_SITE = $(call github,basho,lager,$(ERLANG_LAGER_VERSION))
+ERLANG_LAGER_LICENSE = Apache-2.0
+ERLANG_LAGER_LICENSE_FILES = LICENSE
+ERLANG_LAGER_DEPENDENCIES = erlang erlang-goldrush
+
+$(eval $(rebar-package))
+$(eval $(host-rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 05/15] erlang-p1-zlib: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (3 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 04/15] erlang-lager: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 06/15] erlang-p1-yaml: " Johan Oudinet
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-zlib/Config.in | 5 +++++
package/erlang-p1-zlib/erlang-p1-zlib.mk | 13 +++++++++++++
3 files changed, 19 insertions(+)
create mode 100644 package/erlang-p1-zlib/Config.in
create mode 100644 package/erlang-p1-zlib/erlang-p1-zlib.mk
diff --git a/package/Config.in b/package/Config.in
index b3b67a8..3e25766 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-zlib/Config.in"
endmenu
endif
source "package/haserl/Config.in"
diff --git a/package/erlang-p1-zlib/Config.in b/package/erlang-p1-zlib/Config.in
new file mode 100644
index 0000000..3d4f455
--- /dev/null
+++ b/package/erlang-p1-zlib/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_ERLANG_P1_ZLIB
+ bool "erlang-p1-zlib"
+ depends on BR2_PACKAGE_ERLANG
+ help
+ Erlang interface to zlib
diff --git a/package/erlang-p1-zlib/erlang-p1-zlib.mk b/package/erlang-p1-zlib/erlang-p1-zlib.mk
new file mode 100644
index 0000000..84ecb35
--- /dev/null
+++ b/package/erlang-p1-zlib/erlang-p1-zlib.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# erlang-p1-zlib
+#
+################################################################################
+
+ERLANG_P1_ZLIB_VERSION = 52e82bb
+ERLANG_P1_ZLIB_SITE = $(call github,processone,zlib,$(ERLANG_P1_ZLIB_VERSION))
+ERLANG_P1_ZLIB_LICENSE = GPLv2+
+ERLANG_P1_ZLIB_LICENSE_FILES = COPYING
+ERLANG_P1_ZLIB_DEPENDENCIES = erlang
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 06/15] erlang-p1-yaml: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (4 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 05/15] erlang-p1-zlib: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 07/15] erlang-p1-xml: " Johan Oudinet
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-yaml/Config.in | 6 ++++++
package/erlang-p1-yaml/erlang-p1-yaml.mk | 13 +++++++++++++
3 files changed, 20 insertions(+)
create mode 100644 package/erlang-p1-yaml/Config.in
create mode 100644 package/erlang-p1-yaml/erlang-p1-yaml.mk
diff --git a/package/Config.in b/package/Config.in
index 3e25766..6035713 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-yaml/Config.in"
source "package/erlang-p1-zlib/Config.in"
endmenu
endif
diff --git a/package/erlang-p1-yaml/Config.in b/package/erlang-p1-yaml/Config.in
new file mode 100644
index 0000000..423ef3f
--- /dev/null
+++ b/package/erlang-p1-yaml/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_ERLANG_P1_YAML
+ bool "erlang-p1-yaml"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_LIBYAML
+ help
+ Erlang wrapper for libyaml C library
diff --git a/package/erlang-p1-yaml/erlang-p1-yaml.mk b/package/erlang-p1-yaml/erlang-p1-yaml.mk
new file mode 100644
index 0000000..990c3a7
--- /dev/null
+++ b/package/erlang-p1-yaml/erlang-p1-yaml.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# erlang-p1-yaml
+#
+################################################################################
+
+ERLANG_P1_YAML_VERSION = 236b943
+ERLANG_P1_YAML_SITE = $(call github,processone,p1_yaml,$(ERLANG_P1_YAML_VERSION))
+ERLANG_P1_YAML_LICENSE = Apache-2.0
+ERLANG_P1_YAML_LICENSE_FILES = COPYING
+ERLANG_P1_YAML_DEPENDENCIES = erlang libyaml
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 07/15] erlang-p1-xml: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (5 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 06/15] erlang-p1-yaml: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 08/15] erlang-p1-utils: " Johan Oudinet
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-xml/Config.in | 6 ++++++
package/erlang-p1-xml/erlang-p1-xml.mk | 14 ++++++++++++++
3 files changed, 21 insertions(+)
create mode 100644 package/erlang-p1-xml/Config.in
create mode 100644 package/erlang-p1-xml/erlang-p1-xml.mk
diff --git a/package/Config.in b/package/Config.in
index 6035713..7c6fba0 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-xml/Config.in"
source "package/erlang-p1-yaml/Config.in"
source "package/erlang-p1-zlib/Config.in"
endmenu
diff --git a/package/erlang-p1-xml/Config.in b/package/erlang-p1-xml/Config.in
new file mode 100644
index 0000000..85fe02f
--- /dev/null
+++ b/package/erlang-p1-xml/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_ERLANG_P1_XML
+ bool "erlang-p1-xml"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_EXPAT
+ help
+ XML utilities for Erlang
diff --git a/package/erlang-p1-xml/erlang-p1-xml.mk b/package/erlang-p1-xml/erlang-p1-xml.mk
new file mode 100644
index 0000000..5f43ccb
--- /dev/null
+++ b/package/erlang-p1-xml/erlang-p1-xml.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-p1-xml
+#
+################################################################################
+
+ERLANG_P1_XML_VERSION = b530983
+ERLANG_P1_XML_SITE = $(call github,processone,xml,$(ERLANG_P1_XML_VERSION))
+ERLANG_P1_XML_LICENSE = GPLv2
+ERLANG_P1_XML_LICENSE_FILES = COPYING
+ERLANG_P1_XML_DEPENDENCIES = erlang expat
+ERLANG_P1_XML_INSTALL_STAGING = YES
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 08/15] erlang-p1-utils: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (6 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 07/15] erlang-p1-xml: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 09/15] erlang-p1-tls: " Johan Oudinet
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-utils/Config.in | 5 +++++
package/erlang-p1-utils/erlang-p1-utils.mk | 14 ++++++++++++++
3 files changed, 20 insertions(+)
create mode 100644 package/erlang-p1-utils/Config.in
create mode 100644 package/erlang-p1-utils/erlang-p1-utils.mk
diff --git a/package/Config.in b/package/Config.in
index 7c6fba0..addb2b6 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-utils/Config.in"
source "package/erlang-p1-xml/Config.in"
source "package/erlang-p1-yaml/Config.in"
source "package/erlang-p1-zlib/Config.in"
diff --git a/package/erlang-p1-utils/Config.in b/package/erlang-p1-utils/Config.in
new file mode 100644
index 0000000..a544eed
--- /dev/null
+++ b/package/erlang-p1-utils/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_ERLANG_P1_UTILS
+ bool "erlang-p1-utils"
+ depends on BR2_PACKAGE_ERLANG
+ help
+ Set of small Erlang libraries
diff --git a/package/erlang-p1-utils/erlang-p1-utils.mk b/package/erlang-p1-utils/erlang-p1-utils.mk
new file mode 100644
index 0000000..23e2c63
--- /dev/null
+++ b/package/erlang-p1-utils/erlang-p1-utils.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-p1-utils
+#
+################################################################################
+
+ERLANG_P1_UTILS_VERSION = 940f42d
+ERLANG_P1_UTILS_SITE = $(call github,processone,p1_utils,$(ERLANG_P1_UTILS_VERSION))
+ERLANG_P1_UTILS_LICENSE = GPLv2+
+ERLANG_P1_UTILS_LICENSE_FILES = COPYING
+ERLANG_P1_UTILS_DEPENDENCIES = erlang
+ERLANG_P1_UTILS_INSTALL_STAGING = YES
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 09/15] erlang-p1-tls: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (7 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 08/15] erlang-p1-utils: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 10/15] erlang-p1-stun: " Johan Oudinet
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-tls/Config.in | 5 +++++
package/erlang-p1-tls/erlang-p1-tls.mk | 14 ++++++++++++++
3 files changed, 20 insertions(+)
create mode 100644 package/erlang-p1-tls/Config.in
create mode 100644 package/erlang-p1-tls/erlang-p1-tls.mk
diff --git a/package/Config.in b/package/Config.in
index addb2b6..cbf05e2 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-tls/Config.in"
source "package/erlang-p1-utils/Config.in"
source "package/erlang-p1-xml/Config.in"
source "package/erlang-p1-yaml/Config.in"
diff --git a/package/erlang-p1-tls/Config.in b/package/erlang-p1-tls/Config.in
new file mode 100644
index 0000000..1aa53bc
--- /dev/null
+++ b/package/erlang-p1-tls/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_ERLANG_P1_TLS
+ bool "erlang-p1-tls"
+ depends on BR2_PACKAGE_ERLANG
+ help
+ Erlang interface to OpenSSL
diff --git a/package/erlang-p1-tls/erlang-p1-tls.mk b/package/erlang-p1-tls/erlang-p1-tls.mk
new file mode 100644
index 0000000..a884377
--- /dev/null
+++ b/package/erlang-p1-tls/erlang-p1-tls.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-p1-tls
+#
+################################################################################
+
+ERLANG_P1_TLS_VERSION = 53f0478
+ERLANG_P1_TLS_SITE = $(call github,processone,tls,$(ERLANG_P1_TLS_VERSION))
+ERLANG_P1_TLS_LICENSE = GPLv2+
+ERLANG_P1_TLS_LICENSE_FILES = COPYING
+ERLANG_P1_TLS_DEPENDENCIES = erlang
+ERLANG_P1_TLS_INSTALL_STAGING = YES
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 10/15] erlang-p1-stun: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (8 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 09/15] erlang-p1-tls: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 11/15] erlang-p1-stringprep: " Johan Oudinet
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-stun/Config.in | 7 +++++++
package/erlang-p1-stun/erlang-p1-stun.mk | 14 ++++++++++++++
3 files changed, 22 insertions(+)
create mode 100644 package/erlang-p1-stun/Config.in
create mode 100644 package/erlang-p1-stun/erlang-p1-stun.mk
diff --git a/package/Config.in b/package/Config.in
index cbf05e2..ffc2601 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-stun/Config.in"
source "package/erlang-p1-tls/Config.in"
source "package/erlang-p1-utils/Config.in"
source "package/erlang-p1-xml/Config.in"
diff --git a/package/erlang-p1-stun/Config.in b/package/erlang-p1-stun/Config.in
new file mode 100644
index 0000000..bbe6bae
--- /dev/null
+++ b/package/erlang-p1-stun/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_ERLANG_P1_STUN
+ bool "erlang-p1-stun"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_ERLANG_P1_TLS
+ select BR2_PACKAGE_ERLANG_P1_UTILS
+ help
+ STUN library for Erlang
diff --git a/package/erlang-p1-stun/erlang-p1-stun.mk b/package/erlang-p1-stun/erlang-p1-stun.mk
new file mode 100644
index 0000000..d963caa
--- /dev/null
+++ b/package/erlang-p1-stun/erlang-p1-stun.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-p1-stun
+#
+################################################################################
+
+ERLANG_P1_STUN_VERSION = a7c07b6
+ERLANG_P1_STUN_SITE = $(call github,processone,stun,$(ERLANG_P1_STUN_VERSION))
+ERLANG_P1_STUN_LICENSE = GPLv2+
+ERLANG_P1_STUN_LICENSE_FILES = COPYING
+ERLANG_P1_STUN_DEPENDENCIES = erlang host-erlang-rebar erlang-p1-tls erlang-p1-utils
+ERLANG_P1_STUN_INSTALL_STAGING = YES
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 11/15] erlang-p1-stringprep: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (9 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 10/15] erlang-p1-stun: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 12/15] erlang-p1-sip: " Johan Oudinet
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-stringprep/Config.in | 5 +++++
package/erlang-p1-stringprep/erlang-p1-stringprep.mk | 13 +++++++++++++
3 files changed, 19 insertions(+)
create mode 100644 package/erlang-p1-stringprep/Config.in
create mode 100644 package/erlang-p1-stringprep/erlang-p1-stringprep.mk
diff --git a/package/Config.in b/package/Config.in
index ffc2601..1e337d1 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-stringprep/Config.in"
source "package/erlang-p1-stun/Config.in"
source "package/erlang-p1-tls/Config.in"
source "package/erlang-p1-utils/Config.in"
diff --git a/package/erlang-p1-stringprep/Config.in b/package/erlang-p1-stringprep/Config.in
new file mode 100644
index 0000000..eaaa59e
--- /dev/null
+++ b/package/erlang-p1-stringprep/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_ERLANG_P1_STRINGPREP
+ bool "erlang-p1-stringprep"
+ depends on BR2_PACKAGE_ERLANG
+ help
+ Erlang interface to stringprep
diff --git a/package/erlang-p1-stringprep/erlang-p1-stringprep.mk b/package/erlang-p1-stringprep/erlang-p1-stringprep.mk
new file mode 100644
index 0000000..b83e106
--- /dev/null
+++ b/package/erlang-p1-stringprep/erlang-p1-stringprep.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# erlang-p1-stringprep
+#
+################################################################################
+
+ERLANG_P1_STRINGPREP_VERSION = 9e9e0f8
+ERLANG_P1_STRINGPREP_SITE = $(call github,processone,stringprep,$(ERLANG_P1_STRINGPREP_VERSION))
+ERLANG_P1_STRINGPREP_LICENSE = GPLv2+
+ERLANG_P1_STRINGPREP_LICENSE_FILES = LICENSE.TCL
+ERLANG_P1_STRINGPREP_DEPENDENCIES = erlang
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 12/15] erlang-p1-sip: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (10 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 11/15] erlang-p1-stringprep: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 13/15] erlang-p1-iconv: " Johan Oudinet
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-sip/Config.in | 8 ++++++++
.../erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch | 19 +++++++++++++++++++
package/erlang-p1-sip/erlang-p1-sip.mk | 14 ++++++++++++++
4 files changed, 42 insertions(+)
create mode 100644 package/erlang-p1-sip/Config.in
create mode 100644 package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch
create mode 100644 package/erlang-p1-sip/erlang-p1-sip.mk
diff --git a/package/Config.in b/package/Config.in
index 1e337d1..6db319d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-sip/Config.in"
source "package/erlang-p1-stringprep/Config.in"
source "package/erlang-p1-stun/Config.in"
source "package/erlang-p1-tls/Config.in"
diff --git a/package/erlang-p1-sip/Config.in b/package/erlang-p1-sip/Config.in
new file mode 100644
index 0000000..64a12b1
--- /dev/null
+++ b/package/erlang-p1-sip/Config.in
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_ERLANG_P1_SIP
+ bool "erlang-p1-sip"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_ERLANG_P1_STUN
+ select BR2_PACKAGE_ERLANG_P1_TLS
+ select BR2_PACKAGE_ERLANG_P1_UTILS
+ help
+ SIP library for Erlang
diff --git a/package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch b/package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch
new file mode 100644
index 0000000..80e2ab3
--- /dev/null
+++ b/package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch
@@ -0,0 +1,19 @@
+Description: correct include
+ This part of the code was moved into it's own project and was packaged
+ separately by me. To make the build process work, this small fix is
+ necessary.
+Author: Philipp Huebner <debalance@debian.org>
+
+Index: erlang-p1-sip/src/esip_socket.erl
+===================================================================
+--- erlang-p1-sip.orig/src/esip_socket.erl
++++ erlang-p1-sip/src/esip_socket.erl
+@@ -22,7 +22,7 @@
+
+ -include("esip.hrl").
+ -include("esip_lib.hrl").
+--include("stun.hrl").
++-include_lib("p1_stun/include/stun.hrl").
+
+ -define(TCP_SEND_TIMEOUT, 15000).
+ -define(CONNECT_TIMEOUT, 20000).
diff --git a/package/erlang-p1-sip/erlang-p1-sip.mk b/package/erlang-p1-sip/erlang-p1-sip.mk
new file mode 100644
index 0000000..d38ff2b
--- /dev/null
+++ b/package/erlang-p1-sip/erlang-p1-sip.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# erlang-p1-sip
+#
+################################################################################
+
+ERLANG_P1_SIP_VERSION = bba4459
+ERLANG_P1_SIP_SITE = $(call github,processone,p1_sip,$(ERLANG_P1_SIP_VERSION))
+ERLANG_P1_SIP_LICENSE = GPLv2
+ERLANG_P1_SIP_LICENSE_FILES = COPYING
+ERLANG_P1_SIP_DEPENDENCIES = erlang erlang-p1-stun erlang-p1-tls erlang-p1-utils
+ERLANG_P1_SIP_INSTALL_STAGING = YES
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 13/15] erlang-p1-iconv: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (11 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 12/15] erlang-p1-sip: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 14/15] erlang-p1-cache-tab: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 15/15] ejabberd: " Johan Oudinet
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-iconv/Config.in | 6 ++++++
package/erlang-p1-iconv/erlang-p1-iconv.mk | 17 +++++++++++++++++
3 files changed, 24 insertions(+)
create mode 100644 package/erlang-p1-iconv/Config.in
create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk
diff --git a/package/Config.in b/package/Config.in
index 6db319d..d1d95b2 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-iconv/Config.in"
source "package/erlang-p1-sip/Config.in"
source "package/erlang-p1-stringprep/Config.in"
source "package/erlang-p1-stun/Config.in"
diff --git a/package/erlang-p1-iconv/Config.in b/package/erlang-p1-iconv/Config.in
new file mode 100644
index 0000000..53876bf
--- /dev/null
+++ b/package/erlang-p1-iconv/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_ERLANG_P1_ICONV
+ bool "erlang-p1-iconv"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+ help
+ Erlang interface to libiconv
diff --git a/package/erlang-p1-iconv/erlang-p1-iconv.mk b/package/erlang-p1-iconv/erlang-p1-iconv.mk
new file mode 100644
index 0000000..9bcddca
--- /dev/null
+++ b/package/erlang-p1-iconv/erlang-p1-iconv.mk
@@ -0,0 +1,17 @@
+################################################################################
+#
+# erlang-p1-iconv
+#
+################################################################################
+
+ERLANG_P1_ICONV_VERSION = 7afc233
+ERLANG_P1_ICONV_SITE = $(call github,processone,eiconv,$(ERLANG_P1_ICONV_VERSION))
+ERLANG_P1_ICONV_LICENSE = GPLv2+
+ERLANG_P1_ICONV_LICENSE_FILES = COPYING
+ERLANG_P1_ICONV_DEPENDENCIES = erlang
+
+ifeq ($(BR2_PACKAGE_LIBICONV),y)
+EJABBERD_DEPENDENCIES += libiconv
+endif
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 14/15] erlang-p1-cache-tab: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (12 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 13/15] erlang-p1-iconv: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 15/15] ejabberd: " Johan Oudinet
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/erlang-p1-cache-tab/Config.in | 6 ++++++
package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk | 13 +++++++++++++
3 files changed, 20 insertions(+)
create mode 100644 package/erlang-p1-cache-tab/Config.in
create mode 100644 package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk
diff --git a/package/Config.in b/package/Config.in
index d1d95b2..8fa01b5 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -396,6 +396,7 @@ if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-goldrush/Config.in"
source "package/erlang-lager/Config.in"
+ source "package/erlang-p1-cache-tab/Config.in"
source "package/erlang-p1-iconv/Config.in"
source "package/erlang-p1-sip/Config.in"
source "package/erlang-p1-stringprep/Config.in"
diff --git a/package/erlang-p1-cache-tab/Config.in b/package/erlang-p1-cache-tab/Config.in
new file mode 100644
index 0000000..6d1f889
--- /dev/null
+++ b/package/erlang-p1-cache-tab/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_ERLANG_P1_CACHE_TAB
+ bool "erlang-p1-cache-tab"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_ERLANG_P1_UTILS
+ help
+ Erlang library implementing cache tables
diff --git a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk
new file mode 100644
index 0000000..0f0b637
--- /dev/null
+++ b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# erlang-p1-cache-tab
+#
+################################################################################
+
+ERLANG_P1_CACHE_TAB_VERSION = 7b89d6a
+ERLANG_P1_CACHE_TAB_SITE = $(call github,processone,cache_tab,$(ERLANG_P1_CACHE_TAB_VERSION))
+ERLANG_P1_CACHE_TAB_LICENSE = GPLv2+
+ERLANG_P1_CACHE_TAB_LICENSE_FILES = COPYING
+ERLANG_P1_CACHE_TAB_DEPENDENCIES = erlang erlang-p1-utils
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Buildroot] [PATCH 15/15] ejabberd: new package.
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
` (13 preceding siblings ...)
2014-10-28 13:33 ` [Buildroot] [PATCH 14/15] erlang-p1-cache-tab: " Johan Oudinet
@ 2014-10-28 13:33 ` Johan Oudinet
14 siblings, 0 replies; 16+ messages in thread
From: Johan Oudinet @ 2014-10-28 13:33 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
package/Config.in | 1 +
package/ejabberd/0001-remove-deps.patch | 20 +++++
package/ejabberd/0002-disable-rebar-deps.patch | 70 +++++++++++++++
package/ejabberd/0003-disable-test.patch | 21 +++++
package/ejabberd/0004-disable-version-check.patch | 20 +++++
package/ejabberd/0005-fix-includes.patch | 45 ++++++++++
package/ejabberd/0006-remove-doc.patch | 26 ++++++
package/ejabberd/0007-fix-init.patch | 99 ++++++++++++++++++++++
.../ejabberd/0008-fix-install-permissions.patch | 76 +++++++++++++++++
package/ejabberd/Config.in | 21 +++++
package/ejabberd/S50ejabberd | 35 ++++++++
package/ejabberd/check-erlang-lib | 55 ++++++++++++
package/ejabberd/ejabberd.mk | 51 +++++++++++
13 files changed, 540 insertions(+)
create mode 100644 package/ejabberd/0001-remove-deps.patch
create mode 100644 package/ejabberd/0002-disable-rebar-deps.patch
create mode 100644 package/ejabberd/0003-disable-test.patch
create mode 100644 package/ejabberd/0004-disable-version-check.patch
create mode 100644 package/ejabberd/0005-fix-includes.patch
create mode 100644 package/ejabberd/0006-remove-doc.patch
create mode 100644 package/ejabberd/0007-fix-init.patch
create mode 100644 package/ejabberd/0008-fix-install-permissions.patch
create mode 100644 package/ejabberd/Config.in
create mode 100644 package/ejabberd/S50ejabberd
create mode 100755 package/ejabberd/check-erlang-lib
create mode 100644 package/ejabberd/ejabberd.mk
diff --git a/package/Config.in b/package/Config.in
index 8fa01b5..3953d4f 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1012,6 +1012,7 @@ endif
source "package/dnsmasq/Config.in"
source "package/dropbear/Config.in"
source "package/ebtables/Config.in"
+ source "package/ejabberd/Config.in"
source "package/ethtool/Config.in"
source "package/faifa/Config.in"
source "package/fmc/Config.in"
diff --git a/package/ejabberd/0001-remove-deps.patch b/package/ejabberd/0001-remove-deps.patch
new file mode 100644
index 0000000..1982ca8
--- /dev/null
+++ b/package/ejabberd/0001-remove-deps.patch
@@ -0,0 +1,20 @@
+Description: remove make targets for deps
+ Without this patch, dependencies would be downloaded and compiled
+ using rebar at build time.
+Author: Philipp Huebner <debalance@debian.org>
+
+Index: ejabberd/rebar.config.script
+===================================================================
+--- ejabberd.orig/rebar.config.script
++++ ejabberd/rebar.config.script
+@@ -126,9 +126,7 @@ Config = [{erl_opts, Macros ++ HiPE ++ D
+ {sub_dirs, ["rel"]},
+ {keep_build_info, true},
+ {ct_extra_params, "-include "
+- ++ filename:join([Cwd, "tools"])},
+- {post_hooks, PostHooks ++ CfgPostHooks},
+- {deps, Deps ++ CfgDeps}],
++ ++ filename:join([Cwd, "tools"])}],
+ %%io:format("ejabberd configuration:~n ~p~n", [Config]),
+ Config.
+
diff --git a/package/ejabberd/0002-disable-rebar-deps.patch b/package/ejabberd/0002-disable-rebar-deps.patch
new file mode 100644
index 0000000..80217ca
--- /dev/null
+++ b/package/ejabberd/0002-disable-rebar-deps.patch
@@ -0,0 +1,70 @@
+Description: remove make targets for deps
+ Without this patch, dependencies would be downloaded and compiled
+ using rebar at build time.
+Author: Philipp Huebner <debalance@debian.org>
+
+Index: ejabberd/Makefile.in
+===================================================================
+--- ejabberd.orig/Makefile.in
++++ ejabberd/Makefile.in
+@@ -68,26 +68,11 @@ else
+ INIT_USER=$(INSTALLUSER)
+ endif
+
+-all: deps src
++all: src
+
+-deps: deps/.got
+-
+-deps/.got:
+- rm -rf deps/.got
+- rm -rf deps/.built
+- $(REBAR) get-deps && :> deps/.got
+-
+-deps/.built: deps/.got
+- $(REBAR) compile && :> deps/.built
+-
+-src: deps/.built
++src:
+ $(REBAR) skip_deps=true compile
+
+-update:
+- rm -rf deps/.got
+- rm -rf deps/.built
+- $(REBAR) update-deps && :> deps/.got
+-
+ translations:
+ contrib/extract_translations/prepare-translation.sh -updateall
+
+@@ -103,8 +88,6 @@ spec:
+ $(ERL) -noinput +B -pa ebin -pa deps/*/ebin -eval \
+ 'case xml_gen:compile("tools/xmpp_codec.spec") of ok -> halt(0); _ -> halt(1) end.'
+
+-DLLs := $(wildcard deps/*/priv/*.so) $(wildcard deps/*/priv/lib/*.so)
+-
+ install: all
+ #
+ # Configuration files
+@@ -139,14 +122,11 @@ install: all
+ $(INSTALL) -d $(BEAMDIR)
+ $(INSTALL) -m 644 ebin/*.app $(BEAMDIR)
+ $(INSTALL) -m 644 ebin/*.beam $(BEAMDIR)
+- $(INSTALL) -m 644 deps/*/ebin/*.app $(BEAMDIR)
+- $(INSTALL) -m 644 deps/*/ebin/*.beam $(BEAMDIR)
+ rm -f $(BEAMDIR)/configure.beam
+ #
+ # ejabberd header files
+ $(INSTALL) -d $(INCLUDEDIR)
+ $(INSTALL) -m 644 include/*.hrl $(INCLUDEDIR)
+- $(INSTALL) -m 644 deps/*/include/*.hrl $(INCLUDEDIR)
+ #
+ # Binary C programs
+ $(INSTALL) -d $(PBINDIR)
+@@ -156,7 +136,6 @@ install: all
+ #
+ # Binary system libraries
+ $(INSTALL) -d $(SODIR)
+- $(INSTALL) -m 644 $(DLLs) $(SODIR)
+ #
+ # Translated strings
+ $(INSTALL) -d $(MSGSDIR)
diff --git a/package/ejabberd/0003-disable-test.patch b/package/ejabberd/0003-disable-test.patch
new file mode 100644
index 0000000..4354ab6
--- /dev/null
+++ b/package/ejabberd/0003-disable-test.patch
@@ -0,0 +1,21 @@
+Description: remove testing with MySQL and PostgreSQL
+ Without this patch a test would be initiated after building ejabberd that
+ requires specially configured instances of MySQL and PostgreSQL to be up
+ and running.
+Author: Philipp Huebner <debalance@debian.org>
+
+Index: ejabberd/Makefile.in
+===================================================================
+--- ejabberd.orig/Makefile.in
++++ ejabberd/Makefile.in
+@@ -260,10 +260,6 @@ dialyzer: erlang_plt deps_plt ejabberd_p
+ status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
+
+ test:
+- @echo "************************** NOTICE ***************************************"
+- @cat test/README
+- @echo "*************************************************************************"
+- $(REBAR) skip_deps=true ct
+
+ .PHONY: src doc edoc dialyzer Makefile TAGS clean clean-rel distclean rel \
+ install uninstall uninstall-binary uninstall-all translations deps test spec \
diff --git a/package/ejabberd/0004-disable-version-check.patch b/package/ejabberd/0004-disable-version-check.patch
new file mode 100644
index 0000000..f2f1e81
--- /dev/null
+++ b/package/ejabberd/0004-disable-version-check.patch
@@ -0,0 +1,20 @@
+Description: remove checking erlang version
+ Without this patch, the configure will try to run erlang to simply check if
+ the version is supported by ejabberd. Instead, we do this test statically.
+Author: Johan Oudinet <johan.oudinet@gmail.com>
+
+Index: ejabberd/configure.ac
+===================================================================
+--- ejabberd.orig/configure.ac 2014-10-20 11:04:14.751256865 +0200
++++ ejabberd/configure.ac 2014-10-20 11:03:47.983578623 +0200
+@@ -37,10 +37,8 @@ AC_ARG_ENABLE(erlang-version-check,
+ [Check Erlang/OTP version @<:@default=yes@:>@])])
+ case "$enable_erlang_version_check" in
+ yes|'')
+- ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX])
+ ;;
+ no)
+- ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX],[warn])
+ ;;
+ esac
+
diff --git a/package/ejabberd/0005-fix-includes.patch b/package/ejabberd/0005-fix-includes.patch
new file mode 100644
index 0000000..27ad761
--- /dev/null
+++ b/package/ejabberd/0005-fix-includes.patch
@@ -0,0 +1,45 @@
+Description: correct include
+ This part of the code was moved into it's own project and was packaged
+ separately by me. To make the build process work, this small fix is
+ necessary.
+Author: Philipp Huebner <debalance@debian.org>
+
+Index: ejabberd/src/mod_sip_proxy.erl
+===================================================================
+--- ejabberd.orig/src/mod_sip_proxy.erl
++++ ejabberd/src/mod_sip_proxy.erl
+@@ -21,7 +21,7 @@
+
+ -include("ejabberd.hrl").
+ -include("logger.hrl").
+--include_lib("esip/include/esip.hrl").
++-include_lib("p1_sip/include/esip.hrl").
+
+ -define(SIGN_LIFETIME, 300). %% in seconds.
+
+Index: ejabberd/src/mod_sip.erl
+===================================================================
+--- ejabberd.orig/src/mod_sip.erl
++++ ejabberd/src/mod_sip.erl
+@@ -20,7 +20,7 @@
+
+ -include("ejabberd.hrl").
+ -include("logger.hrl").
+--include_lib("esip/include/esip.hrl").
++-include_lib("p1_sip/include/esip.hrl").
+
+ %%%===================================================================
+ %%% API
+Index: ejabberd/src/mod_sip_registrar.erl
+===================================================================
+--- ejabberd.orig/src/mod_sip_registrar.erl
++++ ejabberd/src/mod_sip_registrar.erl
+@@ -20,7 +20,7 @@
+
+ -include("ejabberd.hrl").
+ -include("logger.hrl").
+--include_lib("esip/include/esip.hrl").
++-include_lib("p1_sip/include/esip.hrl").
+
+ -define(CALL_TIMEOUT, timer:seconds(30)).
+ -define(DEFAULT_EXPIRES, 3600).
diff --git a/package/ejabberd/0006-remove-doc.patch b/package/ejabberd/0006-remove-doc.patch
new file mode 100644
index 0000000..0c0a21b
--- /dev/null
+++ b/package/ejabberd/0006-remove-doc.patch
@@ -0,0 +1,26 @@
+Description: remove installing documentation
+ Without this patch, the Makefile will try to install ejabberd
+ documentation even if it is not generated, which will fail.
+Author: Johan Oudinet <johan.oudinet@gmail.com>
+
+Index: ejabberd/Makefile.in
+===================================================================
+--- ejabberd.orig/Makefile.in 2014-10-21 16:43:42.604972005 +0200
++++ ejabberd/Makefile.in 2014-10-21 16:45:12.419989667 +0200
+@@ -156,16 +156,6 @@ install: all
+ $(INSTALL) -d -m 750 $(O_USER) $(LOGDIR)
+ $(CHOWN_COMMAND) -R @INSTALLUSER@ $(LOGDIR) >$(CHOWN_OUTPUT)
+ chmod -R 750 $(LOGDIR)
+- #
+- # Documentation
+- $(INSTALL) -d $(DOCDIR)
+- $(INSTALL) -m 644 doc/dev.html $(DOCDIR)
+- $(INSTALL) -m 644 doc/guide.html $(DOCDIR)
+- $(INSTALL) -m 644 doc/*.png $(DOCDIR)
+- [ -f doc/guide.pdf ] \
+- && $(INSTALL) -m 644 doc/guide.pdf $(DOCDIR) \
+- || echo "No doc/guide.pdf was built"
+- $(INSTALL) -m 644 COPYING $(DOCDIR)
+
+ uninstall: uninstall-binary
+
diff --git a/package/ejabberd/0007-fix-init.patch b/package/ejabberd/0007-fix-init.patch
new file mode 100644
index 0000000..7a46f78
--- /dev/null
+++ b/package/ejabberd/0007-fix-init.patch
@@ -0,0 +1,99 @@
+Description: adjust initscript template
+ Some tweaks to the initscript template are needed for Debian packaging to work
+ and to follow policy.
+Author: Philipp Huebner <debalance@debian.org>
+
+Index: ejabberd/ejabberd.init.template
+===================================================================
+--- ejabberd.orig/ejabberd.init.template
++++ ejabberd/ejabberd.init.template
+@@ -16,34 +16,52 @@
+
+ set -o errexit
+
+-DIR=@ctlscriptpath@
++. /lib/lsb/init-functions
++
++DIR=/usr/sbin
+ CTL="$DIR"/ejabberdctl
+-USER=@installuser@
++USER=ejabberd
++EJABBERDRUN=/var/run/ejabberd
+
+ test -x "$CTL" || {
+ echo "ERROR: ejabberd not found: $DIR"
+ exit 1
+ }
+-grep ^"$USER": /etc/passwd >/dev/null || {
+- echo "ERROR: System user not found: $USER"
+- exit 2
++
++mkrundir()
++{
++ if [ ! -d $EJABBERDRUN ]; then
++ mkdir -p $EJABBERDRUN
++ if [ $? -ne 0 ]; then
++ echo -n " failed"
++ return
++ fi
++ chmod 0755 $EJABBERDRUN
++ chown ejabberd:ejabberd $EJABBERDRUN
++ fi
+ }
+
++
+ export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
+
+ case "$1" in
+ start)
+ test -x "$CTL" || exit 0
++ mkrundir
+ echo "Starting ejabberd..."
+- su - $USER -c "$CTL start"
+- su - $USER -c "$CTL started"
++ if ! /etc/init.d/ejabberd status > /dev/null; then
++ su - $USER -c "$CTL start"
++ su - $USER -c "$CTL started"
++ fi
+ echo "done."
+ ;;
+ stop)
+ test -x "$CTL" || exit 0
+ echo "Stopping ejabberd..."
+- su - $USER -c "$CTL stop"
+- su - $USER -c "$CTL stopped"
++ if $CTL status >/dev/null || test $? = 1 ; then
++ su - $USER -c "$CTL stop"
++ su - $USER -c "$CTL stopped"
++ fi
+ echo "done."
+ ;;
+ status)
+Index: ejabberd/ejabberdctl.template
+===================================================================
+--- ejabberd.orig/ejabberdctl.template
++++ ejabberd/ejabberdctl.template
+@@ -7,12 +7,12 @@ ERL_MAX_PORTS=32000
+ ERL_PROCESSES=250000
+ ERL_MAX_ETS_TABLES=1400
+ FIREWALL_WINDOW=""
+-ERLANG_NODE=ejabberd at localhost
++ERLANG_NODE=ejabberd
+
+ # define default environment variables
+ SCRIPT_DIR=`cd ${0%/*} && pwd`
+ ERL={{erl}}
+-INSTALLUSER={{installuser}}
++INSTALLUSER=ejabberd
+
+ # Compatibility in ZSH
+ #setopt shwordsplit 2>/dev/null
+@@ -22,7 +22,7 @@ if [ "$INSTALLUSER" != "" ] ; then
+ EXEC_CMD="false"
+ for GID in `id -G`; do
+ if [ $GID -eq 0 ] ; then
+- EXEC_CMD="su $INSTALLUSER -p -c"
++ EXEC_CMD="su $INSTALLUSER -c"
+ fi
+ done
+ if [ `id -g` -eq `id -g $INSTALLUSER` ] ; then
diff --git a/package/ejabberd/0008-fix-install-permissions.patch b/package/ejabberd/0008-fix-install-permissions.patch
new file mode 100644
index 0000000..b4633aa
--- /dev/null
+++ b/package/ejabberd/0008-fix-install-permissions.patch
@@ -0,0 +1,76 @@
+Description: fix install permissions
+ Without this patch, the makefile will try to install directories and
+ files with incompatible permissions for ejabberd, which run as an
+ ejabberd user.
+Author: Johan Oudinet <johan.oudinet@gmail.com>
+
+Index: ejabberd/Makefile.in
+===================================================================
+--- ejabberd.orig/Makefile.in 2014-10-28 12:36:49.228713322 +0100
++++ ejabberd/Makefile.in 2014-10-28 13:53:13.538888807 +0100
+@@ -91,10 +91,10 @@ spec:
+ install: all
+ #
+ # Configuration files
+- $(INSTALL) -d -m 750 $(G_USER) $(ETCDIR)
++ $(INSTALL) -d $(ETCDIR)
+ [ -f $(ETCDIR)/ejabberd.yml ] \
+- && $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml-new \
+- || $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml
++ && $(INSTALL) -b -m 644 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml-new \
++ || $(INSTALL) -b -m 644 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml
+ $(SED) -e "s*{{rootdir}}*@prefix@*" \
+ -e "s*{{installuser}}*@INSTALLUSER@*" \
+ -e "s*{{libdir}}*@libdir@*" \
+@@ -104,13 +104,12 @@ install: all
+ -e "s*{{erl}}*@ERL@*" ejabberdctl.template \
+ > ejabberdctl.example
+ [ -f $(ETCDIR)/ejabberdctl.cfg ] \
+- && $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
+- || $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
++ && $(INSTALL) -b -m 644 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
++ || $(INSTALL) -b -m 644 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
+ $(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc
+ #
+ # Administration script
+- [ -d $(SBINDIR) ] || $(INSTALL) -d -m 755 $(SBINDIR)
+- $(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl
++ $(INSTALL) -D ejabberdctl.example $(SBINDIR)/ejabberdctl
+ #
+ # Init script
+ $(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*" \
+@@ -129,10 +128,7 @@ install: all
+ $(INSTALL) -m 644 include/*.hrl $(INCLUDEDIR)
+ #
+ # Binary C programs
+- $(INSTALL) -d $(PBINDIR)
+- $(INSTALL) -m 750 $(O_USER) tools/captcha.sh $(PBINDIR)
+- -[ -f deps/p1_pam/priv/bin/epam ] \
+- && $(INSTALL) -m 750 $(O_USER) deps/p1_pam/priv/bin/epam $(PBINDIR)
++ $(INSTALL) -D tools/captcha.sh $(PBINDIR)/captcha.sh
+ #
+ # Binary system libraries
+ $(INSTALL) -d $(SODIR)
+@@ -140,22 +136,6 @@ install: all
+ # Translated strings
+ $(INSTALL) -d $(MSGSDIR)
+ $(INSTALL) -m 644 priv/msgs/*.msg $(MSGSDIR)
+- #
+- # Spool directory
+- $(INSTALL) -d -m 750 $(O_USER) $(SPOOLDIR)
+- $(CHOWN_COMMAND) -R @INSTALLUSER@ $(SPOOLDIR) >$(CHOWN_OUTPUT)
+- chmod -R 750 $(SPOOLDIR)
+- [ ! -f $(COOKIEFILE) ] || { $(CHOWN_COMMAND) @INSTALLUSER@ $(COOKIEFILE) >$(CHOWN_OUTPUT) ; chmod 400 $(COOKIEFILE) ; }
+- #
+- # ejabberdctl lock directory
+- $(INSTALL) -d -m 750 $(O_USER) $(CTLLOCKDIR)
+- $(CHOWN_COMMAND) -R @INSTALLUSER@ $(CTLLOCKDIR) >$(CHOWN_OUTPUT)
+- chmod -R 750 $(CTLLOCKDIR)
+- #
+- # Log directory
+- $(INSTALL) -d -m 750 $(O_USER) $(LOGDIR)
+- $(CHOWN_COMMAND) -R @INSTALLUSER@ $(LOGDIR) >$(CHOWN_OUTPUT)
+- chmod -R 750 $(LOGDIR)
+
+ uninstall: uninstall-binary
+
diff --git a/package/ejabberd/Config.in b/package/ejabberd/Config.in
new file mode 100644
index 0000000..2a8d274
--- /dev/null
+++ b/package/ejabberd/Config.in
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_EJABBERD
+ bool "ejabberd"
+ depends on BR2_PACKAGE_ERLANG
+ select BR2_PACKAGE_ERLANG_LAGER
+ select BR2_PACKAGE_ERLANG_P1_CACHE_TAB
+ select BR2_PACKAGE_ERLANG_P1_ICONV
+ select BR2_PACKAGE_ERLANG_P1_SIP
+ select BR2_PACKAGE_ERLANG_P1_STRINGPREP
+ select BR2_PACKAGE_ERLANG_P1_XML
+ select BR2_PACKAGE_ERLANG_P1_YAML
+ select BR2_PACKAGE_ERLANG_P1_ZLIB
+ select BR2_PACKAGE_OPENSSL
+ help
+ Ejabberd is a Jabber/XMPP instant messaging server, written
+ in Erlang/OTP. Among other features, ejabberd is
+ cross-platform, fault-tolerant, clusterable and modular.
+
+ http://www.ejabberd.im
+
+comment "Ejabberd needs a toolchain w/ Erlang"
+ depends on !BR2_PACKAGE_ERLANG
diff --git a/package/ejabberd/S50ejabberd b/package/ejabberd/S50ejabberd
new file mode 100644
index 0000000..2656307
--- /dev/null
+++ b/package/ejabberd/S50ejabberd
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Start/stop ejabberd
+#
+
+USER=ejabberd
+RUNDIR=/var/run/ejabberd
+
+mkrundir() {
+ install -d -o $USER -g $USER $RUNDIR
+}
+
+case "$1" in
+ start)
+ mkrundir
+ echo "Starting ejabberd..."
+ ejabberdctl start
+ ;;
+ stop)
+ echo -n "Stopping ejabberd... "
+ ejabberdctl stop > /dev/null
+ if [ $? -eq 3 ] || ejabberdctl stopped; then
+ echo "OK"
+ else
+ echo "failed"
+ fi
+ ;;
+ restart|reload)
+ "$0" stop
+ "$0" start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
diff --git a/package/ejabberd/check-erlang-lib b/package/ejabberd/check-erlang-lib
new file mode 100755
index 0000000..63f8bf1
--- /dev/null
+++ b/package/ejabberd/check-erlang-lib
@@ -0,0 +1,55 @@
+#!/bin/sh -e
+# Helper to bypass AC_ERLANG_CHECK_LIB
+#
+# Ejabberd releases do not download specific versions of its erlang
+# dependencies. Instead, it clones the master branch of a git
+# repository and asks erl to provide the library version. However,
+# the target erl program cannot be called from the host. So, this
+# script aims at finding the library version installed on the target,
+# without calling erlang.
+
+usage() {
+ cat <<EOF
+Usage:
+ $0 library
+Look for Erlang's library in TARGET_DIR/usr/lib/erlang/lib.
+
+If the library is found, it returns the path to the latest version,
+relative to TARGET_DIR. Otherwise, it returns "not found".
+
+If there are several versions, it returns an error because it does not
+know which one Erlang uses.
+
+EOF
+}
+
+die () {
+ echo "$@" >&2
+ exit 1
+}
+
+if [ $# -ne 1 ]; then
+ usage
+ exit 0
+else
+ library="$1"
+fi
+
+target_dir="${TARGET_DIR:-output/target}"
+
+[ -d "$target_dir" ] || die "TARGET_DIR is not a directory. Please \
+specify the TARGET_DIR environment variable."
+
+case "$(ls -1d -- "$target_dir/usr/lib/erlang/lib/$library-"* | wc -l)" in
+ 0)
+ echo "not found"
+ ;;
+ 1)
+ echo "$target_dir/usr/lib/erlang/lib/$library-"* \
+ | sed -e "s,^$target_dir,,"
+ ;;
+ *)
+ die "Several versions of $library have been found. Please \
+ remove the unused ones."
+ ;;
+esac
diff --git a/package/ejabberd/ejabberd.mk b/package/ejabberd/ejabberd.mk
new file mode 100644
index 0000000..c8193fd
--- /dev/null
+++ b/package/ejabberd/ejabberd.mk
@@ -0,0 +1,51 @@
+################################################################################
+#
+# ejabberd
+#
+################################################################################
+
+EJABBERD_VERSION = 14.07
+EJABBERD_SITE = $(call github,processone,ejabberd,$(EJABBERD_VERSION))
+EJABBERD_LICENSE = GPLv2+
+EJABBERD_LICENSE_FILES = COPYING
+EJABBERD_DEPENDENCIES = openssl erlang host-erlang-lager erlang-lager \
+ erlang-p1-cache-tab erlang-p1-iconv erlang-p1-sip \
+ erlang-p1-stringprep erlang-p1-xml erlang-p1-yaml erlang-p1-zlib
+
+EJABBERD_AUTORECONF = YES
+
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+EJABBERD_DEPENDENCIES += linux-pam
+endif
+
+EJABBERD_ERLANG_LIBS = sasl crypto public_key ssl mnesia inets compiler
+
+# Guess answers for these tests, configure will bail out otherwise
+# saying error: cannot run test program while cross compiling.
+EJABBERD_CONF_ENV = \
+ ac_cv_erlang_root_dir='$(HOST_DIR)/usr/lib/erlang' \
+ $(foreach lib, $(EJABBERD_ERLANG_LIBS), \
+ ac_cv_erlang_lib_dir_$(lib)='$(shell package/ejabberd/check-erlang-lib $(lib))')
+
+define EJABBERD_INSTALL_TARGET_CMDS
+ $(TARGET_MAKE_ENV) $(EJABBERD_MAKE_ENV) \
+ $(MAKE) DESTDIR=$(TARGET_DIR) install -C $(@D)
+endef
+
+# Delete HOST_DIR prefix from ERL path in ejabberctl script.
+define EJABBERD_FIX_EJABBERDCTL
+ $(SED) 's,ERL=$(HOST_DIR),ERL=,' '$(TARGET_DIR)/usr/sbin/ejabberdctl'
+endef
+
+EJABBERD_POST_INSTALL_TARGET_HOOKS += EJABBERD_FIX_EJABBERDCTL
+
+define EJABBERD_USERS
+ejabberd -1 ejabberd -1 * /var/lib/ejabberd /bin/sh - ejabberd daemon
+endef
+
+define EJABBERD_INSTALL_INIT_SYSV
+ $(INSTALL) -D -m 0755 package/ejabberd/S50ejabberd \
+ $(TARGET_DIR)/etc/init.d/S50ejabberd
+endef
+
+$(eval $(rebar-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
end of thread, other threads:[~2014-10-28 13:33 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-28 13:33 [Buildroot] [PATCH 00/15] ejabberd: XMPP server Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 01/15] package/pkg-autotools.mk: Factorize hooks Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 02/15] rebar package infrastructure: new infrastructure Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 03/15] erlang-goldrush: new package Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 04/15] erlang-lager: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 05/15] erlang-p1-zlib: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 06/15] erlang-p1-yaml: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 07/15] erlang-p1-xml: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 08/15] erlang-p1-utils: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 09/15] erlang-p1-tls: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 10/15] erlang-p1-stun: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 11/15] erlang-p1-stringprep: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 12/15] erlang-p1-sip: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 13/15] erlang-p1-iconv: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 14/15] erlang-p1-cache-tab: " Johan Oudinet
2014-10-28 13:33 ` [Buildroot] [PATCH 15/15] ejabberd: " Johan Oudinet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox