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

From: Marius Bakke <[email-masked]>
Date: Wed, 20 May 2020 22:31:32 +0200

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"))
> ```
>
> 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?