[Buildroot] [PATCH 1/1] Adding package janus-gateway and dependencies

Samuel Martin s.martin49 at gmail.com
Mon Dec 1 20:56:30 UTC 2014


Hi Gregory,

On Mon, Dec 1, 2014 at 8:37 PM, Gregory Dymarek <gregd72002 at gmail.com> wrote:
> This is a set of packages that are needed to compile janus-gateway:
> ding-libs
> gengetopt
> janus-gateway
> libnice
> libsrtp
> libwebsock
> sofia-sip

Please, make one package per patch.

>
> Signed-off-by: gregd <gregd72002 at gmail.com>
> ---
>  package/Config.in                                  |  7 ++++++
>  package/Config.in.host                             |  1 +
>  package/ding-libs/Config.in                        |  9 ++++++++
>  package/ding-libs/ding-libs.mk                     | 17 ++++++++++++++
>  package/gengetopt/Config.in                        |  6 +++++
>  package/gengetopt/Config.in.host                   |  6 +++++
>  package/gengetopt/gengetopt.mk                     | 16 +++++++++++++
>  package/janus-gateway/Config.in                    | 13 +++++++++++
>  .../janus-gateway-0001-disable-ssp.patch           | 12 ++++++++++
>  package/janus-gateway/janus-gateway.mk             | 27 ++++++++++++++++++++++
>  package/libnice/Config.in                          |  6 +++++
>  .../libnice/libnice-0001-build-IPV6_RECVERR.patch  | 20 ++++++++++++++++
>  package/libnice/libnice.mk                         | 11 +++++++++
>  package/libsrtp/Config.in                          |  5 ++++
>  package/libsrtp/libsrtp.mk                         | 13 +++++++++++
>  package/libwebsock/Config.in                       |  6 +++++
>  package/libwebsock/libwebsock.mk                   | 22 ++++++++++++++++++
>  package/sofia-sip/Config.in                        |  5 ++++
>  package/sofia-sip/sofia-sip.mk                     | 17 ++++++++++++++
>  19 files changed, 219 insertions(+)
>  create mode 100644 package/ding-libs/Config.in
>  create mode 100644 package/ding-libs/ding-libs.mk
>  create mode 100644 package/gengetopt/Config.in
>  create mode 100644 package/gengetopt/Config.in.host
>  create mode 100644 package/gengetopt/gengetopt.mk
>  create mode 100644 package/janus-gateway/Config.in
>  create mode 100644 package/janus-gateway/janus-gateway-0001-disable-ssp.patch
>  create mode 100644 package/janus-gateway/janus-gateway.mk
>  create mode 100644 package/libnice/Config.in
>  create mode 100644 package/libnice/libnice-0001-build-IPV6_RECVERR.patch
>  create mode 100644 package/libnice/libnice.mk
>  create mode 100644 package/libsrtp/Config.in
>  create mode 100644 package/libsrtp/libsrtp.mk
>  create mode 100644 package/libwebsock/Config.in
>  create mode 100644 package/libwebsock/libwebsock.mk
>  create mode 100644 package/sofia-sip/Config.in
>  create mode 100644 package/sofia-sip/sofia-sip.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index b8fc7d1..d9ad7f5 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -115,6 +115,7 @@ endif
>  if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
>         source "package/gawk/Config.in"
>  endif
> +       source "package/gengetopt/Config.in"
>         source "package/gettext/Config.in"
>         source "package/git/Config.in"
>         source "package/gperf/Config.in"
> @@ -814,6 +815,7 @@ menu "Networking"
>         source "package/libmnl/Config.in"
>         source "package/libmodbus/Config.in"
>         source "package/libndp/Config.in"
> +       source "package/libnice/Config.in"
>         source "package/libnetfilter_acct/Config.in"
>         source "package/libnetfilter_conntrack/Config.in"
>         source "package/libnetfilter_cthelper/Config.in"
> @@ -832,6 +834,7 @@ menu "Networking"
>         source "package/libshairplay/Config.in"
>         source "package/libshout/Config.in"
>         source "package/libsoup/Config.in"
> +       source "package/libsrtp/Config.in"
>         source "package/libstrophe/Config.in"
>         source "package/libtirpc/Config.in"
>         source "package/libtorrent/Config.in"
> @@ -839,6 +842,7 @@ menu "Networking"
>         source "package/libupnpp/Config.in"
>         source "package/liburiparser/Config.in"
>         source "package/libvncserver/Config.in"
> +       source "package/libwebsock/Config.in"
>         source "package/libwebsockets/Config.in"
>         source "package/neon/Config.in"
>         source "package/nss-mdns/Config.in"
> @@ -849,6 +853,7 @@ menu "Networking"
>         source "package/rtmpdump/Config.in"
>         source "package/slirp/Config.in"
>         source "package/snmppp/Config.in"
> +       source "package/sofia-sip/Config.in"
>         source "package/thrift/Config.in"
>         source "package/usbredir/Config.in"
>         source "package/wvstreams/Config.in"
> @@ -867,6 +872,7 @@ menu "Other"
>         source "package/clapack/Config.in"
>         source "package/classpath/Config.in"
>         source "package/cppcms/Config.in"
> +       source "package/ding-libs/Config.in"
>         source "package/eigen/Config.in"
>         source "package/elfutils/Config.in"
>         source "package/fftw/Config.in"
> @@ -1040,6 +1046,7 @@ endif
>         source "package/iptraf-ng/Config.in"
>         source "package/iputils/Config.in"
>         source "package/iw/Config.in"
> +       source "package/janus-gateway/Config.in"
>         source "package/kismet/Config.in"
>         source "package/knock/Config.in"
>         source "package/leafnode2/Config.in"
> diff --git a/package/Config.in.host b/package/Config.in.host
> index 185dcbc..c7fcfe5 100644
> --- a/package/Config.in.host
> +++ b/package/Config.in.host
> @@ -8,6 +8,7 @@ menu "Host utilities"
>         source "package/e2tools/Config.in.host"
>         source "package/genext2fs/Config.in.host"
>         source "package/genimage/Config.in.host"
> +       source "package/gengetopt/Config.in.host"
>         source "package/genpart/Config.in.host"
>         source "package/lpc3250loader/Config.in.host"
>         source "package/mtd/Config.in.host"
> diff --git a/package/ding-libs/Config.in b/package/ding-libs/Config.in
> new file mode 100644
> index 0000000..7c7a17f
> --- /dev/null
> +++ b/package/ding-libs/Config.in
> @@ -0,0 +1,9 @@
> +config BR2_PACKAGE_DING_LIBS
> +       bool "ding-libs"
> +#      depends on BR2_TOOLCHAIN_BUILDROOT_LOCALE

