Subject: [bug#54337] [PATCH v2 2/3] gnu: Add boost-for-cryfs.

From: 'Brendan Tildesley <[email-masked]>
Date: Mon, 14 Mar 2022 20:35:49 +1100

From: Brendan Tildesley <[email-masked]>

* gnu/packages/boost.scm (boost-for-cryfs): New variable. Since
updating boost would resulting in building 1000s of rebuilds, add a
temporary variant to fixing a missing import resulting in "error:
'transform' is not a member of 'std'" when building cryfs. See:
https://github.com/boostorg/process/commit/e08374ed95ac33865bda40602c94909e7cd9607f

* gnu/packages/patches/boost-wchar-include-algorithm.patch: New
file.
* gnu/local.mk: Reference patch.

.
---
 gnu/local.mk                                          |  1 +
 gnu/packages/boost.scm                                | 11 +++++++++++
 .../patches/boost-wchar-include-algorithm.patch       | 11 +++++++++++
 3 files changed, 23 insertions(+)
 create mode 100644 gnu/packages/patches/boost-wchar-include-algorithm.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 484757b207..465f5ae96d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -915,6 +915,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/binutils-CVE-2021-45078.patch		\
   %D%/packages/patches/bloomberg-bde-cmake-module-path.patch	\
   %D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch	\
+  %D%/packages/patches/boost-wchar-include-algorithm.patch      \
   %D%/packages/patches/bpftrace-disable-bfd-disasm.patch	\
   %D%/packages/patches/byobu-writable-status.patch		\
   %D%/packages/patches/bubblewrap-fix-locale-in-tests.patch	\
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index b53b1f4257..b6f0c1fc22 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2021 Franck Pérignon <[email-masked]>
 ;;; Copyright © 2021 Greg Hogan <[email-masked]>
 ;;; Copyright © 2021 Aleksandr Vityazev <[email-masked]>
+;;; Copyright © 2022 Brendan Tildesley <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,6 +69,7 @@ (define (boost-patch name version hash)
 (define-public boost
   (package
     (name "boost")
+    ;; Note: consider removing boost-1.77/fixed when updating boost to 1.78 or newer.
     (version "1.77.0")
     (source (origin
               (method url-fetch)
@@ -193,6 +195,15 @@ (define-public boost
     (license (license:x11-style "https://www.boost.org/LICENSE_1_0.txt"
                                 "Some components have other similar licences."))))
 
+(define-public boost-for-cryfs
+  ;; This patch applies for boost 1.77. Should not be needed in later releases.
+  ;; See:  https://github.com/boostorg/process/commit/e08374ed95ac33865bda40602c94909e7cd9607f
+  (package/inherit boost
+    (name "boost-for-cryfs")
+    (source (origin
+              (inherit (package-source boost))
+              (patches (search-patches "boost-wchar-include-algorithm.patch"))))))
+
 ;; Sadly, this is needed for irods.  It won't link with 1.69 or later.
 (define-public boost-for-irods
   (package
diff --git a/gnu/packages/patches/boost-wchar-include-algorithm.patch b/gnu/packages/patches/boost-wchar-include-algorithm.patch
new file mode 100644
index 0000000000..c174dc5cd2
--- /dev/null
+++ b/gnu/packages/patches/boost-wchar-include-algorithm.patch
@@ -0,0 +1,11 @@
+--- a/boost/process/detail/traits/wchar_t.hpp
++++ b/boost/process/detail/traits/wchar_t.hpp
+@@ -12,6 +12,8 @@
+ #include <boost/process/detail/traits/env.hpp>
+ #include <boost/process/locale.hpp>
+ 
++#include <algorithm>
++
+ namespace boost { namespace process { namespace detail {
+ 
+ //template
-- 
2.34.0