(define-module (glicid packages php) #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages aspell) #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) #:use-module (gnu packages dbm) #:use-module (gnu packages fontutils) #:use-module (gnu packages gd) #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages openldap) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) #:use-module (gnu packages readline) #:use-module (gnu packages sqlite) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:)) (define-public php (package (name "php") (version "7.4.30") (home-page "https://secure.php.net/") (source (origin (method url-fetch) (uri (string-append home-page "distributions/" "php-" version ".tar.xz")) (sha256 (base32 "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa")) (patches (search-patches "glicid/packages/patches/php-bug-74093-test.patch" "glicid/packages/patches/php-curl-compat.patch")) (modules '((guix build utils))) (snippet '(with-directory-excursion "ext" (for-each delete-file-recursively '("gd/libgd" "pcre/pcre2lib" "xmlrpc/libxmlrpc")))))) (build-system gnu-build-system) (arguments `(#:configure-flags (let-syntax ((with (syntax-rules () ((_ option input) (string-append option "=" (assoc-ref %build-inputs input)))))) (list (with "--with-bz2" "bzip2") (with "--with-curl" "curl") (with "--with-gdbm" "gdbm") (with "--with-gettext" "libc") (with "--with-gmp" "gmp") (with "--with-ldap" "openldap") (with "--with-ldap-sasl" "cyrus-sasl") (with "--with-pdo-pgsql" "postgresql") (with "--with-pdo-sqlite" "sqlite") (with "--with-pgsql" "postgresql") (with "--with-pspell" "aspell") (with "--with-readline" "readline") (with "--with-sodium" "libsodium") (with "--with-sqlite3" "sqlite") (with "--with-tidy" "tidy") (with "--with-xsl" "libxslt") (with "--with-zlib-dir" "zlib") "--with-external-pcre" "--with-external-gd" "--with-iconv" "--with-openssl" "--with-mysqli" "--with-pdo-mysql" "--with-zip" "--with-zlib" "--enable-bcmath" "--enable-calendar" "--enable-dba=shared" "--enable-exif" "--enable-flatfile" "--enable-fpm" "--enable-ftp" "--enable-gd" "--enable-inifile" "--enable-intl" "--enable-mbstring" "--enable-pcntl" "--enable-sockets")) #:phases (modify-phases %standard-phases (add-after 'unpack 'do-not-record-build-flags (lambda _ (substitute* "scripts/php-config.in" (("@CONFIGURE_OPTIONS@") "") (("@PHP_LDFLAGS@") "")) (with-fluids ((%default-port-encoding "ISO-8859-1")) (substitute* "main/build-defs.h.in" (("@CONFIGURE_COMMAND@") "(omitted)"))))) (add-before 'build 'patch-/bin/sh (lambda _ (substitute* '("run-tests.php" "ext/standard/proc_open.c") (("/bin/sh") (which "sh"))))) (add-before 'check 'prepare-tests (lambda _ (with-fluids ((%default-port-encoding "ISO-8859-1")) (substitute* '("ext/mbstring/tests/mb_send_mail02.phpt" "ext/mbstring/tests/mb_send_mail04.phpt" "ext/mbstring/tests/mb_send_mail05.phpt" "ext/mbstring/tests/mb_send_mail06.phpt") (("/bin/cat") (which "cat")))) (substitute* '("ext/mbstring/tests/mb_send_mail01.phpt" "ext/mbstring/tests/mb_send_mail03.phpt" "ext/mbstring/tests/bug52681.phpt" "ext/standard/tests/general_functions/bug34794.phpt" "ext/standard/tests/general_functions/bug44667.phpt" "ext/standard/tests/general_functions/proc_open.phpt") (("/bin/cat") (which "cat"))) (delete-file "ext/mbstring/tests/mb_send_mail07.phpt") (substitute* "ext/standard/tests/streams/bug60602.phpt" (("'ls'") (string-append "'" (which "ls") "'"))) ,@(if (string-prefix? "arm" (or (%current-system) (%current-target-system))) '((for-each delete-file (list "ext/calendar/tests/unixtojd_error1.phpt" "ext/fileinfo/tests/cve-2014-3538-nojit.phpt" "ext/pcntl/tests/pcntl_unshare_01.phpt" "ext/pcre/tests/bug76514.phpt" "ext/pcre/tests/preg_match_error3.phpt" "ext/pcre/tests/cache_limit.phpt" "ext/sockets/tests/socket_getopt.phpt" "ext/sockets/tests/socket_sendrecvmsg_error.phpt" "ext/standard/tests/general_functions/var_export-locale.phpt" "ext/standard/tests/general_functions/var_export_basic1.phpt" "ext/intl/tests/timezone_getErrorCodeMessage_basic.phpt" "ext/intl/tests/timezone_getOffset_error.phpt" "sapi/cli/tests/cli_process_title_unix.phpt" "sapi/cli/tests/upload_2G.phpt" "Zend/tests/concat_003.phpt"))) '()) ,@(if (target-ppc64le?) '((for-each delete-file (list "sapi/phpdbg/tests/watch_001.phpt" "sapi/phpdbg/tests/watch_003.phpt" "sapi/phpdbg/tests/watch_004.phpt" "sapi/phpdbg/tests/watch_005.phpt" "sapi/phpdbg/tests/watch_006.phpt"))) '()) (for-each delete-file '("ext/posix/tests/posix_getgrgid.phpt" "ext/posix/tests/posix_getgrnam_basic.phpt" "ext/sockets/tests/bug63000.phpt" "ext/sockets/tests/socket_shutdown.phpt" "ext/sockets/tests/socket_send.phpt" "ext/sockets/tests/mcast_ipv4_recv.phpt" "ext/standard/tests/general_functions/getservbyname_basic.phpt" "ext/standard/tests/general_functions/getservbyport_basic.phpt" "ext/standard/tests/general_functions/getservbyport_variation1.phpt" "ext/standard/tests/network/getprotobyname_basic.phpt" "ext/standard/tests/network/getprotobynumber_basic.phpt" "ext/standard/tests/strings/setlocale_basic1.phpt" "ext/standard/tests/strings/setlocale_basic2.phpt" "ext/standard/tests/strings/setlocale_basic3.phpt" "ext/standard/tests/strings/setlocale_variation1.phpt" "ext/standard/tests/file/disk_free_space_basic.phpt" "ext/standard/tests/file/lstat_stat_variation8.phpt" "ext/date/tests/bug73837.phpt" "ext/gd/tests/bug39780_extern.phpt" "ext/gd/tests/libgd00086_extern.phpt" "ext/gd/tests/bug45799.phpt" "ext/gd/tests/createfromwbmp2_extern.phpt" "ext/gd/tests/bug65148.phpt" "ext/gd/tests/bug66590.phpt" "ext/gd/tests/bug70102.phpt" "ext/gd/tests/bug73869.phpt" "ext/gd/tests/webp_basic.phpt" "ext/gd/tests/imagecreatefromstring_webp.phpt" "ext/gd/tests/bug77269.phpt" "ext/gd/tests/xpm2gd.phpt" "ext/gd/tests/xpm2jpg.phpt" "ext/gd/tests/xpm2png.phpt" "ext/gd/tests/bug77479.phpt" "ext/gd/tests/bug77973.phpt" "ext/gd/tests/bug79067.phpt" "ext/gd/tests/bug79068.phpt" "ext/iconv/tests/bug52211.phpt" "ext/iconv/tests/bug60494.phpt" "ext/iconv/tests/iconv_strlen_error2.phpt" "ext/iconv/tests/iconv_substr_error2.phpt" "ext/iconv/tests/iconv_strpos_error2.phpt" "ext/iconv/tests/iconv_strrpos_error2.phpt" "ext/iconv/tests/bug76249.phpt" "ext/curl/tests/bug61948-unix.phpt" "ext/standard/tests/file/bug41655_1.phpt" "ext/standard/tests/file/glob_variation5.phpt" "ext/gd/tests/bug43073.phpt" "ext/gd/tests/bug48732-mb.phpt" "ext/gd/tests/bug48732.phpt" "ext/gd/tests/bug48801-mb.phpt" "ext/gd/tests/bug48801.phpt" "ext/gd/tests/bug53504.phpt" "ext/gd/tests/bug73272.phpt" "ext/iconv/tests/bug48147.phpt" "ext/iconv/tests/bug51250.phpt" "ext/iconv/tests/iconv_mime_encode.phpt" "ext/standard/tests/file/bug43008.phpt" "ext/pdo_sqlite/tests/bug_42589.phpt" "ext/pcre/tests/bug79846.phpt" "ext/pcre/tests/bug80118.phpt" "ext/standard/tests/general_functions/proc_nice_basic.phpt" "Zend/tests/bug74093.phpt")) (substitute* "ext/openssl/tests/bug80747.phpt" ((".*error:%s:key size too small.*" match) (string-append "%s\n" match "%s\n"))) (setenv "SKIP_ONLINE_TESTS" "1") (setenv "REPORT_EXIT_STATUS" "1") (setenv "SKIP_IO_CAPTURE_TESTS" "1")))) #:test-target "test")) (inputs `(("aspell" ,aspell) ("bzip2" ,bzip2) ("curl" ,curl) ("cyrus-sasl" ,cyrus-sasl) ("gd" ,gd) ("gdbm" ,gdbm) ("gmp" ,gmp) ("gnutls" ,gnutls) ("icu4c" ,icu4c) ("libgcrypt" ,libgcrypt) ("libpng" ,libpng) ("libsodium" ,libsodium) ("libxml2" ,libxml2) ("libxslt" ,libxslt) ("libx11" ,libx11) ("libzip" ,libzip) ("oniguruma" ,oniguruma) ("openldap" ,openldap) ("openssl" ,openssl-1.1) ("pcre" ,pcre2) ("postgresql" ,postgresql) ("readline" ,readline) ("sqlite" ,sqlite) ("tidy" ,tidy) ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config) ("bison" ,bison) ("gettext" ,gettext-minimal) ("procps" ,procps))) (synopsis "PHP programming language") (description "PHP (PHP Hypertext Processor) is a server-side (CGI) scripting language designed primarily for web development but is also used as a general-purpose programming language. PHP code may be embedded into HTML code, or it can be used in combination with various web template systems, web content management systems and web frameworks.") (license (list (license:non-copyleft "file://LICENSE") (license:non-copyleft "file://Zend/LICENSE") license:lgpl2.1 license:lgpl2.1+ license:bsd-2 license:expat))))