aboutsummaryrefslogtreecommitdiff
path: root/guix.scm
blob: 384b314a0d0683e97445c4d51f9c818b17ec6018 (plain)
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
;; To use this file to build HEAD of gn-guile:
;;
;;   guix build -f guix.scm
;;
;; To get a development container
;;
;;   guix shell -C -D -f guix.scm
;;

(define-module (gn-guile-package)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix gexp)
  #:use-module (guix packages)
  #:use-module (guix git-download)
  #:use-module (guix build-system guile)
  #:use-module (guix utils)
  #:use-module (gnu packages build-tools)
  #:use-module  (gnu packages package-management)
  #:use-module ((gnu packages bash) #:select (bash-minimal))
  #:use-module ((gnu packages bioinformatics) #:select (gemma))
  #:use-module ((gnu packages certs) #:select (nss-certs))
  #:use-module ((gnu packages guile) #:select (guile-json-4 guile-3.0 guile-readline))
  #:use-module ((gnu packages guile-xyz) #:select (guile-dbi guile-dbd-mysql guile-fibers guile-redis guile-hashing guile-commonmark))
  #:use-module ((gnu packages parallel) #:select (parallel))
  #:use-module ((gnu packages perl) #:select (perl))
  #:use-module ((gnu packages tls) #:select (guile-gnutls openssl))
  #:use-module (srfi srfi-1)
  #:use-module (ice-9 popen)
  #:use-module (ice-9 rdelim))

(define %source-dir (dirname (current-filename)))

(define %git-commit
    (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ)))

(define-public gn-guile-git
  (package
    (name "gn-guile-git")
    (version (git-version "4.0.0-" "HEAD" %git-commit))
    (source (local-file %source-dir
			#:recursive? #t
			#:select? (or (git-predicate (dirname (current-source-directory)))
                                      (const #t))))
    (build-system guile-build-system)
    (propagated-inputs
     (list guile-3.0 guile-dbi guile-dbd-mysql guile-fibers guile-gnutls guile-readline
	   guile-commonmark guile-redis openssl nss-certs gemma parallel guile-hashing))
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
	  ;; When using the guile-build-system, guild doesn't
	  ;; correctly set the GUILE_LOAD_PATH for the various guile
	  ;; packages in the build phase leading to build failures.
	  (add-before 'build 'augment-GUILE_LOAD_PATH
	    (lambda* (#:key outputs #:allow-other-keys)
	      (let* ((guile-version (target-guile-effective-version))
		     (guile-dbi-scm (string-append #$guile-dbi "/share/guile/site/2.2")))
		;; guild uses this: "\\.(scm|sls)$" regexp to try and
		;; compile all scm files in this repository.  We don't
		;; need to compile guix.scm
		(delete-file "guix.scm")
		(setenv "GUILE_LOAD_PATH"
			(string-append
			 guile-dbi-scm ":"
			 (format
			  #f "~{~a:~}"
			  (map (lambda (package)
				 (format #f "~a/share/guile/site/~a"
					 package guile-version))
			       (list #$guile-fibers #$guile-commonmark #$guile-json-4 #$guile-hashing)))
			 #$(getenv "GUILE_LOAD_PATH")))))))))
    (home-page "https://git.genenetwork.com/gn-guile")
    (synopsis "Next generation GN code in guile")
    (description "Use of guile.")
    (license license:gpl3)))

gn-guile-git