summaryrefslogtreecommitdiff
path: root/tw/packages/php.scm
diff options
context:
space:
mode:
authorTimo Wilken2022-12-30 20:52:54 +0100
committerTimo Wilken2022-12-30 20:53:00 +0100
commit54f0a727c312b82e5d1c25ca81b62344bbb56e10 (patch)
tree52afb81ba50d2d2e2ef4f0ca01466b601539e766 /tw/packages/php.scm
parent26254909ef077cff721f7c7acb1ea80c00156e5a (diff)
Import custom packages
Also, import package modules instead of using `specifications->packages'.
Diffstat (limited to 'tw/packages/php.scm')
-rw-r--r--tw/packages/php.scm139
1 files changed, 139 insertions, 0 deletions
diff --git a/tw/packages/php.scm b/tw/packages/php.scm
new file mode 100644
index 00000000..345babf4
--- /dev/null
+++ b/tw/packages/php.scm
@@ -0,0 +1,139 @@
+(define-module (tw packages php)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages fonts)
+ #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages php)
+ #:use-module (gnu packages re2c)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages))
+
+(define-public php-apcu
+ (package
+ (name "php-apcu")
+ (version "5.1.22")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pecl.php.net/get/apcu-" version ".tgz"))
+ (sha256 (base32 "07hsnkyfmbnyvyqgf8wl65v6nsk9lcfijmm3a9xfvq8js67hs2h1"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'phpize
+ (lambda _
+ (invoke "phpize")))
+ (add-before 'check 'set-env-vars-for-check
+ (lambda _
+ (setenv "REPORT_EXIT_STATUS" "1")
+ (setenv "NO_INTERACTION" "1")
+ (setenv "SKIP_ONLINE_TESTS" "1")
+ (setenv "SKIP_SLOW_TESTS" "1")))
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (use-modules (ice-9 popen)
+ (ice-9 rdelim))
+ (let* ((out (assoc-ref outputs "out"))
+ (php-config (string-append (assoc-ref inputs "php")
+ "/bin/php-config"))
+ (pipe (open-pipe* OPEN_READ php-config "--extension-dir"))
+ (php-extdir (read-line pipe)))
+ (unless (zero? (status:exit-val (close-pipe pipe)))
+ (error "Failed to get PHP extension dir"))
+ (invoke
+ "make" "phpincludedir=include/php"
+ ;; Stop make install from trying to install into /gnu/store/*-php-7.4.*.
+ ;; In order to find this extension, PHP must be configured with
+ ;; extension_dir = <profile>/lib/php/extensions/<dir> in php.ini.
+ (string-append "INSTALL_ROOT=" out "/")
+ (string-append "EXTENSION_DIR=lib/php/extensions/"
+ (basename php-extdir))
+ "install")))))
+ #:test-target "test"
+ #:configure-flags '("--enable-apcu")))
+ (inputs (list php pcre2))
+ (native-inputs (list autoconf)) ; for phpize
+ (home-page "https://pecl.php.net/package/apcu")
+ (synopsis "A userland caching module for PHP")
+ (description "APCu is an in-memory key-value store for PHP. Keys are of
+type string and values can be any PHP variables.
+
+APCu only supports userland caching of variables.
+
+APCu is APC stripped of opcode caching. See
+@url{https://github.com/krakjoe/apcu-bc, APCu Backwards Compatibility Module}
+which provides a drop in replacement for APC.")
+ (license (license:non-copyleft "file://LICENSE"))))
+
+(define-public php-imagick
+ (package
+ (name "php-imagick")
+ (version "3.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pecl.php.net/get/imagick-" version ".tgz"))
+ (sha256 (base32 "0gidg4qnbh156kk4azr286vfk2r4bghq4bmvphjd4ach21a46djs"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'phpize
+ (lambda _
+ (invoke "phpize")))
+ (add-before 'check 'set-env-vars-for-check
+ (lambda _
+ (setenv "NO_INTERACTION" "1")
+ ;; https://github.com/Imagick/imagick/blob/master/docker/nixos/shell.nix
+ ;; Needed to avoid error message when using fonts
+ ;; https://github.com/Imagick/imagick/issues/398
+ (setenv "FONTCONFIG_FILE"
+ (string-append
+ (assoc-ref %build-inputs "fontconfig-minimal")
+ "/etc/fonts/fonts.conf"))
+ ;; Needed to allow Imagick::getConfigureOptions() to have all info
+ ;; https://github.com/Imagick/imagick/issues/399
+ (setenv "MAGICK_CONFIGURE_PATH"
+ (car (find-files (assoc-ref %build-inputs "imagemagick")
+ "^configure\\.xml$")))))
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (use-modules (ice-9 popen)
+ (ice-9 rdelim))
+ (let* ((out (assoc-ref outputs "out"))
+ (php-config (string-append (assoc-ref inputs "php")
+ "/bin/php-config"))
+ (pipe (open-pipe* OPEN_READ php-config "--extension-dir"))
+ (php-extdir (read-line pipe)))
+ (unless (zero? (status:exit-val (close-pipe pipe)))
+ (error "Failed to get PHP extension dir"))
+ (invoke
+ "make" "phpincludedir=include/php"
+ ;; Stop make install from trying to install into /gnu/store/*-php-7.4.*.
+ ;; In order to find this extension, PHP must be configured with
+ ;; extension_dir = <profile>/lib/php/extensions/<dir> in php.ini.
+ (string-append "INSTALL_ROOT=" out "/")
+ (string-append "EXTENSION_DIR=lib/php/extensions/"
+ (basename php-extdir))
+ "install")))))
+ #:parallel-build? #t
+ #:test-target "test"
+ #:configure-flags
+ (list (string-append "--with-imagick="
+ (assoc-ref %build-inputs "imagemagick")))))
+ (inputs (list php pcre2 imagemagick fontconfig))
+ (native-inputs (list autoconf ; for phpize
+ pkg-config
+ re2c ; according to https://github.com/Imagick/imagick/blob/master/docker/nixos/shell.nix
+ font-dejavu)) ; for unit tests
+ (home-page "https://pecl.php.net/package/imagick")
+ (synopsis "A PHP wrapper for the ImageMagick library")
+ (description "Imagick is a native PHP extension to create and modify
+images using the ImageMagick library.")
+ (license (license:non-copyleft "file://LICENSE"))))