diff --git a/abi_used_libs b/abi_used_libs --- a/abi_used_libs +++ b/abi_used_libs @@ -8,7 +8,7 @@ libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-3.so.0 -libidn.so.11 +libidn2.so.0 libm.so.6 libnotify.so.4 libpango-1.0.so.0 diff --git a/files/switch-to-gnu-libidn2.patch b/files/switch-to-gnu-libidn2.patch new file mode 100644 --- /dev/null +++ b/files/switch-to-gnu-libidn2.patch @@ -0,0 +1,209 @@ +From 816c8a96e4270836d70e6636f211c14661dda88c Mon Sep 17 00:00:00 2001 +From: Pierre-Yves +Date: Tue, 23 May 2017 21:25:37 +0200 +Subject: [PATCH] switch to gnu libidn2 + +Signed-off-by: Pierre-Yves +--- + CMakeLists.txt | 10 +++++----- + cmake/FindIDN2.cmake | 40 ++++++++++++++++++++++++++++++++++++++++ + cmake/FindIDNA.cmake | 40 ---------------------------------------- + dcpp/CMakeLists.txt | 10 +++++----- + dcpp/Util.cpp | 8 ++++---- + 5 files changed, 54 insertions(+), 54 deletions(-) + create mode 100644 cmake/FindIDN2.cmake + delete mode 100644 cmake/FindIDNA.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 609b074..664423f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -85,7 +85,7 @@ option (USE_JS "QtScript support in Qt interface") + option (XMLRPC_DAEMON "Make daemon as xmlrpc server" OFF) + option (PERL_REGEX "Use pcre lib for regex in perl style" OFF) + option (ENABLE_STACKTRACE "Show stacktrace when program receive SIGSEGV" OFF) +-option (USE_IDNA "Use libidn for punycode generation" ON) ++option (USE_IDN2 "Use libidn2 for punycode generation" ON) + option (JSONRPC_DAEMON "Make daemon as jsonrpc server" OFF) + option (USE_CLI_XMLRPC "Command line interface to control daemon via XMLRPC" OFF) + option (USE_CLI_JSONRPC "Command line interface to control daemon via JSONRPC" OFF) +@@ -111,9 +111,9 @@ if (PERL_REGEX) + find_package(Pcre REQUIRED) + endif (PERL_REGEX) + +-if (USE_IDNA) +- find_package(IDNA REQUIRED) +-endif(USE_IDNA) ++if (USE_IDN2) ++ find_package(IDN2 REQUIRED) ++endif(USE_IDN2) + + if (XATTR_FOUND) + message (STATUS "Building with libattr support") +@@ -393,7 +393,7 @@ message(STATUS "CMAKE will use this libs (and headers) during build: + aspell (headers): ${ASPELL_LIBRARIES} (${ASPELL_INCLUDE_DIR}) + gettext (headers): ${GETTEXT_LIBRARIES} (${GETTEXT_INCLUDE_DIR}) + pcre(cpp) (headers): ${PCRE_LIBRARIES} (${PCRE_INCLUDE_DIR}) +- idna (headers): ${IDNA_LIBRARIES} (${IDNA_INCLUDE_DIR}) ++ idn2 (headers): ${IDN2_LIBRARIES} (${IDN2_INCLUDE_DIR}) + ") + + CONFIGURE_FILE( +diff --git a/cmake/FindIDN2.cmake b/cmake/FindIDN2.cmake +new file mode 100644 +index 0000000..a46067b +--- /dev/null ++++ b/cmake/FindIDN2.cmake +@@ -0,0 +1,40 @@ ++# - Try to find GNU IDN2 library and headers ++# Once done, this will define ++# ++# IDN2_FOUND - system has IDN2 ++# IDN2_INCLUDE_DIR - the IDN2 include directories () ++# IDN2_LIBRARIES - link these to use IDN2 (idn2_to_ascii_8z) ++ ++if (IDN2_INCLUDE_DIR AND IDN2_LIBRARIES) ++ set(IDN2_FIND_QUIETLY TRUE) ++endif (IDN2_INCLUDE_DIR AND IDN2_LIBRARIES) ++ ++# Include dir ++find_path(IDN2_INCLUDE_DIR ++ NAMES idn2.h ++) ++ ++# Library ++find_library(IDN2_LIBRARY ++ NAMES idn2 ++) ++ ++ ++# handle the QUIETLY and REQUIRED arguments and set IDN2_FOUND to TRUE if ++# all listed variables are TRUE ++INCLUDE(FindPackageHandleStandardArgs) ++FIND_PACKAGE_HANDLE_STANDARD_ARGS(IDN2 DEFAULT_MSG IDN2_LIBRARY IDN2_INCLUDE_DIR) ++ ++# If we successfully found the idn2 library then add the library to the ++# IDN2_LIBRARIES cmake variable otherwise set IDN2_LIBRARIES to nothing. ++IF(IDN2_FOUND) ++ SET( IDN2_LIBRARIES ${IDN2_LIBRARY} ) ++ELSE(IDN2_FOUND) ++ SET( IDN2_LIBRARIES ) ++ENDIF(IDN2_FOUND) ++ ++ ++# Lastly make it so that the IDN2_LIBRARIES and IDN2_INCLUDE_DIR variables ++# only show up under the advanced options in the gui cmake applications. ++MARK_AS_ADVANCED( IDN2_LIBRARIES IDN2_INCLUDE_DIR IDN2_LIBRARY) ++ +diff --git a/cmake/FindIDNA.cmake b/cmake/FindIDNA.cmake +deleted file mode 100644 +index 01efc56..0000000 +--- a/cmake/FindIDNA.cmake ++++ /dev/null +@@ -1,40 +0,0 @@ +-# - Try to find GNU IDN library and headers +-# Once done, this will define +-# +-# IDNA_FOUND - system has IDNA +-# IDNA_INCLUDE_DIR - the IDNA include directories () +-# IDNA_LIBRARIES - link these to use IDNA (idna_to_ascii_8z) +- +-if (IDNA_INCLUDE_DIR AND IDNA_LIBRARIES) +- set(IDNA_FIND_QUIETLY TRUE) +-endif (IDNA_INCLUDE_DIR AND IDNA_LIBRARIES) +- +-# Include dir +-find_path(IDNA_INCLUDE_DIR +- NAMES idna.h +-) +- +-# Library +-find_library(IDNA_LIBRARY +- NAMES idn +-) +- +- +-# handle the QUIETLY and REQUIRED arguments and set IDNA_FOUND to TRUE if +-# all listed variables are TRUE +-INCLUDE(FindPackageHandleStandardArgs) +-FIND_PACKAGE_HANDLE_STANDARD_ARGS(IDNA DEFAULT_MSG IDNA_LIBRARY IDNA_INCLUDE_DIR) +- +-# If we successfully found the idn library then add the library to the +-# IDNA_LIBRARIES cmake variable otherwise set IDNA_LIBRARIES to nothing. +-IF(IDNA_FOUND) +- SET( IDNA_LIBRARIES ${IDNA_LIBRARY} ) +-ELSE(IDNA_FOUND) +- SET( IDNA_LIBRARIES ) +-ENDIF(IDNA_FOUND) +- +- +-# Lastly make it so that the IDNA_LIBRARIES and IDNA_INCLUDE_DIR variables +-# only show up under the advanced options in the gui cmake applications. +-MARK_AS_ADVANCED( IDNA_LIBRARIES IDNA_INCLUDE_DIR IDNA_LIBRARY) +- +diff --git a/dcpp/CMakeLists.txt b/dcpp/CMakeLists.txt +index 4083f42..a012869 100644 +--- a/dcpp/CMakeLists.txt ++++ b/dcpp/CMakeLists.txt +@@ -15,7 +15,7 @@ if (NOT LUA_SCRIPT) + list (REMOVE_ITEM dcpp_srcs ${PROJECT_SOURCE_DIR}/ScriptManager.cpp) + endif () + +-include_directories (${Boost_INCLUDE_DIR} ${BZIP2_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${GETTEXT_INCLUDE_DIR} ${LUA_INCLUDE_DIR} ${IDNA_INCLUDE_DIR}) ++include_directories (${Boost_INCLUDE_DIR} ${BZIP2_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${GETTEXT_INCLUDE_DIR} ${LUA_INCLUDE_DIR} ${IDN2_INCLUDE_DIR}) + + if (WIN32) + set (LINK STATIC) +@@ -52,9 +52,9 @@ if (PERL_REGEX) + set(PCRE ${PCRE_LIBRARIES}) + endif (PERL_REGEX) + +-if (USE_IDNA) +- set_property(SOURCE ${PROJECT_SOURCE_DIR}/Util.cpp PROPERTY COMPILE_DEFINITIONS USE_IDNA APPEND) +-endif(USE_IDNA) ++if (USE_IDN2) ++ set_property(SOURCE ${PROJECT_SOURCE_DIR}/Util.cpp PROPERTY COMPILE_DEFINITIONS USE_IDN2 APPEND) ++endif(USE_IDN2) + + if (XATTR_FOUND) + set_property(SOURCE ${PROJECT_SOURCE_DIR}/HashManager.h PROPERTY COMPILE_DEFINITIONS USE_XATTR APPEND) +@@ -84,7 +84,7 @@ else(WIN32) + endif (WIN32) + + target_link_libraries (dcpp ${DHT_LIB} ${PTHREADS} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} +-${OPENSSL_LIBRARIES} ${GETTEXT_LIBRARIES} ${ICONV_LIBRARIES} ${APPLE_LIBS} ${LUA_LIBRARIES} ${UPNP} ${PCRE} ${IDNA_LIBRARIES} ${XATTR_LIBRARIES} ${HAIKU_LIB} ${Boost_LIBRARIES}) ++${OPENSSL_LIBRARIES} ${GETTEXT_LIBRARIES} ${ICONV_LIBRARIES} ${APPLE_LIBS} ${LUA_LIBRARIES} ${UPNP} ${PCRE} ${IDN2_LIBRARIES} ${XATTR_LIBRARIES} ${HAIKU_LIB} ${Boost_LIBRARIES}) + set_target_properties(dcpp PROPERTIES VERSION ${SOVERSION} OUTPUT_NAME "eiskaltdcpp") + + if (APPLE) +diff --git a/dcpp/Util.cpp b/dcpp/Util.cpp +index dc7e08e..6b02fc6 100644 +--- a/dcpp/Util.cpp ++++ b/dcpp/Util.cpp +@@ -51,8 +51,8 @@ + + #include "FastAlloc.h" + +-#ifdef USE_IDNA +-#include ++#ifdef USE_IDN2 ++#include + #endif + + namespace dcpp { +@@ -592,10 +592,10 @@ void Util::decodeUrl(const string& url, string& protocol, string& host, uint16_t + query = url.substr(queryStart, queryEnd - queryStart); + fragment = url.substr(fragmentStart, fragmentEnd - fragmentStart); + +-#ifdef USE_IDNA ++#ifdef USE_IDN2 + //printf("%s\n",host.c_str()); + char *p; +- if (idna_to_ascii_8z(host.c_str(), &p, 0) == IDNA_SUCCESS) { ++ if (idn2_to_ascii_8z(host.c_str(), &p, IDN2_NONTRANSITIONAL) == IDN2_OK) { + host = string(p); + } + free(p); +-- +2.13.0 + diff --git a/package.yml b/package.yml --- a/package.yml +++ b/package.yml @@ -1,6 +1,6 @@ name : eiskaltdcpp version : 2.2.10 -release : 1 +release : 2 source : - https://github.com/eiskaltdcpp/eiskaltdcpp/archive/v2.2.10.tar.gz : e461c8c499e459651d6382a6ded6788e5ac9a9c4ff26386c3cf073d94d606127 license : GPL-3.0 @@ -10,10 +10,11 @@ EiskaltDC++ is a cross-platform program that uses the Direct Connect and ADC protocols. builddeps : - pkgconfig(gtk+-3.0) - - pkgconfig(libidn) + - pkgconfig(libidn2) - pkgconfig(libnotify) - libboost-devel setup : | + %patch -p1 < $pkgfiles/switch-to-gnu-libidn2.patch %cmake -DUSE_QT=0 -DUSE_GTK3=1 \ -DLIBDIR=lib64 \ -DPERL_REGEX=1 \ diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml --- a/pspec_x86_64.xml +++ b/pspec_x86_64.xml @@ -2,8 +2,8 @@ eiskaltdcpp - Bryan T. Meyers - bmeyers@datadrake.com + Pierre-Yves + pyu@riseup.net GPL-3.0 network.clients @@ -36,12 +36,12 @@ - - 2016-11-28 + + 2017-05-27 2.2.10 Packaging update - Bryan T. Meyers - bmeyers@datadrake.com + Pierre-Yves + pyu@riseup.net \ No newline at end of file