Index: head/net/qt5-network/Makefile =================================================================== --- head/net/qt5-network/Makefile (revision 488275) +++ head/net/qt5-network/Makefile (revision 488276) @@ -1,47 +1,48 @@ # $FreeBSD$ PORTNAME= network DISTVERSION= ${QT5_VERSION} +PORTREVISION= 1 CATEGORIES= net ipv6 PKGNAMEPREFIX= qt5- MAINTAINER= kde@FreeBSD.org COMMENT= Qt network module RUN_DEPENDS= ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss USES= compiler:c++11-lang qmake:no_env qt-dist:5,base ssl USE_QT= core buildtools_build HAS_CONFIGURE= yes CONFIGURE_ARGS= -no-gui -no-xcb USE_LDCONFIG= ${PREFIX}/${QT_LIBDIR_REL} BUILD_WRKSRC= ${WRKSRC}/src/${PORTNAME} INSTALL_WRKSRC= ${BUILD_WRKSRC} QT_DEFINES= OPENSSL SSL QT_CONFIG= openssl post-patch: @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ ${BUILD_WRKSRC}/ssl/qsslsocket_openssl.cpp @${REINPLACE_CMD} -e 's|%%OPENSSLLIB%%|${OPENSSLLIB}|g' \ ${BUILD_WRKSRC}/ssl/qsslsocket_openssl_symbols.cpp post-configure: .for d in src/network src/plugins/bearer/generic ${MKDIR} ${WRKSRC}/${d} cd ${WRKSRC}/${d} && ${SETENV} ${QMAKE_ENV} ${_QMAKE} ${QMAKE_ARGS} ${WRKSRC}/${d} .endfor post-build: @cd ${WRKSRC}/src/plugins/bearer/generic && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} \ ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET} post-install: @cd ${WRKSRC}/src/plugins/bearer/generic && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} \ ${MAKE_ARGS} ${INSTALL_TARGET} .include Index: head/net/qt5-network/files/patch-qsslcontext_openssl.cpp =================================================================== --- head/net/qt5-network/files/patch-qsslcontext_openssl.cpp (revision 488275) +++ head/net/qt5-network/files/patch-qsslcontext_openssl.cpp (nonexistent) @@ -1,15 +0,0 @@ -* -* Fix for libressl atter openssl111 API change -* -* ---- src/network/ssl/qsslcontext_openssl.cpp.orig 2018-10-21 16:58:39 UTC -+++ src/network/ssl/qsslcontext_openssl.cpp -@@ -248,7 +248,7 @@ void QSslContext::applyBackendConfig(QSs - if (sslContext->sslConfiguration.backendConfiguration().isEmpty()) - return; - --#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) - if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) { - QSharedPointer cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free); - if (cctx) { Property changes on: head/net/qt5-network/files/patch-qsslcontext_openssl.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/net/qt5-network/files/patch-src_network_socket_qnet_unix_p.h =================================================================== --- head/net/qt5-network/files/patch-src_network_socket_qnet_unix_p.h (revision 488275) +++ head/net/qt5-network/files/patch-src_network_socket_qnet_unix_p.h (nonexistent) @@ -1,15 +0,0 @@ ---- src/network/socket/qnet_unix_p.h.orig 2018-08-27 06:31:41.917561000 +0200 -+++ src/network/socket/qnet_unix_p.h 2018-08-27 06:33:20.404588000 +0200 -@@ -71,6 +71,12 @@ - # include - #endif - -+#if defined(Q_OS_FREEBSD) -+# include -+# include -+# include -+#endif -+ - QT_BEGIN_NAMESPACE - - // Almost always the same. If not, specify in qplatformdefs.h. Property changes on: head/net/qt5-network/files/patch-src_network_socket_qnet_unix_p.h ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/net/qt5-network/files/patch-src_network_kernel_qnetworkinterface__unix.cpp =================================================================== --- head/net/qt5-network/files/patch-src_network_kernel_qnetworkinterface__unix.cpp (revision 488275) +++ head/net/qt5-network/files/patch-src_network_kernel_qnetworkinterface__unix.cpp (revision 488276) @@ -1,12 +1,95 @@ ---- src/network/kernel/qnetworkinterface_unix.cpp.orig 2018-06-15 07:29:31 UTC +Clean up interface type and MTU detection. + + - Introduce a class SockPuppet that handles closing the socket + automatically, and handles different address families as well. + - Finding MTU requires using AF_LOCAL, cribbed that detail from ifconfig.c + - Zero out structures more diligently, initialize pointers to nullptr. + - In particular, don't use a union of structs passed in to ioctl(). + Make them separate structs (with block scope so the compiler might + place them on top of each other, that would be ok). + +--- src/network/kernel/qnetworkinterface_unix.cpp.orig 2018-12-24 17:00:42 UTC +++ src/network/kernel/qnetworkinterface_unix.cpp -@@ -463,9 +463,6 @@ static QNetworkInterface::InterfaceType probeIfType(in - case IFM_ETHER: - return QNetworkInterface::Ethernet; +@@ -419,12 +419,23 @@ QT_BEGIN_INCLUDE_NAMESPACE + #endif // QT_PLATFORM_UIKIT + QT_END_INCLUDE_NAMESPACE -- case IFM_FDDI: -- return QNetworkInterface::Fddi; +-static int openSocket(int &socket) ++template struct SockPuppet + { +- if (socket == -1) +- socket = qt_safe_socket(AF_INET, SOCK_DGRAM, 0); +- return socket; +-} ++ int socket{-1}; ++ ++ int open() ++ { ++ if (socket == -1) ++ socket = qt_safe_socket(address_family, SOCK_DGRAM, 0); ++ return socket; ++ } ++ ++ ~SockPuppet() ++ { ++ if (socket != -1) ++ qt_safe_close(socket); ++ } ++} ; + + static QNetworkInterface::InterfaceType probeIfType(int socket, int iftype, struct ifmediareq *req) + { +@@ -477,15 +488,8 @@ static QNetworkInterface::InterfaceType + static QList createInterfaces(ifaddrs *rawList) + { + QList interfaces; +- union { +- struct ifmediareq mediareq; +- struct ifreq req; +- }; +- int socket = -1; - - case IFM_IEEE80211: - return QNetworkInterface::Ieee80211; +- // ensure both structs start with the name field, of size IFNAMESIZ +- Q_STATIC_ASSERT(sizeof(mediareq.ifm_name) == sizeof(req.ifr_name)); +- Q_ASSERT(&mediareq.ifm_name == &req.ifr_name); ++ SockPuppet socket; ++ SockPuppet localSocket; + + // on NetBSD we use AF_LINK and sockaddr_dl + // scan the list for that family +@@ -500,13 +504,21 @@ static QList + iface->flags = convertFlags(ptr->ifa_flags); + iface->hardwareAddress = iface->makeHwAddress(sdl->sdl_alen, (uchar*)LLADDR(sdl)); + +- strlcpy(mediareq.ifm_name, ptr->ifa_name, sizeof(mediareq.ifm_name)); +- iface->type = probeIfType(openSocket(socket), sdl->sdl_type, &mediareq); +- iface->mtu = getMtu(socket, &req); ++ { ++ ifmediareq req; ++ memset(&req, 0, sizeof(req)); ++ strncpy(req.ifm_name, ptr->ifa_name, sizeof(req.ifm_name)); ++ iface->type = probeIfType(socket.open(), sdl->sdl_type, &req); ++ } ++ { ++ ifreq req; ++ memset(&req, 0, sizeof(req)); ++ strncpy(req.ifr_name, ptr->ifa_name, sizeof(req.ifr_name)); ++ req.ifr_addr.sa_family = AF_LOCAL; ++ iface->mtu = getMtu(localSocket.open(), &req); ++ } } + +- if (socket != -1) +- qt_safe_close(socket); + return interfaces; + } + +@@ -605,7 +617,7 @@ static QList + { + QList interfaces; + +- ifaddrs *interfaceListing; ++ ifaddrs *interfaceListing = nullptr; + if (getifaddrs(&interfaceListing) == -1) { + // error + return interfaces; Index: head/net/qt5-network/files/patch-src_network_socket_qnet__unix__p.h =================================================================== --- head/net/qt5-network/files/patch-src_network_socket_qnet__unix__p.h (nonexistent) +++ head/net/qt5-network/files/patch-src_network_socket_qnet__unix__p.h (revision 488276) @@ -0,0 +1,17 @@ +Some extra includes for us. + +--- src/network/socket/qnet_unix_p.h.orig 2018-12-03 11:15:26 UTC ++++ src/network/socket/qnet_unix_p.h +@@ -71,6 +71,12 @@ + # include + #endif + ++#if defined(Q_OS_FREEBSD) ++# include ++# include ++# include ++#endif ++ + QT_BEGIN_NAMESPACE + + // Almost always the same. If not, specify in qplatformdefs.h. Property changes on: head/net/qt5-network/files/patch-src_network_socket_qnet__unix__p.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/qt5-network/files/patch-src_network_ssl_qsslcontext__openssl.cpp =================================================================== --- head/net/qt5-network/files/patch-src_network_ssl_qsslcontext__openssl.cpp (nonexistent) +++ head/net/qt5-network/files/patch-src_network_ssl_qsslcontext__openssl.cpp (revision 488276) @@ -0,0 +1,15 @@ +* +* Fix for libressl after openssl111 API change +* +* +--- src/network/ssl/qsslcontext_openssl.cpp.orig 2018-12-03 11:15:26 UTC ++++ src/network/ssl/qsslcontext_openssl.cpp +@@ -249,7 +249,7 @@ void QSslContext::applyBackendConfig(QSs + if (sslContext->sslConfiguration.backendConfiguration().isEmpty()) + return; + +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) { + QSharedPointer cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free); + if (cctx) { Property changes on: head/net/qt5-network/files/patch-src_network_ssl_qsslcontext__openssl.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/qt5-network/files/patch-src_plugins_bearer_generic_qgenericengine.cpp =================================================================== --- head/net/qt5-network/files/patch-src_plugins_bearer_generic_qgenericengine.cpp (nonexistent) +++ head/net/qt5-network/files/patch-src_plugins_bearer_generic_qgenericengine.cpp (revision 488276) @@ -0,0 +1,42 @@ +Determine suitable bearer. This code is basically the same +as the Linux code, except out ioctl()s are named differently +and we need an AF_LOCAL socket (this detail cribbed from ifconfig.c). +If getting the HW address succeeds, assume it's Ethernet. Tested +with two Ethernet cards and a vlan (all of which have a MAC reported +by ifconfig). + +--- src/plugins/bearer/generic/qgenericengine.cpp.orig 2018-12-03 12:15:26.000000000 +0100 ++++ src/plugins/bearer/generic/qgenericengine.cpp 2018-12-23 12:42:48.095145000 +0100 +@@ -82,7 +82,7 @@ + // needed as interface is used as parameter name in qGetInterfaceType + #undef interface + +-#ifdef Q_OS_LINUX ++#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) + #include + #include + #include +@@ -139,6 +139,23 @@ + + if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER) + return QNetworkConfiguration::BearerEthernet; ++ ++#elif defined(Q_OS_FREEBSD) ++ int sock = socket(AF_LOCAL, SOCK_DGRAM, 0); ++ ++ ifreq request; ++ memset(&request, 0, sizeof(struct ifreq)); ++ strncpy(request.ifr_name, interface.toLocal8Bit().data(), sizeof(request.ifr_name) - 1); ++ request.ifr_name[sizeof(request.ifr_name) - 1] = '\0'; ++ ++ if (sock >= 0) { ++ int result = ioctl(sock, SIOCGHWADDR, &request); ++ close(sock); ++ ++ if (result >= 0) ++ return QNetworkConfiguration::BearerEthernet; ++ } ++ + #elif defined(Q_OS_WINRT) + ComPtr networkInfoStatics; + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); Property changes on: head/net/qt5-network/files/patch-src_plugins_bearer_generic_qgenericengine.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property