blob: 0349dafe3879efdef799b4e2766ce6c7bfe2230e (
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
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
|
(define-module (gn-auth)
#:use-module (guix)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system python)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (git oid)
#:use-module (git tag)
#:use-module (git bindings)
#:use-module (git reference)
#:use-module (git repository)
;; Packages from guix
#:use-module (gnu packages check)
#:use-module (gnu packages django)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages databases)
;; Packages from guix-bioinformatics
#:use-module (gnu packages python-web))
(define %source-dir (dirname (dirname (dirname (dirname (dirname (current-filename)))))))
(define (get-commit)
"Retrieve the commit if the source directory is a repository."
(if (git-predicate %source-dir)
(begin (let ((commit #f))
(libgit2-init!)
(set! commit (oid->string
(reference-target
(repository-head (repository-open %source-dir)))))
(libgit2-shutdown!)
commit))
"NOTAREPOSITORY"))
(define (list-last lst)
(let ((len (length lst)))
(if (> len 0)
(list-ref lst (- len 1)))))
(define (process-version repo-head tag-vals)
(let ((version-prefix (list-last (string-split (car tag-vals) #\/)))
(repo-head-str (oid->string repo-head)))
(if (zero? (oid-cmp repo-head
(tag-target-id (cdr tag-vals))))
version-prefix
(string-append version-prefix "-" (substring repo-head-str 0 8)))))
(define (get-latest-version)
"Get latest version tag from repository."
(if (git-predicate %source-dir)
(let ((%repo #f)
(%tags (list))
(%repo-head #f))
(begin (libgit2-init!)
(set! %repo (repository-open %source-dir))
(set! %repo-head (reference-target (repository-head %repo)))
(tag-foreach %repo
(lambda (tname tref)
(set! %tags (list (cons tname (tag-lookup %repo tref))))
0))
(libgit2-shutdown!)
(if (zero? (length %tags))
(string-append "v0.0.0-" (substring (oid->string %repo-head) 0 8))
(process-version
%repo-head
(list-last (sort-list %tags (lambda (item) (error item))))))))
;; Figure out a way to get the version in the checkouts when building
"v0.0.0"))
(define vcs-file?
(or (git-predicate %source-dir)
(const #t)))
(define-public gn-auth
(package
(name "gn-auth")
(version (string-append (get-latest-version)
"-git-"
(substring (get-commit) 0 9)))
(source (local-file %source-dir "gn-auth-checkout"
#:recursive? #t
#:select? vcs-file?))
(build-system python-build-system)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
(replace 'check
(lambda _ (invoke "pytest" "-k" "unit_test"))))))
;; (inputs (list))
(native-inputs
(list python-mypy
python-pytest
python-pylint
python-hypothesis
python-pytest-mock
python-mypy-extensions))
(propagated-inputs
(list python-flask
python-redis
python-authlib
python-pymonad
yoyo-migrations
python-bcrypt ;; remove after removing all references
python-mysqlclient
python-argon2-cffi
python-email-validator))
(home-page "https://github.com/genenetwork/gn-auth")
(synopsis "Authentication and Authorisation server for GeneNetwork services.")
(description "Authentication and Authorisation server for GeneNetwork services.")
(license license:agpl3+)))
gn-auth
|