Why is this commented?

> +       select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
> +       select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT
> +       help
> +       Adds ding-libs
> +       https://git.fedorahosted.org/git/ding-libs.git

Help message should:
- breifly describe what the package is;
- be indented with 1 tab+2 spaces;
- be separated with a blank line from the package/project url

> +

Remove the trailing blank line

> diff --git a/package/ding-libs/ding-libs.mk b/package/ding-libs/ding-libs.mk
> new file mode 100644
> index 0000000..582b9be
> --- /dev/null
> +++ b/package/ding-libs/ding-libs.mk
> @@ -0,0 +1,17 @@
> +#############################################################
> +#
> +# ding-libs
> +#
> +#############################################################
> +DING_LIBS_VERSION = 0_4_0
> +DING_LIBS_SOURCE = ding_libs-$(DING_LIBS_VERSION).tar.xz
> +DING_LIBS_SITE = https://git.fedorahosted.org/cgit/ding-libs.git/snapshot
> +#DING_LIBS_DEPENDENCIES = BR2_TOOLCHAIN_BUILDROOT_LOCALE

Why is this commented? if not needed, just remove it.

> +DING_LIBS_DEPENDENCIES = $(if !$(BR2_ENABLE_LOCALE),libiconv) $(if
> $(BR2_NEEDS_GETTEXT),gettext)
> +DING_LIBS_AUTORECONF = YES

Please add a comment why autoreconf is needed, if this is really needed.

> +DING_LIBS_INSTALL_STAGING = YES
> +DING_LIBS_LICENSE = GPLv3
> +DING_LIBS_LICENSE_FILES = COPYING
> +DING_LIBS_MAKE=$(MAKE1)
> +
> +$(eval $(autotools-package))
> diff --git a/package/gengetopt/Config.in b/package/gengetopt/Config.in
> new file mode 100644
> index 0000000..41d9f75
> --- /dev/null
> +++ b/package/gengetopt/Config.in
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_GENGETOPT
> +       bool "gengetopt"
> +       help
> +       Adds GNU Gengetopt
> +       Gengetopt is a tool to write command line option parsing code
> for C programs.
> +       http://www.gnu.org/software/gengetopt/gengetopt.html

ditto (help text)

