ejabberd: XMPP server
v6 cover ejabberd: XMPP server
Hi All,
Since ejabberd build system relies on rebar to download its dependencies, we've packaged all of them separately and modified ejabberd makefile to not download any dependency.
Actually, every erlang package that is introduced here rely on the rebar software. Thus, we also introduce a new infrastructure to simplify the development of such packages in buildroot.
Changes v5 -> v6: (Thomas)
- erlang-p1-zlib depends on zlib
- remove extra SoB lines.
Changes v4 -> v5: (Thomas)
- rename some variables in pkg-rebar.mk
- rebar infrastructure adds the dependencies to erlang and host-erlang-rebar
- update rebar manual accordingly
- remove unnecessary dependency to erlang for erlang packages
- add missing links and licenses to some erlang packages
Changes v3 -> v4:
- fix build and install commands in pkg-rebar.mk.
- look for erlang libraries in STAGING_DIR instead of TARGET_DIR.
- run configure script for p1-xml, p1-iconv, and ejabberd packages.
Changes v2 -> v3:
- split out the autotools patch into the 7 first ones
- split out the pkg-rebar into patches 8-11
- other packages left untouched
Changes v1 -> v2:
- use BR_PATH instead of an hard-coded path in pkg-rebar.mk.
- update erlang-p1-iconv version to fix a link error with libiconv.
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 (2):
package/erlang: export EI_VSN so other packages can use it docs/manual: add documentation for the pkg-rebar infrastructure
docs/manual/adding-packages-rebar.txt | 102 +++++++++ docs/manual/adding-packages.txt | 2 + package/Config.in | 17 ++ package/Makefile.in | 1 + package/ejabberd/0001-remove-deps.patch | 20 ++ package/ejabberd/0002-disable-rebar-deps.patch | 70 +++++++ package/ejabberd/0003-disable-test.patch | 21 ++ package/ejabberd/0004-disable-version-check.patch | 20 ++ package/ejabberd/0005-fix-includes.patch | 45 ++++ package/ejabberd/0006-remove-doc.patch | 26 +++ package/ejabberd/0007-fix-init.patch | 99 +++++++++ .../ejabberd/0008-fix-install-permissions.patch | 76 +++++++ package/ejabberd/Config.in | 21 ++ package/ejabberd/S50ejabberd | 35 ++++ package/ejabberd/check-erlang-lib | 55 +++++ package/ejabberd/ejabberd.mk | 52 +++++ package/erlang-goldrush/Config.in | 7 + package/erlang-goldrush/erlang-goldrush.mk | 14 ++ package/erlang-lager/Config.in | 13 ++ package/erlang-lager/erlang-lager.mk | 14 ++ package/erlang-p1-cache-tab/Config.in | 7 + package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk | 13 ++ package/erlang-p1-iconv/Config.in | 7 + package/erlang-p1-iconv/erlang-p1-iconv.mk | 18 ++ package/erlang-p1-sip/Config.in | 9 + .../erlang-p1-sip-01-fix-includes.patch | 19 ++ package/erlang-p1-sip/erlang-p1-sip.mk | 14 ++ package/erlang-p1-stringprep/Config.in | 6 + .../erlang-p1-stringprep/erlang-p1-stringprep.mk | 12 ++ package/erlang-p1-stun/Config.in | 8 + package/erlang-p1-stun/erlang-p1-stun.mk | 14 ++ package/erlang-p1-tls/Config.in | 6 + package/erlang-p1-tls/erlang-p1-tls.mk | 13 ++ package/erlang-p1-utils/Config.in | 6 + package/erlang-p1-utils/erlang-p1-utils.mk | 13 ++ package/erlang-p1-xml/Config.in | 7 + package/erlang-p1-xml/erlang-p1-xml.mk | 16 ++ package/erlang-p1-yaml/Config.in | 7 + package/erlang-p1-yaml/erlang-p1-yaml.mk | 13 ++ package/erlang-p1-zlib/Config.in | 7 + package/erlang-p1-zlib/erlang-p1-zlib.mk | 13 ++ package/erlang/erlang.mk | 5 + package/pkg-rebar.mk | 229 +++++++++++++++++++++ 43 files changed, 1172 insertions(+) create mode 100644 docs/manual/adding-packages-rebar.txt create mode 100644 package/ejabberd/0001-remove-deps.patch create mode 100644 package/ejabberd/0002-disable-rebar-deps.patch create mode 100644 package/ejabberd/0003-disable-test.patch create mode 100644 package/ejabberd/0004-disable-version-check.patch create mode 100644 package/ejabberd/0005-fix-includes.patch create mode 100644 package/ejabberd/0006-remove-doc.patch create mode 100644 package/ejabberd/0007-fix-init.patch create mode 100644 package/ejabberd/0008-fix-install-permissions.patch create mode 100644 package/ejabberd/Config.in create mode 100644 package/ejabberd/S50ejabberd create mode 100755 package/ejabberd/check-erlang-lib create mode 100644 package/ejabberd/ejabberd.mk create mode 100644 package/erlang-goldrush/Config.in create mode 100644 package/erlang-goldrush/erlang-goldrush.mk create mode 100644 package/erlang-lager/Config.in create mode 100644 package/erlang-lager/erlang-lager.mk create mode 100644 package/erlang-p1-cache-tab/Config.in create mode 100644 package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk create mode 100644 package/erlang-p1-iconv/Config.in create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk create mode 100644 package/erlang-p1-sip/Config.in create mode 100644 package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch create mode 100644 package/erlang-p1-sip/erlang-p1-sip.mk create mode 100644 package/erlang-p1-stringprep/Config.in create mode 100644 package/erlang-p1-stringprep/erlang-p1-stringprep.mk create mode 100644 package/erlang-p1-stun/Config.in create mode 100644 package/erlang-p1-stun/erlang-p1-stun.mk create mode 100644 package/erlang-p1-tls/Config.in create mode 100644 package/erlang-p1-tls/erlang-p1-tls.mk create mode 100644 package/erlang-p1-utils/Config.in create mode 100644 package/erlang-p1-utils/erlang-p1-utils.mk create mode 100644 package/erlang-p1-xml/Config.in create mode 100644 package/erlang-p1-xml/erlang-p1-xml.mk create mode 100644 package/erlang-p1-yaml/Config.in create mode 100644 package/erlang-p1-yaml/erlang-p1-yaml.mk create mode 100644 package/erlang-p1-zlib/Config.in create mode 100644 package/erlang-p1-zlib/erlang-p1-zlib.mk create mode 100644 package/pkg-rebar.mk
Signature · 1 line
2.1.0
PATCH v6 1/16 package/erlang: export EI_VSN so other packages can use it
From: "Yann E. MORIN" <[email protected]>
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.
--- package/erlang/erlang.mk | 5 +++++ 1 file changed, 5 insertions(+)
package/erlang/erlang.mk +5 -0
@@ -4,6 +4,7 @@ # ################################################################################ +# See note below when updating Erlang ERLANG_VERSION = 17.4 ERLANG_SITE = http://www.erlang.org/download ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
@@ -16,6 +17,10 @@ ERLANG_INSTALL_STAGING = YES # Touching erts/configure.in ERLANG_AUTORECONF = 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.20 + # The configure checks for these functions fail incorrectly ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes
Signature · 1 line
2.1.0
PATCH v6 2/16 package/pkg-rebar: new infrastructure
In reply to Johan OudinetEase the development of packages that use the erlang rebar tool as their build system.
[yann.morin.1998 at free.fr: split the patch into semantically separated patches; large rewrites of the rest]
---
Changes v4 -> v5: (Thomas)
- commonalise more variables
- slightly-more obvious extract of raw package name
- rename some variables
- fix some comments
--- package/Makefile.in | 1 + package/pkg-rebar.mk | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 230 insertions(+) create mode 100644 package/pkg-rebar.mk
package/Makefile.in +1 -0
@@ -416,3 +416,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
package/pkg-rebar.mk new file +229 -0
229 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH v6 2/16 package/pkg-rebar: new infrastructure
Dear Johan Oudinet,
Quoted 7 lines · Johan Oudinet
Ease the development of packages that use the erlang rebar tool as their build system.
Signed-off-by Johan Oudinet <[email protected]>[yann.morin.1998 at free.fr: split the patch into semantically separated patches; large rewrites of the rest]
Signed-off-by Yann E. MORIN <[email protected]>
On this patch (the most important one, obviously), we did a number of changes:
[Thomas, with help from Yann and Arnout:
- Fix the comment about the symlink used to make sure rebar does not download dependencies. The comment was not up-to-date with where the symlink is actually created.
- Make <pkg>_USE_BUNDLED_REBAR and <pkg>_USE_AUTOCONF be inherited by host packages from their corresponding target package.
- Make sure host dependencies are inherited from the corresponding target packages dependencies. This requires copying some logic from inner-autotools-package and inner-generic-package, just like inner-autotools-package duplicates some logic from inner-generic-package.
- Fix host variant of $(2)_BUILD_CMDS indentation, use double quotes instead of simple quotes. So that it matches the target $(2)_BUILD_CMDS, and what we do elsewhere in Buildroot.]
See some questions below.
package/pkg-rebar.mk line 29
Quoted 10 lines
package/pkg-rebar.mk new file +10
-0+# 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 tells rebar to NOT 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
Rather than having those paths, why don't we point directly rebar at $(STAGING_DIR)/usr/lib/erlang/lib/ ? This directory already contains <erlang-app>-<version> directory for each package, and we would only have to create a symlink <erlang-app> --> <erlang-app>-<version>.
But maybe it's cleaner to have something completely separate, I don't know.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 2/16 package/pkg-rebar: new infrastructure
Thomas, All,
Sorry for the long delay before replying to this email. I forgot it in my list and went to holidays in the meantime.
Quoted 16 lines · Thomas Petazzoni
package/pkg-rebar.mk line 29
Quoted 10 lines
package/pkg-rebar.mk new file +10
-0+# 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 tells rebar to NOT 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/depsRather than having those paths, why don't we point directly rebar at $(STAGING_DIR)/usr/lib/erlang/lib/ ? This directory already contains <erlang-app>-<version> directory for each package, and we would only have to create a symlink <erlang-app> --> <erlang-app>-<version>.
Quoted 2 lines
But maybe it's cleaner to have something completely separate, I don't know.
Indeed, this is to keep $(TARGET_DIR)/usr/lib/erlang/lib directory clean from unnecessary symlinks.
I'm not even sure it won't break some erlang programs if we add symlinks there. At least, there is none in my Erlang installation. Maybe some Erlang guru can give its opinion on this?
Signature · 1 line
Johan
PATCH v6 2/16 package/pkg-rebar: new infrastructure
Johan, All,
Quoted 23 lines · Johan Oudinet
Thomas, All,
Sorry for the long delay before replying to this email. I forgot it in my list and went to holidays in the meantime.
Quoted 16 lines · Thomas Petazzoni
package/pkg-rebar.mk line 29
Quoted 10 lines
package/pkg-rebar.mk new file +10
-0+# 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 tells rebar to NOT 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/depsRather than having those paths, why don't we point directly rebar at $(STAGING_DIR)/usr/lib/erlang/lib/ ? This directory already contains <erlang-app>-<version> directory for each package, and we would only have to create a symlink <erlang-app> --> <erlang-app>-<version>.
Quoted 8 lines
Quoted 2 lines
But maybe it's cleaner to have something completely separate, I don't know.
Indeed, this is to keep $(TARGET_DIR)/usr/lib/erlang/lib directory clean from unnecessary symlinks.
I'm not even sure it won't break some erlang programs if we add symlinks there. At least, there is none in my Erlang installation. Maybe some Erlang guru can give its opinion on this?
I initially liked the idea of just keeping everything in /usr/lib/erlang/lib rather than having a rebar/deps directory. My thinking was that there are other Erlang build tools out there (rebar3, erlang.mk, mix), so having a deps directory just for rebar wasn't right. However, I'm the point now where I'm watching how how things go for me with the new rebar/buildroot integration. The current rebar integration isn't broken for me, so until I become more opinionated on this, I wasn't going suggest changing anything. Per your question, I would be surprised if switching the directory broke anything.
Frank
PATCH v6 3/16 docs/manual: add documentation for the pkg-rebar infrastructure
In reply to Johan OudinetFrom: "Yann E. MORIN" <[email protected]>
---
Changes v4 -> v5: (Thomas)
- drop unused variables
- drop implementation details
- properly document the autotools case
- add missing licensing variables
- some rewording about everywhere (YEM)
--- docs/manual/adding-packages-rebar.txt | 102 ++++++++++++++++++++++++++++++++++ docs/manual/adding-packages.txt | 2 + 2 files changed, 104 insertions(+) create mode 100644 docs/manual/adding-packages-rebar.txt
docs/manual/adding-packages-rebar.txt new file +102 -0
@@ -0,0 +1,102 @@ +// -*- 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.xz +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb +11: +12: $(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 declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line 12, 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 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+, ++ERLANG_FOOBAR_LICENSE+ and +ERLANG_FOOBAR_LICENSE_FILES+. + +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_USE_AUTOCONF+, to specify that the package uses + _autoconf_ at the configuration step. When a package sets this + variable to +YES+, the +autotools+ infrastructure is used. ++ +.Note +You can also use some of the variables from the +autotools+ + infrastructure: +ERLANG_FOOBAR_CONF_ENV+, +ERLANG_FOOBAR_CONF_OPTS+, + +ERLANG_FOOBAR_AUTORECONF+, +ERLANG_FOOBAR_AUTORECONF_ENV+ and + +ERLANG_FOOBAR_AUTORECONF_OPTS+. + +* +ERLANG_FOOBAR_USE_BUNDLED_REBAR+, to specify that the package has + a bundled version of _rebar_ *and* that it shall be used. Valid + values are +YES+ or +NO+ (the default). ++ +.Note +If the package bundles a _rebar_ utility, but can use the generic + one that Buildroot provides, just say +NO+ (i.e., do not specify + this variable). Only set if it is mandatory to use the _rebar_ + utility bundled in this package. + +* +ERLANG_FOOBAR_REBAR_ENV+, to specify additional environment + variables to pass to the _rebar_ utility. + +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_BUILD_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.
docs/manual/adding-packages.txt +2 -0
@@ -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[]
Signature · 1 line
2.1.0
PATCH v6 4/16 erlang-goldrush: new package.
In reply to Johan Oudinet--- package/Config.in | 5 +++++ package/erlang-goldrush/Config.in | 7 +++++++ package/erlang-goldrush/erlang-goldrush.mk | 14 ++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 package/erlang-goldrush/Config.in create mode 100644 package/erlang-goldrush/erlang-goldrush.mk
package/Config.in +5 -0
@@ -398,6 +398,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/guile/Config.in" source "package/haserl/Config.in" source "package/jamvm/Config.in"
package/erlang-goldrush/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_GOLDRUSH + bool "erlang-goldrush" + help + Goldrush is a small Erlang app that provides fast event + stream processing. + + https://github.com/DeadZen/goldrush
package/erlang-goldrush/erlang-goldrush.mk new file +14 -0
@@ -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 = ISC +ERLANG_GOLDRUSH_LICENSE_FILES = LICENSE +ERLANG_GOLDRUSH_INSTALL_STAGING = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package))
Signature · 1 line
2.1.0
PATCH v6 5/16 erlang-lager: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-lager/Config.in | 13 +++++++++++++ package/erlang-lager/erlang-lager.mk | 14 ++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 package/erlang-lager/Config.in create mode 100644 package/erlang-lager/erlang-lager.mk
package/Config.in +1 -0
@@ -401,6 +401,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/guile/Config.in"
package/erlang-lager/Config.in new file +13 -0
@@ -0,0 +1,13 @@ +config BR2_PACKAGE_ERLANG_LAGER + bool "erlang-lager" + 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. + + https://github.com/basho/lager
package/erlang-lager/erlang-lager.mk new file +14 -0
@@ -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-goldrush + +$(eval $(rebar-package)) +$(eval $(host-rebar-package))
Signature · 1 line
2.1.0
PATCH v6 5/16 erlang-lager: new package.
Dear Johan Oudinet,
package/erlang-lager/Config.in line 5
Quoted 11 lines · Johan Oudinet
package/erlang-lager/Config.in new file +5
-0@@ -0,0 +1,13 @@ +config BR2_PACKAGE_ERLANG_LAGER + bool "erlang-lager" + select BR2_PACKAGE_ERLANG_GOLDRUSH + help + Logging framework for Erlang.
This line of help text was not really needed, since it's an information already part of the following paragraph.
package/erlang-lager/Config.in line 6
Quoted 1 line
package/erlang-lager/Config.in new file +1
-0+
This had some trailing whitespace.
Committed with this fixed.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 6/16 erlang-p1-zlib: new package.
In reply to Johan Oudinet---
Changes v5 -> v6: (Thomas)
- add dependency to zlib.
--- package/Config.in | 1 + package/erlang-p1-zlib/Config.in | 7 +++++++ package/erlang-p1-zlib/erlang-p1-zlib.mk | 13 +++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 package/erlang-p1-zlib/Config.in create mode 100644 package/erlang-p1-zlib/erlang-p1-zlib.mk
package/Config.in +1 -0
@@ -402,6 +402,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/guile/Config.in"
package/erlang-p1-zlib/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_ZLIB + bool "erlang-p1-zlib" + select BR2_PACKAGE_ZLIB + help + Erlang interface to zlib + + https://github.com/processone/zlib
package/erlang-p1-zlib/erlang-p1-zlib.mk new file +13 -0
@@ -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 = zlib + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 7/16 erlang-p1-yaml: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-yaml/Config.in | 7 +++++++ package/erlang-p1-yaml/erlang-p1-yaml.mk | 13 +++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 package/erlang-p1-yaml/Config.in create mode 100644 package/erlang-p1-yaml/erlang-p1-yaml.mk
package/Config.in +1 -0
@@ -402,6 +402,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
package/erlang-p1-yaml/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_YAML + bool "erlang-p1-yaml" + select BR2_PACKAGE_LIBYAML + help + Erlang wrapper for libyaml C library + + https://github.com/processone/p1_yaml
package/erlang-p1-yaml/erlang-p1-yaml.mk new file +13 -0
@@ -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 = libyaml + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 8/16 erlang-p1-xml: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-xml/Config.in | 7 +++++++ package/erlang-p1-xml/erlang-p1-xml.mk | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 package/erlang-p1-xml/Config.in create mode 100644 package/erlang-p1-xml/erlang-p1-xml.mk
package/Config.in +1 -0
@@ -402,6 +402,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
package/erlang-p1-xml/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_XML + bool "erlang-p1-xml" + select BR2_PACKAGE_EXPAT + help + XML utilities for Erlang + + https://github.com/processone/xml
package/erlang-p1-xml/erlang-p1-xml.mk new file +16 -0
@@ -0,0 +1,16 @@ +################################################################################ +# +# 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 = expat +ERLANG_P1_XML_INSTALL_STAGING = YES + +ERLANG_P1_XML_USE_AUTOCONF = YES + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 8/16 erlang-p1-xml: new package.
Dear Johan Oudinet,
package/erlang-p1-xml/erlang-p1-xml.mk line 9
Quoted 3 lines · Johan Oudinet
package/erlang-p1-xml/erlang-p1-xml.mk new file +3
-0+ERLANG_P1_XML_VERSION = b530983 +ERLANG_P1_XML_SITE = $(call github,processone,xml,$(ERLANG_P1_XML_VERSION)) +ERLANG_P1_XML_LICENSE = GPLv2
License is really GPLv2+ and not GPLv2. Committed with this fixed.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 9/16 erlang-p1-utils: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-utils/Config.in | 6 ++++++ package/erlang-p1-utils/erlang-p1-utils.mk | 13 +++++++++++++ 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
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-utils/Config.in new file +6 -0
@@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_UTILS + bool "erlang-p1-utils" + help + Set of small Erlang libraries + + https://github.com/processone/p1_utils
package/erlang-p1-utils/erlang-p1-utils.mk new file +13 -0
@@ -0,0 +1,13 @@ +################################################################################ +# +# 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_INSTALL_STAGING = YES + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 10/16 erlang-p1-tls: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-tls/Config.in | 6 ++++++ package/erlang-p1-tls/erlang-p1-tls.mk | 13 +++++++++++++ 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
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-tls/Config.in new file +6 -0
@@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_TLS + bool "erlang-p1-tls" + help + Erlang interface to OpenSSL + + https://github.com/processone/tls
package/erlang-p1-tls/erlang-p1-tls.mk new file +13 -0
@@ -0,0 +1,13 @@ +################################################################################ +# +# 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_INSTALL_STAGING = YES + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 11/16 erlang-p1-stun: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-stun/Config.in | 8 ++++++++ package/erlang-p1-stun/erlang-p1-stun.mk | 14 ++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 package/erlang-p1-stun/Config.in create mode 100644 package/erlang-p1-stun/erlang-p1-stun.mk
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-stun/Config.in new file +8 -0
@@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_STUN + bool "erlang-p1-stun" + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + help + STUN library for Erlang + + https://github.com/processone/stun
package/erlang-p1-stun/erlang-p1-stun.mk new file +14 -0
@@ -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-p1-tls erlang-p1-utils +ERLANG_P1_STUN_INSTALL_STAGING = YES + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 12/16 erlang-p1-stringprep: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-stringprep/Config.in | 6 ++++++ package/erlang-p1-stringprep/erlang-p1-stringprep.mk | 12 ++++++++++++ 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
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-stringprep/Config.in new file +6 -0
@@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_STRINGPREP + bool "erlang-p1-stringprep" + help + Erlang interface to stringprep + + https://github.com/processone/stringprep
package/erlang-p1-stringprep/erlang-p1-stringprep.mk new file +12 -0
@@ -0,0 +1,12 @@ +################################################################################ +# +# 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 + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 12/16 erlang-p1-stringprep: new package.
Dear Johan Oudinet,
package/erlang-p1-stringprep/erlang-p1-stringprep.mk line 9
Quoted 3 lines · Johan Oudinet
package/erlang-p1-stringprep/erlang-p1-stringprep.mk new file +3
-0+ERLANG_P1_STRINGPREP_VERSION = 9e9e0f8 +ERLANG_P1_STRINGPREP_SITE = $(call github,processone,stringprep,$(ERLANG_P1_STRINGPREP_VERSION)) +ERLANG_P1_STRINGPREP_LICENSE = GPLv2+
License was not GPLv2+, but TCL. Applied with this fixed.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 13/16 erlang-p1-sip: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-sip/Config.in | 9 +++++++++ .../erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch | 19 +++++++++++++++++++ package/erlang-p1-sip/erlang-p1-sip.mk | 14 ++++++++++++++ 4 files changed, 43 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
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-sip/Config.in new file +9 -0
@@ -0,0 +1,9 @@ +config BR2_PACKAGE_ERLANG_P1_SIP + bool "erlang-p1-sip" + select BR2_PACKAGE_ERLANG_P1_STUN + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + help + SIP library for Erlang + + https://github.com/processone/p1_sip
package/erlang-p1-sip/erlang-p1-sip-01-fix-includes.patch new file +19 -0
@@ -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 <[email protected]> + +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).
package/erlang-p1-sip/erlang-p1-sip.mk new file +14 -0
@@ -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-p1-stun erlang-p1-tls erlang-p1-utils +ERLANG_P1_SIP_INSTALL_STAGING = YES + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 13/16 erlang-p1-sip: new package.
Dear Johan Oudinet,
package/erlang-p1-sip/erlang-p1-sip.mk line 9
Quoted 3 lines · Johan Oudinet
package/erlang-p1-sip/erlang-p1-sip.mk new file +3
-0+ERLANG_P1_SIP_VERSION = bba4459 +ERLANG_P1_SIP_SITE = $(call github,processone,p1_sip,$(ERLANG_P1_SIP_VERSION)) +ERLANG_P1_SIP_LICENSE = GPLv2
License is GPLv2 with OpenSSL exception. Applied with this fixed.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 14/16 erlang-p1-iconv: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-iconv/Config.in | 7 +++++++ package/erlang-p1-iconv/erlang-p1-iconv.mk | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 package/erlang-p1-iconv/Config.in create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-iconv/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_ICONV + bool "erlang-p1-iconv" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Erlang interface to libiconv + + https://github.com/processone/eiconv
package/erlang-p1-iconv/erlang-p1-iconv.mk new file +18 -0
@@ -0,0 +1,18 @@ +################################################################################ +# +# 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 + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +ERLANG_P1_ICONV_DEPENDENCIES += libiconv +endif + +ERLANG_P1_ICONV_USE_AUTOCONF = YES + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 15/16 erlang-p1-cache-tab: new package.
In reply to Johan Oudinet--- package/Config.in | 1 + package/erlang-p1-cache-tab/Config.in | 7 +++++++ package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk | 13 +++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 package/erlang-p1-cache-tab/Config.in create mode 100644 package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk
package/Config.in +1 -0
@@ -402,6 +402,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"
package/erlang-p1-cache-tab/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_CACHE_TAB + bool "erlang-p1-cache-tab" + select BR2_PACKAGE_ERLANG_P1_UTILS + help + Erlang library implementing cache tables + + https://github.com/processone/cache_tab
package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk new file +13 -0
@@ -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-p1-utils + +$(eval $(rebar-package))
Signature · 1 line
2.1.0
PATCH v6 16/16 ejabberd: new package.
In reply to Johan Oudinet--- 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 | 52 ++++++++++++ 13 files changed, 541 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
package/Config.in +1 -0
@@ -1061,6 +1061,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"
package/ejabberd/0001-remove-deps.patch new file +20 -0
@@ -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 <[email protected]> + +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. +
package/ejabberd/0002-disable-rebar-deps.patch new file +70 -0
70 lines not on this page · raw message
package/ejabberd/0003-disable-test.patch new file +21 -0
@@ -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 <[email protected]> + +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 \
package/ejabberd/0004-disable-version-check.patch new file +20 -0
@@ -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 <[email protected]> + +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 +
package/ejabberd/0005-fix-includes.patch new file +45 -0
45 lines not on this page · raw message
package/ejabberd/0006-remove-doc.patch new file +26 -0
@@ -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 <[email protected]> + +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 +
package/ejabberd/0007-fix-init.patch new file +99 -0
99 lines not on this page · raw message
package/ejabberd/0008-fix-install-permissions.patch new file +76 -0
76 lines not on this page · raw message
package/ejabberd/Config.in new file +21 -0
@@ -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
package/ejabberd/S50ejabberd new file +35 -0
@@ -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
package/ejabberd/check-erlang-lib new file +55 -0
55 lines not on this page · raw message
package/ejabberd/ejabberd.mk new file +52 -0
52 lines not on this page · raw message
Signature · 1 line
2.1.0
Thomas Petazzoni
AppliedPATCH v6 16/16 ejabberd: new package.
Dear Johan Oudinet,
Quoted 2 lines · Johan Oudinet
Signed-off-by Johan Oudinet <[email protected]>Signed-off-by Johan Oudinet <[email protected]>
Applied, with a number of changes, please check the result is correct.
[Thomas:
- Adjust the comment about the dependency on erlang
- Fix license to be 'GPLv2+ with OpenSSL exception' and not just 'GPLv2+'
- Use double quotes instead of simple quotes in the .mk file.
- Don't use the EJABBERD_MAKE_ENV variable, since it's not defined anywhere.
- Remove the 0007-fix-init.patch patch, since we're not using the init script provided by ejabberd, and rename 0008-fix-install-permissions.patch to 0007-fix-install-permissions.patch.]
One question below.
Quoted 1 line
+EJABBERD_DEPENDENCIES = openssl host-erlang-lager erlang-lager \
I'm interested in hearing a bit more about the host-erlang-lager dependency. Why would ejabberd need a logging framework built for the host? This seems weird.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 16/16 ejabberd: new package.
Thomas, All,
Quoted 5 lines · Thomas Petazzoni
Quoted 1 line
+EJABBERD_DEPENDENCIES = openssl host-erlang-lager erlang-lager \
I'm interested in hearing a bit more about the host-erlang-lager dependency. Why would ejabberd need a logging framework built for the host? This seems weird.
I also think it's weird but otherwise ejabberd compilation failed at src/gen_mod.erl, which includes include/logger.hrl.
At line 23 of this file there is such statement:
-compile([{parse_transform, lager_transform}]).
And lager_transform is provided by erlang-lager.
I'm not an erlang guru but from lager documentation, it says this line must be added to "the module you wish to compile with logging enabled".
So, I guess it needs host-erlang-lager to add such capability to the erlang compiler.
If an erlang expert reads this, it probably can provide a better explanation.
Signature · 1 line
Johan
PATCH v6 16/16 ejabberd: new package.
Dear Johan Oudinet,
Quoted 10 lines · Johan Oudinet
Quoted 3 lines
I'm interested in hearing a bit more about the host-erlang-lager dependency. Why would ejabberd need a logging framework built for the host? This seems weird.
I also think it's weird but otherwise ejabberd compilation failed at src/gen_mod.erl, which includes
include/logger.hrl.
At line 23 of this file there is such statement:
-compile([{parse_transform,lager_transform}]).
Andlager_transformis provided by erlang-lager.
Quoted 6 lines
I'm not an erlang guru but from lager documentation, it says this line must be added to "the module you wish to compile with logging enabled".
So, I guess it needs host-erlang-lager to add such capability to the erlang compiler.
If an erlang expert reads this, it probably can provide a better explanation.
Ok, thanks for the details. I clearly don't have any Erlang knowledge, so I will not try to dive into this to understand what's going on. Those dependencies are anyway fairly light, so it doesn't matter that much.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 16/16 ejabberd: new package.
Johan and Thomas,
Quoted 20 lines · Thomas Petazzoni
Dear Johan Oudinet,
Quoted 16 lines · Johan Oudinet
Quoted 3 lines
I'm interested in hearing a bit more about the host-erlang-lager dependency. Why would ejabberd need a logging framework built for the host? This seems weird.
I also think it's weird but otherwise ejabberd compilation failed at src/gen_mod.erl, which includes
include/logger.hrl.
At line 23 of this file there is such statement:
-compile([{parse_transform,lager_transform}]).
Andlager_transformis provided by erlang-lager.I'm not an erlang guru but from lager documentation, it says this line must be added to "the module you wish to compile with logging enabled".
So, I guess it needs host-erlang-lager to add such capability to the erlang compiler.
If an erlang expert reads this, it probably can provide a better explanation.
I'm not going to claim to be an Erlang expert, but I can add some information. Applications that use lager need to enable Lager's parse transform on the host Erlang compiler. The parse transform extracts things like module, function, and line number information whenever lager:warn, lager:info, etc. are called, so that it can be included in the log messages. The parse transform actually has to be compiled for the host. When you're not cross-compiling, it doesn't look as weird.
Also, I should say that I've been quietly watching the various Erlang patches on the mailing list. What I've seen looks pretty good. I do use Erlang with Buildroot, but I use the Erlang Release tools to generate the final images. This makes for smaller root filesystems (Erlang's libraries are huge and largely irrelevant to most apps) and is more compatible with how Erlang people do things. However, it's definitely not how I think that things should be done in the Buildroot project. I think that you guys are doing it right, so if I work a project that just needs ejabberd or another Erlang app, then I'm going to switch over to this framework. Thanks for doing this!
Frank
Quoted 17 lines
Ok, thanks for the details. I clearly don't have any Erlang knowledge, so I will not try to dive into this to understand what's going on. Those dependencies are anyway fairly light, so it doesn't matter that much.
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
PATCH v6 16/16 ejabberd: new package.
Dear Frank Hunleth,
Quoted 7 lines · Frank Hunleth
I'm not going to claim to be an Erlang expert, but I can add some information. Applications that use lager need to enable Lager's parse transform on the host Erlang compiler. The parse transform extracts things like module, function, and line number information whenever lager:warn, lager:info, etc. are called, so that it can be included in the log messages. The parse transform actually has to be compiled for the host. When you're not cross-compiling, it doesn't look as weird.
Ok, thanks for the explanation.
Quoted 10 lines
Also, I should say that I've been quietly watching the various Erlang patches on the mailing list. What I've seen looks pretty good. I do use Erlang with Buildroot, but I use the Erlang Release tools to generate the final images. This makes for smaller root filesystems (Erlang's libraries are huge and largely irrelevant to most apps) and is more compatible with how Erlang people do things. However, it's definitely not how I think that things should be done in the Buildroot project. I think that you guys are doing it right, so if I work a project that just needs ejabberd or another Erlang app, then I'm going to switch over to this framework. Thanks for doing this!
Is there a way of doing the same as those Erlang Release tools, and make sure only the really used libraries are kept?
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v6 16/16 ejabberd: new package.
Quoted 25 lines · Thomas Petazzoni
Dear Frank Hunleth,
Quoted 7 lines · Frank Hunleth
I'm not going to claim to be an Erlang expert, but I can add some information. Applications that use lager need to enable Lager's parse transform on the host Erlang compiler. The parse transform extracts things like module, function, and line number information whenever lager:warn, lager:info, etc. are called, so that it can be included in the log messages. The parse transform actually has to be compiled for the host. When you're not cross-compiling, it doesn't look as weird.
Ok, thanks for the explanation.
Quoted 10 lines
Also, I should say that I've been quietly watching the various Erlang patches on the mailing list. What I've seen looks pretty good. I do use Erlang with Buildroot, but I use the Erlang Release tools to generate the final images. This makes for smaller root filesystems (Erlang's libraries are huge and largely irrelevant to most apps) and is more compatible with how Erlang people do things. However, it's definitely not how I think that things should be done in the Buildroot project. I think that you guys are doing it right, so if I work a project that just needs ejabberd or another Erlang app, then I'm going to switch over to this framework. Thanks for doing this!
Quoted 2 lines
Is there a way of doing the same as those Erlang Release tools, and make sure only the really used libraries are kept?
It might be possible. Almost all Erlang applications use a framework called OTP. I actually think that you can ignore applications that don't use OTP since they're almost exclusively toy apps. OTP requires that each application and library have or generate a .app file that lists all of its dependencies and some other info. This .app file also contains information used at run-time, so it's guaranteed to be installed. If you knew the top level Erlang applications that you wanted, you could construct the dependency graph through all of the libraries and either include or exclude them in the final image. The Erlang release tools do this, but their goal is to copy everything they need to a "release" directory. It's kind of like copying just the stuff you need from staging to the target directory, but probably enough different that the Erlang release tools can't be used as is. I also suspect that there are enough subtle differences between how Erlang projects set up their directory structures to make this a non-trivial effort, but I haven't looked deeply into it.
Frank
Quoted 6 lines
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
v6 cover ejabberd: XMPP server
In reply to Johan OudinetDear Johan Oudinet,
Quoted 7 lines · Johan Oudinet
Since ejabberd build system relies on rebar to download its dependencies, we've packaged all of them separately and modified ejabberd makefile to not download any dependency.
Actually, every erlang package that is introduced here rely on the rebar software. Thus, we also introduce a new infrastructure to simplify the development of such packages in buildroot.
I've applied the entire series, thanks for working on this! I'll reply individually to some of the patches, to indicate the changes I've made, and also ask some questions that may lead to follow-up patches if needed.
Thanks a lot for your perseverance in working on those patches!
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
v6 cover ejabberd: XMPP server
Dear Thomas,
Quoted 7 lines · Thomas Petazzoni
I've applied the entire series, thanks for working on this! I'll reply individually to some of the patches, to indicate the changes I've made, and also ask some questions that may lead to follow-up patches if needed.
Thanks a lot for your perseverance in working on those patches!
Thank you for your help on these patches and all your hard work on buildroot.
Best,
Signature · 1 line
Johan Oudinet