blob: 315bdca2c41a9fae2f9c227e0c20ed2ff3705b54 (
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
(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))
(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 python-authlib
(package
(name "python-authlib")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "Authlib" version))
(sha256
(base32
"178ycfypdv1hy4zjm09rmysxakmwch2n6a5wypwmx4d5hc4fi8sg"))))
(build-system python-build-system)
(native-inputs (list python-httpx
python-flask
python-django
python-werkzeug
python-starlette
python-sqlalchemy
python-pycryptodomex))
(propagated-inputs (list python-cryptography))
(arguments `(#:tests? #f)) ;; temporarily deactivate tests
(home-page "https://authlib.org/")
(synopsis
"The ultimate Python library in building OAuth and OpenID Connect servers and clients.")
(description
"The ultimate Python library in building OAuth and OpenID Connect servers and
clients. It is designed from low level specifications implementations to high
level frameworks integrations, to meet the needs of everyone.")
(license license:bsd-3)))
(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
|