Message ID | cabac34c7411da2121a0490fb46b4864@autistici.org |
---|---|
State | Accepted |
Headers | show |
Series | [bug#38228] Fwd: [PATCH] gnu: boost: Build with python3 | expand |
goodoldpaul@autistici.org 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: goodoldpaul@autistici.org > To: Efraim Flashner <efraim@flashner.co.il> > Cc: 38128@debbugs.gnu.org, mbakke@fastmail.com > > 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 <goodoldpaul@autistici.org> > 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! :-)
From 91a25fb143ad0e2e20e8ddadea0c0610849adf92 Mon Sep 17 00:00:00 2001 From: Giacomo Leidi <goodoldpaul@autistici.org> 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. --- gnu/packages/boost.scm | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index a2253a9efc..389fd1fdb6 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -62,10 +62,13 @@ ("zlib" ,zlib))) (native-inputs `(("perl" ,perl) - ("python" ,python-2) + ("python" ,python) ("tcsh" ,tcsh))) (arguments - `(#:tests? #f + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:tests? #f #:make-flags (list "threading=multi" "link=shared" @@ -83,6 +86,9 @@ (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)) (out (assoc-ref outputs "out"))) (substitute* '("libs/config/configure" "libs/spirit/classic/phoenix/test/runtest.sh" @@ -94,11 +100,19 @@ (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) + (substitute* "tools/build/src/tools/python.jam" + (("include/python\\$\\(version\\)") + "include/python$(version)m")) + (invoke "./bootstrap.sh" (string-append "--prefix=" out) - ;; Auto-detection looks for ICU only in traditional - ;; install locations. + ;; Auto-detection looks for dependencies only + ;; in traditional install locations. (string-append "--with-icu=" icu) + (string-append "--with-python=" python "/bin/python3") + (string-append "--with-python-root=" python) + (string-append "--with-python-version=" + (string-join python-version ".")) "--with-toolset=gcc")))) (replace 'build (lambda* (#:key make-flags #:allow-other-keys) @@ -109,15 +123,18 @@ (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "./b2" "install" make-flags))) (add-after 'install 'provide-libboost_python - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; Boost can build support for both Python 2 and Python 3 since - ;; version 1.67.0, and suffixes each library with the Python - ;; version. Many consumers only check for libboost_python - ;; however, so we provide it here as suggested in - ;; <https://github.com/boostorg/python/issues/203>. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (python (assoc-ref inputs "python")) + (python-version + (take (string-split ,(package-version python) #\.) 2)) + (libboost.so (string-append "libboost_python" + (string-join python-version "") + ".so"))) (with-directory-excursion (string-append out "/lib") - (symlink "libboost_python27.so" "libboost_python.so")) + (symlink libboost.so "libboost_python.so") + ;; Some packages also look for libboost_python3.so + (symlink libboost.so "libboost_python3.so")) #t)))))) (home-page "https://www.boost.org") -- 2.24.0