GNU bug report logs - #31095
[aegisub] error: Aegisub requires that boost be built with ICU support.

Previous Next

Package: guix;

Reported by: Pierre Neidhardt <ambrevar <at> gmail.com>

Date: Sun, 8 Apr 2018 12:07:01 UTC

Severity: normal

Done: Leo Famulari <leo <at> famulari.name>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 31095 in the body.
You can then email your comments to 31095 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Sun, 08 Apr 2018 12:07:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Pierre Neidhardt <ambrevar <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Sun, 08 Apr 2018 12:07:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Pierre Neidhardt <ambrevar <at> gmail.com>
To: bug-guix <at> gnu.org   
Subject: [aegisub] error: Aegisub requires that boost be built with ICU
 support.
Date: Sun, 08 Apr 2018 17:36:23 +0530
[Message part 1 (text/plain, inline)]
I can't build aegisub:

	> guix package --install aegisub
  [...]
	checking whether boost ICU support works... no
	configure: error: in `/tmp/guix-build-aegisub-3.2.2.drv-0/aegisub-3.2.2':
	configure: error: Aegisub requires that boost be built with ICU support.
	See `config.log' for more details
	phase `configure' failed after 7.4 seconds
	builder for `/gnu/store/97g8fxipy942yzs0zp5hbvsj90hw1xc6-aegisub-3.2.2.drv' failed with exit code 1
	guix package: error: build failed: build of `/gnu/store/97g8fxipy942yzs0zp5hbvsj90hw1xc6-aegisub-3.2.2.drv' failed

It seems that the boost input is missing ICU support.

-- 
Pierre Neidhardt
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Sun, 08 Apr 2018 16:07:02 GMT) Full text and rfc822 format available.

Message #8 received at 31095 <at> debbugs.gnu.org (full text, mbox):

From: Mark H Weaver <mhw <at> netris.org>
To: Pierre Neidhardt <ambrevar <at> gmail.com>
Cc: 31095 <at> debbugs.gnu.org
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be built
 with ICU support.
Date: Sun, 08 Apr 2018 12:05:25 -0400
Hi Pierre,

Pierre Neidhardt <ambrevar <at> gmail.com> writes:

> I can't build aegisub:
>
> 	> guix package --install aegisub
>   [...]
> 	checking whether boost ICU support works... no
> 	configure: error: in `/tmp/guix-build-aegisub-3.2.2.drv-0/aegisub-3.2.2':
> 	configure: error: Aegisub requires that boost be built with ICU support.
> 	See `config.log' for more details
> 	phase `configure' failed after 7.4 seconds
> 	builder for `/gnu/store/97g8fxipy942yzs0zp5hbvsj90hw1xc6-aegisub-3.2.2.drv' failed with exit code 1
> 	guix package: error: build failed: build of `/gnu/store/97g8fxipy942yzs0zp5hbvsj90hw1xc6-aegisub-3.2.2.drv' failed
>
> It seems that the boost input is missing ICU support.

Indeed.  Although our 'boost' package includes 'icu4c' as an input, the
build log contains the following lines in the 'configure' phase and the
start of the 'build' phase:

  Unicode/ICU support for Boost.Regex?... not found.
  [...]
      - has_icu builds           : no
  [...]
      - icu                      : no
      - icu (lib64)              : no

These are from local build logs on my GuixSD based on 'core-updates',
but based on your report, I assume that the same problem exists on
'master'.

Our main Boost package has too many dependencies to fix in 'master', but
we could still fix it in 'core-updates'.  On master, we could create a
'boost/fixed' package that inherits from the main one but with this
problem fixed, for use by aegisub.

However, the first step is to figure out why 'boost' is failing to find
icu4c.  Would you like to investigate?

      Mark




Information forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Sun, 08 Apr 2018 16:16:02 GMT) Full text and rfc822 format available.

Message #11 received at 31095 <at> debbugs.gnu.org (full text, mbox):

From: Pierre Neidhardt <ambrevar <at> gmail.com>
To: Mark H Weaver <mhw <at> netris.org>
Cc: 31095 <at> debbugs.gnu.org
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be built
 with ICU support.
Date: Sun, 08 Apr 2018 21:45:28 +0530
[Message part 1 (text/plain, inline)]
Thanks for the feedback!

> However, the first step is to figure out why 'boost' is failing to find
> icu4c.  Would you like to investigate?

