summary refs log tree commit diff
path: root/gnu/packages/ragel.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ragel.scm')
-rw-r--r--gnu/packages/ragel.scm29
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