> diff --git a/package/gengetopt/Config.in.host b/package/gengetopt/Config.in.host
> new file mode 100644
> index 0000000..5be8312
> --- /dev/null
> +++ b/package/gengetopt/Config.in.host
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_HOST_GENGETOPT
> +       bool "host gengetopt"
> +       help
> +       Adds GNU Gengetopt
> +       Gengetopt is a tool to write command line option parsing code
> for C programs.
> +       http://www.gnu.org/software/gengetopt/gengetopt.html

Usually, we don't add host tools, except if this is a program for used
for generating the images.

> diff --git a/package/gengetopt/gengetopt.mk b/package/gengetopt/gengetopt.mk
> new file mode 100644
> index 0000000..692dfe1
> --- /dev/null
> +++ b/package/gengetopt/gengetopt.mk
> @@ -0,0 +1,16 @@
> +#############################################################
> +#
> +# gengetopt
> +#
> +#############################################################
> +GENGETOPT_VERSION = 2.22.6
> +GENGETOPT_SITE = ftp://ftp.gnu.org/gnu/gengetopt/
> +GENGETOPT_AUTORECONF = YES

Why is it needed? add a comment.

> +GENGETOPT_LICENSE = GPLv3
> +GENGETOPT_LICENSE_FILES = COPYING
> +
> +GENGETOPT_MAKE=$(MAKE1)
> +
> +$(eval $(autotools-package))
> +$(eval $(host-autotools-package))
> +

Remove the trailing blank line.

> diff --git a/package/janus-gateway/Config.in b/package/janus-gateway/Config.in
> new file mode 100644
> index 0000000..3a201ba
> --- /dev/null
> +++ b/package/janus-gateway/Config.in
> @@ -0,0 +1,13 @@
> +config BR2_PACKAGE_JANUS_GATEWAY
> +       bool "janus-gateway"
> +       select BR2_PACKAGE_LIBMICROHTTPD

libmicrohttpd depends on BR2_TOOLCHAIN_HAS_THREADS, you should repeat
this dependency here.

> +       select BR2_PACKAGE_JANSSON
> +       select BR2_PACKAGE_LIBNICE
> +       select BR2_PACKAGE_SOFIA_SIP
> +       select BR2_PACKAGE_LIBSRTP
> +       select BR2_PACKAGE_DING_LIBS
> +       select BR2_PACKAGE_LIBWEBSOCK
> +       select BR2_PACKAGE_HOST_GENGETOPT

This 'select' on host-gengetopt package is not needed here, just add
it to the dependency list in the *.mk file.

> +       help
> +       Adds janusgateway:
> +       https://github.com/meetecho/janus-gateway

ditto (help text)

> diff --git a/package/janus-gateway/janus-gateway-0001-disable-ssp.patch
> b/package/janus-gateway/janus-gateway-0001-disable-ssp.patch
> new file mode 100644
> index 0000000..5de8b3b
> --- /dev/null
> +++ b/package/janus-gateway/janus-gateway-0001-disable-ssp.patch
> @@ -0,0 +1,12 @@
> +diff -rupN janus-gateway-master.orig/Makefile.am
> janus-gateway-master/Makefile.am
> +--- janus-gateway-master.orig/Makefile.am      2014-11-27
> 14:36:31.000000000 +0000
> ++++ janus-gateway-master/Makefile.am   2014-12-01 16:39:50.551935028 +0000
> +@@ -14,7 +14,7 @@ AM_CFLAGS += -Wredundant-decls  # sophia
> + # some fairly big refactoring though, which can wait.
> + # AM_CFLAGS += -Wshadow -Wstrict-aliasing=2
> +
> +-AM_CFLAGS += -fstack-protector-all -g -ggdb -fPIC -rdynamic
> ++AM_CFLAGS += -g -ggdb -fPIC -rdynamic

The -g -ggdb should be sensitive to BR2_DEBUG, or just removed.

Hmm... -fPIC ?? Does this mean that janus-gateway is not available on
static build? If so, add 'depends on !BR2_PREFER_STATIC_LIBS' in the
Config.in.

> +
> + # FIXME: make docs work with distcheck
> + DISTCHECK_CONFIGURE_FLAGS = --disable-docs --enable-post-processing

Package patch should have a description and your sob line, and the
fetched-from url if found on the www.

> diff --git a/package/janus-gateway/janus-gateway.mk
> b/package/janus-gateway/janus-gateway.mk
> new file mode 100644
> index 0000000..f03a3cb
> --- /dev/null
> +++ b/package/janus-gateway/janus-gateway.mk
> @@ -0,0 +1,27 @@
> +#############################################################
> +#
> +# janus-gateway
> +#
> +#############################################################
> +JANUS_GATEWAY_VERSION = master