I usually happily answer "yes" to those questions, but this time I'll
pass: aegisub is not really a priority for me at the moment and I don't
have a great opinion of boost, so...

Anyone else? :p


-- 
Pierre Neidhardt
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Sun, 08 Apr 2018 19:15:02 GMT) Full text and rfc822 format available.

Message #14 received at 31095 <at> debbugs.gnu.org (full text, mbox):

From: Mark H Weaver <mhw <at> netris.org>
To: Pierre Neidhardt <ambrevar <at> gmail.com>
Cc: 31095 <at> debbugs.gnu.org
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be built
 with ICU support.
Date: Sun, 08 Apr 2018 15:13:38 -0400
[Message part 1 (text/plain, inline)]
Pierre Neidhardt <ambrevar <at> gmail.com> writes:

> Thanks for the feedback!
>
>> However, the first step is to figure out why 'boost' is failing to find
>> icu4c.  Would you like to investigate?
>
> I usually happily answer "yes" to those questions, but this time I'll
> pass: aegisub is not really a priority for me at the moment and I don't
> have a great opinion of boost, so...
>
> Anyone else? :p

That's okay, I appreciate the bug report nonetheless.

I worked on it, and the following preliminary patch seems to fix the
problem for me on 'core-updates'.  I didn't try building aegisub, but
boost builds with messages suggesting that ICU support is now included.

If someone's motivated to do so, they could fix 'aegisub' on master by
adding a 'boost/fixed' package that inherits from 'boost' but includes
the fixes included in the following patch.

      Mark


[0001-gnu-boost-Fix-ICU-support.patch (text/x-patch, inline)]
From 62a9ef1337010771c9f79c64e7b84a855c45df1f Mon Sep 17 00:00:00 2001
From: Mark H Weaver <mhw <at> netris.org>
Date: Sun, 8 Apr 2018 14:40:00 -0400
Subject: [PATCH] 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 | 59 ++++++++++++++++++++++++++
 3 files changed, 69 insertions(+), 4 deletions(-)
 create mode 100644 gnu/packages/patches/boost-fix-icu-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 6cf49ad07..5888d32f5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -577,6 +577,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/btrfs-progs-e-value-block.patch		\
   %D%/packages/patches/byobu-writable-status.patch		\
   %D%/packages/patches/cairo-CVE-2016-9082.patch			\
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 674877a88..6b17e30a8 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 <jmd <at> gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw <at> netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw <at> netris.org>
 ;;; Copyright © 2015 Andreas Enge <andreas <at> enge.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier <at> member.fsf.org>
 ;;; Copyright © 2015 Ludovic Courtès <ludo <at> 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 000000000..389f60e30
--- /dev/null
+++ b/gnu/packages/patches/boost-fix-icu-build.patch
@@ -0,0 +1,59 @@
+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 14:13:17.953484787 -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
+ {
+@@ -120,7 +120,8 @@
+ 
+     explicit icuuc icudt icuin ;
+ 
+-    ICU_OPTS =   <include>$(ICU_PATH)/include 
++    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
+@@ -179,7 +180,8 @@
+ 
+     explicit icuuc_64 icudt_64 icuin_64 ;
+ 
+-    ICU64_OPTS =   <include>$(ICU_PATH)/include 
++    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 14:11:56.405080410 -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
+    {
+@@ -77,7 +77,8 @@
+       lib icuin : : <name>this_is_an_invalid_library_name ;
+ 
+       ICU_OPTS = 
+-         <include>$(ICU_PATH)/include 
++         <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
-- 
2.16.3


Information forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Tue, 10 Apr 2018 06:34:02 GMT) Full text and rfc822 format available.

Message #17 received at 31095 <at> debbugs.gnu.org (full text, mbox):

From: Mark H Weaver <mhw <at> netris.org>
To: Pierre Neidhardt <ambrevar <at> gmail.com>
Cc: 31095 <at> debbugs.gnu.org
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be built
 with ICU support.
Date: Tue, 10 Apr 2018 02:32:05 -0400
On core-updates I pushed commit 713c975ac0aa01c224b215fcb96274b76920c90b
which hopefully will fix this problem with the aegisub build.  We'll see
when Hydra builds it out.

       Mark




Reply sent to Leo Famulari <leo <at> famulari.name>:
You have taken responsibility. (Fri, 02 Nov 2018 05:20:01 GMT) Full text and rfc822 format available.

Notification sent to Pierre Neidhardt <ambrevar <at> gmail.com>:
bug acknowledged by developer. (Fri, 02 Nov 2018 05:20:02 GMT) Full text and rfc822 format available.

Message #22 received at 31095-done <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Mark H Weaver <mhw <at> netris.org>
Cc: 31095-done <at> debbugs.gnu.org, Pierre Neidhardt <ambrevar <at> gmail.com>
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be built
 with ICU support.
Date: Fri, 2 Nov 2018 01:19:42 -0400
[Message part 1 (text/plain, inline)]
On Tue, Apr 10, 2018 at 02:32:05AM -0400, Mark H Weaver wrote:
> On core-updates I pushed commit 713c975ac0aa01c224b215fcb96274b76920c90b
> which hopefully will fix this problem with the aegisub build.  We'll see
> when Hydra builds it out.

It seems to have worked, thanks!
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Sun, 25 Nov 2018 18:00:01 GMT) Full text and rfc822 format available.

