[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
06/22: gnu: boost: Fix cross-compilation.
From: |
guix-commits |
Subject: |
06/22: gnu: boost: Fix cross-compilation. |
Date: |
Fri, 15 Nov 2019 11:32:44 -0500 (EST) |
mothacehe pushed a commit to branch core-updates
in repository guix.
commit a4c04bee7bc3faadf7ef6d98d83f57959f911fd1
Author: Mathieu Othacehe <address@hidden>
Date: Mon Jul 8 13:08:01 2019 +0200
gnu: boost: Fix cross-compilation.
* gnu/packages/patches/boost-dumpversion.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/boost.scm (boost)[source]: Apply it,
[native-inputs]: add python unless cross-compiling,
[arguments]: pass cross-compilation mandatory
flags and fill a user-config.jam file pointing to cross-compiler. Disable
python support that is broken when cross-compiling. Disable
provide-libboost_python when cross-compiling.
---
gnu/local.mk | 1 +
gnu/packages/boost.scm | 59 ++++++++++++++++++++++------
gnu/packages/patches/boost-dumpversion.patch | 24 +++++++++++
3 files changed, 71 insertions(+), 13 deletions(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index 8a0d9bd..7118b25 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -720,6 +720,7 @@ dist_patch_DATA =
\
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
%D%/packages/patches/blender-2.79-python-3.7-fix.patch \
+ %D%/packages/patches/boost-dumpversion.patch \
%D%/packages/patches/byobu-writable-status.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \
%D%/packages/patches/calibre-remove-test-bs4.patch \
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index a2253a9..4e1e682 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -10,6 +10,7 @@
;;; Copyright © 2018, 2019 Ricardo Wurmus <address@hidden>
;;; Copyright © 2018 Maxim Cournoyer <address@hidden>
;;; Copyright © 2018 Efraim Flashner <address@hidden>
+;;; Copyright © 2019 Mathieu Othacehe <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -54,6 +55,8 @@
(string-append
"https://dl.bintray.com/boostorg/release/"
version "/source/boost_"
version-with-underscores
".tar.bz2"))))
+ (patches
+ (search-patches "boost-dumpversion.patch"))
(sha256
(base32
"0y47nc7w0arwgj4x1phadxbvl7wyfcgknbz5kv8lzpl98wsyh2j3"))))
@@ -62,7 +65,9 @@
("zlib" ,zlib)))
(native-inputs
`(("perl" ,perl)
- ("python" ,python-2)
+ ,@(if (%current-target-system)
+ '()
+ `(("python" ,python-2)))
("tcsh" ,tcsh)))
(arguments
`(#:tests? #f
@@ -76,7 +81,24 @@
;; Set the RUNPATH to $libdir so that the libs find each other.
(string-append "linkflags=-Wl,-rpath="
- (assoc-ref %outputs "out") "/lib"))
+ (assoc-ref %outputs "out") "/lib")
+ ,@(if (%current-target-system)
+ `("--user-config=user-config.jam"
+ ;; Python is not supported when cross-compiling.
+ "--without-python"
+ "binary-format=elf"
+ "target-os=linux"
+ ,@(cond
+ ((string-prefix? "arm" (%current-target-system))
+ '("abi=aapcs"
+ "address-model=32"
+ "architecture=arm"))
+ ((string-prefix? "aarch64" (%current-target-system))
+ '("abi=aapcs"
+ "address-model=64"
+ "architecture=arm"))
+ (else '())))
+ '()))
#:phases
(modify-phases %standard-phases
(delete 'bootstrap)
@@ -94,6 +116,14 @@
(setenv "SHELL" (which "sh"))
(setenv "CONFIG_SHELL" (which "sh"))
+ ,@(if (%current-target-system)
+ `((call-with-output-file "user-config.jam"
+ (lambda (port)
+ (format port
+ "using gcc : cross : ~a-c++ ;"
+ ,(%current-target-system)))))
+ '())
+
(invoke "./bootstrap.sh"
(string-append "--prefix=" out)
;; Auto-detection looks for ICU only in traditional
@@ -108,17 +138,20 @@
(replace 'install
(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>.
- (with-directory-excursion (string-append out "/lib")
- (symlink "libboost_python27.so" "libboost_python.so"))
- #t))))))
+ ,@(if (%current-target-system)
+ '()
+ '((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>.
+ (with-directory-excursion (string-append out "/lib")
+ (symlink "libboost_python27.so"
"libboost_python.so"))
+ #t))))))))
(home-page "https://www.boost.org")
(synopsis "Peer-reviewed portable C++ source libraries")
diff --git a/gnu/packages/patches/boost-dumpversion.patch
b/gnu/packages/patches/boost-dumpversion.patch
new file mode 100644
index 0000000..7df779c
--- /dev/null
+++ b/gnu/packages/patches/boost-dumpversion.patch
@@ -0,0 +1,24 @@
+This issue is described here: https://github.com/openwrt/packages/pull/8685
+and has not been solved as of 1.70.0 release.
+
+--- a/tools/build/src/tools/common.jam
++++ b/tools/build/src/tools/common.jam
+@@ -973,18 +973,6 @@
+ }
+ }
+
+- # From GCC 5, versioning changes and minor becomes patch
+- if $(tag) = gcc && [ numbers.less 4 $(version[1]) ]
+- {
+- version = $(version[1]) ;
+- }
+-
+- # Ditto, from Clang 4
+- if ( $(tag) = clang || $(tag) = clangw ) && [ numbers.less 3
$(version[1]) ]
+- {
+- version = $(version[1]) ;
+- }
+-
+ # On intel, version is not added, because it does not matter and it is the
+ # version of vc used as backend that matters. Ideally, we should encode
the
+ # backend version but that would break compatibility with V1.
- 13/22: gnu: guile-gcrypt: Fix cross-compilation., (continued)
- 13/22: gnu: guile-gcrypt: Fix cross-compilation., guix-commits, 2019/11/15
- 12/22: gnu: doxygen: Fix cross-compilation., guix-commits, 2019/11/15
- 08/22: gnu: bdb: Fix cross-compilation., guix-commits, 2019/11/15
- 07/22: gnu: eudev: Fix cross-compilation., guix-commits, 2019/11/15
- 18/22: utils: Use target-aarch64? and target-arm? helpers., guix-commits, 2019/11/15
- 15/22: gnu: libnl: Move python outputs to separate packages., guix-commits, 2019/11/15
- 09/22: gnu: openldap: Fix cross-compilation., guix-commits, 2019/11/15
- 19/22: build: vm: Fix arm32 support., guix-commits, 2019/11/15
- 21/22: system: vm: Support cross-compilation., guix-commits, 2019/11/15
- 20/22: system: vm: Add arm64 support., guix-commits, 2019/11/15
- 06/22: gnu: boost: Fix cross-compilation.,
guix-commits <=
- 22/22: scripts: system: Add --target option., guix-commits, 2019/11/15
- 16/22: gnu: crda: Fix cross-compilation, guix-commits, 2019/11/15
- 03/22: gnu: groff: Fix cross compilation., guix-commits, 2019/11/15
- 14/22: gnu: guile-sqlite3: Fix cross-compilation., guix-commits, 2019/11/15