Message ID | 20171017205308.28529-1-Adamduskett@outlook.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | [v2,1/1] libcpprestsdk: new package | expand |
Hello,
On Tue, 17 Oct 2017 16:53:08 -0400, Adam Duskett wrote:
> + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBRESSL
Meh:
package/openssl/Config.in:1: symbol BR2_PACKAGE_OPENSSL is selected by BR2_PACKAGE_LIBRESSL
package/libressl/Config.in:1: symbol BR2_PACKAGE_LIBRESSL depends on BR2_PACKAGE_OPENSSL
package/openssl/Config.in:1:error: recursive dependency detected!
package/openssl/Config.in:1: symbol BR2_PACKAGE_OPENSSL is selected by BR2_PACKAGE_LIBRESSL
package/libressl/Config.in:1: symbol BR2_PACKAGE_LIBRESSL depends on BR2_PACKAGE_OPENSSL
Thomas
On 17-10-17 23:06, Thomas Petazzoni wrote: > Hello, > > On Tue, 17 Oct 2017 16:53:08 -0400, Adam Duskett wrote: > >> + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBRESSL > > Meh: > > package/openssl/Config.in:1: symbol BR2_PACKAGE_OPENSSL is selected by BR2_PACKAGE_LIBRESSL > package/libressl/Config.in:1: symbol BR2_PACKAGE_LIBRESSL depends on BR2_PACKAGE_OPENSSL > package/openssl/Config.in:1:error: recursive dependency detected! > package/openssl/Config.in:1: symbol BR2_PACKAGE_OPENSSL is selected by BR2_PACKAGE_LIBRESSL > package/libressl/Config.in:1: symbol BR2_PACKAGE_LIBRESSL depends on BR2_PACKAGE_OPENSSL Solved by inverting the select: select BR2_PACKAGE_LIBRESSL if !BR2_PACKAGE_OPENSSL But since we probably want to use openssl by default, not libressl, we should perhaps instead invert the condition in the openssl/libressl packages. I.e., remove the depends from libressl, and add 'depends on !libressl' to openssl. Or, of course, introduce the virtual package. So I've added that as a topic for the developer meeting. Regards, Arnout
Hello, On Tue, 17 Oct 2017 16:53:08 -0400, Adam Duskett wrote: > The C++ REST SDK is a Microsoft project for cloud-based client-server > communication in native code using a modern asynchronous C++ API design. > This project aims to help C++ developers connect to and interact with > services. > > This package is licensed under the MIT package and depends on BOOST > and OpenSSL (although it is compatible with LibreSSL.) > > Signed-off-by: Adam Duskett <Adamduskett@outlook.com> It fails to build here, with: /home/thomas/projets/buildroot/output/build/libcpprestsdk-v2.9.0/Release/include/cpprest/astreambuf.h: In member function ‘pplx::task<_InternalReturnType> Concurrency::streams::details::streambuf_state_manager<_CharType>::create_exception_checked_value_task(const _CharType1&) const [with _CharType1 = int; _CharType = unsigned char]’: /home/thomas/projets/buildroot/output/build/libcpprestsdk-v2.9.0/Release/include/cpprest/astreambuf.h:748:9: error: control reaches end of non-void function [-Werror=return-type] } ^ /home/thomas/projets/buildroot/output/build/libcpprestsdk-v2.9.0/Release/include/cpprest/astreambuf.h: In member function ‘pplx::task<_InternalReturnType> Concurrency::streams::details::streambuf_state_manager<_CharType>::create_exception_checked_value_task(const _CharType1&) const [with _CharType1 = unsigned int; _CharType = char]’: /home/thomas/projets/buildroot/output/build/libcpprestsdk-v2.9.0/Release/include/cpprest/astreambuf.h:748:9: error: control reaches end of non-void function [-Werror=return-type] } ^ [... many more instances of that ...] Using this defconfig: BR2_arm=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.05-1078-g95b1dae.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y BR2_INIT_NONE=y BR2_SYSTEM_BIN_SH_NONE=y # BR2_PACKAGE_BUSYBOX is not set BR2_PACKAGE_LIBRESSL=y BR2_PACKAGE_LIBCPPRESTSDK=y # BR2_TARGET_ROOTFS_TAR is not set You can catch such issues by using ./utils/test-pkg. Note that I slightly adjusted your patch to accommodate the recent openssl changes. Here is the diff that I have: diff --git a/package/libcpprestsdk/Config.in b/package/libcpprestsdk/Config.in index 91ef1648c8..e4cafe4063 100644 --- a/package/libcpprestsdk/Config.in +++ b/package/libcpprestsdk/Config.in @@ -9,7 +9,7 @@ config BR2_PACKAGE_LIBCPPRESTSDK select BR2_PACKAGE_BOOST_THREAD select BR2_PACKAGE_BOOST_REGEX select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBRESSL + select BR2_PACKAGE_OPENSSL help The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern @@ -19,5 +19,5 @@ config BR2_PACKAGE_LIBCPPRESTSDK https://github.com/Microsoft/cpprestsdk comment "libcpprestsdk needs a toolchain w/ C++, wchar, threads" - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ - || !BR2_USE_WCHAR + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/package/libcpprestsdk/libcpprestsdk.mk b/package/libcpprestsdk/libcpprestsdk.mk index 9b9b594016..d8b79710d4 100644 --- a/package/libcpprestsdk/libcpprestsdk.mk +++ b/package/libcpprestsdk/libcpprestsdk.mk @@ -11,9 +11,7 @@ LIBCPPRESTSDK_LICENSE = MIT LIBCPPRESTSDK_LICENSE_FILES = license.txt LIBCPPRESTSDK_SUBDIR = Release -ifeq ($(BR2_PACKAGE_LIBRESSL),y) -LIBCPPRESTSDK_DEPENDENCIES += libressl -else +ifeq ($(BR2_PACKAGE_OPENSSL),y) LIBCPPRESTSDK_DEPENDENCIES += openssl endif Could you include it in your next submission ? Thanks! Thomas
diff --git a/DEVELOPERS b/DEVELOPERS index dd19a0a4d0..207f9dd69d 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -32,6 +32,7 @@ F: package/gstreamer1/gst1-rtsp-server/ N: Adam Duskett <aduskett@gmail.com> F: package/audit/ F: package/checkpolicy/ +F: package/cpprestsdk/ F: package/gstreamer1/gst1-vaapi/ F: package/janus-gateway/ F: package/libressl/ diff --git a/package/Config.in b/package/Config.in index d4cf62708a..8171d40042 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1337,6 +1337,7 @@ menu "Networking" source "package/libcgi/Config.in" source "package/libcgicc/Config.in" source "package/libcoap/Config.in" + source "package/libcpprestsdk/Config.in" source "package/libcurl/Config.in" source "package/libdnet/Config.in" source "package/libeXosip2/Config.in" diff --git a/package/libcpprestsdk/Config.in b/package/libcpprestsdk/Config.in new file mode 100644 index 0000000000..91ef1648c8 --- /dev/null +++ b/package/libcpprestsdk/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LIBCPPRESTSDK + bool "libcpprestsdk" + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBRESSL + help + The C++ REST SDK is a Microsoft project for cloud-based + client-server communication in native code using a modern + asynchronous C++ API design. This project aims to help C++ + developers connect to and interact with services. + + https://github.com/Microsoft/cpprestsdk + +comment "libcpprestsdk needs a toolchain w/ C++, wchar, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR diff --git a/package/libcpprestsdk/libcpprestsdk.hash b/package/libcpprestsdk/libcpprestsdk.hash new file mode 100644 index 0000000000..131ed3b51a --- /dev/null +++ b/package/libcpprestsdk/libcpprestsdk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 bef46381a036625d12d575d69ce9f3dd78b4317e41d1196b928dff83cc5a9c05 libcpprestsdk-v2.9.0.tar.gz +sha256 5c191789f502ac87df83b57008d2fc3e47fbf31315381b5bc4309f6602d0fe97 license.txt diff --git a/package/libcpprestsdk/libcpprestsdk.mk b/package/libcpprestsdk/libcpprestsdk.mk new file mode 100644 index 0000000000..9b9b594016 --- /dev/null +++ b/package/libcpprestsdk/libcpprestsdk.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libcpprestsdk +# +################################################################################ + +LIBCPPRESTSDK_VERSION = v2.9.0 +LIBCPPRESTSDK_SITE = $(call github,Microsoft,cpprestsdk,$(LIBCPPRESTSDK_VERSION)) +LIBCPPRESTSDK_DEPENDENCIES = boost +LIBCPPRESTSDK_LICENSE = MIT +LIBCPPRESTSDK_LICENSE_FILES = license.txt +LIBCPPRESTSDK_SUBDIR = Release + +ifeq ($(BR2_PACKAGE_LIBRESSL),y) +LIBCPPRESTSDK_DEPENDENCIES += libressl +else +LIBCPPRESTSDK_DEPENDENCIES += openssl +endif + +$(eval $(cmake-package))
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services. This package is licensed under the MIT package and depends on BOOST and OpenSSL (although it is compatible with LibreSSL.) Signed-off-by: Adam Duskett <Adamduskett@outlook.com> --- Changes v1 -> v2: - Add "depends on BR2_USE_WCHAR # boost" to boost.mk (Thomas) - Remove "depends on BR2_USE_MMU" from boost.mk (Thomas) - Add "!BR2_USE_WCHAR" to boost.mk (Thomas) DEVELOPERS | 1 + package/Config.in | 1 + package/libcpprestsdk/Config.in | 23 +++++++++++++++++++++++ package/libcpprestsdk/libcpprestsdk.hash | 3 +++ package/libcpprestsdk/libcpprestsdk.mk | 20 ++++++++++++++++++++ 5 files changed, 48 insertions(+) create mode 100644 package/libcpprestsdk/Config.in create mode 100644 package/libcpprestsdk/libcpprestsdk.hash create mode 100644 package/libcpprestsdk/libcpprestsdk.mk