Index: head/net/qt5-network/Makefile =================================================================== --- head/net/qt5-network/Makefile (revision 488841) +++ head/net/qt5-network/Makefile (revision 488842) @@ -1,48 +1,48 @@ # $FreeBSD$ PORTNAME= network DISTVERSION= ${QT5_VERSION} -PORTREVISION= 3 +PORTREVISION= 4 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-src_plugins_bearer_generic_qgenericengine.cpp =================================================================== --- head/net/qt5-network/files/patch-src_plugins_bearer_generic_qgenericengine.cpp (revision 488841) +++ head/net/qt5-network/files/patch-src_plugins_bearer_generic_qgenericengine.cpp (revision 488842) @@ -1,42 +1,54 @@ 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 @@ +--- src/plugins/bearer/generic/qgenericengine.cpp.orig 2018-12-03 11:15:26 UTC ++++ src/plugins/bearer/generic/qgenericengine.cpp +@@ -82,7 +82,7 @@ using namespace ABI::Windows::Networking::Connectivity // 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 @@ +@@ -139,6 +139,23 @@ static QNetworkConfiguration::BearerType qGetInterface 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); +@@ -231,9 +248,11 @@ static QNetworkConfiguration::BearerType qGetInterface + QGenericEngine::QGenericEngine(QObject *parent) + : QBearerEngineImpl(parent) + { ++#ifndef QT_NO_NETWORKINTERFACE + //workaround for deadlock in __cxa_guard_acquire with webkit on macos x + //initialise the Q_GLOBAL_STATIC in same thread as the AtomicallyInitializedStatic + (void)QNetworkInterface::interfaceFromIndex(0); ++#endif + } + + QGenericEngine::~QGenericEngine()