Use a unique version (tag or commit sha1), not a branch name whichh
badly breaks build reproducibility.

> +JANUS_GATEWAY_SITE_METHOD = git
> +JANUS_GATEWAY_SITE = https://github.com/meetecho/janus-gateway.git

Cannot the github helper be used here?

> +JANUS_GATEWAY_LICENSE = GPLv3
> +JANUS_GATEWAY_LICENSE_FILES = COPYING
> +
> +JANUS_GATEWAY_DEPENDENCIES = host-pkgconf libmicrohttpd jansson
> libnice sofia-sip libsrtp ding-libs libwebsock host-gengetopt
> +
> +# Straight out of the repository, no ./configure
> +JANUS_GATEWAY_AUTORECONF = YES
> +
> +define JANUS_GATEWAY_M4
> +        mkdir -p $(@D)/m4
> +endef
> +JANUS_GATEWAY_POST_PATCH_HOOKS += JANUS_GATEWAY_M4
> +
> +JANUS_GATEWAY_CONF_OPTS = --disable-data-channels \
> +                               --disable-rabbitmq
> +
> +JANUS_GATEWAY_MAKE=$(MAKE1)
> +
> +$(eval $(autotools-package))
> diff --git a/package/libnice/Config.in b/package/libnice/Config.in
> new file mode 100644
> index 0000000..1ff8560
> --- /dev/null
> +++ b/package/libnice/Config.in
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_LIBNICE
> +       bool "libnice"
> +       select BR2_PACKAGE_LIBGLIB2

MIssing 'depends on' from libglib2 (iirc: wchar, mmu and threads).

> +       help
> +       Adds libnice - The GLib ICE implementation

What does ICE stand for?
Hint: you can copy/paste a 1 sentence description from the project page. ;-)

