Tijl Coosemans 1bf487d3e7 Fix Qt5 symbol version scripts to put the catch-all clause first. When
a symbol matches multiple clauses the last one takes precedence.  If the
catch-all is last it captures everything.  In the case of Qt5 libraries
this caused all symbols to have a Qt_5 label while some should have
Qt_5_PRIVATE_API.  This only affects lld because GNU ld always gives the
catch-all lowest priority.

Older versions of Qt5Webengine exported some memory allocation symbols from
the bundled Chromium.  Version 5.9 stopped exporting these [1] but the
symbols were kept as weak wrappers for the standard allocation functions to
maintain binary compatibility. [2][3]  The problem is that the call to the
standard function in these weak wrappers is only resolved to the standard
function if there's a call to this standard function in other parts of
Qt5Webengine, because only then is there a non-weak symbol that takes
precedence over the weak one.  If there's no such non-weak symbol the call
in the weak wrapper resolves to the weak wrapper itself creating an infinite
call loop that overflows the stack and causes a crash.  Some of the
allocation functions are variants of C++ new and delete and it probably
depends on the compiler whether these variants are used in other parts of
Qt5Webengine.

Remove the weak wrappers (make them Linux specific).  This isn't binary
compatible but we are already breaking that with the changes to the symbol
versions.

[1] 5c2cbfccf9
[2] 2ed5054e3a
[3] 009f5ebb4b

Bump all ports that depend on Qt5.

PR:		234070
Exp-run by:	antoine
Approved by:	kde (adridg)
2019-01-16 11:13:44 +00:00

79 lines
2.6 KiB
Makefile

# $FreeBSD$
PORTNAME= keepassxc
DISTVERSION= 2.3.4
PORTREVISION= 3
CATEGORIES= security
MASTER_SITES= https://github.com/keepassxreboot/keepassxc/releases/download/${DISTVERSION}/${PORTNAME}-${DISTVERSION}-src.tar.xz?dummy=/
MAINTAINER= melanhit@gmail.com
COMMENT= KeePass Cross-platform Community Edition
LICENSE= APACHE20 BOOST-1.0 BSD3CLAUSE CC0-1.0 GPLv2 GPLv3 LGPL21 \
LGPL3 NOKIA-LGPL-EXCEPTION
LICENSE_COMB= multi
LICENSE_NAME_BOOST-1.0= Boost Software License version 1.0
LICENSE_NAME_NOKIA-LGPL-EXCEPTION= Nokia Qt LGPL Exception version 1.1
LICENSE_FILE_BOOST-1.0= ${WRKSRC}/LICENSE.BOOST-1.0
LICENSE_FILE_NOKIA-LGPL-EXCEPTION= ${WRKSRC}/LICENSE.NOKIA-LGPL-EXCEPTION
LICENSE_PERMS_BOOST-1.0= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
LICENSE_PERMS_NOKIA-LGPL-EXCEPTION= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
LIB_DEPENDS= libargon2.so:security/libargon2 \
libcurl.so:ftp/curl \
libgcrypt.so:security/libgcrypt \
libgpg-error.so:security/libgpg-error
USES= cmake compiler:c++11-lang desktop-file-utils qt:5 \
shared-mime-info tar:xz
USE_QT= buildtools_build concurrent core dbus gui linguisttools network \
qmake_build testlib widgets
USE_XORG= x11
USE_LDCONFIG= yes
# patching CMakeLists.txt does not help because that is being overided by
# cmake/GNUInstallDirs.cmake
CMAKE_ARGS+= -DCMAKE_INSTALL_MANDIR=${PREFIX}/man
CONFLICTS_INSTALL= keepassx-0.* keepassx2-* keepassx-*
OPTIONS_DEFINE= AUTOTYPE BROWSER HTTP NETWORKING YUBIKEY SSHAGENT TEST
OPTIONS_DEFAULT= AUTOTYPE BROWSER HTTP NETWORKING SSHAGENT
OPTIONS_SUB= yes
AUTOTYPE_CMAKE_BOOL= WITH_XC_AUTOTYPE
AUTOTYPE_DESC= Auto-type passwords in input fields
AUTOTYPE_USES= qt:5
AUTOTYPE_USE= QT=x11extras XORG=xi,xtst
BROWSER_CMAKE_BOOL= WITH_XC_BROWSER
BROWSER_DESC= Browser integration with KeePassXC-Browser
BROWSER_LIB_DEPENDS= libsodium.so:security/libsodium
# Legacy/Deprecated.
HTTP_CMAKE_BOOL= WITH_XC_HTTP
HTTP_DESC= KeePassHTTP support for ChromeIPass and PassIFox
NETWORKING_CMAKE_BOOL= WITH_XC_NETWORKING
NETWORKING_DESC= Networking support (e.g. for downloading website icons)
SSHAGENT_CMAKE_BOOL= WITH_XC_SSHAGENT
SSHAGENT_DESC= SSH agent support
YUBIKEY_CMAKE_BOOL= WITH_XC_YUBIKEY
YUBIKEY_DESC= YubiKey support
YUBIKEY_LIB_DEPENDS= libykpers-1.so:security/ykpers \
libyubikey.so:security/libyubikey
TEST_CMAKE_BOOL= WITH_TESTS WITH_GUI_TESTS
TEST_TEST_TARGET= test
post-patch:
@${REINPLACE_CMD} -e 's|Q_OS_LINUX|Q_OS_UNIX|g' \
${WRKSRC}/src/browser/HostInstaller.cpp
@${REINPLACE_CMD} -e 's|u_int|__uint|g' \
${WRKSRC}/src/sshagent/blf.h
.include <bsd.port.mk>