unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
blob a54b0f37f11592133d9440287decad629f795c52 3998 bytes (raw)
name: guix/build-system/julia.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
 
(define-module (guix build-system julia)
  #:use-module ((guix build julia-build-system))
  #:use-module (gnu packages julia)
  #:use-module (guix store)
  #:use-module (guix utils)
  #:use-module (guix packages)
  #:use-module (guix derivations)
  #:use-module (guix search-paths)
  #:use-module (guix build-system)
  #:use-module (guix build-system gnu)
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-26)
  #:export (%julia-build-system-modules
            julia-build
            julia-build-system))

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

(define* (lower name
                #:key source inputs native-inputs outputs system target
                (julia julia)
                #:allow-other-keys
                #:rest arguments)
  "Return a bag for NAME."
  (define private-keywords
    '(#:target #:julia #: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 `(("julia" ,julia)
			,@native-inputs))
	(outputs outputs)
	(build julia-build)
	(arguments (strip-keyword-arguments private-keywords arguments)))))

(define* (julia-build store name inputs
                      #:key source
                      (tests? #f)
                      (parallel-tests? #t)
                      (test-command ''("make" "check"))
                      (phases '(@ (guix build julia-build-system)
                                  %standard-phases))
                      (outputs '("out"))
                      ;; (include (quote %default-include))
                      ;; (exclude (quote %default-exclude))
                      (search-paths '())
                      (system (%current-system))
                      (guile #f)
                      (imported-modules %julia-build-system-modules)
                      (modules '((guix build julia-build-system)
                                 (guix build utils))))
  "Build SOURCE using Julia, and with INPUTS."
  (define builder
    `(begin
       (use-modules ,@modules)
       (julia-build #:name ,name
                    #:source ,(match (assoc-ref inputs "source")
                                (((? derivation? source))
                                 (derivation->output-path source))
                                ((source)
                                 source)
                                (source
                                 source))
                    #:system ,system
                    #:test-command ,test-command
                    #:tests? ,tests?
                    #:phases ,phases
                    #:outputs %outputs
                    ;; #:include ,include
                    ;; #:exclude ,exclude
                    #:search-paths ',(map search-path-specification->sexp
                                          search-paths)
                    #:inputs %build-inputs)))

  (define guile-for-build
    (match guile
      ((? package?)
       (package-derivation store guile system #:graft? #f))
      (#f                                         ; the default
       (let* ((distro (resolve-interface '(gnu packages commencement)))
              (guile  (module-ref distro 'guile-final)))
         (package-derivation store guile system #:graft? #f)))))

  (build-expression->derivation store name builder
                                #:inputs inputs
                                #:system system
                                #:modules imported-modules
                                #:outputs outputs
                                #:guile-for-build guile-for-build))

(define julia-build-system
  (build-system
   (name 'julia)
   (description "The build system for Julia packages")
   (lower lower)))

debug log:

solving a54b0f37f1 ...
found a54b0f37f1 in https://yhetil.org/guix-patches/CAO7Ox=Y2-3TCYRnYcohASYEfJfAnULJAbNr8xRXB1dT325fE8Q@mail.gmail.com/

applying [1/1] https://yhetil.org/guix-patches/CAO7Ox=Y2-3TCYRnYcohASYEfJfAnULJAbNr8xRXB1dT325fE8Q@mail.gmail.com/
diff --git a/guix/build-system/julia.scm b/guix/build-system/julia.scm
new file mode 100644
index 0000000000..a54b0f37f1

Checking patch guix/build-system/julia.scm...
Applied patch guix/build-system/julia.scm cleanly.

index at:
100644 a54b0f37f11592133d9440287decad629f795c52	guix/build-system/julia.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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).