> +       http://nice.freedesktop.org/wiki/
> diff --git a/package/libnice/libnice-0001-build-IPV6_RECVERR.patch
> b/package/libnice/libnice-0001-build-IPV6_RECVERR.patch
> new file mode 100644
> index 0000000..39ef617
> --- /dev/null
> +++ b/package/libnice/libnice-0001-build-IPV6_RECVERR.patch
> @@ -0,0 +1,20 @@
> +diff -rupN libnice-0.1.8.orig/stun/usages/bind.c
> libnice-0.1.8/stun/usages/bind.c
> +--- libnice-0.1.8.orig/stun/usages/bind.c      2014-09-22
> 18:01:28.000000000 +0100
> ++++ libnice-0.1.8/stun/usages/bind.c   2014-12-01 13:28:32.144707407 +0000
> +@@ -257,12 +257,16 @@ static int stun_socket (int family, int
> +     int yes = 1;
> +     switch (family)
> +     {
> ++#ifdef IP_RECVERR
> +       case AF_INET:
> +         setsockopt (fd, SOL_IP, IP_RECVERR, &yes, sizeof (yes));
> ++#endif
> +         break;
> ++#ifdef IPV6_RECVERR
> +       case AF_INET6:
> +         setsockopt (fd, SOL_IPV6, IPV6_RECVERR, &yes, sizeof (yes));
> +         break;
> ++#endif
> +       default:
> +         /* Nothing to do. */
> +         break;

ditto (patch desc.)

> diff --git a/package/libnice/libnice.mk b/package/libnice/libnice.mk
> new file mode 100644
> index 0000000..dd7f7a4
> --- /dev/null
> +++ b/package/libnice/libnice.mk
> @@ -0,0 +1,11 @@
> +#############################################################
> +#
> +# libnice
> +#
> +#############################################################
> +LIBNICE_VERSION = 0.1.8
> +LIBNICE_SITE = http://nice.freedesktop.org/releases/
> +LIBNICE_DEPENDENCIES = libglib2
> +LIBNICE_INSTALL_STAGING = YES

Missing _LICENSE and _LICENSE_FILES vars.

> +
> +$(eval $(autotools-package))
> diff --git a/package/libsrtp/Config.in b/package/libsrtp/Config.in
> new file mode 100644
> index 0000000..b81e9cf
> --- /dev/null
> +++ b/package/libsrtp/Config.in
> @@ -0,0 +1,5 @@
> +config BR2_PACKAGE_LIBSRTP
> +       bool "libsrtp"
> +       help
> +       Adds libsrtp
> +       https://github.com/cisco/libsrtp

ditto (help text)

> diff --git a/package/libsrtp/libsrtp.mk b/package/libsrtp/libsrtp.mk
> new file mode 100644
> index 0000000..b1e56eb
> --- /dev/null
> +++ b/package/libsrtp/libsrtp.mk
> @@ -0,0 +1,13 @@
> +#############################################################
> +#
> +# libsrtp
> +#
> +#############################################################
> +LIBSRTP_VERSION = v1.5.0
> +LIBSRTP_SITE_METHOD = git
> +LIBSRTP_SITE = https://github.com/cisco/libsrtp/

Cannot the github helper (so a tarball) be used here?

> +LIBSRTP_AUTORECONF = YES

autoreconf comment

> +LIBSRTP_INSTALL_STAGING = YES
> +LIBSRTP_LICENSE = BSD-3c

No _LICENSE_FILES?

> +
> +$(eval $(autotools-package))
> diff --git a/package/libwebsock/Config.in b/package/libwebsock/Config.in
> new file mode 100644
> index 0000000..427b3fd
> --- /dev/null
> +++ b/package/libwebsock/Config.in
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_LIBWEBSOCK
> +       bool "libwebsock"
> +       select BR2_PACKAGE_LIBEVENT
> +       help
> +       Adds libwebsock
> +       https://github.com/payden/libwebsock

ditto (help text)

> diff --git a/package/libwebsock/libwebsock.mk b/package/libwebsock/libwebsock.mk
> new file mode 100644
> index 0000000..f82b553
> --- /dev/null
> +++ b/package/libwebsock/libwebsock.mk
> @@ -0,0 +1,22 @@
> +#############################################################
> +#
> +# libwebsock
> +#
> +#############################################################
> +LIBWEBSOCK_VERSION = 3c1615eeadb0b582b63851073bfe3e5132f31ebc
> +LIBWEBSOCK_SITE_METHOD = git
> +LIBWEBSOCK_SITE = https://github.com/payden/libwebsock.git

github helper (and tarball) cannot be used here?

> +LIBWEBSOCK_DEPENDENCIES = libevent
> +LIBWEBSOCK_AUTORECONF = YES
> +LIBWEBSOCK_INSTALL_STAGING = YES
> +LIBWEBSOCK_LICENSE = LGPLv3
> +LIBWEBSOCK_LICENSE_FILES = COPYING
> +
> +LIBWEBSOCK_CFLAGS = $(TARGET_CFLAGS)

Not needed since you don't add any cflag.

> +LIBWEBSOCK_LIBS += -lpthread -levent
> +
> +LIBWEBSOCK_CONF_ENV += \
> +        CFLAGS="$(LIBWEBSOCK_CFLAGS)" \

Already handled by the autotools infra.

> +        LIBS="$(LIBWEBSOCK_LIBS)"
> +
> +$(eval $(autotools-package))
> diff --git a/package/sofia-sip/Config.in b/package/sofia-sip/Config.in
> new file mode 100644
> index 0000000..d9045b5
> --- /dev/null
> +++ b/package/sofia-sip/Config.in
> @@ -0,0 +1,5 @@
> +config BR2_PACKAGE_SOFIA_SIP
> +       bool "sofia-sip"
> +       help
> +       Adds Sofia-SIP Library
> +       http://sofia-sip.sourceforge.net

ditto (help text)

> diff --git a/package/sofia-sip/sofia-sip.mk b/package/sofia-sip/sofia-sip.mk
> new file mode 100644
> index 0000000..0539453
> --- /dev/null
> +++ b/package/sofia-sip/sofia-sip.mk
> @@ -0,0 +1,17 @@
> +#############################################################
> +#
> +# sofiasip
> +#
> +#############################################################
> +SOFIA_SIP_VERSION = 1.12.11
> +SOFIA_SIP_SOURCE = sofia-sip-$(SOFIA_SIP_VERSION).tar.gz

Not needed, this is the default tarball filename.

> +SOFIA_SIP_SITE =
> http://downloads.sourceforge.net/project/sofia-sip/sofia-sip/$(SOFIA_SIP_VERSION)

Broken patch! wrapped line :-/

Missing _LICENSE and _LICENSE_FILES.


> +SOFIA_SIP_INSTALL_STAGING = YES
> +
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_IPV6),y)

keep things as symetrical as possible, so explicitly add:
SOFIA_SIP_CONF_OPTS = --enable-ip6

> +else
> +       SOFIA_SIP_CONF_OPTS = --disable-ip6
> +endif
> +
> +

Remove extra blank line.

> +$(eval $(autotools-package))
> --
> 1.9.1
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot


Regards,

-- 
Samuel


More information about the buildroot mailing list