Subject: Re: bug#41213: boost-for-mysql fails to build

From: Efraim Flashner <[email-masked]>
Date: Thu, 21 May 2020 11:36:14 +0300

On Wed, May 20, 2020 at 10:31:32PM +0200, Marius Bakke wrote:
> Jonathan Brielmaier <[email-masked]> writes:
> 
> > `tools/build/src/engine/execunix.cpp` was named
> > `tools/build/src/engine/execunix.c` before. So the following patch
> > allows to build [email-masked] again.
> >
> > ```
> > diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
> > index 2f2ca289ab..d44b534939 100644
> > --- a/gnu/packages/boost.scm
> > +++ b/gnu/packages/boost.scm
> > @@ -120,10 +120,11 @@
> >               (let ((icu (assoc-ref inputs "icu4c"))
> >                     (python (assoc-ref inputs "python"))
> >                     (out (assoc-ref outputs "out")))
> > -               (substitute* '("libs/config/configure"
> > -                              "libs/spirit/classic/phoenix/test/runtest.sh"
> > -                              "tools/build/src/engine/execunix.cpp"
> > -                              "tools/build/src/engine/Jambase")
> > +               (substitute* (append
> > +                             (find-files "tools/build/src/engine/"
> > "execunix\\.c.*")
> > +                             '("libs/config/configure"
> > +
> > "libs/spirit/classic/phoenix/test/runtest.sh"
> > +                               "tools/build/src/engine/Jambase"))
> >                   (("/bin/sh") (which "sh")))
> >
> >                 (setenv "SHELL" (which "sh"))
> > ```

We can't straight-up patch boost because it has too many dependants, but
I copied the configure phase to boost-for-mysql and applied the changes
there.

> >
> > Although it fails with
> > ```
> > libs/python/src/converter/builtin_converters.cpp: In function ‘void*
> > boost::python::converter::{anonymous}::convert_to_cstring(PyObject*)’:
> > libs/python/src/converter/builtin_converters.cpp:51:35: error: invalid
> > conversion from ‘const void*’ to ‘void*’ [-fpermissive]
> >        return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0;
> >
> >     "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
> > -pthread -fPIC -m64  -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG
> >  -I"."
> > -I"/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/include/python3.8"
> > -c -o
> > "bin.v2/libs/python/build/gcc-7.5.0/release/threading-multi/converter/builtin_converters.o"
> > "libs/python/src/converter/builtin_converters.cpp"
> > ```
> 
> I think our efforts are better spent on updating the packages that use
> this ancient Boost instead of hacking it to work with Python 3.8.
> 
> Though disabling Python support might work around the issue for now...
> 
> Do you use any packages that depend on this?

It built with no problems with python2 instead of python3 but of course
I'd rather not add more dependencies on python2. Luckily it will build
without any python binaries so I've just gone ahead and removed python
from native-inputs.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted