[v4,1/1] package/uvw: new package
diff mbox series

Message ID 20191026140204.14776-1-asafka7@gmail.com
State Accepted
Headers show
Series
  • [v4,1/1] package/uvw: new package
Related show

Commit Message

Asaf Kahlon Oct. 26, 2019, 2:02 p.m. UTC
A header-only libuv wrapper in C++.

Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
---
v3->v4:
 * gcc 7.x is now OR'ed with NPTL and dynamic library.
 * use UVW_SUPPORTS_IN_SOURCE_BUILD = NO.

Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
---
 DEVELOPERS             |  1 +
 package/Config.in      |  1 +
 package/libuv/libuv.mk |  2 ++
 package/uvw/Config.in  | 19 +++++++++++++++++++
 package/uvw/uvw.hash   |  3 +++
 package/uvw/uvw.mk     | 16 ++++++++++++++++
 6 files changed, 42 insertions(+)
 create mode 100644 package/uvw/Config.in
 create mode 100644 package/uvw/uvw.hash
 create mode 100644 package/uvw/uvw.mk

Comments

Thomas Petazzoni Oct. 26, 2019, 2:30 p.m. UTC | #1
On Sat, 26 Oct 2019 17:02:04 +0300
Asaf Kahlon <asafka7@gmail.com> wrote:

> A header-only libuv wrapper in C++.
> 
> Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
> ---
> v3->v4:
>  * gcc 7.x is now OR'ed with NPTL and dynamic library.
>  * use UVW_SUPPORTS_IN_SOURCE_BUILD = NO.

Applied to master, thanks.

Thomas
Thomas Petazzoni Oct. 26, 2019, 5:43 p.m. UTC | #2
On Sat, 26 Oct 2019 17:02:04 +0300
Asaf Kahlon <asafka7@gmail.com> wrote:

> A header-only libuv wrapper in C++.
> 
> Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
> ---
> v3->v4:
>  * gcc 7.x is now OR'ed with NPTL and dynamic library.
>  * use UVW_SUPPORTS_IN_SOURCE_BUILD = NO.

This patch causes a Doxygen issue:
http://autobuild.buildroot.net/results/9c6/9c61c06142c832a9669afdcafcbb8b1f7df51082/build-end.log

Could you have a look?

Thanks!

Thomas
Asaf Kahlon Oct. 26, 2019, 8:40 p.m. UTC | #3
Hi,

On Sat, Oct 26, 2019 at 8:43 PM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> On Sat, 26 Oct 2019 17:02:04 +0300
> Asaf Kahlon <asafka7@gmail.com> wrote:
>
> > A header-only libuv wrapper in C++.
> >
> > Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
> > ---
> > v3->v4:
> >  * gcc 7.x is now OR'ed with NPTL and dynamic library.
> >  * use UVW_SUPPORTS_IN_SOURCE_BUILD = NO.
>
> This patch causes a Doxygen issue:
> http://autobuild.buildroot.net/results/9c6/9c61c06142c832a9669afdcafcbb8b1f7df51082/build-end.log
>
> Could you have a look?

Actually, this failure isn't related to Doxygen.
The problem occurs when CMake runs a simple threads test.
This seems to be fixed on a newer CMake version, as described in this issue:
https://gitlab.kitware.com/cmake/cmake/issues/16920
As a workaround, setting THREADS_PTHREAD_ARG to "2" on UVW_CONF_OPTS
does the job, but I wonder maybe we want to put it on toolchainfile.cmake,
as this can potentially happen in the future with other packages...

Do you have any thoughts regarding the correct solution?

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

Regards,
Asaf.
Thomas Petazzoni Oct. 26, 2019, 8:53 p.m. UTC | #4
On Sat, 26 Oct 2019 23:40:25 +0300
Asaf Kahlon <asafka7@gmail.com> wrote:

> Actually, this failure isn't related to Doxygen.
> The problem occurs when CMake runs a simple threads test.
> This seems to be fixed on a newer CMake version, as described in this issue:
> https://gitlab.kitware.com/cmake/cmake/issues/16920
> As a workaround, setting THREADS_PTHREAD_ARG to "2" on UVW_CONF_OPTS
> does the job, but I wonder maybe we want to put it on toolchainfile.cmake,
> as this can potentially happen in the future with other packages...
> 
> Do you have any thoughts regarding the correct solution?

We have numerous packages that do this:

# The following CMake variable disables a TRY_RUN call in the -pthread
# test which is not allowed when cross-compiling.
EXIV2_CONF_OPTS += -DTHREADS_PTHREAD_ARG=OFF

would that help for this package as well ?

Thomas
Arnout Vandecappelle Oct. 27, 2019, 11:44 p.m. UTC | #5
On 26/10/2019 22:53, Thomas Petazzoni wrote:
> On Sat, 26 Oct 2019 23:40:25 +0300
> Asaf Kahlon <asafka7@gmail.com> wrote:
> 
>> Actually, this failure isn't related to Doxygen.
>> The problem occurs when CMake runs a simple threads test.
>> This seems to be fixed on a newer CMake version, as described in this issue:
>> https://gitlab.kitware.com/cmake/cmake/issues/16920

 This was merged in CMake 3.10, apparently, so as soon as we bump the minimum
CMake version to 3.10 (which is needed for wpewebkit and webkitgtk) those
workaround can be removed again, I guess?

 Regards,
 Arnout

>> As a workaround, setting THREADS_PTHREAD_ARG to "2" on UVW_CONF_OPTS
>> does the job, but I wonder maybe we want to put it on toolchainfile.cmake,
>> as this can potentially happen in the future with other packages...
>>
>> Do you have any thoughts regarding the correct solution?
> 
> We have numerous packages that do this:
> 
> # The following CMake variable disables a TRY_RUN call in the -pthread
> # test which is not allowed when cross-compiling.
> EXIV2_CONF_OPTS += -DTHREADS_PTHREAD_ARG=OFF
> 
> would that help for this package as well ?
> 
> Thomas
>
Thomas Petazzoni Oct. 28, 2019, 7:48 a.m. UTC | #6
On Mon, 28 Oct 2019 00:44:05 +0100
Arnout Vandecappelle <arnout@mind.be> wrote:

>  This was merged in CMake 3.10, apparently, so as soon as we bump the minimum
> CMake version to 3.10 (which is needed for wpewebkit and webkitgtk) those
> workaround can be removed again, I guess?

Yes, absolutely.

Thomas

Patch
diff mbox series

diff --git a/DEVELOPERS b/DEVELOPERS
index ec4f50a79e..b9e6881419 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -239,6 +239,7 @@  F:	package/python*
 F:	package/snmpclitools/
 F:	package/spdlog/
 F:	package/uftp/
+F:	package/uvw/
 F:	package/zeromq/
 
 N:	Ash Charles <ashcharles@gmail.com>
diff --git a/package/Config.in b/package/Config.in
index d78b4c444b..901c25fe02 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1805,6 +1805,7 @@  endif
 	source "package/tinycbor/Config.in"
 	source "package/tz/Config.in"
 	source "package/tzdata/Config.in"
+	source "package/uvw/Config.in"
 	source "package/xapian/Config.in"
 endmenu
 
diff --git a/package/libuv/libuv.mk b/package/libuv/libuv.mk
index d5f1d7dbab..618b25d5f6 100644
--- a/package/libuv/libuv.mk
+++ b/package/libuv/libuv.mk
@@ -4,6 +4,8 @@ 
 #
 ################################################################################
 
+# When bumping libuv, check if a new version of uvw is available
+# and bump it too.
 LIBUV_VERSION = 1.33.1
 LIBUV_SITE = $(call github,libuv,libuv,v$(LIBUV_VERSION))
 LIBUV_DEPENDENCIES = host-pkgconf
diff --git a/package/uvw/Config.in b/package/uvw/Config.in
new file mode 100644
index 0000000000..bfaed25796
--- /dev/null
+++ b/package/uvw/Config.in
@@ -0,0 +1,19 @@ 
+config BR2_PACKAGE_UVW
+	bool "uvw"
+	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv
+	depends on BR2_USE_MMU # libuv
+	depends on !BR2_STATIC_LIBS # libuv
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17
+	select BR2_PACKAGE_LIBUV
+	help
+	  Header-only, event based, tiny and easy to use
+	  libuv wrapper in modern C++.
+
+	  https://github.com/skypjack/uvw
+
+comment "uvw needs a toolchain w/ NPTL, dynamic library, gcc >= 7"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_7
+	depends on BR2_USE_MMU
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4
diff --git a/package/uvw/uvw.hash b/package/uvw/uvw.hash
new file mode 100644
index 0000000000..e6129e559d
--- /dev/null
+++ b/package/uvw/uvw.hash
@@ -0,0 +1,3 @@ 
+# Locally calculated
+sha256  266a354f0c64a8e85f29b10f20f4d08a35bc1e8caa7cc94a8afecf9ca43f4442  uvw-2.2.0_libuv-v1.33.tar.gz
+sha256  ea786619b4d1b2ba0a188e923111122dfefea1d01c86e37f9e8c80bdbc3ea400  LICENSE
diff --git a/package/uvw/uvw.mk b/package/uvw/uvw.mk
new file mode 100644
index 0000000000..64122aea44
--- /dev/null
+++ b/package/uvw/uvw.mk
@@ -0,0 +1,16 @@ 
+################################################################################
+#
+# uvw
+#
+################################################################################
+
+UVW_VERSION = 2.2.0_libuv-v1.33
+UVW_SITE = $(call github,skypjack,uvw,v$(UVW_VERSION))
+UVW_INSTALL_STAGING = YES
+UVW_INSTALL_TARGET = NO
+UVW_SUPPORTS_IN_SOURCE_BUILD = NO
+UVW_DEPENDENCIES = libuv
+UVW_LICENSE = MIT
+UVW_LICENSE_FILES = LICENSE
+
+$(eval $(cmake-package))