From 877495855647bb68a1b98c8417832032f6ebb923 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Thu, 25 Jul 2019 11:31:22 -0700 Subject: [PATCH] libzmq: Remove uClibc++ support libzmq is used by fbzmq, which absolutely requires libstdcpp since it's a C++14 project. There's no point in using two libc++. Cleaned up Makefile for consistency between packages. Added nanosleep patch for platforms that are missing usleep. Signed-off-by: Rosen Penev (cherry-picked from ad11587c40eccd3c3dd21a0c1a356c4daf0534ce) --- libs/zmq/Makefile | 28 +++++----- ...sable_pedantic_on_linux_with_ulibc++.patch | 14 ----- ...0-map_with_const_string_with_ublic++.patch | 12 +---- libs/zmq/patches/050-nanosleep.patch | 54 +++++++++++++++++++ 4 files changed, 70 insertions(+), 38 deletions(-) delete mode 100644 libs/zmq/patches/010-disable_pedantic_on_linux_with_ulibc++.patch create mode 100644 libs/zmq/patches/050-nanosleep.patch diff --git a/libs/zmq/Makefile b/libs/zmq/Makefile index 3ac17529b5..a202d1a382 100644 --- a/libs/zmq/Makefile +++ b/libs/zmq/Makefile @@ -1,4 +1,4 @@ -# +# # Copyright (C) 2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. @@ -11,25 +11,22 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zeromq PKG_VERSION:=4.1.7 -PKG_RELEASE:=1 -PKG_MAINTAINER:=Dirk Chang -PKG_LICENSE:=GPL-3.0+ -PKG_LICENSE_FILES:=LICENCE.txt - -PKG_CPE_ID:=cpe:/a:zeromq:libzmq +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/zeromq/zeromq4-1/releases/download/v$(PKG_VERSION) PKG_HASH:=31c383cfcd3be1dc8a66e448c403029e793687e70473b89c4cc0bd626e7da299 - PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) -PKG_FIXUP:=autoreconf +PKG_MAINTAINER:=Dirk Chang +PKG_LICENSE:=GPL-3.0-or-later +PKG_LICENSE_FILES:=LICENCE.txt +PKG_CPE_ID:=cpe:/a:zeromq:libzmq PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 +PKG_REMOVE_FILES:=autogen.sh acinclude.m4 aclocal.m4 - -include $(INCLUDE_DIR)/uclibc++.mk include $(INCLUDE_DIR)/package.mk define Package/libzmq/default @@ -37,7 +34,7 @@ define Package/libzmq/default URL:=http://www.zeromq.org/ SECTION:=libs CATEGORY:=Libraries - DEPENDS:=+libuuid +libpthread +librt $(CXX_DEPENDS) + DEPENDS:=+libuuid +libpthread +librt +libstdcpp PROVIDES:=libzmq endef @@ -65,7 +62,10 @@ endef # add extra configure flags here CONFIGURE_ARGS += \ --enable-static \ - --enable-shared + --enable-shared \ + --with-pic \ + --with-relaxed \ + --without-documentation ifeq ($(BUILD_VARIANT),curve) CONFIGURE_ARGS+= --with-libsodium @@ -73,6 +73,8 @@ else CONFIGURE_ARGS+= --without-libsodium endif +TARGET_CXXFLAGS += -Wno-error=cpp + define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include $(CP) $(PKG_INSTALL_DIR)/usr/include/zmq.h $(1)/usr/include diff --git a/libs/zmq/patches/010-disable_pedantic_on_linux_with_ulibc++.patch b/libs/zmq/patches/010-disable_pedantic_on_linux_with_ulibc++.patch deleted file mode 100644 index 391941fb57..0000000000 --- a/libs/zmq/patches/010-disable_pedantic_on_linux_with_ulibc++.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/configure.ac -+++ b/configure.ac -@@ -150,8 +150,10 @@ case "${host_os}" in - *linux*) - # Define on Linux to enable all library features. Define if using a gnu compiler - if test "x$GXX" = "xyes"; then -- CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" -+ CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS -Wno-long-long" - fi -+ libzmq_pedantic="no" -+ libzmq_werror="no" - AC_DEFINE(ZMQ_HAVE_LINUX, 1, [Have Linux OS]) - libzmq_on_linux="yes" - diff --git a/libs/zmq/patches/020-map_with_const_string_with_ublic++.patch b/libs/zmq/patches/020-map_with_const_string_with_ublic++.patch index 8a47aa1ad0..a00716060b 100644 --- a/libs/zmq/patches/020-map_with_const_string_with_ublic++.patch +++ b/libs/zmq/patches/020-map_with_const_string_with_ublic++.patch @@ -12,16 +12,6 @@ metadata_t (const dict_t &dict); virtual ~metadata_t (); ---- a/src/socket_base.cpp -+++ b/src/socket_base.cpp -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - - #include "platform.hpp" - --- a/src/stream_engine.cpp +++ b/src/stream_engine.cpp @@ -208,7 +208,11 @@ void zmq::stream_engine_t::plug (io_thread_t *io_thread_, @@ -36,7 +26,7 @@ zmq_assert (metadata == NULL); metadata = new (std::nothrow) metadata_t (properties); } -@@ -815,7 +815,11 @@ void zmq::stream_engine_t::mechanism_ready () +@@ -824,7 +828,11 @@ void zmq::stream_engine_t::mechanism_ready () // If we have a peer_address, add it to metadata if (!peer_address.empty()) { diff --git a/libs/zmq/patches/050-nanosleep.patch b/libs/zmq/patches/050-nanosleep.patch new file mode 100644 index 0000000000..5e48c07534 --- /dev/null +++ b/libs/zmq/patches/050-nanosleep.patch @@ -0,0 +1,54 @@ +--- a/src/signaler.cpp ++++ b/src/signaler.cpp +@@ -86,7 +86,8 @@ static int sleep_ms (unsigned int ms_) + usleep (ms_ * 1000); + return 0; + #else +- return usleep (ms_ * 1000); ++ const struct timespec req = {0, (long int)ms_ * 1000 * 1000}; ++ return nanosleep (&req, NULL); + #endif + } + +--- a/src/tcp_address.cpp ++++ b/src/tcp_address.cpp +@@ -29,6 +29,7 @@ + + #include + #include ++#include + + #include "tcp_address.hpp" + #include "platform.hpp" +@@ -194,7 +195,8 @@ int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_, bool is_ + rc = getifaddrs (&ifa); + if (rc == 0 || (rc < 0 && errno != ECONNREFUSED)) + break; +- usleep ((backoff_msec << i) * 1000); ++ const struct timespec req = {0, (backoff_msec << i) * 1000 * 1000}; ++ nanosleep (&req, NULL); + } + errno_assert (rc == 0); + zmq_assert (ifa != NULL); +--- a/src/zmq.cpp ++++ b/src/zmq.cpp +@@ -692,7 +692,8 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) + usleep (timeout_ * 1000); + return 0; + #else +- return usleep (timeout_ * 1000); ++ const struct timespec req = {0, timeout_ * 1000 * 1000}; ++ return nanosleep (&req, NULL); + #endif + } + +@@ -852,7 +853,8 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) + Sleep (timeout_ > 0 ? timeout_ : INFINITE); + return 0; + #else +- return usleep (timeout_ * 1000); ++ const struct timespec req = {0, timeout_ * 1000 * 1000}; ++ return nanosleep (&req, NULL); + #endif + } + zmq::clock_t clock; -- 2.30.2