[Bug 262552] net/mosquitto: Mosquitto websockets support not working

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 13 Feb 2023 16:20:29 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262552

--- Comment #16 from Rod Morgan <rmorgan@portmorgan.com> ---
First and foremost, thanks for looking into this.

Looking at your patch file, it appears to be a patch to the original
libwebsockets v4.2.2.  Assuming that to be correct, I restored the
libwebsockets port to its original state (prior to the first patch). 
Implemented the new patch to v4.3.2, deinstalled, cleaned, config'd, installed.
 All with no errors or warnings.  

Upon rebuilding (deinstall, clean, install) mosquitto, I got a failure
referencing an undefined symbol for pthread_create.  I've attached the patched
libwebsockets Makefile and the mosquitto make error.

Here is the v4.3.2 Makefile.

=======
PORTNAME=       libwebsockets
DISTVERSIONPREFIX=      v
DISTVERSION=    4.3.2
CATEGORIES=     net devel
MASTER_SITES=   https://libwebsockets.org/git/libwebsockets/snapshot/

MAINTAINER=     ports@FreeBSD.org
COMMENT=        C library for lightweight websocket clients and servers
WWW=            https://libwebsockets.org/

LICENSE=        MIT
LICENSE_FILE=   ${WRKSRC}/LICENSE

USES=           cmake localbase pkgconfig tar:xz
USE_LDCONFIG=   yes

BUILDINFO=      ${HOSTARCH}-portbld-${OPSYS:tl}-${OSREL:R}

CMAKE_ARGS=     -DLWS_BUILD_HASH:STRING="${BUILDINFO}"
CMAKE_ON=       CMAKE_DISABLE_FIND_PACKAGE_Git \
                LWS_WITH_DISKCACHE LWS_WITH_FTS LWS_IPV6 LWS_WITH_RANGES \
                LWS_WITH_SSL LWS_WITH_THREADPOOL LWS_WITH_ZLIB \
                LWS_WITHOUT_BUILTIN_SHA1 \
                LWS_WITHOUT_TESTAPPS LWS_WITHOUT_TEST_SERVER \
                LWS_WITHOUT_TEST_SERVER_EXTPOLL \
                LWS_WITHOUT_TEST_PING LWS_WITHOUT_TEST_CLIENT

OPTIONS_DEFINE=         HTTP_PROXY HTTP2 MQTT PEERLIMITS PLUGINS \
                        SECURE_STREAMS SOCKS SQLITE WEBSERVER
OPTIONS_DEFAULT=        HTTP2 MQTT OPENSSL LIBUV
OPTIONS_SUB=            yes

OPTIONS_SINGLE=         SSL
OPTIONS_SINGLE_SSL=     MBEDTLS OPENSSL
OPTIONS_GROUP=          EVLOOP
OPTIONS_GROUP_EVLOOP=   GLIB LIBEV LIBEVENT LIBUV

HTTP_PROXY_DESC=        HTTP proxy support
MQTT_DESC=              MQTT client support
PEERLIMITS_DESC=        Tracking and limiting of resources of peer(s)
PLUGINS_DESC=           Plugins support
SECURE_STREAMS_DESC=    Secure streams protocol API support
SOCKS_DESC=             Allow use of SOCKS5 proxy on client connections
EVLOOP_DESC=            Event loop support
GLIB_DESC=              Events support via Glib
LIBEVENT_DESC=          Asynchronous event notification via libevent
LIBUV_DESC=             Asynchronous I/O support via libuv

HTTP_PROXY_CMAKE_BOOL=  LWS_WITH_HTTP_PROXY
HTTP2_CMAKE_BOOL=       LWS_WITH_HTTP2
MQTT_CMAKE_BOOL=        LWS_ROLE_MQTT LWS_WITH_EXTERNAL_POLL
PEERLIMITS_CMAKE_BOOL=  LWS_WITH_PEER_LIMITS
PLUGINS_CMAKE_BOOL=     LWS_WITH_PLUGINS \
                        LWS_WITH_PLUGINS_API
SECURE_STREAMS_CMAKE_BOOL=      LWS_WITH_SECURE_STREAMS \
                        LWS_WITH_SECURE_STREAMS_PROXY_API
SOCKS_CMAKE_BOOL=       LWS_WITH_SOCKS5
SQLITE_LIB_DEPENDS=     libsqlite3.so:databases/sqlite3
SQLITE_CMAKE_BOOL=      LWS_WITH_SQLITE3
WEBSERVER_CMAKE_BOOL=   LWS_WITH_LWSWS
WEBSERVER_IMPLIES=      PEERLIMITS PLUGINS LIBUV

