diff -u b/subversion/libsvn_auth_kwallet/kwallet.cpp b/subversion/libsvn_auth_kwallet/kwallet.cpp --- b/subversion/libsvn_auth_kwallet/kwallet.cpp (revision 1798731) +++ b/subversion/libsvn_auth_kwallet/kwallet.cpp 2018-01-18 16:48:52.026801597 +0100 @@ -39,8 +39,6 @@ #include #include -#include -#include #include #include @@ -221,14 +219,15 @@ app = new QCoreApplication(argc, q_argv); } - KCmdLineArgs::init(q_argc, q_argv, - get_application_name(parameters, pool), - "subversion", - ki18n(get_application_name(parameters, pool)), - SVN_VER_NUMBER, - ki18n("Version control system"), - KCmdLineArgs::CmdLineArgKDE); - KComponentData component_data(KCmdLineArgs::aboutData()); + KLocalizedString::setApplicationDomain("subversion"); /* translation domain */ + + /* componentName appears in KDE GUI prompts */ + KAboutData aboutData(QStringLiteral("subversion"), /* componentName */ + i18n(get_application_name(parameters, + pool)), /* displayName */ + QStringLiteral(SVN_VER_NUMBER)); + KAboutData::setApplicationData(aboutData); + QString folder = QString::fromUtf8("Subversion"); QString key = QString::fromUtf8(username) + "@" + QString::fromUtf8(realmstring); @@ -291,14 +290,15 @@ app = new QCoreApplication(argc, q_argv); } - KCmdLineArgs::init(q_argc, q_argv, - get_application_name(parameters, pool), - "subversion", - ki18n(get_application_name(parameters, pool)), - SVN_VER_NUMBER, - ki18n("Version control system"), - KCmdLineArgs::CmdLineArgKDE); - KComponentData component_data(KCmdLineArgs::aboutData()); + KLocalizedString::setApplicationDomain("subversion"); /* translation domain */ + + /* componentName appears in KDE GUI prompts */ + KAboutData aboutData(QStringLiteral("subversion"), /* componentName */ + i18n(get_application_name(parameters, + pool)), /* displayName */ + QStringLiteral(SVN_VER_NUMBER)); + KAboutData::setApplicationData(aboutData); + QString q_password = QString::fromUtf8(password); QString folder = QString::fromUtf8("Subversion"); KWallet::Wallet *wallet = get_wallet(wallet_name, parameters); unchanged: --- a/build/ac-macros/compiler.m4 (revision 1798730) +++ b/build/ac-macros/compiler.m4 (revision 1798731) @@ -126,3 +126,18 @@ SVN_CXXFLAGS_ADD_IFELSE([-Werror=unknown-warning-option]) fi ]) + +dnl The KWallet provider needs to use C++11 mode when using KDE 5 +AC_DEFUN([SVN_CXX_MODE_SETUP11], +[ + CXXFLAGS_KEEP="$CXXFLAGS" + CXXFLAGS="" + + if test "$GXX" = "yes"; then + SVN_CXXFLAGS_ADD_IFELSE([-std=c++11]) + fi + + CXXMODEFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS_KEEP" + AC_SUBST(CXXMODEFLAGS) +]) unchanged: --- a/build/ac-macros/kwallet.m4 (revision 1798730) +++ b/build/ac-macros/kwallet.m4 (revision 1802646) @@ -25,8 +25,10 @@ AC_DEFUN(SVN_LIB_KWALLET, [ AC_ARG_WITH(kwallet, - [AS_HELP_STRING([[--with-kwallet[=PATH]]], - [Enable use of KWallet (KDE 4) for auth credentials])], + [AS_HELP_STRING([[--with-kwallet[=PATH|INCDIR:LIBDIR]]], + [Enable use of KWallet (KDE 5 or 4) for auth credentials. + PATH is the KDE install path, alternatively INCDIR:LIBDIR + are the header and library install paths. ])], [svn_lib_kwallet="$withval"], [svn_lib_kwallet=no]) @@ -42,40 +44,70 @@ if test "$APR_HAS_DSO" = "yes"; then if test -n "$PKG_CONFIG"; then if test "$HAVE_DBUS" = "yes"; then - AC_MSG_CHECKING([for QtCore, QtDBus, QtGui]) - if $PKG_CONFIG --exists QtCore QtDBus QtGui; then - AC_MSG_RESULT([yes]) + AC_MSG_CHECKING([for Qt]) + if $PKG_CONFIG --exists Qt5Core Qt5DBus Qt5Gui; then + AC_MSG_RESULT([yes, Qt5]) + qt_pkg_config_names="Qt5Core Qt5DBus Qt5Gui" + kde_config_name="kf5-config" + kde_inc_names="KF5/KWallet KF5/KCoreAddons KF5/KI18n" + kde_lib_names="-lKF5Wallet -lKF5I18n -lKF5CoreAddons -lQt5Gui -lQt5DBus -lQt5Core" + elif $PKG_CONFIG --exists QtCore QtDBus QtGui; then + AC_MSG_RESULT([yes, Qt4]) + qt_pkg_config_names="QtCore QtDBus QtGui" + kde_config_name="kde4-config" + kde_inc_names="/" + kde_lib_names="-lkdeui -lkdecore -lQtGui -lQtDBus -lQtCore" + fi + if test -n "$qt_pkg_config_names"; then if test "$svn_lib_kwallet" != "yes"; then - AC_MSG_CHECKING([for kde4-config]) - KDE4_CONFIG="$svn_lib_kwallet/bin/kde4-config" - if test -f "$KDE4_CONFIG" && test -x "$KDE4_CONFIG"; then + AC_MSG_CHECKING([for $kde_config_name]) + KDE_CONFIG="$svn_lib_kwallet/bin/$kde_config_name" + if test -f "$KDE_CONFIG" && test -x "$KDE_CONFIG"; then AC_MSG_RESULT([yes]) else - KDE4_CONFIG="" - AC_MSG_RESULT([no]) + if echo "$svn_lib_kwallet" | $EGREP ":" > /dev/null; then + AC_MSG_RESULT([unneeded]) + KDE_CONFIG="unneeded" + kde_incdir=["`echo "$svn_lib_kwallet" | $SED -e "s/:.*//"`"] + kde_libdir=["`echo "$svn_lib_kwallet" | $SED -e "s/.*://"`"] + else + AC_MSG_RESULT([no]) + KDE_CONFIG="" + fi fi else - AC_PATH_PROG(KDE4_CONFIG, kde4-config) + AC_PATH_PROG(KDE_CONFIG, $kde_config_name) + if test -n "$KDE_CONFIG"; then + kde_incdir="`$KDE_CONFIG --install include`" + kde_libdir="`$KDE_CONFIG --install lib`" + fi fi - if test -n "$KDE4_CONFIG"; then - AC_MSG_CHECKING([for KWallet]) + if test -n "$KDE_CONFIG"; then + if test $kde_config_name = "kf5-config"; then + dnl KF5 does not compile with -std=c++98 + SVN_CXX_MODE_SETUP11 + fi old_CXXFLAGS="$CXXFLAGS" old_LDFLAGS="$LDFLAGS" old_LIBS="$LIBS" - for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui`]; do + dnl --std=c++11 may be required + CXXFLAGS="$CXXFLAGS $CXXMODEFLAGS" + AC_MSG_CHECKING([for KWallet]) + for d in [`$PKG_CONFIG --cflags $qt_pkg_config_names`]; do if test -n ["`echo "$d" | $EGREP -- '^-D[^[:space:]]*'`"]; then CPPFLAGS="$CPPFLAGS $d" fi done - qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" - kde_incdir="`$KDE4_CONFIG --install include`" - SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_incdir" - qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`" - SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options" - CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES" + qt_include_dirs="`$PKG_CONFIG --cflags-only-I $qt_pkg_config_names`" + for kde_inc_name in $kde_inc_names; do + kde_kwallet_includes="$kde_kwallet_includes -I$kde_incdir/$kde_inc_name" + done + SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs $kde_kwallet_includes" + qt_libs_other_options="`$PKG_CONFIG --libs-only-other $qt_pkg_config_names`" + SVN_KWALLET_LIBS="$DBUS_LIBS $kde_lib_names $qt_libs_other_options" + CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES -fPIC" LIBS="$LIBS $SVN_KWALLET_LIBS" - qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`" - kde_libdir="`$KDE4_CONFIG --install lib`" + qt_lib_dirs="`$PKG_CONFIG --libs-only-L $qt_pkg_config_names`" LDFLAGS="$old_LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($qt_lib_dirs -L$kde_libdir)`" AC_LANG(C++) AC_LINK_IFELSE([AC_LANG_SOURCE([[ @@ -87,16 +119,19 @@ AC_MSG_RESULT([yes]) CXXFLAGS="$old_CXXFLAGS" LIBS="$old_LIBS" + if test "$kde_config_name" = "kf5-config"; then + AC_DEFINE([SVN_HAVE_KF5], [1], [Defined if KF5 available]) + fi else AC_MSG_RESULT([no]) AC_MSG_ERROR([cannot find KWallet]) fi else - AC_MSG_ERROR([cannot find kde4-config]) + AC_MSG_ERROR([cannot find $kde_config_name]) fi else AC_MSG_RESULT([no]) - AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui]) + AC_MSG_ERROR([cannot find Qt]) fi else AC_MSG_ERROR([cannot find D-Bus])