aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/direct-connect.scm18
-rw-r--r--gnu/packages/patches/linuxdcpp-openssl-1.1.patch26
3 files changed, 43 insertions, 2 deletions
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 <arunisaac@systemreboot.net>
+;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; 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);