MBEDTLS_LIB_DEPENDS=    libmbedtls.so:security/mbedtls
MBEDTLS_CMAKE_BOOL=     LWS_WITH_MBEDTLS
OPENSSL_USES=           ssl
OPENSSL_CMAKE_BOOL=     LWS_WITHOUT_BUILTIN_SHA1
# WolfSSL needs to be compiled with --enable-libwebsockets to work
# WOLFSSL_LIB_DEPENDS=  libwolfssl.so:security/wolfssl
# WOLFSSL_CMAKE_BOOL=   LWS_WITH_SSL LWS_WITH_WOLFSSL
# WOLFSSL_CMAKE_ON=     -DLWS_WOLFSSL_INCLUDE_DIRS=${LOCALBASE}/include \
#                       -DLWS_WOLFSSL_LIBRARIES=${LOCALBASE}/lib/libwolfssl.so

GLIB_USES=              gnome
GLIB_USE=               GNOME=glib20
GLIB_CMAKE_BOOL=        LWS_WITH_GLIB
LIBEV_LIB_DEPENDS=      libev.so:devel/libev
LIBEV_CMAKE_BOOL=       LWS_WITH_LIBEV
LIBEVENT_LIB_DEPENDS=   libevent.so:devel/libevent
LIBEVENT_CMAKE_BOOL=    LWS_WITH_LIBEVENT
LIBUV_LIB_DEPENDS=      libuv.so:devel/libuv
LIBUV_CMAKE_BOOL=       LWS_WITH_LIBUV

.include <bsd.port.options.mk>

# Allow usage of LibreSSL via OPENSSL option
.if ${PORT_OPTIONS:MOPENSSL} && ${SSL_DEFAULT} == libressl
CMAKE_ARGS+=   
-DLWS_OPENSSL_LIBRARIES='${OPENSSLLIB}/libtls.so;${OPENSSLLIB}/libssl.so;${OPENSSLLIB}/libcrypto.so'
-DLWS_OPENSSL_INCLUDE_DIRS=${OPENSSLINC}/ssl
.endif

.include <bsd.port.mk>
=========

