all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob b9c9d3c612bad3893ef8e83424563c8a2a5c8a88 5565 bytes (raw)
name: guix/build-system/rakudo.scm 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (guix build-system rakudo)
  #:use-module (guix store)
  #:use-module (guix utils)
  #:use-module (guix gexp)
  #:use-module (guix monads)
  #:use-module (guix search-paths)
  #:use-module (guix build-system)
  #:use-module (guix build-system gnu)
  #:use-module (guix packages)
  #:use-module (ice-9 match)
  #:export (%rakudo-build-system-modules
            rakudo-build
            rakudo-build-system))

;; Commentary:
;;
;; Standard build and install procedure for packages using the Rakudo
;; build system to be installed as system libraries.  This is
;; implemented as an extension of `gnu-build-system'.
;;
;; Code:

(define %rakudo-build-system-modules
  ;; Build-side modules imported by default.
  `((guix build rakudo-build-system)
    ,@%gnu-build-system-modules))

(define (default-rakudo)
  "Return the default Rakudo package."

  ;; Do not use `@' to avoid introducing circular dependencies.
  (let ((module (resolve-interface '(gnu packages perl6))))
    (module-ref module 'rakudo)))

(define (default-prove6)
  "Return the default perl6-tap-harness package for tests."
  (let ((module (resolve-interface '(gnu packages perl6))))
    (module-ref module 'perl6-prove6)))

(define (default-zef)
  "Return the default perl6-zef package."
  (let ((module (resolve-interface '(gnu packages perl6))))
    (module-ref module 'perl6-zef)))

(define* (lower name
                #:key source inputs native-inputs
                outputs
                system target
                (rakudo (default-rakudo))
                (prove6 (default-prove6))
                (zef (default-zef))
                (tests? #t)
                (test-runner "zef")
                #:allow-other-keys
                #:rest arguments)
  "Return a bag for NAME."
  (define private-keywords
    '(#:target #:rakudo #:prove6 #:zef #:inputs #:native-inputs))
  
  (and (not target)                               ;XXX: no cross-compilation
       (bag
         (name name)
         (system system)
         (host-inputs `(,@(if source
                              `(("source" ,source))
                              '())
                        ,@inputs

                        ;; Keep the standard inputs of 'gnu-build-system'.
                        ,@(standard-packages)))
         (build-inputs `(("rakudo" ,rakudo)
                         ,@(cond ((not tests?)
                                  '())
                                 ((and tests? (eq? test-runner "zef"))
                                  `(("test-runner-zef" ,zef))) 
                                 ((and tests? (eq? test-runner "prove6"))
                                  `(("test-runner-prove6" ,prove6)))
                                 (else '()))
                         
                         ,@native-inputs))
         (outputs outputs)
         (build rakudo-build)
         (arguments (strip-keyword-arguments private-keywords arguments)))))

(define* (rakudo-build name inputs
                       #:key
                       source
                       (search-paths '())
                       (tests? #t)
                       (phases '%standard-phases)
                       outputs 
                       (system (%current-system))
                       (guile #f)
                       (test-runner "zef")
                       (imported-modules %rakudo-build-system-modules)
                       (modules '((guix build rakudo-build-system)
                                  (guix build utils))))
  "Build SOURCE using PERL6, and with INPUTS."
  (define builder
    (with-imported-modules imported-modules
      #~(begin
          (use-modules #$@(sexp->gexp modules))
          (rakudo-build #:name #$name
                        #:source #+source
                        #:search-paths '#$(sexp->gexp
                                           (map search-path-specification->sexp
                                                search-paths))
                        #:phases #$phases
                        #:system #$system
                        #:tests? #$tests?
                        #:test-runner #$test-runner
                        #:outputs #$(outputs->gexp outputs)
                        #:inputs #$(input-tuples->gexp inputs)))))

  (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
                                                  system #:graft? #f)))
    (gexp->derivation name builder
                      #:system system
                      #:guile-for-build guile)))

(define rakudo-build-system
  (build-system
    (name 'rakudo)
    (description "The standard Rakudo build system")
    (lower lower)))

;;; rakudo.scm ends here

debug log:

solving b9c9d3c612 ...
found b9c9d3c612 in https://yhetil.org/guix/7a3e89c7546867c54d76824ac8f47cb1@codesections.com/
found 05a4d9c2ad in https://git.savannah.gnu.org/cgit/guix.git
preparing index
index prepared:
100644 05a4d9c2adac64bace0525d4e5aaef77d31a0559	guix/build-system/rakudo.scm

applying [1/1] https://yhetil.org/guix/7a3e89c7546867c54d76824ac8f47cb1@codesections.com/
diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
index 05a4d9c2ad..b9c9d3c612 100644

1:35: trailing whitespace.
  
1:52: trailing whitespace.
                                  `(("test-runner-zef" ,zef))) 
1:56: trailing whitespace.
                         
1:65: trailing whitespace.
                       outputs 
Checking patch guix/build-system/rakudo.scm...
Applied patch guix/build-system/rakudo.scm cleanly.
warning: 4 lines add whitespace errors.

index at:
100644 b9c9d3c612bad3893ef8e83424563c8a2a5c8a88	guix/build-system/rakudo.scm

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.