Message #25 received at 31095 <at> debbugs.gnu.org (full text, mbox):

From: Björn Höfling <bjoern.hoefling <at> bjoernhoefling.de>
To: Leo Famulari <leo <at> famulari.name>
Cc: Mark H Weaver <mhw <at> netris.org>, Pierre Neidhardt <ambrevar <at> gmail.com>,
 31095 <at> debbugs.gnu.org
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be
 built with ICU support.
Date: Sun, 25 Nov 2018 18:58:49 +0100
[Message part 1 (text/plain, inline)]
On Fri, 2 Nov 2018 01:19:42 -0400
Leo Famulari <leo <at> famulari.name> wrote:

> On Tue, Apr 10, 2018 at 02:32:05AM -0400, Mark H Weaver wrote:
> > On core-updates I pushed commit
> > 713c975ac0aa01c224b215fcb96274b76920c90b which hopefully will fix
> > this problem with the aegisub build.  We'll see when Hydra builds
> > it out.  
> 
> It seems to have worked, thanks!

Hi Leo,

I don't understand that: When looking at the core-updates page of
aegisub, I see no success:

https://hydra.gnu.org/job/gnu/core-updates/aegisub-3.2.2.x86_64-linux/all

When building locally, I see this failure:

/tmp/guix-build-aegisub-3.2.2.drv-0/aegisub-3.2.2/src/search_replace_engine.cpp:
 In member function ?bool SearchReplaceEngine::ReplaceAll()?:
/tmp/guix-build-aegisub-3.2.2.drv-0/aegisub-3.2.2/src/search_replace_engine.cpp:317:61: error: call of overloaded ?distance(boost::u32regex_iterator<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >, boost::u32regex_iterator<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >)? is ambiguous
      boost::u32regex_iterator<std::string::const_iterator>());

I found a patch here:
 
https://git.archlinux.org/svntogit/community.git/plain/trunk/boost-1.68.patch?h=packages/aegisub

When I apply it, aegisub works on core-updates.

I will send out a proper guix-patch later.

Björn

[Message part 2 (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#31095; Package guix. (Sun, 25 Nov 2018 19:45:02 GMT) Full text and rfc822 format available.

Message #28 received at 31095 <at> debbugs.gnu.org (full text, mbox):

From: Björn Höfling <bjoern.hoefling <at> bjoernhoefling.de>
To: Leo Famulari <leo <at> famulari.name>
Cc: 31095 <at> debbugs.gnu.org, Pierre Neidhardt <ambrevar <at> gmail.com>
Subject: Re: bug#31095: [aegisub] error: Aegisub requires that boost be
 built with ICU support.
Date: Sun, 25 Nov 2018 20:44:00 +0100
[Message part 1 (text/plain, inline)]
On Sun, 25 Nov 2018 18:58:49 +0100
Björn Höfling <bjoern.hoefling <at> bjoernhoefling.de> wrote:

> I found a patch here:
>  
> https://git.archlinux.org/svntogit/community.git/plain/trunk/boost-1.68.patch?h=packages/aegisub
> 
> When I apply it, aegisub works on core-updates.
> 
> I will send out a proper guix-patch later.
> 
> Björn
> 

Sent out as:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33505

Björn
[Message part 2 (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 24 Dec 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 125 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.