=========
FAILED: src/mosquitto
: && /usr/bin/cc -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -O2
-pipe  -fstack-protector-strong -fno-strict-aliasing  -DNDEBUG
-fstack-protector-strong  
-Wl,-dynamic-list=/usr/ports/net/mosquitto/work/mosquitto-2.0.15/src/linker.syms
src/CMakeFiles/mosquitto.dir/__/lib/alias_mosq.c.o
src/CMakeFiles/mosquitto.dir/bridge.c.o
src/CMakeFiles/mosquitto.dir/bridge_topic.c.o
src/CMakeFiles/mosquitto.dir/conf.c.o
src/CMakeFiles/mosquitto.dir/conf_includedir.c.o
src/CMakeFiles/mosquitto.dir/context.c.o
src/CMakeFiles/mosquitto.dir/control.c.o
src/CMakeFiles/mosquitto.dir/database.c.o
src/CMakeFiles/mosquitto.dir/handle_auth.c.o
src/CMakeFiles/mosquitto.dir/handle_connack.c.o
src/CMakeFiles/mosquitto.dir/handle_connect.c.o
src/CMakeFiles/mosquitto.dir/handle_disconnect.c.o
src/CMakeFiles/mosquitto.dir/__/lib/handle_ping.c.o
src/CMakeFiles/mosquitto.dir/__/lib/handle_pubackcomp.c.o
src/CMakeFiles/mosquitto.dir/handle_publish.c.o
src/CMakeFiles/mosquitto.dir/__/lib/handle_pubrec.c.o
src/CMakeFiles/mosquitto.dir/__/lib/handle_pubrel.c.o
src/CMakeFiles/mosquitto.dir/__/lib/handle_suback.c.o
src/CMakeFiles/mosquitto.dir/handle_subscribe.c.o
src/CMakeFiles/mosquitto.dir/__/lib/handle_unsuback.c.o
src/CMakeFiles/mosquitto.dir/handle_unsubscribe.c.o
src/CMakeFiles/mosquitto.dir/keepalive.c.o
src/CMakeFiles/mosquitto.dir/logging.c.o src/CMakeFiles/mosquitto.dir/loop.c.o
src/CMakeFiles/mosquitto.dir/__/lib/memory_mosq.c.o
src/CMakeFiles/mosquitto.dir/memory_public.c.o
src/CMakeFiles/mosquitto.dir/mosquitto.c.o
src/CMakeFiles/mosquitto.dir/__/lib/misc_mosq.c.o
src/CMakeFiles/mosquitto.dir/mux.c.o src/CMakeFiles/mosquitto.dir/mux_epoll.c.o
src/CMakeFiles/mosquitto.dir/mux_poll.c.o src/CMakeFiles/mosquitto.dir/net.c.o
src/CMakeFiles/mosquitto.dir/__/lib/net_mosq_ocsp.c.o
src/CMakeFiles/mosquitto.dir/__/lib/net_mosq.c.o
src/CMakeFiles/mosquitto.dir/__/lib/packet_datatypes.c.o
src/CMakeFiles/mosquitto.dir/__/lib/packet_mosq.c.o
src/CMakeFiles/mosquitto.dir/password_mosq.c.o
src/CMakeFiles/mosquitto.dir/persist_read_v234.c.o
src/CMakeFiles/mosquitto.dir/persist_read_v5.c.o
src/CMakeFiles/mosquitto.dir/persist_read.c.o
src/CMakeFiles/mosquitto.dir/persist_write_v5.c.o
src/CMakeFiles/mosquitto.dir/persist_write.c.o
src/CMakeFiles/mosquitto.dir/plugin.c.o
src/CMakeFiles/mosquitto.dir/plugin_public.c.o
src/CMakeFiles/mosquitto.dir/property_broker.c.o
src/CMakeFiles/mosquitto.dir/__/lib/property_mosq.c.o
src/CMakeFiles/mosquitto.dir/read_handle.c.o
src/CMakeFiles/mosquitto.dir/retain.c.o
src/CMakeFiles/mosquitto.dir/security.c.o
src/CMakeFiles/mosquitto.dir/security_default.c.o
src/CMakeFiles/mosquitto.dir/__/lib/send_mosq.c.o
src/CMakeFiles/mosquitto.dir/send_auth.c.o
src/CMakeFiles/mosquitto.dir/send_connack.c.o
src/CMakeFiles/mosquitto.dir/__/lib/send_connect.c.o
src/CMakeFiles/mosquitto.dir/__/lib/send_disconnect.c.o
src/CMakeFiles/mosquitto.dir/__/lib/send_publish.c.o
src/CMakeFiles/mosquitto.dir/send_suback.c.o
src/CMakeFiles/mosquitto.dir/signals.c.o
src/CMakeFiles/mosquitto.dir/__/lib/send_subscribe.c.o
src/CMakeFiles/mosquitto.dir/send_unsuback.c.o
src/CMakeFiles/mosquitto.dir/__/lib/send_unsubscribe.c.o
src/CMakeFiles/mosquitto.dir/session_expiry.c.o
src/CMakeFiles/mosquitto.dir/__/lib/strings_mosq.c.o
src/CMakeFiles/mosquitto.dir/subs.c.o src/CMakeFiles/mosquitto.dir/sys_tree.c.o
src/CMakeFiles/mosquitto.dir/__/lib/time_mosq.c.o
src/CMakeFiles/mosquitto.dir/__/lib/tls_mosq.c.o
src/CMakeFiles/mosquitto.dir/topic_tok.c.o
src/CMakeFiles/mosquitto.dir/__/lib/util_mosq.c.o
src/CMakeFiles/mosquitto.dir/__/lib/util_topic.c.o
src/CMakeFiles/mosquitto.dir/__/lib/utf8_mosq.c.o
src/CMakeFiles/mosquitto.dir/websockets.c.o
src/CMakeFiles/mosquitto.dir/will_delay.c.o
src/CMakeFiles/mosquitto.dir/__/lib/will_mosq.c.o -o src/mosquitto
-L/usr/local/lib -Wl,-rpath,/usr/local/lib:  -lssl  -lcrypto  -ldl  -lm  -lrt 
/usr/local/lib/libwebsockets.a  -lssl  -lcrypto  -lz && :
ld: error: undefined symbol: pthread_create
>>> referenced by threadpool.c
>>>               threadpool.c.o:(lws_threadpool_create) in archive /usr/local/lib/libwebsockets.a
==============

-- 
You are receiving this mail because:
You are the assignee for the bug.