All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2] package/resiprocate: new package
@ 2020-07-20 14:32 Ryan Barnett
  2020-07-20 20:28 ` Thomas Petazzoni
  0 siblings, 1 reply; 4+ messages in thread
From: Ryan Barnett @ 2020-07-20 14:32 UTC (permalink / raw)
  To: buildroot

reSIProcate is a framework that aims to fully implement the SIP
protocol in first class C++. It is intended for use in other
applications, such as the repro SIP proxy.

Signed-off-by: Ryan Barnett <ryan.barnett@rockwellcollins.com>
---
v1 -> v2:
 - Add install to staging since this is a library
---
 package/Config.in                    |  1 +
 package/resiprocate/Config.in        | 48 ++++++++++++++++++++++++++++
 package/resiprocate/resiprocate.hash |  4 +++
 package/resiprocate/resiprocate.mk   | 47 +++++++++++++++++++++++++++
 4 files changed, 100 insertions(+)
 create mode 100644 package/resiprocate/Config.in
 create mode 100644 package/resiprocate/resiprocate.hash
 create mode 100644 package/resiprocate/resiprocate.mk

diff --git a/package/Config.in b/package/Config.in
index 22531d4fb5..7ab1112644 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1768,6 +1768,7 @@ menu "Networking"
 	source "package/qdecoder/Config.in"
 	source "package/qpid-proton/Config.in"
 	source "package/rabbitmq-c/Config.in"
+	source "package/resiprocate/Config.in"
 	source "package/restclient-cpp/Config.in"
 	source "package/rtmpdump/Config.in"
 	source "package/slirp/Config.in"
diff --git a/package/resiprocate/Config.in b/package/resiprocate/Config.in
new file mode 100644
index 0000000000..fc44a6a30f
--- /dev/null
+++ b/package/resiprocate/Config.in
@@ -0,0 +1,48 @@
+config BR2_PACKAGE_RESIPROCATE
+	bool "resiprocate"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_USE_WCHAR
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_C_ARES
+	help
+	  reSIProcate is a framework that aims to fully implement the
+	  SIP protocol in first class C++. It is intended for use in
+	  other applications, such as the repro SIP proxy.
+
+	  By default this package provides the core libraries: librutil
+	  (utilities), libresip (SIP stack/RFC compliant message
+	  parsing) and libdum (SIP Dialog Usage Manager, a state
+	  machine for SIP dialogs).
+
+	  https://www.resiprocate.org/
+
+comment "resiprocate needs a toolchain w/ C++, threads, wchar"
+	depends on BR2_USE_MMU
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
+
+if BR2_PACKAGE_RESIPROCATE
+
+config BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT
+	bool "Enable DTLS support"
+	select BR2_PACKAGE_OPENSSL
+	help
+	  Enable DTLS support (requires OpenSSL)
+
+config BR2_PACKAGE_RESIPROCATE_REND
+	bool "resiprocate-rend"
+	select BR2_PACKAGE_BOOST
+	select BR2_PACKAGE_BOOST_SYSTEM
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_POPT
+	help
+	  Rend is tool that is was created specifically to load test
+	  gtSIP based presence servers.
+
+config BR2_PACKAGE_RESIPROCATE_APPS
+	bool "resiprocate-apps"
+	select BR2_PACKAGE_PCRE
+	help
+	  Build apps clicktocall and sipdial
+
+endif # BR2_PACKAGE_RESIPROCATE
diff --git a/package/resiprocate/resiprocate.hash b/package/resiprocate/resiprocate.hash
new file mode 100644
index 0000000000..03336c64a2
--- /dev/null
+++ b/package/resiprocate/resiprocate.hash
@@ -0,0 +1,4 @@
+# http://list.resiprocate.org/pipermail/resiprocate-announce/2020-May/000000.html
+sha256  046826503d3c8682ae0e42101b28f903c5f988235f1ff4a98dbfb9066d0d3d49  resiprocate-1.12.0.tar.gz
+# Locally Computed
+sha256  16b0fd1938a10fcd145904cc2dad74500fef9d27fc15b44cf8e8f92011f94d35  COPYING
diff --git a/package/resiprocate/resiprocate.mk b/package/resiprocate/resiprocate.mk
new file mode 100644
index 0000000000..3a17c888e3
--- /dev/null
+++ b/package/resiprocate/resiprocate.mk
@@ -0,0 +1,47 @@
+################################################################################
+#
+# resiprocate
+#
+################################################################################
+
+RESIPROCATE_VERSION = 1.12.0
+RESIPROCATE_SITE =  $(call github,resiprocate,resiprocate,resiprocate-$(RESIPROCATE_VERSION))
+# For complete details see https://www.resiprocate.org/License
+RESIPROCATE_LICENSE = VSL-1.0, BSD-3-Clause
+RESIPROCATE_LICENSE_FILES = COPYING
+RESIPROCATE_INSTALL_STAGING = YES
+
+# Utilize c-ares from buildroot instead built in ARES library
+# NOTE: resiprocate doesn't support --without-<feature> syntax as it will try
+#       to build with package if specified
+RESIPROCATE_DEPENDENCIES = c-ares
+RESIPROCATE_CONF_OPTS = -with-c-ares \
+	--with-sysroot="$(STAGING_DIR)"
+
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+RESIPROCATE_DEPENDENCIES += openssl host-pkgconf
+RESIPROCATE_CONF_OPTS += --with-ssl
+# Configure.ac does not include '-lz' when statically linking against openssl
+RESIPROCATE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`
+endif
+
+ifeq ($(BR2_PACKAGE_POPT),y)
+RESIPROCATE_CONF_OPTS += --with-popt
+RESIPROCATE_DEPENDENCIES += popt
+endif
+
+ifeq ($(BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT),y)
+RESIPROCATE_CONF_OPTS += --with-dtls
+endif
+
+ifeq ($(BR2_PACKAGE_RESIPROCATE_REND),y)
+RESIPROCATE_CONF_OPTS += --with-rend
+RESIPROCATE_DEPENDENCIES += boost
+endif
+
+ifeq ($(BR2_PACKAGE_RESIPROCATE_APPS),y)
+RESIPROCATE_CONF_OPTS += --with-apps
+RESIPROCATE_DEPENDENCIES += pcre
+endif
+
+$(eval $(autotools-package))
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2] package/resiprocate: new package
  2020-07-20 14:32 [Buildroot] [PATCH v2] package/resiprocate: new package Ryan Barnett
