Subject: Re: [bug#38228] Fwd: [PATCH] gnu: boost: Build with python3

From: Marius Bakke <[email-masked]>
Date: Wed, 20 Nov 2019 01:01:36 +0100

[email-masked] writes:

> Hello I'm opening another thread ( old one was 
> http://issues.guix.gnu.org/issue/38128 ) to build boost in core-updates 
> with python3. The new patch also parameterizes python versions across 
> the package definition.
>
> WDYT?
>
> Bye,
>
> Giacomo
>
> -------- Original Message --------
> Subject: Re: bug#38128: [PATCH] gnu: Add boost-with-python3
> Date: 2019-11-12 00:06
>  From: [email-masked]
> To: Efraim Flashner <[email-masked]>
> Cc: [email-masked], [email-masked]
>
> On 2019-11-11 09:36, Efraim Flashner wrote:
>> I'm going to re-open this one, sorry.
>> 
>> Can we replace the '--with-python-version=3.7' and 
>> 'libboost_python37.so'
>> with parameterized python variables so we don't have to bump it when we
>> get a new python version?
>> 
>> Also, I've attached a package that I've never actually built that uses
>> boost built with python3 if you want something to test it out with :)
>
> I'm not sure how to send a patch for core-updates, I never did it so I 
> attached it here. Please tell me if I should open another patch.

Excellent.  Here is fine.  :-)

Note that 'boost-with-python3' has already been merged to core-updates.
What we need now is 1) a patch that makes these adjustments to
'boost-with-python3', and 2) a follow-up patch that removes
boost-with-python3 and adjusts the original 'boost' package instead.

The latter will be applied to core-updates after the first patch gets
merged, but you can make (and test :-)) both patches on a local checkout
of the 'master' branch.

> The patch builds boost with python3 and parameterizes the python 
> version, as Efraim suggested. I built it successfully on core updates. 
> When I tried building Epour on core-updates and saw that Guix was 
> starting to build Bash 5.0 I renounced (:D) and I built it on master 
> with boost-with-python3 .

In general, working on the 'core-updates' branch requires a fairly
powerful computer (and lots of time), sorry about that!

> Libtorrent-rasterbar seems to build fine on master but some tests fail 
> to pass and they all seem to be network related but then again this is 
> torrent we are talking about. I didn't investigate further but I attach 
> the log.

Strange.  I suppose these tests are not run when using Boost + Python 2?
In any case we don't have to worry about that just yet ;-)

> I also tried boost-with-python3 with Malmo ( 
> https://github.com/microsoft/malmo ) and it seemed to compile fine just 
> but that package has other problems such as trying to start gradle so I 
> nerver managed to actually run it.

Cool.  Packaging 'gradle' should be a rewarding experience that makes
many people very happy, if you would like a challenge.  ;-)

> From 91a25fb143ad0e2e20e8ddadea0c0610849adf92 Mon Sep 17 00:00:00 2001
> From: Giacomo Leidi <[email-masked]>
> Date: Tue, 12 Nov 2019 00:24:49 +0100
> Subject: [PATCH] gnu: boost: Build with python3.
>
> * gnu/packages/boost.scm (boost):
> [arguments]: Parameterize python version.
> [native-inputs]: Use python3.

[...]

>      (arguments
> -     `(#:tests? #f
> +     `(#:modules ((guix build gnu-build-system)
> +                  (guix build utils)
> +                  (srfi srfi-1))

If you add (guix build python-build-system) in there ...

>           (replace 'configure
>             (lambda* (#:key inputs outputs #:allow-other-keys)
>               (let ((icu (assoc-ref inputs "icu4c"))
> +                   (python (assoc-ref inputs "python"))
> +                   (python-version
> +                    (take (string-split ,(package-version python) #\.) 2))

... then you can use (python-version (python-version python)) here and
below.

> +               (substitute* "tools/build/src/tools/python.jam"
> +                 (("include/python\\$\\(version\\)")
> +                  "include/python$(version)m"))

I wonder why we have to add the 'm'?  Will that work with Python 2?

Otherwise LGTM.

For 'core-updates', it would be really great to add a 'python2' output
to Boost in case there are packages that do not work with
libboost_python3.so, but I'm not sure how to achieve that.  Future
problems!  :-)