mhw pushed a commit to branch core-updates
in repository guix.

commit 713c975ac0aa01c224b215fcb96274b76920c90b
Author: Mark H Weaver <m...@netris.org>
Date:   Sun Apr 8 14:40:00 2018 -0400

    gnu: boost: Fix ICU support.
    
    * gnu/packages/patches/boost-fix-icu-build.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
    * gnu/packages/boost.scm (boost)[source]: Add the patch.
    [arguments]: In the custom configure phase, pass --with-icu=[...]
    to ./bootstrap.sh
---
 gnu/local.mk                                   |  1 +
 gnu/packages/boost.scm                         | 13 +++++--
 gnu/packages/patches/boost-fix-icu-build.patch | 53 ++++++++++++++++++++++++++
 3 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index f0ee61b..db093ae 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -578,6 +578,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/bcftools-regidx-unsigned-char.patch     \
   %D%/packages/patches/binutils-loongson-workaround.patch      \
   %D%/packages/patches/blast+-fix-makefile.patch               \
+  %D%/packages/patches/boost-fix-icu-build.patch               \
   %D%/packages/patches/byobu-writable-status.patch             \
   %D%/packages/patches/cairo-CVE-2016-9082.patch                       \
   %D%/packages/patches/calibre-no-updates-dialog.patch         \
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 674877a..6b17e30 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <j...@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <m...@netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <m...@netris.org>
 ;;; Copyright © 2015 Andreas Enge <andr...@enge.fr>
 ;;; Copyright © 2016 Eric Bavier <bav...@member.fsf.org>
 ;;; Copyright © 2015 Ludovic Courtès <l...@gnu.org>
@@ -52,7 +52,8 @@
                     ".tar.bz2"))
               (sha256
                (base32
-                "1aaw48cmimsskzgiclwn0iifp62a5iw9cbqrhfari876af1828ap"))))
+                "1aaw48cmimsskzgiclwn0iifp62a5iw9cbqrhfari876af1828ap"))
+              (patches (search-patches "boost-fix-icu-build.patch"))))
     (build-system gnu-build-system)
     (inputs `(("icu4c" ,icu4c)
               ("zlib" ,zlib)))
@@ -81,8 +82,9 @@
        (modify-phases %standard-phases
          (delete 'bootstrap)
          (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((icu (assoc-ref inputs "icu4c"))
+                   (out (assoc-ref outputs "out")))
                (substitute* '("libs/config/configure"
                               "libs/spirit/classic/phoenix/test/runtest.sh"
                               "tools/build/doc/bjam.qbk"
@@ -96,6 +98,9 @@
 
                (invoke "./bootstrap.sh"
                        (string-append "--prefix=" out)
+                       ;; Auto-detection looks for ICU only in traditional
+                       ;; install locations.
+                       (string-append "--with-icu=" icu)
                        "--with-toolset=gcc"))))
          (replace 'build
            (lambda* (#:key make-flags #:allow-other-keys)
diff --git a/gnu/packages/patches/boost-fix-icu-build.patch 
b/gnu/packages/patches/boost-fix-icu-build.patch
new file mode 100644
index 0000000..556f91b
--- /dev/null
+++ b/gnu/packages/patches/boost-fix-icu-build.patch
@@ -0,0 +1,53 @@
+Pass -std=c++11 when compiling files that include the ICU headers.  Without
+this flag, compilation fails and causes Boost's build system to remove ICU
+support.  Note that $(pkg-config --variable=CXXFLAGS icu-uc) includes
+"-std=c++11", but Boost's build system does not use 'pkg-config'.
+
+--- boost_1_66_0/libs/locale/build/Jamfile.v2.orig     2017-12-13 
18:56:44.000000000 -0500
++++ boost_1_66_0/libs/locale/build/Jamfile.v2  2018-04-08 15:18:58.673025760 
-0400
+@@ -65,8 +65,8 @@
+ 
+ if $(ICU_LINK)
+ {
+-    ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) 
<dll-path>$(ICU_PATH)/bin <runtime-link>shared ;
+-    ICU64_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) 
<dll-path>$(ICU_PATH)/bin64 <runtime-link>shared ;
++    ICU_OPTS = <include>$(ICU_PATH)/include <cxxflags>-std=c++11 
<linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <runtime-link>shared ;
++    ICU64_OPTS = <include>$(ICU_PATH)/include <cxxflags>-std=c++11 
<linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin64 <runtime-link>shared ;
+ }
+ else
+ {
+@@ -121,6 +121,7 @@
+     explicit icuuc icudt icuin ;
+ 
+     ICU_OPTS =   <include>$(ICU_PATH)/include 
++      <cxxflags>-std=c++11
+       <library>icuuc/<link>shared/<runtime-link>shared 
+       <library>icudt/<link>shared/<runtime-link>shared 
+       <library>icuin/<link>shared/<runtime-link>shared
+@@ -180,6 +181,7 @@
+     explicit icuuc_64 icudt_64 icuin_64 ;
+ 
+     ICU64_OPTS =   <include>$(ICU_PATH)/include 
++      <cxxflags>-std=c++11
+       <library>icuuc_64/<link>shared/<runtime-link>shared 
+       <library>icudt_64/<link>shared/<runtime-link>shared 
+       <library>icuin_64/<link>shared/<runtime-link>shared
+--- boost_1_66_0/libs/regex/build/Jamfile.v2.orig      2017-12-13 
18:56:48.000000000 -0500
++++ boost_1_66_0/libs/regex/build/Jamfile.v2   2018-04-08 15:20:40.865532505 
-0400
+@@ -44,7 +44,7 @@
+ 
+    if $(ICU_LINK)
+    {
+-      ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) 
<dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
++      ICU_OPTS = <include>$(ICU_PATH)/include <cxxflags>-std=c++11 
<linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 
<runtime-link>shared ;
+    }
+    else
+    {
+@@ -78,6 +78,7 @@
+ 
+       ICU_OPTS = 
+          <include>$(ICU_PATH)/include 
++         <cxxflags>-std=c++11
+          <runtime-link>shared:<library>icuuc/<link>shared
+          <runtime-link>shared:<library>icudt/<link>shared
+          <runtime-link>shared:<library>icuin/<link>shared

Reply via email to