@ 2020-07-20 20:28 ` Thomas Petazzoni
  2020-07-21  1:57   ` Ryan Barnett
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Petazzoni @ 2020-07-20 20:28 UTC (permalink / raw)
  To: buildroot

On Mon, 20 Jul 2020 09:32:45 -0500
Ryan Barnett <ryan.barnett@rockwellcollins.com> wrote:

> reSIProcate is a framework that aims to fully implement the SIP
> protocol in first class C++. It is intended for use in other
> applications, such as the repro SIP proxy.
> 
> Signed-off-by: Ryan Barnett <ryan.barnett@rockwellcollins.com>

I've applied after doing a number of changes, see below.

>  package/Config.in                    |  1 +
>  package/resiprocate/Config.in        | 48 ++++++++++++++++++++++++++++
>  package/resiprocate/resiprocate.hash |  4 +++
>  package/resiprocate/resiprocate.mk   | 47 +++++++++++++++++++++++++++
>  4 files changed, 100 insertions(+)

An entry in the DEVELOPERS file was missing, so I added one.

> diff --git a/package/resiprocate/Config.in b/package/resiprocate/Config.in
> new file mode 100644
> index 0000000000..fc44a6a30f
> --- /dev/null
> +++ b/package/resiprocate/Config.in
> @@ -0,0 +1,48 @@
> +config BR2_PACKAGE_RESIPROCATE
> +	bool "resiprocate"
> +	depends on BR2_INSTALL_LIBSTDCPP
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	depends on BR2_USE_WCHAR
> +	depends on BR2_USE_MMU # fork()
> +	select BR2_PACKAGE_C_ARES
> +	help
> +	  reSIProcate is a framework that aims to fully implement the
> +	  SIP protocol in first class C++. It is intended for use in
> +	  other applications, such as the repro SIP proxy.
> +
> +	  By default this package provides the core libraries: librutil
> +	  (utilities), libresip (SIP stack/RFC compliant message
> +	  parsing) and libdum (SIP Dialog Usage Manager, a state
> +	  machine for SIP dialogs).
> +
> +	  https://www.resiprocate.org/
> +
> +comment "resiprocate needs a toolchain w/ C++, threads, wchar"
> +	depends on BR2_USE_MMU
> +	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR

This comment was not placed correctly: placed between the main option
and the sub-options, it breaks the indentation of the sub-options in
menuconfig. So I moved it earlier in the file.

> +
> +if BR2_PACKAGE_RESIPROCATE
> +
> +config BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT
> +	bool "Enable DTLS support"
> +	select BR2_PACKAGE_OPENSSL
> +	help
> +	  Enable DTLS support (requires OpenSSL)

I haven't changed this, but I'm wondering if it makes sense to have a
separate option for this. You already have an optional dependency on
OpenSSL. How much more size does --with-dtls takes ?

> diff --git a/package/resiprocate/resiprocate.hash b/package/resiprocate/resiprocate.hash
> new file mode 100644
> index 0000000000..03336c64a2
> --- /dev/null
> +++ b/package/resiprocate/resiprocate.hash
> @@ -0,0 +1,4 @@
> +# http://list.resiprocate.org/pipermail/resiprocate-announce/2020-May/000000.html
> +sha256  046826503d3c8682ae0e42101b28f903c5f988235f1ff4a98dbfb9066d0d3d49  resiprocate-1.12.0.tar.gz
> +# Locally Computed
> +sha256  16b0fd1938a10fcd145904cc2dad74500fef9d27fc15b44cf8e8f92011f94d35  COPYING
> diff --git a/package/resiprocate/resiprocate.mk b/package/resiprocate/resiprocate.mk
> new file mode 100644
> index 0000000000..3a17c888e3
> --- /dev/null
> +++ b/package/resiprocate/resiprocate.mk
> @@ -0,0 +1,47 @@
> +################################################################################
> +#
> +# resiprocate
> +#
> +################################################################################
> +
> +RESIPROCATE_VERSION = 1.12.0
> +RESIPROCATE_SITE =  $(call github,resiprocate,resiprocate,resiprocate-$(RESIPROCATE_VERSION))

This didn't work, as it doesn't give the same hash as the official
release tarball, so I switched to using the official release tarball.

> +# For complete details see https://www.resiprocate.org/License
> +RESIPROCATE_LICENSE = VSL-1.0, BSD-3-Clause
> +RESIPROCATE_LICENSE_FILES = COPYING
> +RESIPROCATE_INSTALL_STAGING = YES
> +
> +# Utilize c-ares from buildroot instead built in ARES library
> +# NOTE: resiprocate doesn't support --without-<feature> syntax as it will try
> +#       to build with package if specified

Is this something that could be reported upstream, and fixed ?

> +RESIPROCATE_DEPENDENCIES = c-ares
> +RESIPROCATE_CONF_OPTS = -with-c-ares \
> +	--with-sysroot="$(STAGING_DIR)"
> +
> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +RESIPROCATE_DEPENDENCIES += openssl host-pkgconf
> +RESIPROCATE_CONF_OPTS += --with-ssl
> +# Configure.ac does not include '-lz' when statically linking against openssl
> +RESIPROCATE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`

Upstream configure.ac is already using PKG_CHECK_MODULES(), so it could
be improved to use that as well for OpenSSL.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2] package/resiprocate: new package
  2020-07-20 20:28 ` Thomas Petazzoni
@ 2020-07-21  1:57   ` Ryan Barnett
  2020-07-21  7:25     ` Thomas Petazzoni
  0 siblings, 1 reply; 4+ messages in thread
From: Ryan Barnett @ 2020-07-21  1:57 UTC (permalink / raw)
  To: buildroot

Thomas,

On Mon, Jul 20, 2020 at 3:30 PM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> On Mon, 20 Jul 2020 09:32:45 -0500
> Ryan Barnett <ryan.barnett@rockwellcollins.com> wrote:
>
> > reSIProcate is a framework that aims to fully implement the SIP
> > protocol in first class C++. It is intended for use in other
> > applications, such as the repro SIP proxy.
> >
> > Signed-off-by: Ryan Barnett <ryan.barnett@rockwellcollins.com>
>
> I've applied after doing a number of changes, see below.
>
> >  package/Config.in                    |  1 +
> >  package/resiprocate/Config.in        | 48 ++++++++++++++++++++++++++++
> >  package/resiprocate/resiprocate.hash |  4 +++
> >  package/resiprocate/resiprocate.mk   | 47 +++++++++++++++++++++++++++
> >  4 files changed, 100 insertions(+)
>
> An entry in the DEVELOPERS file was missing, so I added one.
>
> > diff --git a/package/resiprocate/Config.in b/package/resiprocate/Config.in
> > new file mode 100644
> > index 0000000000..fc44a6a30f
> > --- /dev/null
> > +++ b/package/resiprocate/Config.in
> > @@ -0,0 +1,48 @@
> > +config BR2_PACKAGE_RESIPROCATE
> > +     bool "resiprocate"
> > +     depends on BR2_INSTALL_LIBSTDCPP
> > +     depends on BR2_TOOLCHAIN_HAS_THREADS
> > +     depends on BR2_USE_WCHAR
> > +     depends on BR2_USE_MMU # fork()
> > +     select BR2_PACKAGE_C_ARES
> > +     help
> > +       reSIProcate is a framework that aims to fully implement the
> > +       SIP protocol in first class C++. It is intended for use in
> > +       other applications, such as the repro SIP proxy.
> > +
> > +       By default this package provides the core libraries: librutil
> > +       (utilities), libresip (SIP stack/RFC compliant message
> > +       parsing) and libdum (SIP Dialog Usage Manager, a state
> > +       machine for SIP dialogs).
> > +
> > +       https://www.resiprocate.org/
> > +
> > +comment "resiprocate needs a toolchain w/ C++, threads, wchar"
> > +     depends on BR2_USE_MMU
> > +     depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
>
> This comment was not placed correctly: placed between the main option
> and the sub-options, it breaks the indentation of the sub-options in
> menuconfig. So I moved it earlier in the file.

Thank you for pointing this out and the explanation. I noticed that
they were not intended as sub-options but could did not know why they
were not intended

> > +
> > +if BR2_PACKAGE_RESIPROCATE
> > +
> > +config BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT
> > +     bool "Enable DTLS support"
> > +     select BR2_PACKAGE_OPENSSL
> > +     help
> > +       Enable DTLS support (requires OpenSSL)
>
> I haven't changed this, but I'm wondering if it makes sense to have a
> separate option for this. You already have an optional dependency on
> OpenSSL. How much more size does --with-dtls takes ?

The reason that I created this option was so that when selected, it
will also select/enable OpenSSL features for the package. As far as
size improvements, there are none:

Build with only enabling BR2_PACKAGE_RESIPROCATE (size in bytes):

    3168800 Jul 20 20:06 output/target/usr/lib/libresip-1.12.so*

Build with BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT (size in bytes):

    3168800 Jul 20 20:29 output/target/usr/lib/libresip-1.12.so*

Do you just prefer this option is removed?

>
> > diff --git a/package/resiprocate/resiprocate.hash b/package/resiprocate/resiprocate.hash
> > new file mode 100644
> > index 0000000000..03336c64a2
> > --- /dev/null
> > +++ b/package/resiprocate/resiprocate.hash
> > @@ -0,0 +1,4 @@
> > +# http://list.resiprocate.org/pipermail/resiprocate-announce/2020-May/000000.html
> > +sha256  046826503d3c8682ae0e42101b28f903c5f988235f1ff4a98dbfb9066d0d3d49  resiprocate-1.12.0.tar.gz
> > +# Locally Computed
> > +sha256  16b0fd1938a10fcd145904cc2dad74500fef9d27fc15b44cf8e8f92011f94d35  COPYING
> > diff --git a/package/resiprocate/resiprocate.mk b/package/resiprocate/resiprocate.mk
> > new file mode 100644
> > index 0000000000..3a17c888e3
> > --- /dev/null
> > +++ b/package/resiprocate/resiprocate.mk
> > @@ -0,0 +1,47 @@
> > +################################################################################
> > +#
> > +# resiprocate
> > +#
> > +################################################################################
> > +
> > +RESIPROCATE_VERSION = 1.12.0
> > +RESIPROCATE_SITE =  $(call github,resiprocate,resiprocate,resiprocate-$(RESIPROCATE_VERSION))
>
> This didn't work, as it doesn't give the same hash as the official
> release tarball, so I switched to using the official release tarball.

I apologize for this - since this was developed behind a firewall, I
had to use a web browser to download the tar file and place it on my
build server. Initially there was an issue when trying to download the
tar.gz file using Chrome as it would download the file already
extracted. This is because the HTTP request reply header contains
'content-encoding: gzip' which chrome automatically decompresses the
file. I had temporarily switch to Github to try the issue until I
track the issue down to this by using Firefox:

https://superuser.com/questions/940605/chromium-prevent-unpacking-tar-gz

