* [Buildroot] [PATCH 01/24 v3] pkg-autotools: move common macros
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 02/24 v3] pkg-autotools: re-order cleaning up the host dependencies Yann E. MORIN
` (23 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Currently, the common macros used for the various hooks are defined for
each and every autotools packages, even though the macros are completely
generic.
Besides being completely useless, it tends to slow down make, as the
variables are redefined over and over again.
Move their definitions out of inner-autotools-package.
Note: we remove the double-$ because we no longer are in a
define-in-a-define block, just a define block.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
[yann.morin.1998 at free.fr: split the patch into semantically separate
patches]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
package/pkg-autotools.mk | 116 +++++++++++++++++++++++------------------------
1 file changed, 58 insertions(+), 58 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 09f9412..60f6997 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -46,6 +46,64 @@ endef
# $(call AUTOCONF_AC_CHECK_FILE_VAL,/dev/random)=yes
AUTOCONF_AC_CHECK_FILE_VAL = ac_cv_file_$(subst -,_,$(subst /,_,$(subst .,_,$(1))))
+#
+# 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")
+ 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
+
+#
+# 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
+
################################################################################
# inner-autotools-package -- defines how the configuration, compilation and
# installation of an autotools package should be done, implements a
@@ -183,71 +241,13 @@ 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
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 02/24 v3] pkg-autotools: re-order cleaning up the host dependencies
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 01/24 v3] pkg-autotools: move common macros Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 03/24 v3] pkg-autotools: commonalise the libtool patching code Yann E. MORIN
` (22 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Move the host dependencies cleanup out from in-between all the hooks, so
it is easier to see how the hooks all work together.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Johan Oudinet <johan.oudinet@gmail.com>
---
package/pkg-autotools.mk | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 60f6997..6e198ed 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -169,6 +169,14 @@ $(2)_INSTALL_OPTS ?= install
$(2)_INSTALL_STAGING_OPTS ?= DESTDIR=$$(STAGING_DIR) install
$(2)_INSTALL_TARGET_OPTS ?= DESTDIR=$$(TARGET_DIR) install
+# 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
+ifeq ($(4),host)
+$(2)_DEPENDENCIES ?= $$(filter-out host-automake host-autoconf host-libtool \
+ host-gettext host-toolchain $(1),\
+ $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
+endif
#
# Configure step. Only define it if not already defined by the package
@@ -248,15 +256,6 @@ ifneq ($$($(2)_LIBTOOL_PATCH),NO)
$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK
endif
-# 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
-ifeq ($(4),host)
-$(2)_DEPENDENCIES ?= $$(filter-out host-automake host-autoconf host-libtool \
- host-gettext host-toolchain $(1),\
- $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
-endif
-
ifeq ($$($(2)_AUTORECONF),YES)
# This has to come before autoreconf
ifeq ($$($(2)_GETTEXTIZE),YES)
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 03/24 v3] pkg-autotools: commonalise the libtool patching code
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 01/24 v3] pkg-autotools: move common macros Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 02/24 v3] pkg-autotools: re-order cleaning up the host dependencies Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 04/24 v3] pkg-autotools: move the libtool patching call out of the autoreconf hook Yann E. MORIN
` (21 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Currently, the heuristic to patch libtool scripts is duplicated both in
the libtool post-patch hook and the autoreconf pre-configure hook.
Move that code into a single function that gets called from both hooks.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
[yann.morin.1998 at free.fr: split the patch into semantically separate
patches]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
package/pkg-autotools.mk | 53 +++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 28 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 6e198ed..393f995 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -36,6 +36,29 @@ define CONFIG_UPDATE
done
endef
+#
+# Utility function to patch the libtool files
+#
+# argument 1 : directory into which to search for libtool scripts to patch.
+# Note that libtool scripts are searched for recursively in this directory
+#
+define PATCH_LIBTOOL
+ @$(call MESSAGE,"Patching libtool")
+ $(Q)if test "$($(PKG)_LIBTOOL_PATCH)" = "YES" ]; then \
+ for i in `find $(1) -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 function generates the ac_cv_file_<foo> value for a given
# filename. This is needed to convince configure script doing
# AC_CHECK_FILE() tests that the file actually exists, since such
@@ -58,21 +81,7 @@ endef
# Hook to patch libtool to make it work properly for cross-compilation
#
define LIBTOOL_PATCH_HOOK
- @$(call MESSAGE,"Patching libtool")
- 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
+ $(call PATCH_LIBTOOL,$($(PKG)_SRCDIR))
endef
#
@@ -89,19 +98,7 @@ endef
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
+ $(call PATCH_LIBTOOL,$($(PKG)_SRCDIR))
endef
################################################################################
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 04/24 v3] pkg-autotools: move the libtool patching call out of the autoreconf hook
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (2 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 03/24 v3] pkg-autotools: commonalise the libtool patching code Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 05/24 v3] pkg-autotools: remove redundant shell conditional Yann E. MORIN
` (20 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Call it as a standalone hook, like is done for post-patch.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
[yann.morin.1998 at free.fr: split the patch into semantically separate
patches]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
package/pkg-autotools.mk | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 393f995..45947b0 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -98,7 +98,6 @@ endef
define AUTORECONF_HOOK
@$(call MESSAGE,"Autoreconfiguring")
$(Q)cd $($(PKG)_SRCDIR) && $($(PKG)_AUTORECONF_ENV) $(AUTORECONF) $($(PKG)_AUTORECONF_OPTS)
- $(call PATCH_LIBTOOL,$($(PKG)_SRCDIR))
endef
################################################################################
@@ -260,6 +259,10 @@ $(2)_PRE_CONFIGURE_HOOKS += GETTEXTIZE_HOOK
$(2)_DEPENDENCIES += host-gettext
endif
$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK
+# default values are not evaluated yet, so don't rely on this defaulting to YES
+ifneq ($$($(2)_LIBTOOL_PATCH),NO)
+$(2)_PRE_CONFIGURE_HOOKS += LIBTOOL_PATCH_HOOK
+endif
$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool
endif
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 05/24 v3] pkg-autotools: remove redundant shell conditional
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (3 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 04/24 v3] pkg-autotools: move the libtool patching call out of the autoreconf hook Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 06/24 v3] pkg-autotools: fold the libtool patching code directly into the hook Yann E. MORIN
` (19 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
The libtool patching function checks whether patching libtool is wanted
before doing the actual patching.
This is redundant now, as all callers are now protected by a conditional
block.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Johan Oudinet <johan.oudinet@gmail.com>
---
package/pkg-autotools.mk | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 45947b0..e240b95 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -44,19 +44,17 @@ endef
#
define PATCH_LIBTOOL
@$(call MESSAGE,"Patching libtool")
- $(Q)if test "$($(PKG)_LIBTOOL_PATCH)" = "YES" ]; then \
- for i in `find $(1) -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
+ $(Q)for i in `find $(1) -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
endef
# This function generates the ac_cv_file_<foo> value for a given
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 06/24 v3] pkg-autotools: fold the libtool patching code directly into the hook
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (4 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 05/24 v3] pkg-autotools: remove redundant shell conditional Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 07/24 v3] pkg-autotools: only apply libtool patch at the right moment Yann E. MORIN
` (18 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
We now have only one caller of the libtool patching code, which is the
hook itself.
So, there is no longer any need to extract this code into a utility
function, and it can be folded into the hook itself.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Johan Oudinet <johan.oudinet@gmail.com>
---
package/pkg-autotools.mk | 34 ++++++++++++----------------------
1 file changed, 12 insertions(+), 22 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index e240b95..924816b 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -36,27 +36,6 @@ define CONFIG_UPDATE
done
endef
-#
-# Utility function to patch the libtool files
-#
-# argument 1 : directory into which to search for libtool scripts to patch.
-# Note that libtool scripts are searched for recursively in this directory
-#
-define PATCH_LIBTOOL
- @$(call MESSAGE,"Patching libtool")
- $(Q)for i in `find $(1) -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
-endef
-
# This function generates the ac_cv_file_<foo> value for a given
# filename. This is needed to convince configure script doing
# AC_CHECK_FILE() tests that the file actually exists, since such
@@ -79,7 +58,18 @@ endef
# Hook to patch libtool to make it work properly for cross-compilation
#
define LIBTOOL_PATCH_HOOK
- $(call PATCH_LIBTOOL,$($(PKG)_SRCDIR))
+ @$(call MESSAGE,"Patching libtool")
+ $(Q)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
endef
#
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 07/24 v3] pkg-autotools: only apply libtool patch at the right moment
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (5 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 06/24 v3] pkg-autotools: fold the libtool patching code directly into the hook Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 08/24 v3] package/erlang: export EI_VSN so other packages can use it Yann E. MORIN
` (17 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Currently, we apply the libtool patch at post-patch time, always. If we
need to autoreconf, we also apply it after autoreconf is done.
Obviously, in that second casse, we do not need to apply it at
post-patch time. This has no impact on the result, as autoreconf will
overwrite the just patched files, and they will be patched yet again.
But it is not nice to the user that will see a double "Patching libtool"
message.
So, we apply the libtool patch at post-patch time only if we are not
autoreconfiguring the package.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Johan Oudinet <johan.oudinet@gmail.com>
---
package/pkg-autotools.mk | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index 924816b..ad2d1a6 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -235,12 +235,8 @@ endif
$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
-# 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
-
ifeq ($$($(2)_AUTORECONF),YES)
+
# This has to come before autoreconf
ifeq ($$($(2)_GETTEXTIZE),YES)
$(2)_PRE_CONFIGURE_HOOKS += GETTEXTIZE_HOOK
@@ -252,6 +248,14 @@ ifneq ($$($(2)_LIBTOOL_PATCH),NO)
$(2)_PRE_CONFIGURE_HOOKS += LIBTOOL_PATCH_HOOK
endif
$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool
+
+else # ! AUTORECONF = YES
+
+# 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
#
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 08/24 v3] package/erlang: export EI_VSN so other packages can use it
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (6 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 07/24 v3] pkg-autotools: only apply libtool patch at the right moment Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 09/24 v3] package/erlang-rebar: new host package Yann E. MORIN
` (16 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Packages that depend on Erlang may need the Erlang Interface Version
(aka EI_VSN), so just export it.
We do export a static value instead of looking in the file, to avoid
spawning a shell every time the variable is dereferenced.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Johan Oudinet <johan.oudinet@gmail.com>
---
package/erlang/erlang.mk | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/package/erlang/erlang.mk b/package/erlang/erlang.mk
index e6899de..f4687e4 100644
--- a/package/erlang/erlang.mk
+++ b/package/erlang/erlang.mk
@@ -4,6 +4,7 @@
#
################################################################################
+# See note below when updating Erlang
ERLANG_VERSION = 17.3
ERLANG_SITE = http://www.erlang.org/download
ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
@@ -13,6 +14,10 @@ ERLANG_LICENSE = EPL
ERLANG_LICENSE_FILES = EPLICENCE
ERLANG_INSTALL_STAGING = YES
+# Whenever updating Erlang, this value should be updated as well, to the
+# value of EI_VSN in the file lib/erl_interface/vsn.mk
+ERLANG_EI_VSN = 3.7.18
+
# The configure checks for these functions fail incorrectly
ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 09/24 v3] package/erlang-rebar: new host package
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (7 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 08/24 v3] package/erlang: export EI_VSN so other packages can use it Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 10/24 v3] package/pkg-rebar: new infrastructure Yann E. MORIN
` (15 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
rebar is used to compile Erlang packages.
We need host variant so as to be able to provide it to Erlang packages
that do not bundle their own version, or bundle a broken version.
Since this is a host-only package, used only internally, we do not
provide a Kconfig option for it. Packages that need it will depend on
it.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
[yann.morin.1998 at free.fr: extract host-rebar to its own patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
Changes v2 -> v3:
- fix dependencies (Arnout)
- fix download location
- add licencing info
- add comments
---
package/erlang-rebar/erlang-rebar.mk | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 package/erlang-rebar/erlang-rebar.mk
diff --git a/package/erlang-rebar/erlang-rebar.mk b/package/erlang-rebar/erlang-rebar.mk
new file mode 100644
index 0000000..f29eb75
--- /dev/null
+++ b/package/erlang-rebar/erlang-rebar.mk
@@ -0,0 +1,31 @@
+################################################################################
+#
+# erlang-rebar
+#
+################################################################################
+
+ERLANG_REBAR_VERSION = 2.5.1
+
+# Upstream publishes a release, but we can not use it as it is a release of
+# a generated rebar script, when we want the sources. So we have to use the
+# gihub helper in this case.
+ERLANG_REBAR_SITE = $(call github,rebar,rebar,$(ERLANG_REBAR_VERSION))
+
+# Although the file LICENSE state Apache-2.0, a lot (if not all) the files
+# in src/ bear the MIT licence.
+ERLANG_LICENSE = Apache-2.0, MIT
+ERLANG_LICENSE_FILES = LICENSE
+
+# We do not have a target variant, so just define the dependencies,
+# configure and build commands for the host variant.
+HOST_ERLANG_REBAR_DEPENDENCIES = host-erlang
+
+define HOST_ERLANG_REBAR_BUILD_CMDS
+ cd $(@D) && $(HOST_MAKE_ENV) $(MAKE)
+endef
+
+define HOST_ERLANG_REBAR_INSTALL_CMDS
+ $(INSTALL) -m 0755 -D $(@D)/rebar $(HOST_DIR)/usr/bin/rebar
+endef
+
+$(eval $(host-generic-package))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 10/24 v3] package/pkg-rebar: new infrastructure
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (8 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 09/24 v3] package/erlang-rebar: new host package Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 11/24 v3] docs/manual: add documentation for the pkg-rebar infrastructure Yann E. MORIN
` (14 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Ease the development of packages that use the erlang rebar tool as
their build system.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
[yann.morin.1998 at free.fr: split the patch into semantically separated
patches; large rewrites of the rest]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
Changes v2 -> v3:
- introduce two new options: ERLANG_FOO_CONFIGURE to use the autotools
infra (YES) or the generic infra (NO/empty) and ERLANG_FOO_HAS_REBAR
to use the package's rebar (YES) or our own (NO/empty)
- remove the duplicated code from the autotools infra
- largely re-organise the code and variables definitions
- move the EI_VSN setting into the elrnag package
- remove the script used to compute EI_VSN, as it is no longer needed
- split host-rebar to its own patch
- add some comments
---
package/Makefile.in | 1 +
package/pkg-rebar.mk | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 196 insertions(+)
create mode 100644 package/pkg-rebar.mk
diff --git a/package/Makefile.in b/package/Makefile.in
index df39afd..077851c 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -407,3 +407,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/pkg-rebar.mk b/package/pkg-rebar.mk
new file mode 100644
index 0000000..0358cc1
--- /dev/null
+++ b/package/pkg-rebar.mk
@@ -0,0 +1,195 @@
+################################################################################
+# 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.
+#
+################################################################################
+
+# 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 = $(HOST_DIR)/usr/share/rebar/deps
+REBAR_TARGET_DEPS_DIR = $(STAGING_DIR)/usr/share/rebar/deps
+
+################################################################################
+# 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).
+#
+# Note: calling this function must be done with $$(call ...) because it
+# expands package-related variables.
+#
+define install-erlang-directories
+ $(INSTALL) -d $(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).
+#
+# Note: calling this function must be done with $$(call ...) because it
+# expands package-related variables.
+#
+define install-rebar-deps
+ $(INSTALL) -d $($(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
+
+# Extract just the raw package name, lowercase without the leading
+# erlang- or host- prefix, as this is used by rebar to find the
+# dependencies a package specifies.
+#
+$(2)_ERLANG_APP = $(subst -,_,$(call LOWERCASE,$(patsubst ERLANG_%,%,$(3))))
+
+# Path where to store the package's libs, relative to either $(HOST_DIR)
+# for host packages, or $(STAGING_DIR) for target packages.
+#
+$(2)_ERLANG_LIBDIR = \
+ /usr/lib/erlang/lib/$$($$(PKG)_ERLANG_APP)-$$($$(PKG)_VERSION)
+
+# Whether to use the generic rebar or the package's rebar
+#
+ifeq ($$($(2)_HAS_REBAR),YES)
+$(2)_REBAR = ./rebar
+else
+$(2)_REBAR = rebar
+endif
+
+
+# Define the build and install commands
+#
+ifeq ($(4),target)
+
+ifeq ($$($(2)_CONFIGURE),YES)
+$(2)_CONF_ENV += \
+ ERL_COMPILER_OPTIONS='{i, "$$(REBAR_TARGET_DEPS_DIR)"}' \
+ ERL_EI_LIBDIR=$$(TARGET_DIR)/usr/lib/erlang/lib/erl_interface-$$(ERLANG_EI_VSN)/lib
+endif
+
+ifndef $(2)_BUILD_CMDS
+define $(2)_BUILD_CMDS
+ cd '$$(@D)'; \
+ $$($$(PKG)_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_TARGET_DEPS_DIR) compile
+endef
+endif
+
+# We need to double-$ the 'call' because it wants to expand
+# package-related variables
+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
+
+# We need to double-$ the 'call' because it wants to expand
+# package-related variables
+ifndef $(2)_INSTALL_TARGET_CMDS
+define $(2)_INSTALL_TARGET_CMDS
+ $$(call install-erlang-directories,$$(TARGET_DIR))
+endef
+endif
+
+else # !target
+
+ifeq ($$($(2)_CONFIGURE),YES)
+$(2)_CONF_ENV += \
+ ERL_COMPILER_OPTIONS='{i, "$$(REBAR_HOST_DEPS_DIR)"}' \
+ ERL_EI_LIBDIR=$$(HOST_DIR)/usr/lib/erlang/lib/erl_interface-$$(ERLANG_EI_VSN)/lib
+endif
+
+ifndef $(2)_BUILD_CMDS
+define $(2)_BUILD_CMDS
+ cd '$$(@D)'; \
+ $$($$(PKG)_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_HOST_DEPS_DIR) compile
+endef
+endif
+
+# We need to double-$ the 'call' because it wants to expand
+# package-related variables
+ifndef $(2)_INSTALL_CMDS
+define $(2)_INSTALL_CMDS
+ $$(call install-erlang-directories,$$(HOST_DIR),include)
+ $$(call install-rebar-deps,$$(HOST_DIR))
+endef
+endif
+
+endif # !target
+
+# The package sub-infra to use
+#
+ifeq ($$($(2)_CONFIGURE),YES)
+$(call inner-autotools-package,$(1),$(2),$(3),$(4))
+else
+$(call inner-generic-package,$(1),$(2),$(3),$(4))
+endif
+
+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)
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 11/24 v3] docs/manual: add documentation for the pkg-rebar infrastructure
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (9 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 10/24 v3] package/pkg-rebar: new infrastructure Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 12/24 v3] erlang-goldrush: new package Yann E. MORIN
` (13 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
[yann.morin.1998 at free.fr: split the doc into its own patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
docs/manual/adding-packages-rebar.txt | 157 ++++++++++++++++++++++++++++++++++
docs/manual/adding-packages.txt | 2 +
2 files changed, 159 insertions(+)
create mode 100644 docs/manual/adding-packages-rebar.txt
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[]
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 12/24 v3] erlang-goldrush: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (10 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 11/24 v3] docs/manual: add documentation for the pkg-rebar infrastructure Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:25 ` [Buildroot] [PATCH 13/24 v3] erlang-lager: " Yann E. MORIN
` (12 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 28cf703..b4eaf14 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -391,6 +391,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 13/24 v3] erlang-lager: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (11 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 12/24 v3] erlang-goldrush: new package Yann E. MORIN
@ 2014-11-12 0:25 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 14/24 v3] erlang-p1-zlib: " Yann E. MORIN
` (11 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:25 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 b4eaf14..c2c0381 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -394,6 +394,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 14/24 v3] erlang-p1-zlib: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (12 preceding siblings ...)
2014-11-12 0:25 ` [Buildroot] [PATCH 13/24 v3] erlang-lager: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 15/24 v3] erlang-p1-yaml: " Yann E. MORIN
` (10 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 c2c0381..f394e7d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 15/24 v3] erlang-p1-yaml: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (13 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 14/24 v3] erlang-p1-zlib: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 16/24 v3] erlang-p1-xml: " Yann E. MORIN
` (9 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 f394e7d..bd82388 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 16/24 v3] erlang-p1-xml: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (14 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 15/24 v3] erlang-p1-yaml: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 17/24 v3] erlang-p1-utils: " Yann E. MORIN
` (8 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 bd82388..da13e8b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 17/24 v3] erlang-p1-utils: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (15 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 16/24 v3] erlang-p1-xml: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 18/24 v3] erlang-p1-tls: " Yann E. MORIN
` (7 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 da13e8b..7f6fee9 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 18/24 v3] erlang-p1-tls: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (16 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 17/24 v3] erlang-p1-utils: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 19/24 v3] erlang-p1-stun: " Yann E. MORIN
` (6 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 7f6fee9..21c4071 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 19/24 v3] erlang-p1-stun: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (17 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 18/24 v3] erlang-p1-tls: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 20/24 v3] erlang-p1-stringprep: " Yann E. MORIN
` (5 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 21c4071..52c597a 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 20/24 v3] erlang-p1-stringprep: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (18 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 19/24 v3] erlang-p1-stun: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 21/24 v3] erlang-p1-sip: " Yann E. MORIN
` (4 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 52c597a..5656a1a 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 21/24 v3] erlang-p1-sip: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (19 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 20/24 v3] erlang-p1-stringprep: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 22/24 v3] erlang-p1-iconv: " Yann E. MORIN
` (3 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 5656a1a..8abd6a6 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 22/24 v3] erlang-p1-iconv: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (20 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 21/24 v3] erlang-p1-sip: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 23/24 v3] erlang-p1-cache-tab: " Yann E. MORIN
` (2 subsequent siblings)
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 8abd6a6..bda3674 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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..e810a9d
--- /dev/null
+++ b/package/erlang-p1-iconv/erlang-p1-iconv.mk
@@ -0,0 +1,17 @@
+################################################################################
+#
+# erlang-p1-iconv
+#
+################################################################################
+
+ERLANG_P1_ICONV_VERSION = dff5ee5
+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)
+ERLANG_P1_ICONV_DEPENDENCIES += libiconv
+endif
+
+$(eval $(rebar-package))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 23/24 v3] erlang-p1-cache-tab: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (21 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 22/24 v3] erlang-p1-iconv: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-12 0:26 ` [Buildroot] [PATCH 24/24 v3] ejabberd: " Yann E. MORIN
2014-11-22 20:19 ` [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Thomas Petazzoni
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 bda3674..84f919a 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -395,6 +395,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 24/24 v3] ejabberd: new package.
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (22 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 23/24 v3] erlang-p1-cache-tab: " Yann E. MORIN
@ 2014-11-12 0:26 ` Yann E. MORIN
2014-11-22 20:19 ` [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Thomas Petazzoni
24 siblings, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-11-12 0:26 UTC (permalink / raw)
To: buildroot
From: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
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 84f919a..1695cbe 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1015,6 +1015,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))
--
1.9.1
^ permalink raw reply related [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd)
2014-11-12 0:26 [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Yann E. MORIN
` (23 preceding siblings ...)
2014-11-12 0:26 ` [Buildroot] [PATCH 24/24 v3] ejabberd: " Yann E. MORIN
@ 2014-11-22 20:19 ` Thomas Petazzoni
2014-12-08 16:33 ` Johan Oudinet
24 siblings, 1 reply; 29+ messages in thread
From: Thomas Petazzoni @ 2014-11-22 20:19 UTC (permalink / raw)
To: buildroot
Yann, Johan,
On Wed, 12 Nov 2014 01:26:05 +0100, Yann E. MORIN wrote:
> ----------------------------------------------------------------
> Johan Oudinet (14):
> package/pkg-rebar: 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.
>
> Yann E. MORIN (10):
> pkg-autotools: move common macros
> pkg-autotools: re-order cleaning up the host dependencies
> pkg-autotools: commonalise the libtool patching code
> pkg-autotools: move the libtool patching call out of the autoreconf hook
> pkg-autotools: remove redundant shell conditional
> pkg-autotools: fold the libtool patching code directly into the hook
> pkg-autotools: only apply libtool patch at the right moment
I've applied all the pkg-autotools patches of this series. As discussed
on IRC, I've changed back the authorship of patches 1, 3, 4 to Johan,
who is actually the author of those patches.
I haven't yet looked at the rest of the series, but at least it's 7
less patches for you to carry in your branch.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 29+ messages in thread* [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd)
2014-11-22 20:19 ` [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd) Thomas Petazzoni
@ 2014-12-08 16:33 ` Johan Oudinet
2014-12-08 16:52 ` Thomas Petazzoni
2014-12-08 17:25 ` Yann E. MORIN
0 siblings, 2 replies; 29+ messages in thread
From: Johan Oudinet @ 2014-12-08 16:33 UTC (permalink / raw)
To: buildroot
Yann, Thomas, All,
On Sat, Nov 22, 2014 at 9:19 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> On Wed, 12 Nov 2014 01:26:05 +0100, Yann E. MORIN wrote:
>
>> ----------------------------------------------------------------
>> Johan Oudinet (14):
>> package/pkg-rebar: 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.
>>
>> Yann E. MORIN (10):
>> pkg-autotools: move common macros
>> pkg-autotools: re-order cleaning up the host dependencies
>> pkg-autotools: commonalise the libtool patching code
>> pkg-autotools: move the libtool patching call out of the autoreconf hook
>> pkg-autotools: remove redundant shell conditional
>> pkg-autotools: fold the libtool patching code directly into the hook
>> pkg-autotools: only apply libtool patch at the right moment
>
> I've applied all the pkg-autotools patches of this series. As discussed
> on IRC, I've changed back the authorship of patches 1, 3, 4 to Johan,
> who is actually the author of those patches.
>
> I haven't yet looked at the rest of the series, but at least it's 7
> less patches for you to carry in your branch.
Thanks Thomas for having applied these patches.
I've looked into Yann's branch and made some modifications to fix the
compilation and runtime errors.
I've also find out and fix the issue with erl_interface, which ld does
not find if we compile an erlang library after finalizing make once:
It's because rebar was looking for such libraries in $(TARGET_DIR)
instead of $(STAGING_DIR), and libraries in TARGET_DIR are deleted by
the target-finalize Makefile rule.
How should I share these modifications? I guess I cannot push to
Yann's git repository.
Should I send again a patch series, even though Yann has not finished
its review yet?
Best regards,
--
Johan
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd)
2014-12-08 16:33 ` Johan Oudinet
@ 2014-12-08 16:52 ` Thomas Petazzoni
2014-12-08 17:25 ` Yann E. MORIN
1 sibling, 0 replies; 29+ messages in thread
From: Thomas Petazzoni @ 2014-12-08 16:52 UTC (permalink / raw)
To: buildroot
Dear Johan Oudinet,
On Mon, 8 Dec 2014 17:33:13 +0100, Johan Oudinet wrote:
> I've looked into Yann's branch and made some modifications to fix the
> compilation and runtime errors.
> I've also find out and fix the issue with erl_interface, which ld does
> not find if we compile an erlang library after finalizing make once:
> It's because rebar was looking for such libraries in $(TARGET_DIR)
> instead of $(STAGING_DIR), and libraries in TARGET_DIR are deleted by
> the target-finalize Makefile rule.
> How should I share these modifications? I guess I cannot push to
> Yann's git repository.
> Should I send again a patch series, even though Yann has not finished
> its review yet?
You should sync with Yann on this. I guess it would be easier if you
posted new iterations of the patch series, but please coordinate with
Yann about this.
If you're available in the evenings, feel free to come on #buildroot on
Freenode to discuss this with Yann and me.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Buildroot] [PATCH 0/24 v3] ejabberd: XMPP server (branch yem/ejabberd)
2014-12-08 16:33 ` Johan Oudinet
2014-12-08 16:52 ` Thomas Petazzoni
@ 2014-12-08 17:25 ` Yann E. MORIN
1 sibling, 0 replies; 29+ messages in thread
From: Yann E. MORIN @ 2014-12-08 17:25 UTC (permalink / raw)
To: buildroot
Johan, All,
On 2014-12-08 17:33 +0100, Johan Oudinet spake thusly:
> I've looked into Yann's branch and made some modifications to fix the
> compilation and runtime errors.
> I've also find out and fix the issue with erl_interface, which ld does
> not find if we compile an erlang library after finalizing make once:
> It's because rebar was looking for such libraries in $(TARGET_DIR)
> instead of $(STAGING_DIR), and libraries in TARGET_DIR are deleted by
> the target-finalize Makefile rule.
> How should I share these modifications? I guess I cannot push to
> Yann's git repository.
> Should I send again a patch series, even though Yann has not finished
> its review yet?
I think I won;t do much more review on the series you already posted. I
don't remember exactly, but IIRC I've done some changes on your patches,
which are now in my branch.
The best way to move forward is for you to take the patches from my
branch, work on them, and respin the series on the list.
Afterall, you are in the best position to work on the core
functionality, since you have good knowledge of Erlang and ejabberd.
I can help round the edges (aka. code style and eye-candy), so I'll wait
for you to respin the series before looking further into it.
So yes, just respin on the list! ;-)
And as Thomas said, you can pop up in #buildroot, where we hang together
for discussing, guess what, Buildroot! ;-)
Thank you for your work on this!
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 29+ messages in thread