lol
at 18.09-beta 530 lines 15 kB view raw
1{ pkgs, fetchgit, php }: 2 3let 4 self = with self; { 5 buildPecl = import ../build-support/build-pecl.nix { 6 inherit php; 7 inherit (pkgs) stdenv autoreconfHook fetchurl; 8 }; 9 isPhpOlder55 = pkgs.lib.versionOlder php.version "5.5"; 10 isPhp7 = pkgs.lib.versionAtLeast php.version "7.0"; 11 12 apcu = if isPhp7 then apcu51 else apcu40; 13 14 apcu40 = assert !isPhp7; buildPecl { 15 name = "apcu-4.0.11"; 16 sha256 = "002d1gklkf0z170wkbhmm2z1p9p5ghhq3q1r9k54fq1sq4p30ks5"; 17 buildInputs = [ pkgs.pcre ]; 18 }; 19 20 apcu51 = assert isPhp7; buildPecl { 21 name = "apcu-5.1.11"; 22 sha256 = "0nz9m3fbxgyc2ij63yqmxm06a1f51g8rkxk85f85ziqdin66q2f1"; 23 buildInputs = [ pkgs.pcre ]; 24 doCheck = true; 25 checkTarget = "test"; 26 checkFlagsArray = ["REPORT_EXIT_STATUS=1" "NO_INTERACTION=1"]; 27 }; 28 29 ast = assert isPhp7; buildPecl { 30 name = "ast-0.1.5"; 31 32 sha256 = "0vv2w5fkkw9n7qdmi5aq50416zxmvyzjym8kb6j1v8kd4xcsjjgw"; 33 }; 34 35 couchbase = buildPecl rec { 36 name = "couchbase-${version}"; 37 version = "2.3.4"; 38 39 buildInputs = [ pkgs.libcouchbase pkgs.zlib igbinary pcs ]; 40 41 src = pkgs.fetchFromGitHub { 42 owner = "couchbase"; 43 repo = "php-couchbase"; 44 rev = "v${version}"; 45 sha256 = "0rdlrl7vh4kbxxj9yxp54xpnnrxydpa9fab7dy4nas474j5vb2bp"; 46 }; 47 48 configureFlags = [ "--with-couchbase" ]; 49 50 patches = [ 51 (pkgs.writeText "php-couchbase.patch" '' 52 --- a/config.m4 53 +++ b/config.m4 54 @@ -9,7 +9,7 @@ if test "$PHP_COUCHBASE" != "no"; then 55 LIBCOUCHBASE_DIR=$PHP_COUCHBASE 56 else 57 AC_MSG_CHECKING(for libcouchbase in default path) 58 - for i in /usr/local /usr; do 59 + for i in ${pkgs.libcouchbase}; do 60 if test -r $i/include/libcouchbase/couchbase.h; then 61 LIBCOUCHBASE_DIR=$i 62 AC_MSG_RESULT(found in $i) 63 @@ -154,6 +154,8 @@ COUCHBASE_FILES=" \ 64 igbinary_inc_path="$phpincludedir" 65 elif test -f "$phpincludedir/ext/igbinary/igbinary.h"; then 66 igbinary_inc_path="$phpincludedir" 67 + elif test -f "${igbinary.dev}/include/ext/igbinary/igbinary.h"; then 68 + igbinary_inc_path="${igbinary.dev}/include" 69 fi 70 if test "$igbinary_inc_path" = ""; then 71 AC_MSG_WARN([Cannot find igbinary.h]) 72 '') 73 ]; 74 }; 75 76 php_excel = assert isPhp7; buildPecl rec { 77 name = "php_excel-${version}"; 78 version = "1.0.2"; 79 phpVersion = "php7"; 80 81 buildInputs = [ pkgs.libxl ]; 82 83 src = pkgs.fetchurl { 84 url = "https://github.com/iliaal/php_excel/releases/download/Excel-1.0.2-PHP7/excel-${version}-${phpVersion}.tgz"; 85 sha256 = "0dpvih9gpiyh1ml22zi7hi6kslkilzby00z1p8x248idylldzs2n"; 86 }; 87 88 configureFlags = [ "--with-excel" "--with-libxl-incdir=${pkgs.libxl}/include_c" "--with-libxl-libdir=${pkgs.libxl}/lib" ]; 89 }; 90 91 igbinary = buildPecl { 92 name = "igbinary-2.0.4"; 93 94 configureFlags = [ "--enable-igbinary" ]; 95 96 makeFlags = [ "phpincludedir=$(dev)/include" ]; 97 98 outputs = [ "out" "dev" ]; 99 100 sha256 = "0a55l4f0bgbf3f6sh34njd14niwagg829gfkvb8n5fs69xqab67d"; 101 }; 102 103 mailparse = assert isPhp7; buildPecl { 104 name = "mailparse-3.0.2"; 105 106 sha256 = "0fw447ralqihsjnn0fm2hkaj8343cvb90v0d1wfclgz49256y6nq"; 107 }; 108 109 imagick = buildPecl { 110 name = "imagick-3.4.3"; 111 sha256 = "0z2nc92xfc5axa9f2dy95rmsd2c81q8cs1pm4anh0a50x9g5ng0z"; 112 configureFlags = [ "--with-imagick=${pkgs.imagemagick.dev}" ]; 113 nativeBuildInputs = [ pkgs.pkgconfig ]; 114 buildInputs = [ pkgs.pcre ]; 115 }; 116 117 # No support for PHP 7 yet 118 memcache = assert !isPhp7; buildPecl { 119 name = "memcache-3.0.8"; 120 121 sha256 = "04c35rj0cvq5ygn2jgmyvqcb0k8d03v4k642b6i37zgv7x15pbic"; 122 123 configureFlags = [ "--with-zlib-dir=${pkgs.zlib.dev}" ]; 124 125 makeFlags = [ "CFLAGS=-fgnu89-inline" ]; 126 }; 127 128 memcached = if isPhp7 then memcachedPhp7 else memcached22; 129 130 memcached22 = assert !isPhp7; buildPecl { 131 name = "memcached-2.2.0"; 132 133 sha256 = "0n4z2mp4rvrbmxq079zdsrhjxjkmhz6mzi7mlcipz02cdl7n1f8p"; 134 135 configureFlags = [ 136 "--with-zlib-dir=${pkgs.zlib.dev}" 137 "--with-libmemcached-dir=${pkgs.libmemcached}" 138 ]; 139 140 nativeBuildInputs = [ pkgs.pkgconfig ]; 141 buildInputs = with pkgs; [ cyrus_sasl zlib ]; 142 }; 143 144 # Not released yet 145 memcachedPhp7 = assert isPhp7; buildPecl rec { 146 name = "memcached-php7"; 147 148 src = fetchgit { 149 url = "https://github.com/php-memcached-dev/php-memcached"; 150 rev = "e573a6e8fc815f12153d2afd561fc84f74811e2f"; 151 sha256 = "0asfi6rsspbwbxhwmkxxnapd8w01xvfmwr1n9qsr2pryfk0w6y07"; 152 }; 153 154 configureFlags = [ 155 "--with-zlib-dir=${pkgs.zlib.dev}" 156 "--with-libmemcached-dir=${pkgs.libmemcached}" 157 ]; 158 159 nativeBuildInputs = [ pkgs.pkgconfig ]; 160 buildInputs = with pkgs; [ cyrus_sasl zlib ]; 161 }; 162 163 oci8 = buildPecl rec { 164 name = "oci8-2.1.8"; 165 sha256 = "1bp6fss2f2qmd5bdk7x22j8vx5qivrdhz4x7csf29vjgj6gvchxy"; 166 buildInputs = [ pkgs.re2c pkgs.oracle-instantclient ]; 167 configureFlags = [ "--with-oci8=shared,instantclient,${pkgs.oracle-instantclient}/lib" ]; 168 }; 169 170 pcs = buildPecl rec { 171 name = "pcs-1.3.3"; 172 173 sha256 = "0d4p1gpl8gkzdiv860qzxfz250ryf0wmjgyc8qcaaqgkdyh5jy5p"; 174 }; 175 176 # No support for PHP 7 yet (and probably never will be) 177 spidermonkey = assert !isPhp7; buildPecl rec { 178 name = "spidermonkey-1.0.0"; 179 180 sha256 = "1ywrsp90w6rlgq3v2vmvp2zvvykkgqqasab7h9bf3vgvgv3qasbg"; 181 182 configureFlags = [ 183 "--with-spidermonkey=${pkgs.spidermonkey_1_8_5}" 184 ]; 185 186 buildInputs = [ pkgs.spidermonkey_1_8_5 ]; 187 }; 188 189 xdebug = if isPhp7 then xdebug26 else xdebug23; 190 191 xdebug23 = assert !isPhp7; buildPecl { 192 name = "xdebug-2.3.1"; 193 194 sha256 = "0k567i6w7cw14m13s7ip0946pvy5ii16cjwjcinnviw9c24na0xm"; 195 196 doCheck = true; 197 checkTarget = "test"; 198 }; 199 200 xdebug26 = assert isPhp7; buildPecl { 201 name = "xdebug-2.6.0"; 202 203 sha256 = "1p6b54ypi5lq4ka3pyy2gswdf1d5vjb9y8lp9fqcp3zn7g04q9mm"; 204 205 doCheck = true; 206 checkTarget = "test"; 207 }; 208 209 yaml = if isPhp7 then yaml20 else yaml13; 210 211 yaml13 = assert !isPhp7; buildPecl { 212 name = "yaml-1.3.1"; 213 214 sha256 = "1fbmgsgnd6l0d4vbjaca0x9mrfgl99yix5yf0q0pfcqzfdg4bj8q"; 215 216 configureFlags = [ 217 "--with-yaml=${pkgs.libyaml}" 218 ]; 219 220 nativeBuildInputs = [ pkgs.pkgconfig ]; 221 }; 222 223 yaml20 = assert isPhp7; buildPecl { 224 name = "yaml-2.0.2"; 225 226 sha256 = "0f80zy79kyy4hn6iigpgfkwppwldjfj5g7s4gddklv3vskdb1by3"; 227 228 configureFlags = [ 229 "--with-yaml=${pkgs.libyaml}" 230 ]; 231 232 nativeBuildInputs = [ pkgs.pkgconfig ]; 233 }; 234 235 # Since PHP 5.5 OPcache is integrated in the core and has to be enabled via --enable-opcache during compilation. 236 zendopcache = assert isPhpOlder55; buildPecl { 237 name = "zendopcache-7.0.3"; 238 239 sha256 = "0qpfbkfy4wlnsfq4vc4q5wvaia83l89ky33s08gqrcfp3p1adn88"; 240 }; 241 242 zmq = buildPecl { 243 name = "zmq-1.1.3"; 244 245 sha256 = "1kj487vllqj9720vlhfsmv32hs2dy2agp6176mav6ldx31c3g4n4"; 246 247 configureFlags = [ 248 "--with-zmq=${pkgs.zeromq}" 249 ]; 250 251 nativeBuildInputs = [ pkgs.pkgconfig ]; 252 }; 253 254 # No support for PHP 7 and probably never will be 255 xcache = assert !isPhp7; buildPecl rec { 256 name = "xcache-${version}"; 257 258 version = "3.2.0"; 259 260 src = pkgs.fetchurl { 261 url = "http://xcache.lighttpd.net/pub/Releases/${version}/${name}.tar.bz2"; 262 sha256 = "1gbcpw64da9ynjxv70jybwf9y88idm01kb16j87vfagpsp5s64kx"; 263 }; 264 265 doCheck = true; 266 checkTarget = "test"; 267 268 configureFlags = [ 269 "--enable-xcache" 270 "--enable-xcache-coverager" 271 "--enable-xcache-optimizer" 272 "--enable-xcache-assembler" 273 "--enable-xcache-encoder" 274 "--enable-xcache-decoder" 275 ]; 276 277 buildInputs = [ pkgs.m4 ]; 278 }; 279 280 #pthreads requires a build of PHP with ZTS (Zend Thread Safety) enabled 281 #--enable-maintainer-zts or --enable-zts on Windows 282 pthreads = if isPhp7 then pthreads31 else pthreads20; 283 284 pthreads20 = assert (pkgs.config.php.zts or false) && (!isPhp7); buildPecl { 285 name = "pthreads-2.0.10"; 286 sha256 = "1xlcb1b1g10jd0xhm3c01a06yqpb5qln47pd1k522138324qvpwb"; 287 }; 288 289 pthreads31 = assert (pkgs.config.php.zts or false) && isPhp7; buildPecl { 290 name = "pthreads-3.1.5"; 291 sha256 = "1ziap0py3zrc7qj9lw4nzq6wx1viyj8v9y1babchizzan014x6p5"; 292 }; 293 294 # No support for PHP 7 yet 295 geoip = assert !isPhp7; buildPecl { 296 name = "geoip-1.1.0"; 297 sha256 = "1fcqpsvwba84gqqmwyb5x5xhkazprwkpsnn4sv2gfbsd4svxxil2"; 298 299 configureFlags = [ "--with-geoip=${pkgs.geoip}" ]; 300 301 buildInputs = [ pkgs.geoip ]; 302 }; 303 304 redis = if isPhp7 then redis31 else redis22; 305 306 redis22 = assert !isPhp7; buildPecl { 307 name = "redis-2.2.7"; 308 sha256 = "00n9dpk9ak0bl35sbcd3msr78sijrxdlb727nhg7f2g7swf37rcm"; 309 }; 310 311 redis31 = assert isPhp7; buildPecl { 312 name = "redis-3.1.4"; 313 sha256 = "0rgjdrqfif8pfn3ipk1v4gyjkkdcdrdk479qbpda89w25vaxzsxd"; 314 }; 315 316 v8 = assert isPhp7; buildPecl rec { 317 version = "0.1.9"; 318 name = "v8-${version}"; 319 320 sha256 = "0bj77dfmld5wfwl4wgqnpa0i4f3mc1mpsp9dmrwqv050gs84m7h1"; 321 322 buildInputs = [ pkgs.v8_6_x ]; 323 configureFlags = [ "--with-v8=${pkgs.v8_6_x}" ]; 324 }; 325 326 v8js = assert isPhp7; buildPecl rec { 327 version = "1.4.1"; 328 name = "v8js-${version}"; 329 330 sha256 = "0k5dc395gzva4l6n9mzvkhkjq914460cwk1grfandcqy73j6m89q"; 331 332 buildInputs = [ pkgs.v8_6_x ]; 333 configureFlags = [ "--with-v8js=${pkgs.v8_6_x}" ]; 334 }; 335 336 composer = pkgs.stdenv.mkDerivation rec { 337 name = "composer-${version}"; 338 version = "1.6.5"; 339 340 src = pkgs.fetchurl { 341 url = "https://getcomposer.org/download/${version}/composer.phar"; 342 sha256 = "0d1lpvq8wylh5qgxhbqb5r7j3c6qk0bz4b5vg187jsl6z6fvxgk7"; 343 }; 344 345 unpackPhase = ":"; 346 347 buildInputs = [ pkgs.makeWrapper ]; 348 349 installPhase = '' 350 mkdir -p $out/bin 351 install -D $src $out/libexec/composer/composer.phar 352 makeWrapper ${php}/bin/php $out/bin/composer \ 353 --add-flags "$out/libexec/composer/composer.phar" 354 ''; 355 356 meta = with pkgs.lib; { 357 description = "Dependency Manager for PHP"; 358 license = licenses.mit; 359 homepage = https://getcomposer.org/; 360 maintainers = with maintainers; [ globin offline ]; 361 }; 362 }; 363 364 box = pkgs.stdenv.mkDerivation rec { 365 name = "box-${version}"; 366 version = "2.7.5"; 367 368 src = pkgs.fetchurl { 369 url = "https://github.com/box-project/box2/releases/download/${version}/box-${version}.phar"; 370 sha256 = "1zmxdadrv0i2l8cz7xb38gnfmfyljpsaz2nnkjzqzksdmncbgd18"; 371 }; 372 373 phases = [ "installPhase" ]; 374 buildInputs = [ pkgs.makeWrapper ]; 375 376 installPhase = '' 377 mkdir -p $out/bin 378 install -D $src $out/libexec/box/box.phar 379 makeWrapper ${php}/bin/php $out/bin/box \ 380 --add-flags "-d phar.readonly=0 $out/libexec/box/box.phar" 381 ''; 382 383 meta = with pkgs.lib; { 384 description = "An application for building and managing Phars"; 385 license = licenses.mit; 386 homepage = https://box-project.github.io/box2/; 387 maintainers = with maintainers; [ jtojnar ]; 388 }; 389 }; 390 391 php-cs-fixer = pkgs.stdenv.mkDerivation rec { 392 name = "php-cs-fixer-${version}"; 393 version = "2.12.2"; 394 395 src = pkgs.fetchurl { 396 url = "https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v${version}/php-cs-fixer.phar"; 397 sha256 = "19cq04x1wi489259vyad15zy6y0k3qd7dj77pcf74gxqw92hgg5c"; 398 }; 399 400 phases = [ "installPhase" ]; 401 buildInputs = [ pkgs.makeWrapper ]; 402 403 installPhase = '' 404 mkdir -p $out/bin 405 install -D $src $out/libexec/php-cs-fixer/php-cs-fixer.phar 406 makeWrapper ${php}/bin/php $out/bin/php-cs-fixer \ 407 --add-flags "$out/libexec/php-cs-fixer/php-cs-fixer.phar" 408 ''; 409 410 meta = with pkgs.lib; { 411 description = "A tool to automatically fix PHP coding standards issues"; 412 license = licenses.mit; 413 homepage = http://cs.sensiolabs.org/; 414 maintainers = with maintainers; [ jtojnar ]; 415 }; 416 }; 417 418 php-parallel-lint = pkgs.stdenv.mkDerivation rec { 419 name = "php-parallel-lint-${version}"; 420 version = "1.0.0"; 421 422 src = pkgs.fetchFromGitHub { 423 owner = "JakubOnderka"; 424 repo = "PHP-Parallel-Lint"; 425 rev = "v${version}"; 426 sha256 = "16nv8yyk2z3l213dg067l6di4pigg5rd8yswr5xgd18jwbys2vnw"; 427 }; 428 429 buildInputs = [ pkgs.makeWrapper composer box ]; 430 431 buildPhase = '' 432 composer dump-autoload 433 box build 434 ''; 435 436 installPhase = '' 437 mkdir -p $out/bin 438 install -D parallel-lint.phar $out/libexec/php-parallel-lint/php-parallel-lint.phar 439 makeWrapper ${php}/bin/php $out/bin/php-parallel-lint \ 440 --add-flags "$out/libexec/php-parallel-lint/php-parallel-lint.phar" 441 ''; 442 443 meta = with pkgs.lib; { 444 description = "This tool check syntax of PHP files faster than serial check with fancier output"; 445 license = licenses.bsd2; 446 homepage = https://github.com/JakubOnderka/PHP-Parallel-Lint; 447 maintainers = with maintainers; [ jtojnar ]; 448 }; 449 }; 450 451 phpcs = pkgs.stdenv.mkDerivation rec { 452 name = "phpcs-${version}"; 453 version = "3.3.1"; 454 455 src = pkgs.fetchurl { 456 url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcs.phar"; 457 sha256 = "0kw1ffr688wbcip2hmr7yi7bpdf4kzwh22yvxw17lyddzq6vrqaw"; 458 }; 459 460 phases = [ "installPhase" ]; 461 buildInputs = [ pkgs.makeWrapper ]; 462 463 installPhase = '' 464 mkdir -p $out/bin 465 install -D $src $out/libexec/phpcs/phpcs.phar 466 makeWrapper ${php}/bin/php $out/bin/phpcs \ 467 --add-flags "$out/libexec/phpcs/phpcs.phar" 468 ''; 469 470 meta = with pkgs.lib; { 471 description = "PHP coding standard tool"; 472 license = licenses.bsd3; 473 homepage = https://squizlabs.github.io/PHP_CodeSniffer/; 474 maintainers = with maintainers; [ javaguirre etu ]; 475 }; 476 }; 477 478 phpcbf = pkgs.stdenv.mkDerivation rec { 479 name = "phpcbf-${version}"; 480 version = "3.3.1"; 481 482 src = pkgs.fetchurl { 483 url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcbf.phar"; 484 sha256 = "0q75h8y4rbysyzh3i5nzqqln2d8592p0sz6y11rr2hz0g9qw4gim"; 485 }; 486 487 phases = [ "installPhase" ]; 488 nativeBuildInputs = [ pkgs.makeWrapper ]; 489 490 installPhase = '' 491 mkdir -p $out/bin 492 install -D $src $out/libexec/phpcbf/phpcbf.phar 493 makeWrapper ${php}/bin/php $out/bin/phpcbf \ 494 --add-flags "$out/libexec/phpcbf/phpcbf.phar" 495 ''; 496 497 meta = with pkgs.lib; { 498 description = "PHP coding standard beautifier and fixer"; 499 license = licenses.bsd3; 500 homepage = https://squizlabs.github.io/PHP_CodeSniffer/; 501 maintainers = with maintainers; [ cmcdragonkai etu ]; 502 }; 503 }; 504 505 psysh = pkgs.stdenv.mkDerivation rec { 506 name = "psysh-${version}"; 507 version = "0.9.6"; 508 509 src = pkgs.fetchurl { 510 url = "https://github.com/bobthecow/psysh/releases/download/v${version}/psysh-v${version}.tar.gz"; 511 sha256 = "06icmyn7v229mpfplqj76kjnp1gh4ns0nrxa7bsckyqhzi425kc6"; 512 }; 513 514 phases = [ "installPhase" ]; 515 nativeBuildInputs = [ pkgs.makeWrapper ]; 516 517 installPhase = '' 518 mkdir -p $out/bin 519 tar -xzf $src -C $out/bin 520 wrapProgram $out/bin/psysh 521 ''; 522 523 meta = with pkgs.lib; { 524 description = "PsySH is a runtime developer console, interactive debugger and REPL for PHP."; 525 license = licenses.mit; 526 homepage = https://psysh.org/; 527 maintainers = with maintainers; [ caugner ]; 528 }; 529 }; 530}; in self