diff --git a/gnu/local.mk b/gnu/local.mk index c8ec622aa1..be185a0abf 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1427,6 +1427,7 @@ dist_patch_DATA = \ %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \ %D%/packages/patches/linux-libre-arm64-generic-pinebook-lcd.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ + %D%/packages/patches/linuxdcpp-openssl-1.1.patch \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/lirc-reproducible-build.patch \ %D%/packages/patches/llhttp-bootstrap-CVE-2020-8287.patch \ diff --git a/gnu/packages/direct-connect.scm b/gnu/packages/direct-connect.scm index 87bf0a7c8a..d342537122 100644 --- a/gnu/packages/direct-connect.scm +++ b/gnu/packages/direct-connect.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Arun Isaac +;;; Copyright © 2022 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,9 +19,11 @@ (define-module (gnu packages direct-connect) #:use-module (guix build-system scons) + #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (gnu packages) #:use-module (gnu packages boost) #:use-module (gnu packages compression) #:use-module (gnu packages gettext) @@ -42,8 +45,19 @@ "https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-" version ".tar.bz2")) (sha256 - (base32 - "12i92hirmwryl1qy0n3jfrpziwzb82f61xca9jcjwyilx502f0b6")))) + (base32 "12i92hirmwryl1qy0n3jfrpziwzb82f61xca9jcjwyilx502f0b6")) + (patches (search-patches "linuxdcpp-openssl-1.1.patch")) + (modules '((guix build utils))) + (snippet + #~(begin + (substitute* "SConstruct" + ;; This compares single char[]acters in the version string, and + ;; broke when GCC went into double digits. + (("conf.CheckCXXVersion\\([^\\)]*\\)") + "True") + ;; Not all valid C++98 code is valid C++14 (and higher) code. + (("'-D_REENTRANT'" match) + (string-append match ", '-std=gnu++98'"))))))) (build-system scons-build-system) (arguments `(#:scons ,scons-python2 diff --git a/gnu/packages/patches/linuxdcpp-openssl-1.1.patch b/gnu/packages/patches/linuxdcpp-openssl-1.1.patch new file mode 100644 index 0000000000..6f9912afd8 --- /dev/null +++ b/gnu/packages/patches/linuxdcpp-openssl-1.1.patch @@ -0,0 +1,26 @@ +--- a/dcpp/CryptoManager.cpp.orig 2011-04-17 17:57:09 UTC ++++ b/dcpp/CryptoManager.cpp +@@ -107,12 +107,20 @@ CryptoManager::CryptoManager() + }; + + if(dh) { +- dh->p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), 0); +- dh->g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), 0); ++ BIGNUM *p, *g; + +- if (!dh->p || !dh->g) { ++ p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), 0); ++ g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), 0); ++ ++ if (!p || !g) { + dh.reset(); + } else { ++#if OPENSSL_VERSION_NUMBER < 0x10100005L ++ dh->p = p; ++ dh->g = g; ++#else ++ DH_set0_pqg(dh, p, NULL, g); ++#endif + SSL_CTX_set_options(serverContext, SSL_OP_SINGLE_DH_USE); + SSL_CTX_set_options(serverVerContext, SSL_OP_SINGLE_DH_USE); + SSL_CTX_set_tmp_dh(serverContext, (DH*)dh);