diff options
author | Simon South <simon@simonsouth.net> | 2021-12-29 12:46:07 -0500 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-01-01 15:11:51 +0100 |
commit | aac3a33d1e139743e86c66297a8d11d9fb35a7bd (patch) | |
tree | 05663a3524b0f33ca1a744824d3f89f09fb06348 /gnu/packages/ragel.scm | |
parent | 92d03362ff7d0565353e396612058cc6c104524e (diff) |
gnu: ragel: Fix build of knot on aarch64-linux.
Apply a patch backported from Ragel's "ragel-6" branch that allows it to
reliably generate usable code on aarch64-linux where the C/C++ "char" type is
unsigned by default, fixing the build of Knot on this platform.
* gnu/packages/patches/ragel-char-signedness.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/ragel.scm (ragel)[arguments]: Add custom phase for AArch64 that
applies the patch.
[native-inputs]: Add "patch" and patch file on AArch64.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages/ragel.scm')
-rw-r--r-- | gnu/packages/ragel.scm | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/gnu/packages/ragel.scm b/gnu/packages/ragel.scm index 1d9b67a6e0..d4016ed5ba 100644 --- a/gnu/packages/ragel.scm +++ b/gnu/packages/ragel.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2021 Simon South <simon@simonsouth.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,7 +23,9 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (gnu packages)) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages base)) (define-public ragel (package @@ -36,6 +39,30 @@ (base32 "0gvcsl62gh6sg73nwaxav4a5ja23zcnyxncdcdnqa2yjcpdnw5az")))) (build-system gnu-build-system) + (arguments + (if (target-aarch64?) + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'apply-char-signedness-fix + ;; Apply a backported fix for aarch64-linux, where the C/C++ + ;; "char" type is unsigned by default. + ;; + ;; The patch is applied in this custom phase and not via the + ;; "origin" object above to avoid rebuilding a large number of + ;; packages on other platforms. + (lambda _ + (let ((patch + (search-input-file %build-inputs "/bin/patch")) + (char-signedness-patch + (assoc-ref %build-inputs "char-signedness-patch"))) + (invoke patch "-p1" "-i" char-signedness-patch)))))) + '())) + (native-inputs + (if (target-aarch64?) + `(("char-signedness-patch" + ,(search-patch "ragel-char-signedness.patch")) + ("patch" ,patch)) + '())) (home-page "https://www.colm.net/open-source/ragel/") (synopsis "State machine compiler") (description |