> > +# For complete details see https://www.resiprocate.org/License
> > +RESIPROCATE_LICENSE = VSL-1.0, BSD-3-Clause
> > +RESIPROCATE_LICENSE_FILES = COPYING
> > +RESIPROCATE_INSTALL_STAGING = YES
> > +
> > +# Utilize c-ares from buildroot instead built in ARES library
> > +# NOTE: resiprocate doesn't support --without-<feature> syntax as it will try
> > +#       to build with package if specified
>
> Is this something that could be reported upstream, and fixed ?

Issue has been reported upstream in the following GitHub issue:

https://github.com/resiprocate/resiprocate/issues/155

>
> > +RESIPROCATE_DEPENDENCIES = c-ares
> > +RESIPROCATE_CONF_OPTS = -with-c-ares \
> > +     --with-sysroot="$(STAGING_DIR)"
> > +
> > +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> > +RESIPROCATE_DEPENDENCIES += openssl host-pkgconf
> > +RESIPROCATE_CONF_OPTS += --with-ssl
> > +# Configure.ac does not include '-lz' when statically linking against openssl
> > +RESIPROCATE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`
>
> Upstream configure.ac is already using PKG_CHECK_MODULES(), so it could
> be improved to use that as well for OpenSSL.

I can look at creating a patch for this in the future.

Thanks again for the review and fix the minor issues.

-Ryan

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2] package/resiprocate: new package
  2020-07-21  1:57   ` Ryan Barnett
@ 2020-07-21  7:25     ` Thomas Petazzoni
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni @ 2020-07-21  7:25 UTC (permalink / raw)
  To: buildroot

Hello,

On Mon, 20 Jul 2020 20:57:25 -0500
Ryan Barnett <ryan.barnett@collins.com> wrote:

> > > +if BR2_PACKAGE_RESIPROCATE
> > > +
> > > +config BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT
> > > +     bool "Enable DTLS support"
> > > +     select BR2_PACKAGE_OPENSSL
> > > +     help
> > > +       Enable DTLS support (requires OpenSSL)  
> >
> > I haven't changed this, but I'm wondering if it makes sense to have a
> > separate option for this. You already have an optional dependency on
> > OpenSSL. How much more size does --with-dtls takes ?  
> 
> The reason that I created this option was so that when selected, it
> will also select/enable OpenSSL features for the package. As far as
> size improvements, there are none:
> 
> Build with only enabling BR2_PACKAGE_RESIPROCATE (size in bytes):
> 
>     3168800 Jul 20 20:06 output/target/usr/lib/libresip-1.12.so*
> 
> Build with BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT (size in bytes):
> 
>     3168800 Jul 20 20:29 output/target/usr/lib/libresip-1.12.so*
> 
> Do you just prefer this option is removed?

So what is this option doing? Is the DTLS support only in the apps? I
tried to track down where the USE_DTLS macro is used, but since I'm not
familiar with the code base, I couldn't quickly figure that out.

Is the size increase is modest, then I would just enable DTLS support
when OpenSSL is available, i.e together with --with-ssl.

> > This didn't work, as it doesn't give the same hash as the official
> > release tarball, so I switched to using the official release tarball.  
> 
> I apologize for this - since this was developed behind a firewall, I
> had to use a web browser to download the tar file and place it on my
> build server. Initially there was an issue when trying to download the
> tar.gz file using Chrome as it would download the file already
> extracted. This is because the HTTP request reply header contains
> 'content-encoding: gzip' which chrome automatically decompresses the
> file. I had temporarily switch to Github to try the issue until I
> track the issue down to this by using Firefox:
> 
> https://superuser.com/questions/940605/chromium-prevent-unpacking-tar-gz

OK, no worries.

> > Is this something that could be reported upstream, and fixed ?  
> 
> Issue has been reported upstream in the following GitHub issue:
> 
> https://github.com/resiprocate/resiprocate/issues/155

Thanks! I added a comment to it.

> > Upstream configure.ac is already using PKG_CHECK_MODULES(), so it could
> > be improved to use that as well for OpenSSL.  
> 
> I can look at creating a patch for this in the future.

Great, thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-07-21  7:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-20 14:32 [Buildroot] [PATCH v2] package/resiprocate: new package Ryan Barnett
2020-07-20 20:28 ` Thomas Petazzoni
2020-07-21  1:57   ` Ryan Barnett
2020-07-21  7:25     ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.