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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
| | ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2023, 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; 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 (gnu packages php-bootstrap)
#:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system composer)
#:use-module (guix build-system copy)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages php)
#:use-module (gnu packages version-control))
(define-public composer-classloader
(package
(name "composer-classloader")
(version "1.9.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/composer/composer")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0127zmmg3yx84ljngfs86q7kjhyypybkf4d1ihfrfnzgynzxfxdf"))))
(build-system copy-build-system)
(arguments
`(#:install-plan
'(("src/Composer/Autoload/ClassLoader.php" "/share/web/composer/"))))
(home-page "https://getcomposer.org")
(synopsis "PHP class loader extracted from the composer package")
(description "This package contains the class loader class used by Composer to
build its autoloading feature. This package is used by the composer-build-system
to build its own store-aware autoloading feature.")
(license license:expat)))
(define-public php-doctrine-annotations
(package
(name "php-doctrine-annotations")
(version "2.0.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/annotations")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "04hsykqcigvmv6rvwjay5scvjji6rcqzwdw9clzfa3xx50mbz38n"))))
(build-system composer-build-system)
;; Native-inputs would make us include the whole symfony package chain.
(arguments (list #:tests? #f))
(inputs
(list php-doctrine-lexer php-psr-cache))
(synopsis "Docblock PHP Annotations Parser")
(description
"This package provides a Docblock PHP Annotations Parser.")
(home-page "https://www.doctrine-project.org/projects/annotations")
(license license:expat)))
(define-public php-doctrine-collections
(package
(name "php-doctrine-collections")
(version "2.1.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/collections")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0b384rkxl70bb164373c3y3n72816jkggjm9vg58avb7lqx3dq1i"))))
(build-system composer-build-system)
(arguments
'(#:test-flags '("--bootstrap" "vendor/autoload.php")))
(inputs
(list php-doctrine-deprecations))
(native-inputs
(list php-phpunit-phpunit))
(synopsis "Additional functionality on top of PHP arrays")
(description
"This package provides a PHP library that adds additional functionality
on top of arrays.")
(home-page "https://www.doctrine-project.org/projects/collections")
(license license:expat)))
(define-public php-doctrine-common
(package
(name "php-doctrine-common")
(version "3.4.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/common")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1hivhghwmqs5jaiicayni35xkpclmdf5r9fb15y5jx7rl5wrsh7f"))))
(build-system composer-build-system)
(arguments
'(#:test-flags '("--bootstrap" "vendor/autoload.php")))
(inputs
(list php-doctrine-persistence))
(native-inputs
(list php-phpunit-phpunit))
(synopsis "PHP utility library for Doctrine projects")
(description
"This package provides additional functionality that other Doctrine
projects depend on such as better reflection support, proxies and much more.")
(home-page "https://www.doctrine-project.org/projects/common")
(license license:expat)))
(define-public php-doctrine-deprecations
(package
(name "php-doctrine-deprecations")
(version "1.1.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/deprecations")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0h6j374ayv67nga54ms16hk8ss6lsf2xhiyshnmhsgl2xw41lb2j"))))
(build-system composer-build-system)
(inputs
(list php-doctrine-lexer php-psr-cache))
(native-inputs
(list php-phpunit-phpunit php-psr-log))
(synopsis "Thin library around PHP deprecation strategies")
(description "This package provides a layer on top of PHP deprecations
strategies, with no side-effects by default and customization options.")
(home-page "https://github.com/doctrine/deprecations")
(license license:expat)))
(define-public php-doctrine-event-manager
(package
(name "php-doctrine-event-manager")
(version "2.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/event-manager")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "093ghp48ci4xazswlaxlmiabw7vay1nvv382nc1i6nrdxn781y0g"))))
(build-system composer-build-system)
(native-inputs
(list php-phpunit-phpunit))
(synopsis "Simple PHP event system")
(description
"This package provides the Doctrine Event Manager, a simple PHP event
system that was built to be used with the various Doctrine projects.")
(home-page "https://www.doctrine-project.org/projects/event-manager")
(license license:expat)))
(define-public php-doctrine-instantiator
(package
(name "php-doctrine-instantiator")
(version "2.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/instantiator")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1y8ajlwdzrw92lx6bnc5p7lwgrgbf602lqlyxfrsff7x538as73n"))))
(build-system composer-build-system)
(native-inputs
(list php-phpunit-phpunit))
(synopsis "Utility for instantiating PHP objects")
(description "This package provides a small, lightweight utility to
instantiate objects in PHP without invoking their constructors.")
(home-page "https://www.doctrine-project.org/projects/instantiator")
(license license:expat)))
(define-public php-doctrine-lexer
(package
(name "php-doctrine-lexer")
(version "3.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/lexer")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1kxwq8s9i7gndg66i1c5h6f21w8fc4smd8nj6sg2p0vzrg4m2l43"))))
(build-system composer-build-system)
(native-inputs
(list php-phpunit-phpunit))
(synopsis "PHP Doctrine Lexer parser library")
(description
"This package provides a Doctrine Lexer parser library that can be used
in Top-Down, Recursive Descent Parsers in PHP.")
(home-page "https://www.doctrine-project.org/projects/lexer")
(license license:expat)))
(define-public php-doctrine-persistence
(package
(name "php-doctrine-persistence")
(version "3.2.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/doctrine/persistence")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1fynsqafdbajbjirqzhj5gjwkfc7yz45nadgqbhrmh29i0q952bq"))))
(build-system composer-build-system)
;; Native-inputs would make us include the whole symfony package chain.
(arguments
'(#:tests? #f
#:test-flags '("--bootstrap" "vendor/autoload.php")))
(inputs
(list php-doctrine-event-manager php-psr-cache))
(synopsis "Shared functionality between the Doctrine object mappers")
(description
"This package provides a set of shared interfaces and functionality that
the different Doctrine object mappers share.")
(home-page "https://www.doctrine-project.org/projects/persistence")
(license license:expat)))
(define-public php-hamcrest-hamcrest-php
(package
(name "php-hamcrest-hamcrest-php")
(version "2.0.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/hamcrest/hamcrest-php")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1n6idxz1rc17zky84khrqfyndh4ffb7jvd1nb14saxdissgq5y5j"))
(patches
(search-patches "php-hamcrest-hamcrest-php-phpunit-compatibility.patch"))))
(build-system composer-build-system)
(arguments
`(#:test-flags
'("--configuration" "tests/phpunit.xml.dist"
"--exclude-group" "skipTest")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-recent-phpunit-build
(lambda _
(substitute* "tests/Hamcrest/UtilTest.php"
(("assertInternalType\\('array', ")
"assertIsArray(")
;; Ignore this test.
(("@expectedException InvalidArgumentException")
"@group skipTest")))))))
(native-inputs
(list php-phpunit-php-file-iterator php-phpunit-phpunit))
(synopsis "PHP port of Hamcrest Matchers")
(description "Hamcrest is a matching library originally written for Java,
but subsequently ported to many other languages. This package is the
official PHP port of Hamcrest and essentially follows a literal translation of
the original Java API for Hamcrest, with a few PHP-related exceptions.")
(home-page "https://github.com/hamcrest/hamcrest-php")
(license license:bsd-3)))
(define-public php-mockery-mockery
(package
(name "php-mockery-mockery")
(version "1.6.6")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mockery/mockery")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1z6nla99wswa339f6l8sging4xfnkkp1lkby5fn7g9zh9hdqxx0l"))))
(build-system composer-build-system)
(arguments
(list
#:test-flags ''("--bootstrap" "vendor/autoload.php")
#:phases
#~(modify-phases %standard-phases
(add-before 'check 'remove-duplicate-hamcrest-require
(lambda _
;; Remove duplicate hamcrest require.
(substitute* "vendor/autoload_conf.php"
((".*Hamcrest.php';")
""))
;; Fix failing test.
(substitute* "tests/Mockery/HamcrestExpectationTest.php"
(("anything\\(\\)")
"\\Hamcrest\\Matchers::anything()")
(("greaterThan\\(")
"\\Hamcrest\\Matchers::greaterThan("))
;; FIXME Delete failing test.
(delete-file "\
tests/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationTest.php"))))))
(inputs
(list php-hamcrest-hamcrest-php))
(native-inputs
(list php-phpunit-phpunit))
(synopsis "PHP mock object framework")
(description "This package provides a simple and flexible PHP mock object
framework, often used for tests.")
(home-page "https://github.com/mockery/mockery")
(license license:bsd-3)))
(define-public php-myclabs-deep-copy
(package
(name "php-myclabs-deep-copy")
(version "1.11.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/myclabs/DeepCopy")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1jica9cx65a3l70p1sn6vjz5dxdqfwf5msvn1v4qnp6ah7rh4xcv"))))
(build-system composer-build-system)
(arguments
'(#:test-flags '("--bootstrap" "vendor/autoload.php")))
(native-inputs
(list php-phpunit-phpunit
php-doctrine-collections
php-doctrine-common
php-phpspec-prophecy))
(synopsis "Create copies of PHP objects")
(description "This package contains a facility to create deep copies (clones)
of PHP objects. This package not only creates a new copy of an object, it
recursively create new copies of any object referenced by the object. It is
designed to work even in the presence of cycles in the association graph.")
(home-page "https://github.com/myclabs/DeepCopy")
(license license:expat)))
|