unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] Add php
@ 2016-10-30 12:08 Julien Lepiller
  2016-10-30 14:01 ` Efraim Flashner
                   ` (2 more replies)
  0 siblings, 3 replies; 28+ messages in thread
From: Julien Lepiller @ 2016-10-30 12:08 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 40 bytes --]

Hi,

here is a patch to add php to guix.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 9667 bytes --]

From b20406a07e8d8c99a189f5295929ff76a53d47e7 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 30 Oct 2016 15:05:51 +0100
Subject: [PATCH] gnu: Add php

* gnu/packages/php.scm: New file.
* gnu/packages/php.scm (php): New variable.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 188 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index a64b7ec..6a69391 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -292,6 +292,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..f7fd1e0
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,187 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages photo)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages readline)
+  #: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 (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.12")
+    (home-page "http://www.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1zw33fbkrschqr2yrmvcp1z34v4rvqzm0pn1vsamjbi43jgc9mpk"))))
+    (build-system gnu-build-system)
+    (arguments
+      `(#:phases
+          (modify-phases %standard-phases
+            (add-before 'configure 'unbundle
+              (lambda* (#:key inputs #:allow-other-keys)
+                (chdir "ext")
+                (for-each delete-file-recursively
+                          '("pcre/pcrelib"
+                            "sqlite3/libsqlite"
+                            "gd/libgd"
+                            "mbstring/oniguruma"
+                            "xmlrpc/libxmlrpc"
+                            "zip/lib"))
+                            ;; couldn't unbundle these libraries:
+                            ;"bcmath/libbcmath" ;; this is bc.
+                            ;"fileinfo/libmagic"
+                            ;"mbstring/libmbfl"
+                (chdir ".."))))
+        #:configure-flags
+          (list (string-append "--with-libxml-dir="
+                               (assoc-ref %build-inputs "libxml2"))
+                (string-append "--with-readline="
+                               (assoc-ref %build-inputs "readline"))
+                (string-append "--with-sqlite3="
+                               (assoc-ref %build-inputs "sqlite"))
+                (string-append "--with-pdo-sqlite="
+                               (assoc-ref %build-inputs "sqlite"))
+                (string-append "--with-pcre-regex="
+                               (assoc-ref %build-inputs "pcre"))
+                (string-append "--with-pcre-dir="
+                               (assoc-ref %build-inputs "pcre"))
+                (string-append "--with-zlib-dir="
+                               (assoc-ref %build-inputs "zlib"))
+                (string-append "--with-libzip="
+                               (assoc-ref %build-inputs "zip"))
+                (string-append "--with-bz2="
+                               (assoc-ref %build-inputs "bzip2"))
+                (string-append "--with-curl="
+                               (assoc-ref %build-inputs "curl"))
+                (string-append "--with-gd="
+                               (assoc-ref %build-inputs "gd"))
+                (string-append "--with-webp-dir="
+                               (assoc-ref %build-inputs "libwebp"))
+                (string-append "--with-jpeg-dir="
+                               (assoc-ref %build-inputs "libjpeg"))
+                (string-append "--with-png-dir="
+                               (assoc-ref %build-inputs "libpng"))
+                (string-append "--with-xpm-dir="
+                               (assoc-ref %build-inputs "libxpm"))
+                (string-append "--with-freetype-dir="
+                               (assoc-ref %build-inputs "freetype"))
+                (string-append "--with-gettext="
+                               (assoc-ref %build-inputs "glibc")) ; libintl.h
+                (string-append "--with-gmp="
+                               (assoc-ref %build-inputs "gmp"))
+                (string-append "--with-onig="
+                               (assoc-ref %build-inputs "oniguruma"))
+                (string-append "--with-xsl="
+                               (assoc-ref %build-inputs "libxslt"))
+                (string-append "--with-ldap-sasl="
+                               (assoc-ref %build-inputs "cyrus-sasl"))
+                ;; PHP’s Pspell extension, while retaining its current name,
+                ;; now uses the Aspell library.
+                (string-append "--with-pspell="
+                               (assoc-ref %build-inputs "aspell"))
+                (string-append "--with-tidy="
+                               (assoc-ref %build-inputs "tidy"))
+                (string-append "--with-gdbm="
+                               (assoc-ref %build-inputs "gdbm"))
+                (string-append "--with-pgsql="
+                               (assoc-ref %build-inputs "postgresql"))
+                (string-append "--with-pdo-pgsql="
+                               (assoc-ref %build-inputs "postgresql"))
+                "--enable-fpm" "-with-openssl"
+                "--with-zlib" "--enable-bcmath=shared"
+                "--enable-calendar" "--enable-dba=shared"
+                "--enable-ftp"
+                "--enable-mbstring" "--enable-inifile" "--enable-flatfile"
+                "--enable-exif" "--enable-mbstring"
+                "--enable-pcntl" "--with-pdo-mysql"
+                "--enable-sockets"
+                "--with-iconv")
+                ;"--with-snmp"
+        #:test-target "test"
+        #:tests? #f))
+    (inputs `(("readline" ,readline)
+              ("pcre" ,pcre)
+              ("aspell" ,aspell)
+              ("glibc" ,glibc)
+              ("gmp" ,gmp)
+              ("sqlite" ,sqlite)
+              ("openssl" ,openssl)
+              ("tidy" ,tidy)
+              ("libxslt" ,libxslt)
+              ("libexif" ,libexif)
+              ("libwebp" ,libwebp)
+              ("libpng" ,libpng)
+              ("libxpm" ,libxpm)
+              ("libx11" ,libx11)
+              ("libjpeg" ,libjpeg)
+              ("libgcrypt" ,libgcrypt)
+              ("oniguruma" ,oniguruma)
+              ("bzip2" ,bzip2)
+              ("bc" ,bc)
+              ("freetype" ,freetype)
+              ("gettext" ,gnu-gettext)
+              ("mariadb" ,mariadb)
+              ("gdbm" ,gdbm)
+              ("postgresql" ,postgresql)
+              ("gd" ,gd)
+              ("zip" ,zip)
+              ("cyrus-sasl" ,cyrus-sasl)
+              ("curl" ,curl)
+              ("zlib" ,zlib)
+              ("libxml2" ,libxml2)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("bison" ,bison)
+                     ("intltool" ,intltool)
+                     ("libxml2" ,libxml2))) ; for xml2-config
+    (synopsis "PHP programming language")
+    (description
+      "PHP is one of the most commonly used programming language for the web")
+
+    (license (license:non-copyleft "file://LICENSE")))); the php license
-- 
2.10.1


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 12:08 [PATCH] Add php Julien Lepiller
@ 2016-10-30 14:01 ` Efraim Flashner
  2016-10-30 14:03 ` Tobias Geerinckx-Rice
  2016-11-01 17:07 ` Leo Famulari
  2 siblings, 0 replies; 28+ messages in thread
From: Efraim Flashner @ 2016-10-30 14:01 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 10590 bytes --]

On Sun, Oct 30, 2016 at 01:08:28PM +0100, Julien Lepiller wrote:
> Hi,
> 
> here is a patch to add php to guix.

> From b20406a07e8d8c99a189f5295929ff76a53d47e7 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Sun, 30 Oct 2016 15:05:51 +0100
> Subject: [PATCH] gnu: Add php
> 
> * gnu/packages/php.scm: New file.
> * gnu/packages/php.scm (php): New variable.
> ---
>  gnu/local.mk         |   1 +
>  gnu/packages/php.scm | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 188 insertions(+)
>  create mode 100644 gnu/packages/php.scm
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index a64b7ec..6a69391 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -292,6 +292,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/pem.scm				\
>    %D%/packages/perl.scm				\
>    %D%/packages/photo.scm			\
> +  %D%/packages/php.scm				\
>    %D%/packages/pkg-config.scm			\
>    %D%/packages/plotutils.scm			\
>    %D%/packages/polkit.scm			\
> diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
> new file mode 100644
> index 0000000..f7fd1e0
> --- /dev/null
> +++ b/gnu/packages/php.scm
> @@ -0,0 +1,187 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
> +;;;
> +;;; 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)
> +  #: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 curl)
> +  #:use-module (gnu packages cyrus-sasl)
> +  #:use-module (gnu packages databases)
> +  #:use-module (gnu packages fontutils)
> +  #:use-module (gnu packages gd)
> +  #:use-module (gnu packages gettext)
> +  #:use-module (gnu packages glib)
> +  #:use-module (gnu packages gnupg)
> +  #:use-module (gnu packages image)
> +  #:use-module (gnu packages multiprecision)
> +  #:use-module (gnu packages pcre)
> +  #:use-module (gnu packages photo)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages readline)
> +  #: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 (gnu packages zip)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix build-system gnu)
> +  #:use-module ((guix licenses) #:prefix license:))
> +
> +(define-public php
> +  (package
> +    (name "php")
> +    (version "7.0.12")
> +    (home-page "http://www.php.net/")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append home-page "distributions/"
> +                                  name "-" version ".tar.xz"))
> +              (sha256
> +               (base32
> +                "1zw33fbkrschqr2yrmvcp1z34v4rvqzm0pn1vsamjbi43jgc9mpk"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +      `(#:phases
> +          (modify-phases %standard-phases
> +            (add-before 'configure 'unbundle
> +              (lambda* (#:key inputs #:allow-other-keys)
> +                (chdir "ext")
> +                (for-each delete-file-recursively
> +                          '("pcre/pcrelib"
> +                            "sqlite3/libsqlite"
> +                            "gd/libgd"
> +                            "mbstring/oniguruma"
> +                            "xmlrpc/libxmlrpc"
> +                            "zip/lib"))
> +                            ;; couldn't unbundle these libraries:
> +                            ;"bcmath/libbcmath" ;; this is bc.
> +                            ;"fileinfo/libmagic"
> +                            ;"mbstring/libmbfl"
> +                (chdir ".."))))
> +        #:configure-flags
> +          (list (string-append "--with-libxml-dir="
> +                               (assoc-ref %build-inputs "libxml2"))
> +                (string-append "--with-readline="
> +                               (assoc-ref %build-inputs "readline"))
> +                (string-append "--with-sqlite3="
> +                               (assoc-ref %build-inputs "sqlite"))
> +                (string-append "--with-pdo-sqlite="
> +                               (assoc-ref %build-inputs "sqlite"))
> +                (string-append "--with-pcre-regex="
> +                               (assoc-ref %build-inputs "pcre"))
> +                (string-append "--with-pcre-dir="
> +                               (assoc-ref %build-inputs "pcre"))
> +                (string-append "--with-zlib-dir="
> +                               (assoc-ref %build-inputs "zlib"))
> +                (string-append "--with-libzip="
> +                               (assoc-ref %build-inputs "zip"))
> +                (string-append "--with-bz2="
> +                               (assoc-ref %build-inputs "bzip2"))
> +                (string-append "--with-curl="
> +                               (assoc-ref %build-inputs "curl"))
> +                (string-append "--with-gd="
> +                               (assoc-ref %build-inputs "gd"))
> +                (string-append "--with-webp-dir="
> +                               (assoc-ref %build-inputs "libwebp"))
> +                (string-append "--with-jpeg-dir="
> +                               (assoc-ref %build-inputs "libjpeg"))
> +                (string-append "--with-png-dir="
> +                               (assoc-ref %build-inputs "libpng"))
> +                (string-append "--with-xpm-dir="
> +                               (assoc-ref %build-inputs "libxpm"))
> +                (string-append "--with-freetype-dir="
> +                               (assoc-ref %build-inputs "freetype"))
> +                (string-append "--with-gettext="
> +                               (assoc-ref %build-inputs "glibc")) ; libintl.h
> +                (string-append "--with-gmp="
> +                               (assoc-ref %build-inputs "gmp"))
> +                (string-append "--with-onig="
> +                               (assoc-ref %build-inputs "oniguruma"))
> +                (string-append "--with-xsl="
> +                               (assoc-ref %build-inputs "libxslt"))
> +                (string-append "--with-ldap-sasl="
> +                               (assoc-ref %build-inputs "cyrus-sasl"))
> +                ;; PHP’s Pspell extension, while retaining its current name,
> +                ;; now uses the Aspell library.
> +                (string-append "--with-pspell="
> +                               (assoc-ref %build-inputs "aspell"))
> +                (string-append "--with-tidy="
> +                               (assoc-ref %build-inputs "tidy"))
> +                (string-append "--with-gdbm="
> +                               (assoc-ref %build-inputs "gdbm"))
> +                (string-append "--with-pgsql="
> +                               (assoc-ref %build-inputs "postgresql"))
> +                (string-append "--with-pdo-pgsql="
> +                               (assoc-ref %build-inputs "postgresql"))
> +                "--enable-fpm" "-with-openssl"
> +                "--with-zlib" "--enable-bcmath=shared"
> +                "--enable-calendar" "--enable-dba=shared"
> +                "--enable-ftp"
> +                "--enable-mbstring" "--enable-inifile" "--enable-flatfile"
> +                "--enable-exif" "--enable-mbstring"
> +                "--enable-pcntl" "--with-pdo-mysql"
> +                "--enable-sockets"
> +                "--with-iconv")
> +                ;"--with-snmp"
> +        #:test-target "test"
> +        #:tests? #f))
> +    (inputs `(("readline" ,readline)
> +              ("pcre" ,pcre)
> +              ("aspell" ,aspell)
> +              ("glibc" ,glibc)
> +              ("gmp" ,gmp)
> +              ("sqlite" ,sqlite)
> +              ("openssl" ,openssl)
> +              ("tidy" ,tidy)
> +              ("libxslt" ,libxslt)
> +              ("libexif" ,libexif)
> +              ("libwebp" ,libwebp)
> +              ("libpng" ,libpng)
> +              ("libxpm" ,libxpm)
> +              ("libx11" ,libx11)
> +              ("libjpeg" ,libjpeg)
> +              ("libgcrypt" ,libgcrypt)
> +              ("oniguruma" ,oniguruma)
> +              ("bzip2" ,bzip2)
> +              ("bc" ,bc)
> +              ("freetype" ,freetype)
> +              ("gettext" ,gnu-gettext)
> +              ("mariadb" ,mariadb)
> +              ("gdbm" ,gdbm)
> +              ("postgresql" ,postgresql)
> +              ("gd" ,gd)
> +              ("zip" ,zip)
> +              ("cyrus-sasl" ,cyrus-sasl)
> +              ("curl" ,curl)
> +              ("zlib" ,zlib)
> +              ("libxml2" ,libxml2)))
> +    (native-inputs `(("pkg-config" ,pkg-config)
> +                     ("bison" ,bison)
> +                     ("intltool" ,intltool)
> +                     ("libxml2" ,libxml2))) ; for xml2-config
> +    (synopsis "PHP programming language")
> +    (description
> +      "PHP is one of the most commonly used programming language for the web")
> +
> +    (license (license:non-copyleft "file://LICENSE")))); the php license
> -- 
> 2.10.1
> 

the resulting binary doesn't have a link to libexif, bc, gettext or
mariadb.


that said, I don't php so I don't have a lot for comments.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 12:08 [PATCH] Add php Julien Lepiller
  2016-10-30 14:01 ` Efraim Flashner
@ 2016-10-30 14:03 ` Tobias Geerinckx-Rice
  2016-10-30 16:51   ` Julien Lepiller
  2016-11-01 17:07 ` Leo Famulari
  2 siblings, 1 reply; 28+ messages in thread
From: Tobias Geerinckx-Rice @ 2016-10-30 14:03 UTC (permalink / raw)
  To: julien, guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 1637 bytes --]

Julien,

On 30/10/16 13:08, Julien Lepiller wrote:
> here is a patch to add php to guix.

Excellent! I see you've broken into my machine (probably through PHP),
stolen my bitrotting PHP 7 package and greatly improved it. Thanks!

An incomplete review:

> +                (chdir "ext")
[...]
> +                (chdir ".."))))

Try with-directory-excursion.

> +                "--enable-fpm" "-with-openssl"

s/-with-openssl/--with-openssl/, although the option would seem
unnecessary if the result is the same.

> +                ;"--with-snmp"

Best add a comment explaining why this is unavailable, desirable, and,
if possible, what's needed to fix it.

+        #:tests? #f))

There are tests, but many fail. This should be explained in a comment
(or fixed ;-). I keep tests enabled on my machine because I hate PHP and
like to hear it scream.

Bonus fun fact: catastrophic test failure is non-fatal and the thing
installs fine.

> +    (synopsis "PHP programming language")
> +    (description
> +      "PHP is one of the most commonly used programming language
> the web")

s/language/languages/ and a missing full stop, but it would be nice to
add even more. For example:

  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.

Thanks again for working on this!

Kind regards,

T G-R


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 476 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 14:03 ` Tobias Geerinckx-Rice
@ 2016-10-30 16:51   ` Julien Lepiller
  2016-10-30 22:24     ` Ludovic Courtès
  2016-10-30 23:17     ` Marius Bakke
  0 siblings, 2 replies; 28+ messages in thread
From: Julien Lepiller @ 2016-10-30 16:51 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1923 bytes --]

On Sun, 30 Oct 2016 15:03:39 +0100
Tobias Geerinckx-Rice <me@tobias.gr> wrote:

> Julien,
> 
> On 30/10/16 13:08, Julien Lepiller wrote:
> > here is a patch to add php to guix.  
> 
> Excellent! I see you've broken into my machine (probably through PHP),
> stolen my bitrotting PHP 7 package and greatly improved it. Thanks!
> 
> An incomplete review:
> 
> > +                (chdir "ext")  
> [...]
> > +                (chdir ".."))))  
> 
> Try with-directory-excursion.
> 
> > +                "--enable-fpm" "-with-openssl"  
> 
> s/-with-openssl/--with-openssl/, although the option would seem
> unnecessary if the result is the same.
> 
> > +                ;"--with-snmp"  
> 
> Best add a comment explaining why this is unavailable, desirable, and,
> if possible, what's needed to fix it.
> 
> +        #:tests? #f))
> 
> There are tests, but many fail. This should be explained in a comment
> (or fixed ;-). I keep tests enabled on my machine because I hate PHP
> and like to hear it scream.
> 
> Bonus fun fact: catastrophic test failure is non-fatal and the thing
> installs fine.
> 
> > +    (synopsis "PHP programming language")
> > +    (description
> > +      "PHP is one of the most commonly used programming language
> > the web")  
> 
> s/language/languages/ and a missing full stop, but it would be nice to
> add even more. For example:
> 
>   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.
> 
> Thanks again for working on this!
> 
> Kind regards,
> 
> T G-R
> 

Here is a new patch that addresses your comments and Efraim's. Also I'm
pretty sure you're not supposed to end a description with a full stop.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 10200 bytes --]

From 2b0d70360296a9f7639529507bea6d28d3524e06 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 30 Oct 2016 15:05:51 +0100
Subject: [PATCH] gnu: Add php

* gnu/packages/php.scm: New file.
* gnu/packages/php.scm (php): New variable.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 193 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 8ee8b8c..dd6a4b0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -292,6 +292,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..14d9b21
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,192 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.12")
+    (home-page "http://www.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1zw33fbkrschqr2yrmvcp1z34v4rvqzm0pn1vsamjbi43jgc9mpk"))))
+    (build-system gnu-build-system)
+    (arguments
+      `(#:phases
+          (modify-phases %standard-phases
+            (add-before 'configure 'unbundle
+              (lambda* (#:key inputs #:allow-other-keys)
+                (with-directory-excursion "ext"
+                  (for-each delete-file-recursively
+                            '("pcre/pcrelib"
+                              "sqlite3/libsqlite"
+                              "gd/libgd"
+                              "mbstring/oniguruma"
+                              "xmlrpc/libxmlrpc"
+                              "zip/lib"))))))
+                              ;; couldn't unbundle these libraries:
+                              ;"bcmath/libbcmath" ;; this is bc.
+                              ;"fileinfo/libmagic"
+                              ;"mbstring/libmbfl"
+        #:configure-flags
+          (list (string-append "--with-libxml-dir="
+                               (assoc-ref %build-inputs "libxml2"))
+                (string-append "--with-readline="
+                               (assoc-ref %build-inputs "readline"))
+                (string-append "--with-sqlite3="
+                               (assoc-ref %build-inputs "sqlite"))
+                (string-append "--with-pdo-sqlite="
+                               (assoc-ref %build-inputs "sqlite"))
+                (string-append "--with-pcre-regex="
+                               (assoc-ref %build-inputs "pcre"))
+                (string-append "--with-pcre-dir="
+                               (assoc-ref %build-inputs "pcre"))
+                (string-append "--with-zlib-dir="
+                               (assoc-ref %build-inputs "zlib"))
+                (string-append "--with-libzip="
+                               (assoc-ref %build-inputs "zip"))
+                (string-append "--with-bz2="
+                               (assoc-ref %build-inputs "bzip2"))
+                (string-append "--with-curl="
+                               (assoc-ref %build-inputs "curl"))
+                (string-append "--with-gd="
+                               (assoc-ref %build-inputs "gd"))
+                (string-append "--with-webp-dir="
+                               (assoc-ref %build-inputs "libwebp"))
+                (string-append "--with-jpeg-dir="
+                               (assoc-ref %build-inputs "libjpeg"))
+                (string-append "--with-png-dir="
+                               (assoc-ref %build-inputs "libpng"))
+                (string-append "--with-xpm-dir="
+                               (assoc-ref %build-inputs "libxpm"))
+                (string-append "--with-freetype-dir="
+                               (assoc-ref %build-inputs "freetype"))
+                (string-append "--with-gettext="
+                               (assoc-ref %build-inputs "glibc")) ; libintl.h
+                (string-append "--with-gmp="
+                               (assoc-ref %build-inputs "gmp"))
+                (string-append "--with-onig="
+                               (assoc-ref %build-inputs "oniguruma"))
+                (string-append "--with-xsl="
+                               (assoc-ref %build-inputs "libxslt"))
+                (string-append "--with-ldap="
+                               (assoc-ref %build-inputs "openldap"))
+                (string-append "--with-ldap-sasl="
+                               (assoc-ref %build-inputs "cyrus-sasl"))
+                ;; PHP’s Pspell extension, while retaining its current name,
+                ;; now uses the Aspell library.
+                (string-append "--with-pspell="
+                               (assoc-ref %build-inputs "aspell"))
+                (string-append "--with-tidy="
+                               (assoc-ref %build-inputs "tidy"))
+                (string-append "--with-gdbm="
+                               (assoc-ref %build-inputs "gdbm"))
+                (string-append "--with-pgsql="
+                               (assoc-ref %build-inputs "postgresql"))
+                (string-append "--with-pdo-pgsql="
+                               (assoc-ref %build-inputs "postgresql"))
+                "--enable-fpm" "--with-openssl"
+                "--with-zlib" "--enable-bcmath=shared"
+                "--enable-calendar" "--enable-dba=shared"
+                "--enable-ftp"
+                "--enable-mbstring" "--enable-inifile" "--enable-flatfile"
+                "--enable-exif" "--enable-mbstring"
+                "--enable-pcntl" "--with-pdo-mysql"
+                "--enable-sockets"
+                "--with-iconv")
+                ;; we could add "--with-snmp", but it requires netsnmp that
+                ;; we don't have a package for. It is used to build the snmp
+                ;; extension of php.
+        #:test-target "test"
+        ;; A lot of tests fail and failure is not considered fatal.
+        #:tests? #f))
+    (inputs `(("readline" ,readline)
+              ("pcre" ,pcre)
+              ("aspell" ,aspell)
+              ("glibc" ,glibc)
+              ("gmp" ,gmp)
+              ("sqlite" ,sqlite)
+              ("openssl" ,openssl)
+              ("tidy" ,tidy)
+              ("openldap" ,openldap)
+              ("libxslt" ,libxslt)
+              ("libwebp" ,libwebp)
+              ("libpng" ,libpng)
+              ("libxpm" ,libxpm)
+              ("libx11" ,libx11)
+              ("libjpeg" ,libjpeg)
+              ("libgcrypt" ,libgcrypt)
+              ("oniguruma" ,oniguruma)
+              ("bzip2" ,bzip2)
+              ("freetype" ,freetype)
+              ("gdbm" ,gdbm)
+              ("postgresql" ,postgresql)
+              ("gd" ,gd)
+              ("zip" ,zip)
+              ("cyrus-sasl" ,cyrus-sasl)
+              ("curl" ,curl)
+              ("zlib" ,zlib)
+              ("libxml2" ,libxml2)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("bison" ,bison)
+                     ("intltool" ,intltool)
+                     ("libxml2" ,libxml2))) ; for xml2-config
+    (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 (license:non-copyleft "file://LICENSE")))); the php license
-- 
2.10.1


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 16:51   ` Julien Lepiller
@ 2016-10-30 22:24     ` Ludovic Courtès
  2016-10-30 23:17     ` Marius Bakke
  1 sibling, 0 replies; 28+ messages in thread
From: Ludovic Courtès @ 2016-10-30 22:24 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: guix-devel

Julien Lepiller <julien@lepiller.eu> skribis:

> Here is a new patch that addresses your comments and Efraim's. Also I'm
> pretty sure you're not supposed to end a description with a full stop.

I’m afraid Tobias was right.  ;-)

  https://www.gnu.org/software/guix/manual/html_node/Synopses-and-Descriptions.html

Thanks for working on PHP!

Ludo’.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 16:51   ` Julien Lepiller
  2016-10-30 22:24     ` Ludovic Courtès
@ 2016-10-30 23:17     ` Marius Bakke
  2016-11-02 21:40       ` Julien Lepiller
  1 sibling, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-10-30 23:17 UTC (permalink / raw)
  To: Julien Lepiller, guix-devel

[-- Attachment #1: Type: text/plain, Size: 10927 bytes --]


> From 2b0d70360296a9f7639529507bea6d28d3524e06 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Sun, 30 Oct 2016 15:05:51 +0100
> Subject: [PATCH] gnu: Add php
>
> * gnu/packages/php.scm: New file.
> * gnu/packages/php.scm (php): New variable.
> ---
>  gnu/local.mk         |   1 +
>  gnu/packages/php.scm | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 193 insertions(+)
>  create mode 100644 gnu/packages/php.scm
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 8ee8b8c..dd6a4b0 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -292,6 +292,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/pem.scm				\
>    %D%/packages/perl.scm				\
>    %D%/packages/photo.scm			\
> +  %D%/packages/php.scm				\
>    %D%/packages/pkg-config.scm			\
>    %D%/packages/plotutils.scm			\
>    %D%/packages/polkit.scm			\
> diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
> new file mode 100644
> index 0000000..14d9b21
> --- /dev/null
> +++ b/gnu/packages/php.scm
> @@ -0,0 +1,192 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
> +;;;
> +;;; 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)
> +  #: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 curl)
> +  #:use-module (gnu packages cyrus-sasl)
> +  #:use-module (gnu packages databases)
> +  #:use-module (gnu packages fontutils)
> +  #:use-module (gnu packages gd)
> +  #:use-module (gnu packages gettext)
> +  #:use-module (gnu packages glib)
> +  #:use-module (gnu packages gnupg)
> +  #:use-module (gnu packages image)
> +  #: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 textutils)
> +  #:use-module (gnu packages tls)
> +  #:use-module (gnu packages web)
> +  #:use-module (gnu packages xml)
> +  #:use-module (gnu packages xorg)
> +  #:use-module (gnu packages zip)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix build-system gnu)
> +  #:use-module ((guix licenses) #:prefix license:))
> +
> +(define-public php
> +  (package
> +    (name "php")
> +    (version "7.0.12")
> +    (home-page "http://www.php.net/")

We prefer HTTPS when available, which is the case for https://php.net.

> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append home-page "distributions/"
> +                                  name "-" version ".tar.xz"))
> +              (sha256
> +               (base32
> +                "1zw33fbkrschqr2yrmvcp1z34v4rvqzm0pn1vsamjbi43jgc9mpk"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +      `(#:phases
> +          (modify-phases %standard-phases
> +            (add-before 'configure 'unbundle
> +              (lambda* (#:key inputs #:allow-other-keys)
> +                (with-directory-excursion "ext"
> +                  (for-each delete-file-recursively
> +                            '("pcre/pcrelib"
> +                              "sqlite3/libsqlite"
> +                              "gd/libgd"
> +                              "mbstring/oniguruma"
> +                              "xmlrpc/libxmlrpc"
> +                              "zip/lib"))))))
> +                              ;; couldn't unbundle these libraries:
> +                              ;"bcmath/libbcmath" ;; this is bc.
> +                              ;"fileinfo/libmagic"
> +                              ;"mbstring/libmbfl"

Please move this to a source "snippet", so that they are not included in
`guix build -S`. I believe we also have to list the licenses of the
bundles that cannot be removed in the (license) field.

> +        #:configure-flags
> +          (list (string-append "--with-libxml-dir="
> +                               (assoc-ref %build-inputs "libxml2"))
> +                (string-append "--with-readline="
> +                               (assoc-ref %build-inputs "readline"))
> +                (string-append "--with-sqlite3="
> +                               (assoc-ref %build-inputs "sqlite"))
> +                (string-append "--with-pdo-sqlite="
> +                               (assoc-ref %build-inputs "sqlite"))
> +                (string-append "--with-pcre-regex="
> +                               (assoc-ref %build-inputs "pcre"))
> +                (string-append "--with-pcre-dir="
> +                               (assoc-ref %build-inputs "pcre"))
> +                (string-append "--with-zlib-dir="
> +                               (assoc-ref %build-inputs "zlib"))
> +                (string-append "--with-libzip="
> +                               (assoc-ref %build-inputs "zip"))
> +                (string-append "--with-bz2="
> +                               (assoc-ref %build-inputs "bzip2"))
> +                (string-append "--with-curl="
> +                               (assoc-ref %build-inputs "curl"))
> +                (string-append "--with-gd="
> +                               (assoc-ref %build-inputs "gd"))
> +                (string-append "--with-webp-dir="
> +                               (assoc-ref %build-inputs "libwebp"))
> +                (string-append "--with-jpeg-dir="
> +                               (assoc-ref %build-inputs "libjpeg"))
> +                (string-append "--with-png-dir="
> +                               (assoc-ref %build-inputs "libpng"))
> +                (string-append "--with-xpm-dir="
> +                               (assoc-ref %build-inputs "libxpm"))
> +                (string-append "--with-freetype-dir="
> +                               (assoc-ref %build-inputs "freetype"))
> +                (string-append "--with-gettext="
> +                               (assoc-ref %build-inputs "glibc")) ; libintl.h
> +                (string-append "--with-gmp="
> +                               (assoc-ref %build-inputs "gmp"))
> +                (string-append "--with-onig="
> +                               (assoc-ref %build-inputs "oniguruma"))
> +                (string-append "--with-xsl="
> +                               (assoc-ref %build-inputs "libxslt"))
> +                (string-append "--with-ldap="
> +                               (assoc-ref %build-inputs "openldap"))
> +                (string-append "--with-ldap-sasl="
> +                               (assoc-ref %build-inputs "cyrus-sasl"))
> +                ;; PHP’s Pspell extension, while retaining its current name,
> +                ;; now uses the Aspell library.
> +                (string-append "--with-pspell="
> +                               (assoc-ref %build-inputs "aspell"))
> +                (string-append "--with-tidy="
> +                               (assoc-ref %build-inputs "tidy"))
> +                (string-append "--with-gdbm="
> +                               (assoc-ref %build-inputs "gdbm"))
> +                (string-append "--with-pgsql="
> +                               (assoc-ref %build-inputs "postgresql"))
> +                (string-append "--with-pdo-pgsql="
> +                               (assoc-ref %build-inputs "postgresql"))
> +                "--enable-fpm" "--with-openssl"
> +                "--with-zlib" "--enable-bcmath=shared"
> +                "--enable-calendar" "--enable-dba=shared"
> +                "--enable-ftp"
> +                "--enable-mbstring" "--enable-inifile" "--enable-flatfile"
> +                "--enable-exif" "--enable-mbstring"
> +                "--enable-pcntl" "--with-pdo-mysql"
> +                "--enable-sockets"
> +                "--with-iconv")
> +                ;; we could add "--with-snmp", but it requires netsnmp that
> +                ;; we don't have a package for. It is used to build the snmp
> +                ;; extension of php.
> +        #:test-target "test"
> +        ;; A lot of tests fail and failure is not considered fatal.
> +        #:tests? #f))
> +    (inputs `(("readline" ,readline)
> +              ("pcre" ,pcre)
> +              ("aspell" ,aspell)
> +              ("glibc" ,glibc)
> +              ("gmp" ,gmp)
> +              ("sqlite" ,sqlite)
> +              ("openssl" ,openssl)
> +              ("tidy" ,tidy)
> +              ("openldap" ,openldap)
> +              ("libxslt" ,libxslt)
> +              ("libwebp" ,libwebp)
> +              ("libpng" ,libpng)
> +              ("libxpm" ,libxpm)
> +              ("libx11" ,libx11)
> +              ("libjpeg" ,libjpeg)
> +              ("libgcrypt" ,libgcrypt)
> +              ("oniguruma" ,oniguruma)
> +              ("bzip2" ,bzip2)
> +              ("freetype" ,freetype)
> +              ("gdbm" ,gdbm)
> +              ("postgresql" ,postgresql)
> +              ("gd" ,gd)
> +              ("zip" ,zip)
> +              ("cyrus-sasl" ,cyrus-sasl)
> +              ("curl" ,curl)
> +              ("zlib" ,zlib)
> +              ("libxml2" ,libxml2)))
> +    (native-inputs `(("pkg-config" ,pkg-config)
> +                     ("bison" ,bison)
> +                     ("intltool" ,intltool)
> +                     ("libxml2" ,libxml2))) ; for xml2-config
> +    (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 (license:non-copyleft "file://LICENSE")))); the php license
> -- 
> 2.10.1

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 12:08 [PATCH] Add php Julien Lepiller
  2016-10-30 14:01 ` Efraim Flashner
  2016-10-30 14:03 ` Tobias Geerinckx-Rice
@ 2016-11-01 17:07 ` Leo Famulari
  2 siblings, 0 replies; 28+ messages in thread
From: Leo Famulari @ 2016-11-01 17:07 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: guix-devel

On Sun, Oct 30, 2016 at 01:08:28PM +0100, Julien Lepiller wrote:
> Hi,
> 
> here is a patch to add php to guix.

> From b20406a07e8d8c99a189f5295929ff76a53d47e7 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Sun, 30 Oct 2016 15:05:51 +0100
> Subject: [PATCH] gnu: Add php
> 
> * gnu/packages/php.scm: New file.
> * gnu/packages/php.scm (php): New variable.

I'm very happy to see this being worked on!

Once the package is added, I hope that some people will pay attention to
PHP security bug disclosures on php.net and the oss-security mailing
list so that we can fix bugs quickly and protect our users.

Thank you :)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-10-30 23:17     ` Marius Bakke
@ 2016-11-02 21:40       ` Julien Lepiller
  2016-11-09 15:44         ` Ludovic Courtès
  0 siblings, 1 reply; 28+ messages in thread
From: Julien Lepiller @ 2016-11-02 21:40 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 415 bytes --]

On Sun, 30 Oct 2016 23:17:58 +0000
Marius Bakke <mbakke@fastmail.com> wrote:

> 
> We prefer HTTPS when available, which is the case for https://php.net.
> 
> 
> Please move this to a source "snippet", so that they are not included
> in `guix build -S`. I believe we also have to list the licenses of the
> bundles that cannot be removed in the (license) field.
> 

Here is a new patch that addresses these issues.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 10343 bytes --]

From 94c512aa3c9710b65b6fce0cd108744a7c308c63 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 30 Oct 2016 15:05:51 +0100
Subject: [PATCH] gnu: Add php

* gnu/packages/php.scm: New file.
* gnu/packages/php.scm (php): New variable.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 197 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 5fe6be5..726d935 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -292,6 +292,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..e3e26b8
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,196 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.12")
+    (home-page "https://www.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1zw33fbkrschqr2yrmvcp1z34v4rvqzm0pn1vsamjbi43jgc9mpk"))
+              (modules '((guix build utils)))
+              (snippet
+                '(with-directory-excursion "ext"
+                   (for-each delete-file-recursively
+                             `("pcre/pcrelib"
+                               "sqlite3/libsqlite"
+                               "gd/libgd"
+                               "mbstring/oniguruma"
+                               "xmlrpc/libxmlrpc"
+                               "zip/lib"))))))
+                               ;; couldn't unbundle these libraries:
+                               ;"bcmath/libbcmath" ;; this is bc.
+                               ;"fileinfo/libmagic"
+                               ;"mbstring/libmbfl"
+                               ;"date/lib"
+    (build-system gnu-build-system)
+    (arguments
+       '(
+        #:configure-flags
+          (list (string-append "--with-libxml-dir="
+                               (assoc-ref %build-inputs "libxml2"))
+                (string-append "--with-readline="
+                               (assoc-ref %build-inputs "readline"))
+                (string-append "--with-sqlite3="
+                               (assoc-ref %build-inputs "sqlite"))
+                (string-append "--with-pdo-sqlite="
+                               (assoc-ref %build-inputs "sqlite"))
+                (string-append "--with-pcre-regex="
+                               (assoc-ref %build-inputs "pcre"))
+                (string-append "--with-pcre-dir="
+                               (assoc-ref %build-inputs "pcre"))
+                (string-append "--with-zlib-dir="
+                               (assoc-ref %build-inputs "zlib"))
+                (string-append "--with-libzip="
+                               (assoc-ref %build-inputs "zip"))
+                (string-append "--with-bz2="
+                               (assoc-ref %build-inputs "bzip2"))
+                (string-append "--with-curl="
+                               (assoc-ref %build-inputs "curl"))
+                (string-append "--with-gd="
+                               (assoc-ref %build-inputs "gd"))
+                (string-append "--with-webp-dir="
+                               (assoc-ref %build-inputs "libwebp"))
+                (string-append "--with-jpeg-dir="
+                               (assoc-ref %build-inputs "libjpeg"))
+                (string-append "--with-png-dir="
+                               (assoc-ref %build-inputs "libpng"))
+                (string-append "--with-xpm-dir="
+                               (assoc-ref %build-inputs "libxpm"))
+                (string-append "--with-freetype-dir="
+                               (assoc-ref %build-inputs "freetype"))
+                (string-append "--with-gettext="
+                               (assoc-ref %build-inputs "glibc")) ; libintl.h
+                (string-append "--with-gmp="
+                               (assoc-ref %build-inputs "gmp"))
+                (string-append "--with-onig="
+                               (assoc-ref %build-inputs "oniguruma"))
+                (string-append "--with-xsl="
+                               (assoc-ref %build-inputs "libxslt"))
+                (string-append "--with-ldap="
+                               (assoc-ref %build-inputs "openldap"))
+                (string-append "--with-ldap-sasl="
+                               (assoc-ref %build-inputs "cyrus-sasl"))
+                ;; PHP’s Pspell extension, while retaining its current name,
+                ;; now uses the Aspell library.
+                (string-append "--with-pspell="
+                               (assoc-ref %build-inputs "aspell"))
+                (string-append "--with-tidy="
+                               (assoc-ref %build-inputs "tidy"))
+                (string-append "--with-gdbm="
+                               (assoc-ref %build-inputs "gdbm"))
+                (string-append "--with-pgsql="
+                               (assoc-ref %build-inputs "postgresql"))
+                (string-append "--with-pdo-pgsql="
+                               (assoc-ref %build-inputs "postgresql"))
+                "--enable-fpm" "--with-openssl"
+                "--with-zlib" "--enable-bcmath=shared"
+                "--enable-calendar" "--enable-dba=shared"
+                "--enable-ftp"
+                "--enable-mbstring" "--enable-inifile" "--enable-flatfile"
+                "--enable-exif" "--enable-mbstring"
+                "--enable-pcntl" "--with-pdo-mysql"
+                "--enable-sockets"
+                "--with-iconv")
+                ;; we could add "--with-snmp", but it requires netsnmp that
+                ;; we don't have a package for. It is used to build the snmp
+                ;; extension of php.
+        #:test-target "test"
+        ; A lot of tests fail and failure is not considered fatal.
+        #:tests? #f))
+    (inputs `(("readline" ,readline)
+              ("pcre" ,pcre)
+              ("aspell" ,aspell)
+              ("glibc" ,glibc)
+              ("gmp" ,gmp)
+              ("sqlite" ,sqlite)
+              ("openssl" ,openssl)
+              ("tidy" ,tidy)
+              ("openldap" ,openldap)
+              ("libxslt" ,libxslt)
+              ("libwebp" ,libwebp)
+              ("libpng" ,libpng)
+              ("libxpm" ,libxpm)
+              ("libx11" ,libx11)
+              ("libjpeg" ,libjpeg)
+              ("libgcrypt" ,libgcrypt)
+              ("oniguruma" ,oniguruma)
+              ("bzip2" ,bzip2)
+              ("freetype" ,freetype)
+              ("gdbm" ,gdbm)
+              ("postgresql" ,postgresql)
+              ("gd" ,gd)
+              ("zip" ,zip)
+              ("cyrus-sasl" ,cyrus-sasl)
+              ("curl" ,curl)
+              ("zlib" ,zlib)
+              ("libxml2" ,libxml2)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("bison" ,bison)
+                     ("intltool" ,intltool)
+                     ("libxml2" ,libxml2))) ; for xml2-config
+    (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 license:gpl2)));(list
+             ; (license:non-copyleft "file://LICENSE"); the php license
+             ; license:lgpl2.1;bcmath and libmbfl
+             ; license:bsd-2;libmagic
+             ; license:expat)));date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-02 21:40       ` Julien Lepiller
@ 2016-11-09 15:44         ` Ludovic Courtès
  2016-11-11 16:31           ` Julien Lepiller
  0 siblings, 1 reply; 28+ messages in thread
From: Ludovic Courtès @ 2016-11-09 15:44 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: guix-devel

Hello Julien,

Seems like the original reviewer (hi Marius! ;-)) missed this revision,
so here are a few comments.

Julien Lepiller <julien@lepiller.eu> skribis:

> From 94c512aa3c9710b65b6fce0cd108744a7c308c63 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Sun, 30 Oct 2016 15:05:51 +0100
> Subject: [PATCH] gnu: Add php
>
> * gnu/packages/php.scm: New file.
> * gnu/packages/php.scm (php): New variable.

Only the first line is needed.

> +              (snippet
> +                '(with-directory-excursion "ext"
> +                   (for-each delete-file-recursively
> +                             `("pcre/pcrelib"
> +                               "sqlite3/libsqlite"
> +                               "gd/libgd"
> +                               "mbstring/oniguruma"
> +                               "xmlrpc/libxmlrpc"
> +                               "zip/lib"))))))
> +                               ;; couldn't unbundle these libraries:
> +                               ;"bcmath/libbcmath" ;; this is bc.
> +                               ;"fileinfo/libmagic"
> +                               ;"mbstring/libmbfl"
> +                               ;"date/lib"

Is it hard to unbundle ‘bc’ and ‘file’ (libmagic)?

> +    (build-system gnu-build-system)
> +    (arguments
> +       '(
> +        #:configure-flags

Please adjust the indentation (check what other files do.)

> +          (list (string-append "--with-libxml-dir="
> +                               (assoc-ref %build-inputs "libxml2"))

I suggest this trick to make it a bit more concise:

  #:configure-flags
  (let-syntax ((with (syntax-rules ()
                       ((_ option input)
                        (string-append option "="
                                       (assoc-ref %build-inputs input))))))
    (list (with "--with-libxml-dir" "libxml2")
          (with "--with-readline" "readline")
          …))

> +        ; A lot of tests fail and failure is not considered fatal.
> +        #:tests? #f))

In what sense is it not considered fatal?  :-)

It would be nice to have some understanding of why the test fails.  If
it turns out to be difficult to fix, we can at least document the
problem in the comment, with enough detail.  Could you try to
investigate a bit?

> +    (license license:gpl2)));(list
> +             ; (license:non-copyleft "file://LICENSE"); the php license
> +             ; license:lgpl2.1;bcmath and libmbfl
> +             ; license:bsd-2;libmagic
> +             ; license:expat)));date/lib

So PHP itself is GPLv2-only?

Apart from that, I think we’re almost done.

Could you send an updated patch to address those issues?  Then we can
happily apply it.

Thank you for working on it!

Ludo’.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-09 15:44         ` Ludovic Courtès
@ 2016-11-11 16:31           ` Julien Lepiller
  2016-11-14  9:48             ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Julien Lepiller @ 2016-11-11 16:31 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 3534 bytes --]

On Wed, 09 Nov 2016 16:44:41 +0100
ludo@gnu.org (Ludovic Courtès) wrote:

> Hello Julien,
> 
> Seems like the original reviewer (hi Marius! ;-)) missed this
> revision, so here are a few comments.
> 
> Julien Lepiller <julien@lepiller.eu> skribis:
> 
> > From 94c512aa3c9710b65b6fce0cd108744a7c308c63 Mon Sep 17 00:00:00
> > 2001 From: Julien Lepiller <julien@lepiller.eu>
> > Date: Sun, 30 Oct 2016 15:05:51 +0100
> > Subject: [PATCH] gnu: Add php
> >
> > * gnu/packages/php.scm: New file.
> > * gnu/packages/php.scm (php): New variable.  
> 
> Only the first line is needed.
> 
> > +              (snippet
> > +                '(with-directory-excursion "ext"
> > +                   (for-each delete-file-recursively
> > +                             `("pcre/pcrelib"
> > +                               "sqlite3/libsqlite"
> > +                               "gd/libgd"
> > +                               "mbstring/oniguruma"
> > +                               "xmlrpc/libxmlrpc"
> > +                               "zip/lib"))))))
> > +                               ;; couldn't unbundle these
> > libraries:
> > +                               ;"bcmath/libbcmath" ;; this is bc.
> > +                               ;"fileinfo/libmagic"
> > +                               ;"mbstring/libmbfl"
> > +                               ;"date/lib"  
> 
> Is it hard to unbundle ‘bc’ and ‘file’ (libmagic)?
> 
> > +    (build-system gnu-build-system)
> > +    (arguments
> > +       '(
> > +        #:configure-flags  
> 
> Please adjust the indentation (check what other files do.)
> 
> > +          (list (string-append "--with-libxml-dir="
> > +                               (assoc-ref %build-inputs
> > "libxml2"))  
> 
> I suggest this trick to make it a bit more concise:
> 
>   #:configure-flags
>   (let-syntax ((with (syntax-rules ()
>                        ((_ option input)
>                         (string-append option "="
>                                        (assoc-ref %build-inputs
> input)))))) (list (with "--with-libxml-dir" "libxml2")
>           (with "--with-readline" "readline")
>           …))
> 
> > +        ; A lot of tests fail and failure is not considered fatal.
> > +        #:tests? #f))  
> 
> In what sense is it not considered fatal?  :-)
> 
> It would be nice to have some understanding of why the test fails.  If
> it turns out to be difficult to fix, we can at least document the
> problem in the comment, with enough detail.  Could you try to
> investigate a bit?
I investigated a bit, but couldn't find any reason. logs say that tests
print nothing where they should print the result, so they fail. When I
run them later from outside the build environment (with the php
executable that was built), it works perfectly fine though.

> 
> > +    (license license:gpl2)));(list
> > +             ; (license:non-copyleft "file://LICENSE"); the php
> > license
> > +             ; license:lgpl2.1;bcmath and libmbfl
> > +             ; license:bsd-2;libmagic
> > +             ; license:expat)));date/lib  
> 
> So PHP itself is GPLv2-only?
> 
> Apart from that, I think we’re almost done.
> 
> Could you send an updated patch to address those issues?  Then we can
> happily apply it.
here is the updated patch. I let the tests be done because it doesn't
harm, but it does no good either, so feel free to disable them if you
prefer.

> 
> Thank you for working on it!
> 
> Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 9304 bytes --]

From 22a19a5681713f6adbce84bc4c1d94d94264aa51 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Fri, 11 Nov 2016 15:18:29 +0100
Subject: [PATCH] gnu: Add php

* gnu/packages/php.scm: New file.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 180 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b3a4cd5..2ec7a91 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -293,6 +293,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..ce35e35
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,179 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.13")
+    (home-page "https://secure.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1gzihbpcp51jc587gs1ryn59hsnr7vf5427dmcvdimvm77wsfyrm"))
+              (modules '((guix build utils)))
+              (snippet
+                '(with-directory-excursion "ext"
+                   (for-each delete-file-recursively
+                             `("pcre/pcrelib"
+                               "sqlite3/libsqlite"
+                               "gd/libgd"
+                               "mbstring/oniguruma"
+                               "xmlrpc/libxmlrpc"
+                               "zip/lib"))))))
+                               ;; couldn't unbundle these libraries:
+                               ;"bcmath/libbcmath" ;; this is bc.
+                               ; ext/bcmath/php_bcmath.h requires it
+                               ; unconditionnaly.
+                               ;"fileinfo/libmagic"
+                               ; ext/fileinfo/libmagic/apprentice.lo will be
+                               ; built, with no configure flag to prevent it if
+                               ; we want the feature.
+                               ;"mbstring/libmbfl"
+                               ;"date/lib"
+    (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-libxml-dir" "libxml2")
+                 (with "--with-readline" "readline")
+                 (with "--with-sqlite3" "sqlite")
+                 (with "--with-pdo-sqlite" "sqlite")
+                 (with "--with-pcre-regex" "pcre")
+                 (with "--with-pcre-dir" "pcre")
+                 (with "--with-zlib-dir" "zlib")
+                 (with "--with-libzip" "zip")
+                 (with "--with-bz2" "bzip2")
+                 (with "--with-gd" "gd")
+                 (with "--with-curl" "curl")
+                 (with "--with-webp-dir" "libwebp")
+                 (with "--with-jpeg-dir" "libjpeg")
+                 (with "--with-png-dir" "libpng")
+                 (with "--with-xpm-dir" "libxpm")
+                 (with "--with-freetype-dir" "freetype")
+                 (with "--with-gettext" "glibc") ; libintl.h
+                 (with "--with-gmp" "gmp")
+                 (with "--with-onig" "oniguruma")
+                 (with "--with-xsl" "libxslt")
+                 (with "--with-ldap" "openldap")
+                 (with "--with-ldap-sasl" "cyrus-sasl")
+                 ;; PHP’s Pspell extension, while retaining its current name,
+                 ;; now uses the Aspell library.
+                 (with "--with-pspell" "aspell")
+                 (with "--with-tidy" "tidy")
+                 (with "--with-gdbm" "gdbm")
+                 (with "--with-pgsql" "postgresql")
+                 (with "--with-pdo-pgsql" "postgresql")
+                 "--enable-fpm" "--with-openssl" "--with-zlib"
+                 "--enable-calendar" "--enable-dba=shared"
+                 "--enable-mbstring" "--enable-inifile" "--enable-flatfile"
+                 "--enable-exif" "--enable-mbstring" "--enable-ftp"
+                 "--enable-pcntl" "--with-pdo-mysql" "--enable-sockets"
+                 "--with-iconv"))
+                 ;; we could add "--with-snmp", but it requires netsnmp that
+                 ;; we don't have a package for. It is used to build the snmp
+                 ;; extension of php.
+         #:test-target "test"
+         ; A lot of tests fail (maybe all). Normally, it would ask the user
+         ; whether they want to send a report, but it fails too, because there
+         ; is no network configured.  This is only considered a warning, and
+         ; the testing always returns successfully.
+         ; The log files indicate tests return no output (thus failing), but
+         ; when I ran some manually, they passed.
+         #:tests? #t))
+    (inputs `(("readline" ,readline)
+              ("pcre" ,pcre)
+              ("aspell" ,aspell)
+              ("glibc" ,glibc)
+              ("gmp" ,gmp)
+              ("sqlite" ,sqlite)
+              ("openssl" ,openssl)
+              ("tidy" ,tidy)
+              ("openldap" ,openldap)
+              ("libxslt" ,libxslt)
+              ("libwebp" ,libwebp)
+              ("libpng" ,libpng)
+              ("libxpm" ,libxpm)
+              ("libx11" ,libx11)
+              ("libjpeg" ,libjpeg)
+              ("libgcrypt" ,libgcrypt)
+              ("oniguruma" ,oniguruma)
+              ("bzip2" ,bzip2)
+              ("freetype" ,freetype)
+              ("gdbm" ,gdbm)
+              ("postgresql" ,postgresql)
+              ("gd" ,gd)
+              ("zip" ,zip)
+              ("cyrus-sasl" ,cyrus-sasl)
+              ("curl" ,curl)
+              ("zlib" ,zlib)
+              ("libxml2" ,libxml2)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("bison" ,bison)
+                     ("intltool" ,intltool)
+                     ("libxml2" ,libxml2))) ; for xml2-config
+    (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"); the php license
+              license:lgpl2.1;bcmath and libmbfl
+              license:bsd-2;libmagic
+              license:expat))));date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-11 16:31           ` Julien Lepiller
@ 2016-11-14  9:48             ` Marius Bakke
  2016-11-14  9:57               ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-11-14  9:48 UTC (permalink / raw)
  To: Julien Lepiller, guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 1560 bytes --]

Julien Lepiller <julien@lepiller.eu> writes:

>> Could you send an updated patch to address those issues?  Then we can
>> happily apply it.
> here is the updated patch. I let the tests be done because it doesn't
> harm, but it does no good either, so feel free to disable them if you
> prefer.

Hello! I've gone through this package and made some improvements. I also
managed to enable the test suite, but had to resort to strace to figure
out what was going on (/bin/sh calls..).

Unsurprisingly, many of them fail still. Some look harmless, others are
testing for some specific bugs with assigned CVEs, which is concerning.

I'm hoping some of the earlier reviewers with actual PHP experience (hi
Tobias ;-)) can have a final look at it and see if it's good to go -- I
haven't done any functionality testing of this package. We'll need a way
to fix or disable these tests however.. Tips appreciated!

Also, I tried substituting a file with ISO-8859 encoding, which fails.
It's commented out for now, but it would be nice to have it working.

Other changes done:

* Sorted inputs and build flags to make it easy to tell what's enabled.
* Added '--enable-threads'.
* Added the Zend license.
* Some comment changes -- turns out libbcmath is not actually from bc.

Finally, libxml2 is both a native and regular input. Can we be sure the
one from inputs is actually the one linked against, or should the
native-input (for xml2-config) be dropped?

Thanks for working on this! I'll be mostly offline the next two days,
but hope to finish this shortly thereafter.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 9884 bytes --]

From 144444fbe6d734a56efa7493217a79756c36b209 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Fri, 11 Nov 2016 15:18:29 +0100
Subject: [PATCH] gnu: Add php.

* gnu/packages/php.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 205 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ce0fdeb..7d10aa6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -295,6 +295,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..d6e0f14
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,204 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.13")
+    (home-page "https://secure.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1gzihbpcp51jc587gs1ryn59hsnr7vf5427dmcvdimvm77wsfyrm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(with-directory-excursion "ext"
+                  (for-each delete-file-recursively
+                            ;; Some of the bundled libraries have no proper upstream.
+                            ;; Ideally we'd extract these out as separate packages:
+                            ;;"mbstring/libmbfl"
+                            ;;"date/lib"
+                            ;;"bcmath/libbcmath"
+                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.
+                            '("gd/libgd"
+                              "mbstring/oniguruma"
+                              "pcre/pcrelib"
+                              "sqlite3/libsqlite"
+                              "xmlrpc/libxmlrpc"
+                              "zip/lib"))))))
+    (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-freetype-dir" "freetype")
+               (with "--with-gd" "gd")
+               (with "--with-gdbm" "gdbm")
+               (with "--with-gettext" "glibc") ; libintl.h
+               (with "--with-gmp" "gmp")
+               (with "--with-jpeg-dir" "libjpeg")
+               (with "--with-ldap" "openldap")
+               (with "--with-ldap-sasl" "cyrus-sasl")
+               (with "--with-libzip" "zip")
+               (with "--with-libxml-dir" "libxml2")
+               (with "--with-onig" "oniguruma")
+               (with "--with-pcre-dir" "pcre")
+               (with "--with-pcre-regex" "pcre")
+               (with "--with-pdo-pgsql" "postgresql")
+               (with "--with-pdo-sqlite" "sqlite")
+               (with "--with-pgsql" "postgresql")
+               (with "--with-png-dir" "libpng")
+               ;; PHP’s Pspell extension, while retaining its current name,
+               ;; now uses the Aspell library.
+               (with "--with-pspell" "aspell")
+               (with "--with-readline" "readline")
+               (with "--with-sqlite3" "sqlite")
+               (with "--with-tidy" "tidy")
+               (with "--with-webp-dir" "libwebp")
+               (with "--with-xpm-dir" "libxpm")
+               (with "--with-xsl" "libxslt")
+               (with "--with-zlib-dir" "zlib")
+               ;; We could add "--with-snmp", but it requires netsnmp that
+               ;; we don't have a package for. It is used to build the snmp
+               ;; extension of php.
+               "--with-iconv"
+               "--with-openssl"
+               "--with-pdo-mysql"
+               "--with-zlib"
+               "--enable-calendar"
+               "--enable-dba=shared"
+               "--enable-exif"
+               "--enable-flatfile"
+               "--enable-fpm"
+               "--enable-ftp"
+               "--enable-inifile"
+               "--enable-mbstring"
+               "--enable-pcntl"
+               "--enable-sockets"
+               "--enable-threads"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-record-build-flags
+           (lambda _
+             ;; Prevent configure flags from being stored and causing
+             ;; unnecessary runtime dependencies.
+             ;; FIXME: Guile throws decoding error on this ISO-8859 file.
+             ;(substitute* "main/build-defs.h.in"
+             ;  (("@CONFIGURE_COMMAND@") "(omitted)"))
+             (substitute* "scripts/php-config.in"
+               (("@CONFIGURE_OPTIONS@") "")
+               (("@PHP_LDFLAGS@") ""))
+             #t))
+         (add-before 'build 'patch-/bin/sh
+           (lambda _
+             (substitute* '("run-tests.php" "ext/standard/proc_open.c")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'set-test-environment
+           (lambda _
+             ;; Without this variable, `make test' passes regardless of failures.
+             (setenv "REPORT_EXIT_STATUS" "1")
+             #t)))
+       #:test-target "test"
+       #:tests? #t))
+    (inputs
+     `(("aspell" ,aspell)
+       ("bzip2" ,bzip2)
+       ("curl" ,curl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("freetype" ,freetype)
+       ("gd" ,gd)
+       ("gdbm" ,gdbm)
+       ("glibc" ,glibc)
+       ("gmp" ,gmp)
+       ("libgcrypt" ,libgcrypt)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libwebp" ,libwebp)
+       ("libxml2" ,libxml2)
+       ("libxpm" ,libxpm)
+       ("libxslt" ,libxslt)
+       ("libx11" ,libx11)
+       ("oniguruma" ,oniguruma)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("postgresql" ,postgresql)
+       ("readline" ,readline)
+       ("sqlite" ,sqlite)
+       ("tidy" ,tidy)
+       ("zlib" ,zlib)
+       ("zip" ,zip)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("bison" ,bison)
+       ("intltool" ,intltool)
+       ("libxml2" ,libxml2))) ; for xml2-config
+    (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")       ; The PHP license.
+              (licsense:non-copyleft "file://Zend/LICENSE") ; The Zend license.
+              license:lgpl2.1                               ; ext/mbstring/libmbfl
+              license:lgpl2.1+                              ; ext/bcmath/libbcmath
+              license:bsd-2                                 ; ext/fileinfo/libmagic
+              license:expat))))                             ; ext/date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-14  9:48             ` Marius Bakke
@ 2016-11-14  9:57               ` Marius Bakke
  2016-11-14 12:59                 ` Ludovic Courtès
  0 siblings, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-11-14  9:57 UTC (permalink / raw)
  To: Julien Lepiller, guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 600 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> Julien Lepiller <julien@lepiller.eu> writes:
>
>>> Could you send an updated patch to address those issues?  Then we can
>>> happily apply it.
>> here is the updated patch. I let the tests be done because it doesn't
>> harm, but it does no good either, so feel free to disable them if you
>> prefer.
>
> Hello! I've gone through this package and made some improvements. I also
> managed to enable the test suite, but had to resort to strace to figure
> out what was going on (/bin/sh calls..).

Oops, here is a version that actually passes `guix lint`.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 9884 bytes --]

From 83b2913549784e5d3bafd29641e314b308f7df11 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Fri, 11 Nov 2016 15:18:29 +0100
Subject: [PATCH] gnu: Add php.

* gnu/packages/php.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 205 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ce0fdeb..7d10aa6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -295,6 +295,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..67d3d4d
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,204 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.13")
+    (home-page "https://secure.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1gzihbpcp51jc587gs1ryn59hsnr7vf5427dmcvdimvm77wsfyrm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(with-directory-excursion "ext"
+                  (for-each delete-file-recursively
+                            ;; Some of the bundled libraries have no proper upstream.
+                            ;; Ideally we'd extract these out as separate packages:
+                            ;;"mbstring/libmbfl"
+                            ;;"date/lib"
+                            ;;"bcmath/libbcmath"
+                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.
+                            '("gd/libgd"
+                              "mbstring/oniguruma"
+                              "pcre/pcrelib"
+                              "sqlite3/libsqlite"
+                              "xmlrpc/libxmlrpc"
+                              "zip/lib"))))))
+    (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-freetype-dir" "freetype")
+               (with "--with-gd" "gd")
+               (with "--with-gdbm" "gdbm")
+               (with "--with-gettext" "glibc") ; libintl.h
+               (with "--with-gmp" "gmp")
+               (with "--with-jpeg-dir" "libjpeg")
+               (with "--with-ldap" "openldap")
+               (with "--with-ldap-sasl" "cyrus-sasl")
+               (with "--with-libzip" "zip")
+               (with "--with-libxml-dir" "libxml2")
+               (with "--with-onig" "oniguruma")
+               (with "--with-pcre-dir" "pcre")
+               (with "--with-pcre-regex" "pcre")
+               (with "--with-pdo-pgsql" "postgresql")
+               (with "--with-pdo-sqlite" "sqlite")
+               (with "--with-pgsql" "postgresql")
+               (with "--with-png-dir" "libpng")
+               ;; PHP’s Pspell extension, while retaining its current name,
+               ;; now uses the Aspell library.
+               (with "--with-pspell" "aspell")
+               (with "--with-readline" "readline")
+               (with "--with-sqlite3" "sqlite")
+               (with "--with-tidy" "tidy")
+               (with "--with-webp-dir" "libwebp")
+               (with "--with-xpm-dir" "libxpm")
+               (with "--with-xsl" "libxslt")
+               (with "--with-zlib-dir" "zlib")
+               ;; We could add "--with-snmp", but it requires netsnmp that
+               ;; we don't have a package for. It is used to build the snmp
+               ;; extension of php.
+               "--with-iconv"
+               "--with-openssl"
+               "--with-pdo-mysql"
+               "--with-zlib"
+               "--enable-calendar"
+               "--enable-dba=shared"
+               "--enable-exif"
+               "--enable-flatfile"
+               "--enable-fpm"
+               "--enable-ftp"
+               "--enable-inifile"
+               "--enable-mbstring"
+               "--enable-pcntl"
+               "--enable-sockets"
+               "--enable-threads"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-record-build-flags
+           (lambda _
+             ;; Prevent configure flags from being stored and causing
+             ;; unnecessary runtime dependencies.
+             ;; FIXME: Guile throws decoding error on this ISO-8859 file.
+             ;(substitute* "main/build-defs.h.in"
+             ;  (("@CONFIGURE_COMMAND@") "(omitted)"))
+             (substitute* "scripts/php-config.in"
+               (("@CONFIGURE_OPTIONS@") "")
+               (("@PHP_LDFLAGS@") ""))
+             #t))
+         (add-before 'build 'patch-/bin/sh
+           (lambda _
+             (substitute* '("run-tests.php" "ext/standard/proc_open.c")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'set-test-environment
+           (lambda _
+             ;; Without this variable, `make test' passes regardless of failures.
+             (setenv "REPORT_EXIT_STATUS" "1")
+             #t)))
+       #:test-target "test"
+       #:tests? #t))
+    (inputs
+     `(("aspell" ,aspell)
+       ("bzip2" ,bzip2)
+       ("curl" ,curl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("freetype" ,freetype)
+       ("gd" ,gd)
+       ("gdbm" ,gdbm)
+       ("glibc" ,glibc)
+       ("gmp" ,gmp)
+       ("libgcrypt" ,libgcrypt)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libwebp" ,libwebp)
+       ("libxml2" ,libxml2)
+       ("libxpm" ,libxpm)
+       ("libxslt" ,libxslt)
+       ("libx11" ,libx11)
+       ("oniguruma" ,oniguruma)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("postgresql" ,postgresql)
+       ("readline" ,readline)
+       ("sqlite" ,sqlite)
+       ("tidy" ,tidy)
+       ("zip" ,zip)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("bison" ,bison)
+       ("intltool" ,intltool)
+       ("libxml2" ,libxml2))) ; for xml2-config
+    (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")       ; The PHP license.
+              (license:non-copyleft "file://Zend/LICENSE")  ; The Zend license.
+              license:lgpl2.1                               ; ext/mbstring/libmbfl
+              license:lgpl2.1+                              ; ext/bcmath/libbcmath
+              license:bsd-2                                 ; ext/fileinfo/libmagic
+              license:expat))))                             ; ext/date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-14  9:57               ` Marius Bakke
@ 2016-11-14 12:59                 ` Ludovic Courtès
  2016-11-14 13:53                   ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Ludovic Courtès @ 2016-11-14 12:59 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

Hi Marius,

Marius Bakke <mbakke@fastmail.com> skribis:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> Julien Lepiller <julien@lepiller.eu> writes:
>>
>>>> Could you send an updated patch to address those issues?  Then we can
>>>> happily apply it.
>>> here is the updated patch. I let the tests be done because it doesn't
>>> harm, but it does no good either, so feel free to disable them if you
>>> prefer.
>>
>> Hello! I've gone through this package and made some improvements. I also
>> managed to enable the test suite, but had to resort to strace to figure
>> out what was going on (/bin/sh calls..).
>
> Oops, here is a version that actually passes `guix lint`.
>
> From 83b2913549784e5d3bafd29641e314b308f7df11 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Fri, 11 Nov 2016 15:18:29 +0100
> Subject: [PATCH] gnu: Add php.
>
> * gnu/packages/php.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

Thanks for the update!

> +                            ;;"bcmath/libbcmath"

So this one is very different from ‘bc’?

> +                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.

Here adding a dependency on ‘file’ instead (the package that provides
libmagic) didn’t cut it, right?

> +         (add-before 'check 'set-test-environment
> +           (lambda _
> +             ;; Without this variable, `make test' passes regardless of failures.
> +             (setenv "REPORT_EXIT_STATUS" "1")
> +             #t)))
> +       #:test-target "test"
> +       #:tests? #t))

Do you have more info as to what fails?  I wouldn’t be surprised if
there were lots of issues having to do with the use of /bin/sh, host
name lookups, and other things not available in the build environment.

Could you gather more info as to what fails so that we can either fix
it, or at least convince ourselves that these are not serious issues and
document them in a comment?

Thanks Julien & Marius!

Ludo’.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-14 12:59                 ` Ludovic Courtès
@ 2016-11-14 13:53                   ` Marius Bakke
  2016-11-14 14:46                     ` Ludovic Courtès
  0 siblings, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-11-14 13:53 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 4024 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Hi Marius,
>
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> Marius Bakke <mbakke@fastmail.com> writes:
>>
>>> Julien Lepiller <julien@lepiller.eu> writes:
>>>
>>>>> Could you send an updated patch to address those issues?  Then we can
>>>>> happily apply it.
>>>> here is the updated patch. I let the tests be done because it doesn't
>>>> harm, but it does no good either, so feel free to disable them if you
>>>> prefer.
>>>
>>> Hello! I've gone through this package and made some improvements. I also
>>> managed to enable the test suite, but had to resort to strace to figure
>>> out what was going on (/bin/sh calls..).
>>
>> Oops, here is a version that actually passes `guix lint`.
>>
>> From 83b2913549784e5d3bafd29641e314b308f7df11 Mon Sep 17 00:00:00 2001
>> From: Julien Lepiller <julien@lepiller.eu>
>> Date: Fri, 11 Nov 2016 15:18:29 +0100
>> Subject: [PATCH] gnu: Add php.
>>
>> * gnu/packages/php.scm: New file.
>> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
>
> Thanks for the update!
>
>> +                            ;;"bcmath/libbcmath"
>
> So this one is very different from ‘bc’?

Yes, it's a completely different project and apparently more akin to
'gmp'. It's maintained within the PHP repository.

>> +                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.
>
> Here adding a dependency on ‘file’ instead (the package that provides
> libmagic) didn’t cut it, right?

Correct. The build system expects to build this, and it appears to be
heavily patched, so I did not try very hard.

>> +         (add-before 'check 'set-test-environment
>> +           (lambda _
>> +             ;; Without this variable, `make test' passes regardless of failures.
>> +             (setenv "REPORT_EXIT_STATUS" "1")
>> +             #t)))
>> +       #:test-target "test"
>> +       #:tests? #t))
>
> Do you have more info as to what fails?  I wouldn’t be surprised if
> there were lots of issues having to do with the use of /bin/sh, host
> name lookups, and other things not available in the build environment.
>
> Could you gather more info as to what fails so that we can either fix
> it, or at least convince ourselves that these are not serious issues and
> document them in a comment?

Some failures are indeed due to missing network or programs in the build
environment. I tried patching a few just now, but unfortunately some
files are in a format apparently not supported by Guile!

 870: 5 [call-with-input-file "ext/mbstring/tests/bug26639.phpt" ...]
In /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/build/utils.scm:
 556: 4 [#<procedure 16a6440 at /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
d/utils.scm:555:10 (in)> #<input: ext/mbstring/tests/bug26639.phpt 11>]
 592: 3 [#<procedure 1798aa0 at /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
d/utils.scm:578:6 (in out)> #<input: ext/mbstring/tests/bug26639.phpt 11> ...]
In ice-9/rdelim.scm:
 188: 2 [read-line #<input: ext/mbstring/tests/bug26639.phpt 11> concat]
In unknown file:
   ?: 1 [%read-line #<input: ext/mbstring/tests/bug26639.phpt 11>]
In ice-9/boot-9.scm:
 109: 0 [#<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . args)> decoding-error ...]

ice-9/boot-9.scm:109:20: In procedure #<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . arg
s)>:
ice-9/boot-9.scm:109:20: Throw to key `decoding-error' with args `("scm_getc" "input decoding error
" 84 #<input: ext/mbstring/tests/bug26639.phpt 11>)'.

`file` reports: ext/mbstring/tests/bug26639.phpt: Non-ISO extended-ASCII text

Can we work around this somehow? There are more files with non-standard
file types that can't be substituted.

I also found a flag "SKIP_ONLINE_TESTS" which should rule out some more
failures. Attached is an updated patch, but there is still a long way to
go. I will continue this journey tomorrow:


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 10180 bytes --]

From abedcccd5a184cc600f122fe01149884ba30c318 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Fri, 11 Nov 2016 15:18:29 +0100
Subject: [PATCH] gnu: Add php.

* gnu/packages/php.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 209 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ce0fdeb..7d10aa6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -295,6 +295,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..96e3d07
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,208 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages image)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.13")
+    (home-page "https://secure.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1gzihbpcp51jc587gs1ryn59hsnr7vf5427dmcvdimvm77wsfyrm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(with-directory-excursion "ext"
+                  (for-each delete-file-recursively
+                            ;; Some of the bundled libraries have no proper upstream.
+                            ;; Ideally we'd extract these out as separate packages:
+                            ;;"mbstring/libmbfl"
+                            ;;"date/lib"
+                            ;;"bcmath/libbcmath"
+                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.
+                            '("gd/libgd"
+                              "mbstring/oniguruma"
+                              "pcre/pcrelib"
+                              "sqlite3/libsqlite"
+                              "xmlrpc/libxmlrpc"
+                              "zip/lib"))))))
+    (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-freetype-dir" "freetype")
+               (with "--with-gd" "gd")
+               (with "--with-gdbm" "gdbm")
+               (with "--with-gettext" "glibc") ; libintl.h
+               (with "--with-gmp" "gmp")
+               (with "--with-jpeg-dir" "libjpeg")
+               (with "--with-ldap" "openldap")
+               (with "--with-ldap-sasl" "cyrus-sasl")
+               (with "--with-libzip" "zip")
+               (with "--with-libxml-dir" "libxml2")
+               (with "--with-onig" "oniguruma")
+               (with "--with-pcre-dir" "pcre")
+               (with "--with-pcre-regex" "pcre")
+               (with "--with-pdo-pgsql" "postgresql")
+               (with "--with-pdo-sqlite" "sqlite")
+               (with "--with-pgsql" "postgresql")
+               (with "--with-png-dir" "libpng")
+               ;; PHP’s Pspell extension, while retaining its current name,
+               ;; now uses the Aspell library.
+               (with "--with-pspell" "aspell")
+               (with "--with-readline" "readline")
+               (with "--with-sqlite3" "sqlite")
+               (with "--with-tidy" "tidy")
+               (with "--with-webp-dir" "libwebp")
+               (with "--with-xpm-dir" "libxpm")
+               (with "--with-xsl" "libxslt")
+               (with "--with-zlib-dir" "zlib")
+               ;; We could add "--with-snmp", but it requires netsnmp that
+               ;; we don't have a package for. It is used to build the snmp
+               ;; extension of php.
+               "--with-iconv"
+               "--with-openssl"
+               "--with-pdo-mysql"
+               "--with-zlib"
+               "--enable-calendar"
+               "--enable-dba=shared"
+               "--enable-exif"
+               "--enable-flatfile"
+               "--enable-fpm"
+               "--enable-ftp"
+               "--enable-inifile"
+               "--enable-mbstring"
+               "--enable-pcntl"
+               "--enable-sockets"
+               "--enable-threads"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-record-build-flags
+           (lambda _
+             ;; Prevent configure flags from being stored and causing
+             ;; unnecessary runtime dependencies.
+             ;; FIXME: Guile throws decoding error on this ISO-8859 file.
+             ;(substitute* "main/build-defs.h.in"
+             ;  (("@CONFIGURE_COMMAND@") "(omitted)"))
+             (substitute* "scripts/php-config.in"
+               (("@CONFIGURE_OPTIONS@") "")
+               (("@PHP_LDFLAGS@") ""))
+             #t))
+         (add-before 'build 'patch-/bin/sh
+           (lambda _
+             (substitute* '("run-tests.php" "ext/standard/proc_open.c")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'prepare-tests
+           (lambda _
+             ;; FIXME: Some of these files are non-ASCII and can't be substituted.
+             ;(substitute* (append (find-files "ext/mbstring/tests")
+             ;                     (find-files "ext/standard/tests"))
+             ;  (("/bin/cat") (which "cat")))
+             (setenv "SKIP_ONLINE_TESTS" "1")
+             ;; Without this variable, `make test' passes regardless of failures.
+             (setenv "REPORT_EXIT_STATUS" "1")
+             #t)))
+       #:test-target "test"))
+    (inputs
+     `(("aspell" ,aspell)
+       ("bzip2" ,bzip2)
+       ("curl" ,curl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("freetype" ,freetype)
+       ("gd" ,gd)
+       ("gdbm" ,gdbm)
+       ("glibc" ,glibc)
+       ("gmp" ,gmp)
+       ("libgcrypt" ,libgcrypt)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libwebp" ,libwebp)
+       ("libxml2" ,libxml2)
+       ("libxpm" ,libxpm)
+       ("libxslt" ,libxslt)
+       ("libx11" ,libx11)
+       ("oniguruma" ,oniguruma)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("postgresql" ,postgresql)
+       ("readline" ,readline)
+       ("sqlite" ,sqlite)
+       ("tidy" ,tidy)
+       ("zip" ,zip)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("bison" ,bison)
+       ("intltool" ,intltool)
+       ("libxml2" ,libxml2))) ; for xml2-config
+    (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")       ; The PHP license.
+              (license:non-copyleft "file://Zend/LICENSE")  ; The Zend license.
+              license:lgpl2.1                               ; ext/mbstring/libmbfl
+              license:lgpl2.1+                              ; ext/bcmath/libbcmath
+              license:bsd-2                                 ; ext/fileinfo/libmagic
+              license:expat))))                             ; ext/date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-14 13:53                   ` Marius Bakke
@ 2016-11-14 14:46                     ` Ludovic Courtès
  2016-11-17  0:01                       ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Ludovic Courtès @ 2016-11-14 14:46 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

Marius Bakke <mbakke@fastmail.com> skribis:

> Some failures are indeed due to missing network or programs in the build
> environment. I tried patching a few just now, but unfortunately some
> files are in a format apparently not supported by Guile!
>
>  870: 5 [call-with-input-file "ext/mbstring/tests/bug26639.phpt" ...]
> In /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/build/utils.scm:
>  556: 4 [#<procedure 16a6440 at /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
> d/utils.scm:555:10 (in)> #<input: ext/mbstring/tests/bug26639.phpt 11>]
>  592: 3 [#<procedure 1798aa0 at /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
> d/utils.scm:578:6 (in out)> #<input: ext/mbstring/tests/bug26639.phpt 11> ...]
> In ice-9/rdelim.scm:
>  188: 2 [read-line #<input: ext/mbstring/tests/bug26639.phpt 11> concat]
> In unknown file:
>    ?: 1 [%read-line #<input: ext/mbstring/tests/bug26639.phpt 11>]
> In ice-9/boot-9.scm:
>  109: 0 [#<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . args)> decoding-error ...]
>
> ice-9/boot-9.scm:109:20: In procedure #<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . arg
> s)>:
> ice-9/boot-9.scm:109:20: Throw to key `decoding-error' with args `("scm_getc" "input decoding error
> " 84 #<input: ext/mbstring/tests/bug26639.phpt 11>)'.
>
> `file` reports: ext/mbstring/tests/bug26639.phpt: Non-ISO extended-ASCII text

Presumably this is ‘substitute*’ failing to read the file.

‘substitute*’ expects input files to be UTF-8-encoded; when this is not
the case, you need to bind ‘%default-port-encoding’ to whatever is the
right encoding or #f for the catch-all ISO-8859-1.  See
‘gettext-minimal’ for an example.

HTH!

Ludo’.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-14 14:46                     ` Ludovic Courtès
@ 2016-11-17  0:01                       ` Marius Bakke
  2016-11-17 10:22                         ` Hartmut Goebel
  2016-11-17 11:08                         ` tyreunom
  0 siblings, 2 replies; 28+ messages in thread
From: Marius Bakke @ 2016-11-17  0:01 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 2388 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> Some failures are indeed due to missing network or programs in the build
>> environment. I tried patching a few just now, but unfortunately some
>> files are in a format apparently not supported by Guile!
>>
>>  870: 5 [call-with-input-file "ext/mbstring/tests/bug26639.phpt" ...]
>> In /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/build/utils.scm:
>>  556: 4 [#<procedure 16a6440 at /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
>> d/utils.scm:555:10 (in)> #<input: ext/mbstring/tests/bug26639.phpt 11>]
>>  592: 3 [#<procedure 1798aa0 at /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
>> d/utils.scm:578:6 (in out)> #<input: ext/mbstring/tests/bug26639.phpt 11> ...]
>> In ice-9/rdelim.scm:
>>  188: 2 [read-line #<input: ext/mbstring/tests/bug26639.phpt 11> concat]
>> In unknown file:
>>    ?: 1 [%read-line #<input: ext/mbstring/tests/bug26639.phpt 11>]
>> In ice-9/boot-9.scm:
>>  109: 0 [#<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . args)> decoding-error ...]
>>
>> ice-9/boot-9.scm:109:20: In procedure #<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . arg
>> s)>:
>> ice-9/boot-9.scm:109:20: Throw to key `decoding-error' with args `("scm_getc" "input decoding error
>> " 84 #<input: ext/mbstring/tests/bug26639.phpt 11>)'.
>>
>> `file` reports: ext/mbstring/tests/bug26639.phpt: Non-ISO extended-ASCII text
>
> Presumably this is ‘substitute*’ failing to read the file.
>
> ‘substitute*’ expects input files to be UTF-8-encoded; when this is not
> the case, you need to bind ‘%default-port-encoding’ to whatever is the
> right encoding or #f for the catch-all ISO-8859-1.  See
> ‘gettext-minimal’ for an example.

Thank you! That was exactly what I needed.

Unfortunately that only fixed a handful of tests, the remaining
50-something had to be disabled for a variety of reasons.

I've added a commentary to each disabled test. If you recognize any of
these errors/think you know what's going on, please update the patch.
It would be nice to know if the iconv and gd stuff is expected, and if
the two sqlite tests can really be ignored. The curl one is strange too.

If there are no further comments, I will push this in the next few days:


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

[-- Attachment #2: 0001-gnu-Add-php.patch --]
[-- Type: text/x-patch, Size: 18442 bytes --]

From 692ef93d2e2df9b7d49977a2035fff1815ac34b0 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Fri, 11 Nov 2016 15:18:29 +0100
Subject: [PATCH] gnu: Add php.

* gnu/packages/php.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

Co-authored-by: Marius Bakke <mbakke@fastmail.com>
---
 gnu/local.mk         |   1 +
 gnu/packages/php.scm | 329 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 330 insertions(+)
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 3989cb8..a857b46 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -295,6 +295,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..83022ed
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,329 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.13")
+    (home-page "https://secure.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1gzihbpcp51jc587gs1ryn59hsnr7vf5427dmcvdimvm77wsfyrm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(with-directory-excursion "ext"
+                  (for-each delete-file-recursively
+                            ;; Some of the bundled libraries have no proper upstream.
+                            ;; Ideally we'd extract these out as separate packages:
+                            ;;"mbstring/libmbfl"
+                            ;;"date/lib"
+                            ;;"bcmath/libbcmath"
+                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.
+                            '("gd/libgd"
+                              "mbstring/oniguruma"
+                              "pcre/pcrelib"
+                              "sqlite3/libsqlite"
+                              "xmlrpc/libxmlrpc"
+                              "zip/lib"))))))
+    (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-freetype-dir" "freetype")
+               (with "--with-gd" "gd")
+               (with "--with-gdbm" "gdbm")
+               (with "--with-gettext" "glibc") ; libintl.h
+               (with "--with-gmp" "gmp")
+               (with "--with-jpeg-dir" "libjpeg")
+               (with "--with-ldap" "openldap")
+               (with "--with-ldap-sasl" "cyrus-sasl")
+               (with "--with-libzip" "zip")
+               (with "--with-libxml-dir" "libxml2")
+               (with "--with-onig" "oniguruma")
+               (with "--with-pcre-dir" "pcre")
+               (with "--with-pcre-regex" "pcre")
+               (with "--with-pdo-pgsql" "postgresql")
+               (with "--with-pdo-sqlite" "sqlite")
+               (with "--with-pgsql" "postgresql")
+               (with "--with-png-dir" "libpng")
+               ;; PHP’s Pspell extension, while retaining its current name,
+               ;; now uses the Aspell library.
+               (with "--with-pspell" "aspell")
+               (with "--with-readline" "readline")
+               (with "--with-sqlite3" "sqlite")
+               (with "--with-tidy" "tidy")
+               (with "--with-webp-dir" "libwebp")
+               (with "--with-xpm-dir" "libxpm")
+               (with "--with-xsl" "libxslt")
+               (with "--with-zlib-dir" "zlib")
+               ;; We could add "--with-snmp", but it requires netsnmp that
+               ;; we don't have a package for. It is used to build the snmp
+               ;; extension of php.
+               "--with-iconv"
+               "--with-openssl"
+               "--with-pdo-mysql"
+               "--with-zlib"
+               "--enable-calendar"
+               "--enable-dba=shared"
+               "--enable-exif"
+               "--enable-flatfile"
+               "--enable-fpm"
+               "--enable-ftp"
+               "--enable-inifile"
+               "--enable-mbstring"
+               "--enable-pcntl"
+               "--enable-sockets"
+               "--enable-threads"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-record-build-flags
+           (lambda _
+             ;; Prevent configure flags from being stored and causing
+             ;; unnecessary runtime dependencies.
+             (substitute* "scripts/php-config.in"
+               (("@CONFIGURE_OPTIONS@") "")
+               (("@PHP_LDFLAGS@") ""))
+             ;; This file has ISO-8859-1 encoding.
+             (with-fluids ((%default-port-encoding "ISO-8859-1"))
+               (substitute* "main/build-defs.h.in"
+                 (("@CONFIGURE_COMMAND@") "(omitted)")))
+             #t))
+         (add-before 'build 'patch-/bin/sh
+           (lambda _
+             (substitute* '("run-tests.php" "ext/standard/proc_open.c")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'prepare-tests
+           (lambda _
+             ;; Some of these files have ISO-8859-1 encoding, whereas others
+             ;; use ASCII, so we can't use a "catch-all" find-files here.
+             (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/bug52861.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")))
+             ;; The encoding of this file is not recognized, so we simply drop it.
+             (delete-file "ext/mbstring/tests/mb_send_mail07.phpt")
+
+             (substitute* "ext/standard/tests/streams/bug60602.phpt"
+               (("'ls'") (string-append "'" (which "ls") "'")))
+
+             ;; Drop tests that are known to fail.
+             (for-each delete-file
+                       '("ext/posix/tests/posix_getgrgid.phpt"    ; Requires /etc/group.
+                         "ext/sockets/tests/bug63000.phpt"        ; Fails to detect OS.
+                         "ext/sockets/tests/socket_shutdown.phpt" ; Requires DNS.
+                         "ext/sockets/tests/socket_send.phpt"     ; Likewise.
+                         "ext/sockets/tests/mcast_ipv4_recv.phpt" ; Requires multicast.
+                         ;; These needs /etc/services.
+                         "ext/standard/tests/general_functions/getservbyname_basic.phpt"
+                         "ext/standard/tests/general_functions/getservbyport_basic.phpt"
+                         "ext/standard/tests/general_functions/getservbyport_variation1.phpt"
+                         ;; And /etc/protocols.
+                         "ext/standard/tests/network/getprotobyname_basic.phpt"
+                         "ext/standard/tests/network/getprotobynumber_basic.phpt"
+                         ;; And exotic locales.
+                         "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"
+
+                         ;; XXX: These gd tests fails.  Likely because our version
+                         ;; is newer than the bundled one.
+                         ;; Here, gd quits immediately after "fatal libpng error"; while the
+                         ;; test expects it to additionally return a "setjmp" error and warning.
+                         "ext/gd/tests/bug39780_extern.phpt"
+                         "ext/gd/tests/libgd00086_extern.phpt"
+                         ;; Extra newline in gd-png output.
+                         "ext/gd/tests/bug45799.phpt"
+                         ;; Different error message than expected from imagecrop().
+                         "ext/gd/tests/bug66356.phpt"
+                         ;; Similarly for imagecreatefromgd2().
+                         "ext/gd/tests/bug72339.phpt"
+                         ;; Call to undefined function imageantialias().  They are
+                         ;; supposed to fail anyway.
+                         "ext/gd/tests/bug72482.phpt"
+                         "ext/gd/tests/bug72482_2.phpt"
+                         "ext/gd/tests/bug73213.phpt"
+                         ;; Test expects generic "gd warning" but gets the actual function name.
+                         "ext/gd/tests/createfromwbmp2_extern.phpt"
+                         ;; TODO: Enable these when libgd is built with xpm support.
+                         "ext/gd/tests/xpm2gd.phpt"
+                         "ext/gd/tests/xpm2jpg.phpt"
+                         "ext/gd/tests/xpm2png.phpt"
+
+                         ;; XXX: These iconv tests have the expected outcome,
+                         ;; but with different error messages.
+                         ;; Expects "illegal character", instead gets "unknown error (84)".
+                         "ext/iconv/tests/bug52211.phpt"
+                         ;; Expects "wrong charset", gets unknown error (22).
+                         "ext/iconv/tests/iconv_mime_decode_variation3.phpt"
+                         "ext/iconv/tests/iconv_strlen_error2.phpt"
+                         "ext/iconv/tests/iconv_strlen_variation2.phpt"
+                         "ext/iconv/tests/iconv_substr_error2.phpt"
+                         ;; Expects conversion error, gets "error condition Termsig=11".
+                         "ext/iconv/tests/iconv_strpos_error2.phpt"
+                         "ext/iconv/tests/iconv_strrpos_error2.phpt"
+                         ;; Similar, but iterating over multiple values.
+                         ;; iconv breaks the loop after the first error with Termsig=11.
+                         "ext/iconv/tests/iconv_strpos_variation4.phpt"
+                         "ext/iconv/tests/iconv_strrpos_variation3.phpt"
+
+                         ;; XXX: These test failures appear legitimate, needs investigation.
+                         ;; open_basedir() restriction failure.
+                         "ext/curl/tests/bug61948.phpt"
+                         ;; Expects a false boolean, gets empty array from glob().
+                         "ext/standard/tests/file/bug41655_1.phpt"
+                         "ext/standard/tests/file/glob_variation5.phpt"
+                         ;; Test output is correct, but in wrong order.
+                         "ext/standard/tests/streams/proc_open_bug64438.phpt"
+                         ;; The test expects an Array, but instead get the contents(?).
+                         "ext/gd/tests/bug43073.phpt"
+                         ;; imagettftext() returns wrong coordinates.
+                         "ext/gd/tests/bug48732.phpt"
+                         ;; Similarly for imageftbbox().
+                         "ext/gd/tests/bug48801.phpt"
+                         ;; Different expected output from imagecolorallocate().
+                         "ext/gd/tests/bug53504.phpt"
+                         ;; Wrong chunk count after unpacking a value from imagegd2().
+                         "ext/gd/tests/bug73155.phpt"
+                         ;; Wrong format after unpacking a value from imagegd2().
+                         "ext/gd/tests/bug73159.phpt"
+                         ;; Wrong image size after scaling an image.
+                         "ext/gd/tests/bug73272.phpt"
+                         ;; Expects iconv to detect illegal characters, instead gets
+                         ;; "unknown error (84)" and heap corruption(!).
+                         "ext/iconv/tests/bug48147.phpt"
+                         ;; Expects illegal character ".", gets "=?utf-8?Q?."
+                         "ext/iconv/tests/bug51250.phpt"
+                         ;; @iconv() does not return expected output.
+                         "ext/iconv/tests/iconv003.phpt"
+                         ;; iconv throws "buffer length exceeded" on some string checks.
+                         "ext/iconv/tests/iconv_mime_encode.phpt"
+                         ;; file_get_contents(): iconv stream filter
+                         ;; ("ISO-8859-1"=>"UTF-8") unknown error.
+                         "ext/standard/tests/file/bug43008.phpt"
+                         ;; Table data not created in sqlite?
+                         "ext/pdo_sqlite/tests/bug_42589.phpt"
+                         ;; Seems unable to delete from a table here.
+                         "ext/sqlite3/tests/bug73068.phpt"))
+
+             ;; Skip tests requiring network access.
+             (setenv "SKIP_ONLINE_TESTS" "1")
+             ;; Without this variable, `make test' passes regardless of failures.
+             (setenv "REPORT_EXIT_STATUS" "1")
+             #t)))
+       #:test-target "test"))
+    (inputs
+     `(("aspell" ,aspell)
+       ("bzip2" ,bzip2)
+       ("curl" ,curl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("freetype" ,freetype)
+       ("gd" ,gd)
+       ("gdbm" ,gdbm)
+       ("glibc" ,glibc)
+       ("gmp" ,gmp)
+       ("libgcrypt" ,libgcrypt)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libwebp" ,libwebp)
+       ("libxml2" ,libxml2)
+       ("libxpm" ,libxpm)
+       ("libxslt" ,libxslt)
+       ("libx11" ,libx11)
+       ("oniguruma" ,oniguruma)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("postgresql" ,postgresql)
+       ("readline" ,readline)
+       ("sqlite" ,sqlite)
+       ("tidy" ,tidy)
+       ("zip" ,zip)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("bison" ,bison)
+       ("intltool" ,intltool)
+       ("procps" ,procps)))         ; For tests.
+    (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")       ; The PHP license.
+              (license:non-copyleft "file://Zend/LICENSE")  ; The Zend license.
+              license:lgpl2.1                               ; ext/mbstring/libmbfl
+              license:lgpl2.1+                              ; ext/bcmath/libbcmath
+              license:bsd-2                                 ; ext/fileinfo/libmagic
+              license:expat))))                             ; ext/date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17  0:01                       ` Marius Bakke
@ 2016-11-17 10:22                         ` Hartmut Goebel
  2016-11-17 19:38                           ` Julien Lepiller
  2016-11-17 11:08                         ` tyreunom
  1 sibling, 1 reply; 28+ messages in thread
From: Hartmut Goebel @ 2016-11-17 10:22 UTC (permalink / raw)
  To: guix-devel

Am 17.11.2016 um 01:01 schrieb Marius Bakke:
> If there are no further comments, I will push this in the next few days:

Thanks for your work on this. It seems to be laborious.

I don't have time to inspect not to test the patch, so just some
thought. I'm not a php-user, but wanted to install a php-driven website
on Guix some weeks ago and had a look on what else would be required.

  * Does this php package include what other distributions call
    "php-cli", "php-fpm" and "php-cgi"? Maybe you want to mention it in
    the synopsis. (Addendum: I just found in
    <https://packages.debian.org/source/jessie/php5> that it looks like
    these are part of the package.)
  * As far as I understood, "pear" and "pecl" are important for
    installing php packages. Are these part of your package, too?


  * What do you think about adding "Packaging guideline" for "PHP
    Modules" section to the manual?
  * Do yo think we need some php build system?


-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17  0:01                       ` Marius Bakke
  2016-11-17 10:22                         ` Hartmut Goebel
@ 2016-11-17 11:08                         ` tyreunom
  2016-11-17 12:27                           ` Ludovic Courtès
  2016-11-17 18:22                           ` Marius Bakke
  1 sibling, 2 replies; 28+ messages in thread
From: tyreunom @ 2016-11-17 11:08 UTC (permalink / raw)
  To: guix-devel

Le 2016-11-17 01:01, Marius Bakke a écrit :
> Ludovic Courtès <ludo@gnu.org> writes:
> 
>> Marius Bakke <mbakke@fastmail.com> skribis:
>> 
>>> Some failures are indeed due to missing network or programs in the 
>>> build
>>> environment. I tried patching a few just now, but unfortunately some
>>> files are in a format apparently not supported by Guile!
>>> 
>>>  870: 5 [call-with-input-file "ext/mbstring/tests/bug26639.phpt" ...]
>>> In 
>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/build/utils.scm:
>>>  556: 4 [#<procedure 16a6440 at 
>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
>>> d/utils.scm:555:10 (in)> #<input: ext/mbstring/tests/bug26639.phpt 
>>> 11>]
>>>  592: 3 [#<procedure 1798aa0 at 
>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
>>> d/utils.scm:578:6 (in out)> #<input: ext/mbstring/tests/bug26639.phpt 
>>> 11> ...]
>>> In ice-9/rdelim.scm:
>>>  188: 2 [read-line #<input: ext/mbstring/tests/bug26639.phpt 11> 
>>> concat]
>>> In unknown file:
>>>    ?: 1 [%read-line #<input: ext/mbstring/tests/bug26639.phpt 11>]
>>> In ice-9/boot-9.scm:
>>>  109: 0 [#<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . 
>>> args)> decoding-error ...]
>>> 
>>> ice-9/boot-9.scm:109:20: In procedure #<procedure 16a6480 at 
>>> ice-9/boot-9.scm:100:6 (thrown-k . arg
>>> s)>:
>>> ice-9/boot-9.scm:109:20: Throw to key `decoding-error' with args 
>>> `("scm_getc" "input decoding error
>>> " 84 #<input: ext/mbstring/tests/bug26639.phpt 11>)'.
>>> 
>>> `file` reports: ext/mbstring/tests/bug26639.phpt: Non-ISO 
>>> extended-ASCII text
>> 
>> Presumably this is ‘substitute*’ failing to read the file.
>> 
>> ‘substitute*’ expects input files to be UTF-8-encoded; when this is 
>> not
>> the case, you need to bind ‘%default-port-encoding’ to whatever is the
>> right encoding or #f for the catch-all ISO-8859-1.  See
>> ‘gettext-minimal’ for an example.
> 
> Thank you! That was exactly what I needed.
> 
> Unfortunately that only fixed a handful of tests, the remaining
> 50-something had to be disabled for a variety of reasons.
> 
> I've added a commentary to each disabled test. If you recognize any of
> these errors/think you know what's going on, please update the patch.
> It would be nice to know if the iconv and gd stuff is expected, and if
> the two sqlite tests can really be ignored. The curl one is strange 
> too.

Just as I wanted to send a similar patch ;)

I've been looking at some of them. The failing sqlite test is a bug in 
sqlite that has been fixed last august 
(https://sqlite.org/src/info/ef360601). We currently have version 
3.14.1, when the latest upstream version is 3.15.1. Updating should fix 
the problem.

73159 has been fixed in gd: https://github.com/libgd/libgd/issues/289 
(more recent than latest gd release unfortunately)

73155 has also been fixed in gd: 
https://github.com/libgd/libgd/issues/309 (even more recent)

72482 is fixed here: 
https://gist.github.com/anonymous/873314feb4f89bd8336711333299f748 (a 
patch to the bundled libgd)

73213 is fixed here: 
https://git.php.net/?p=php-src.git;a=blobdiff;f=ext/gd/libgd/gd.c;h=033d4fa5f0e9740e8b8c397a9038a115c617c419;hp=0b4b42fa27558fa32cc54e14dc297d9d0ba10832;hb=9acfb1a3a5268febb123b7e5fbd4eaf072c83537;hpb=c0219b323e0048440acbdd9ad74624c4bc33c335 
(a patch to the bundled libgd)

72339 has a CVE id: 2016-5766, but it should be fixed in libgd 2.2.3 
that we have according to the CVE description, and the failure is 
different from what the report says.

39780 has the unexpected output described in the bug report, so it 
really fails. I don't think we can fix our libgd though, because the 
bundled one has some php_* functions that are used to get a warning 
instead of an error.

we could include patches to our libgd to fix two (maybe four) issues. We 
should also upgrade our sqlite version, but many packages will then have 
to be rebuilt, or we could create a separate package for the newer 
version. What do you suggest?

> 
> If there are no further comments, I will push this in the next few 
> days:

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17 11:08                         ` tyreunom
@ 2016-11-17 12:27                           ` Ludovic Courtès
  2016-11-17 18:22                           ` Marius Bakke
  1 sibling, 0 replies; 28+ messages in thread
From: Ludovic Courtès @ 2016-11-17 12:27 UTC (permalink / raw)
  To: tyreunom; +Cc: guix-devel

Hello!

tyreunom <tyreunom@lepiller.eu> skribis:

> we could include patches to our libgd to fix two (maybe four)
> issues. We should also upgrade our sqlite version, but many packages
> will then have to be rebuilt, or we could create a separate package
> for the newer version. What do you suggest?

Until we upgrade ‘gd’ (that’d be in ‘staging’), we can always have a gd
variant that includes all the relevant fixes and use this variant for
PHP.

Ludo’.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17 11:08                         ` tyreunom
  2016-11-17 12:27                           ` Ludovic Courtès
@ 2016-11-17 18:22                           ` Marius Bakke
  2016-11-17 19:34                             ` Julien Lepiller
  1 sibling, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-11-17 18:22 UTC (permalink / raw)
  To: tyreunom, guix-devel

[-- Attachment #1: Type: text/plain, Size: 5051 bytes --]

tyreunom <tyreunom@lepiller.eu> writes:

> Le 2016-11-17 01:01, Marius Bakke a écrit :
>> Ludovic Courtès <ludo@gnu.org> writes:
>> 
>>> Marius Bakke <mbakke@fastmail.com> skribis:
>>> 
>>>> Some failures are indeed due to missing network or programs in the 
>>>> build
>>>> environment. I tried patching a few just now, but unfortunately some
>>>> files are in a format apparently not supported by Guile!
>>>> 
>>>>  870: 5 [call-with-input-file "ext/mbstring/tests/bug26639.phpt" ...]
>>>> In 
>>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/build/utils.scm:
>>>>  556: 4 [#<procedure 16a6440 at 
>>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
>>>> d/utils.scm:555:10 (in)> #<input: ext/mbstring/tests/bug26639.phpt 
>>>> 11>]
>>>>  592: 3 [#<procedure 1798aa0 at 
>>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
>>>> d/utils.scm:578:6 (in out)> #<input: ext/mbstring/tests/bug26639.phpt 
>>>> 11> ...]
>>>> In ice-9/rdelim.scm:
>>>>  188: 2 [read-line #<input: ext/mbstring/tests/bug26639.phpt 11> 
>>>> concat]
>>>> In unknown file:
>>>>    ?: 1 [%read-line #<input: ext/mbstring/tests/bug26639.phpt 11>]
>>>> In ice-9/boot-9.scm:
>>>>  109: 0 [#<procedure 16a6480 at ice-9/boot-9.scm:100:6 (thrown-k . 
>>>> args)> decoding-error ...]
>>>> 
>>>> ice-9/boot-9.scm:109:20: In procedure #<procedure 16a6480 at 
>>>> ice-9/boot-9.scm:100:6 (thrown-k . arg
>>>> s)>:
>>>> ice-9/boot-9.scm:109:20: Throw to key `decoding-error' with args 
>>>> `("scm_getc" "input decoding error
>>>> " 84 #<input: ext/mbstring/tests/bug26639.phpt 11>)'.
>>>> 
>>>> `file` reports: ext/mbstring/tests/bug26639.phpt: Non-ISO 
>>>> extended-ASCII text
>>> 
>>> Presumably this is ‘substitute*’ failing to read the file.
>>> 
>>> ‘substitute*’ expects input files to be UTF-8-encoded; when this is 
>>> not
>>> the case, you need to bind ‘%default-port-encoding’ to whatever is the
>>> right encoding or #f for the catch-all ISO-8859-1.  See
>>> ‘gettext-minimal’ for an example.
>> 
>> Thank you! That was exactly what I needed.
>> 
>> Unfortunately that only fixed a handful of tests, the remaining
>> 50-something had to be disabled for a variety of reasons.
>> 
>> I've added a commentary to each disabled test. If you recognize any of
>> these errors/think you know what's going on, please update the patch.
>> It would be nice to know if the iconv and gd stuff is expected, and if
>> the two sqlite tests can really be ignored. The curl one is strange 
>> too.
>
> Just as I wanted to send a similar patch ;)
>
> I've been looking at some of them. The failing sqlite test is a bug in 
> sqlite that has been fixed last august 
> (https://sqlite.org/src/info/ef360601). We currently have version 
> 3.14.1, when the latest upstream version is 3.15.1. Updating should fix 
> the problem.
>
> 73159 has been fixed in gd: https://github.com/libgd/libgd/issues/289 
> (more recent than latest gd release unfortunately)
>
> 73155 has also been fixed in gd: 
> https://github.com/libgd/libgd/issues/309 (even more recent)
>
> 72482 is fixed here: 
> https://gist.github.com/anonymous/873314feb4f89bd8336711333299f748 (a 
> patch to the bundled libgd)
>
> 73213 is fixed here: 
> https://git.php.net/?p=php-src.git;a=blobdiff;f=ext/gd/libgd/gd.c;h=033d4fa5f0e9740e8b8c397a9038a115c617c419;hp=0b4b42fa27558fa32cc54e14dc297d9d0ba10832;hb=9acfb1a3a5268febb123b7e5fbd4eaf072c83537;hpb=c0219b323e0048440acbdd9ad74624c4bc33c335 
> (a patch to the bundled libgd)
>
> 72339 has a CVE id: 2016-5766, but it should be fixed in libgd 2.2.3 
> that we have according to the CVE description, and the failure is 
> different from what the report says.
>
> 39780 has the unexpected output described in the bug report, so it 
> really fails. I don't think we can fix our libgd though, because the 
> bundled one has some php_* functions that are used to get a warning 
> instead of an error.
>
> we could include patches to our libgd to fix two (maybe four) issues. We 
> should also upgrade our sqlite version, but many packages will then have 
> to be rebuilt, or we could create a separate package for the newer 
> version. What do you suggest?

Wow, thanks for this list! Including the two upstream gd fixes in a
"gd-for-php" package should be fine, until a new release of gd is out.
I'm more vary about including the PHP-specific ones though.

If there are serious problems with using an external (vanilla) gd, I
think we either need to maintain a "gd-for-php" package indefinitely, or
bite the bullet and use the bundled one.

Do you think it's safe to use our gd? And if not, would you be willing
to keep up with PHP development and maintain the externalized gd
component with it?

I've confirmed that using a newer sqlite fixes the sqlite test, thanks
for that. I will submit a "sqlite-3.15.1" package with this patch, and
make sure it's updated in the next 'core-updates' cycle.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17 18:22                           ` Marius Bakke
@ 2016-11-17 19:34                             ` Julien Lepiller
  2016-11-17 20:43                               ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Julien Lepiller @ 2016-11-17 19:34 UTC (permalink / raw)
  To: guix-devel

On Thu, 17 Nov 2016 19:22:48 +0100
Marius Bakke <mbakke@fastmail.com> wrote:

> tyreunom <tyreunom@lepiller.eu> writes:
> 
> > Le 2016-11-17 01:01, Marius Bakke a écrit :  
> >> Ludovic Courtès <ludo@gnu.org> writes:
> >>   
> >>> Marius Bakke <mbakke@fastmail.com> skribis:
> >>>   
> >>>> Some failures are indeed due to missing network or programs in
> >>>> the build
> >>>> environment. I tried patching a few just now, but unfortunately
> >>>> some files are in a format apparently not supported by Guile!
> >>>> 
> >>>>  870: 5 [call-with-input-file
> >>>> "ext/mbstring/tests/bug26639.phpt" ...] In 
> >>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/build/utils.scm:
> >>>>  556: 4 [#<procedure 16a6440 at 
> >>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
> >>>> d/utils.scm:555:10 (in)> #<input:
> >>>> ext/mbstring/tests/bug26639.phpt   
> >>>> 11>]  
> >>>>  592: 3 [#<procedure 1798aa0 at 
> >>>> /gnu/store/ciqw5z470c8ihl1kfswj1j3ix6hs092d-module-import/guix/buil
> >>>> d/utils.scm:578:6 (in out)> #<input:
> >>>> ext/mbstring/tests/bug26639.phpt   
> >>>> 11> ...]  
> >>>> In ice-9/rdelim.scm:
> >>>>  188: 2 [read-line #<input: ext/mbstring/tests/bug26639.phpt 11> 
> >>>> concat]
> >>>> In unknown file:
> >>>>    ?: 1 [%read-line #<input: ext/mbstring/tests/bug26639.phpt
> >>>> 11>] In ice-9/boot-9.scm:
> >>>>  109: 0 [#<procedure 16a6480 at ice-9/boot-9.scm:100:6
> >>>> (thrown-k . args)> decoding-error ...]  
> >>>> 
> >>>> ice-9/boot-9.scm:109:20: In procedure #<procedure 16a6480 at 
> >>>> ice-9/boot-9.scm:100:6 (thrown-k . arg  
> >>>> s)>:  
> >>>> ice-9/boot-9.scm:109:20: Throw to key `decoding-error' with args 
> >>>> `("scm_getc" "input decoding error
> >>>> " 84 #<input: ext/mbstring/tests/bug26639.phpt 11>)'.
> >>>> 
> >>>> `file` reports: ext/mbstring/tests/bug26639.phpt: Non-ISO 
> >>>> extended-ASCII text  
> >>> 
> >>> Presumably this is ‘substitute*’ failing to read the file.
> >>> 
> >>> ‘substitute*’ expects input files to be UTF-8-encoded; when this
> >>> is not
> >>> the case, you need to bind ‘%default-port-encoding’ to whatever
> >>> is the right encoding or #f for the catch-all ISO-8859-1.  See
> >>> ‘gettext-minimal’ for an example.  
> >> 
> >> Thank you! That was exactly what I needed.
> >> 
> >> Unfortunately that only fixed a handful of tests, the remaining
> >> 50-something had to be disabled for a variety of reasons.
> >> 
> >> I've added a commentary to each disabled test. If you recognize
> >> any of these errors/think you know what's going on, please update
> >> the patch. It would be nice to know if the iconv and gd stuff is
> >> expected, and if the two sqlite tests can really be ignored. The
> >> curl one is strange too.  
> >
> > Just as I wanted to send a similar patch ;)
> >
> > I've been looking at some of them. The failing sqlite test is a bug
> > in sqlite that has been fixed last august 
> > (https://sqlite.org/src/info/ef360601). We currently have version 
> > 3.14.1, when the latest upstream version is 3.15.1. Updating should
> > fix the problem.
> >
> > 73159 has been fixed in gd:
> > https://github.com/libgd/libgd/issues/289 (more recent than latest
> > gd release unfortunately)
> >
> > 73155 has also been fixed in gd: 
> > https://github.com/libgd/libgd/issues/309 (even more recent)
> >
> > 72482 is fixed here: 
> > https://gist.github.com/anonymous/873314feb4f89bd8336711333299f748
> > (a patch to the bundled libgd)
> >
> > 73213 is fixed here: 
> > https://git.php.net/?p=php-src.git;a=blobdiff;f=ext/gd/libgd/gd.c;h=033d4fa5f0e9740e8b8c397a9038a115c617c419;hp=0b4b42fa27558fa32cc54e14dc297d9d0ba10832;hb=9acfb1a3a5268febb123b7e5fbd4eaf072c83537;hpb=c0219b323e0048440acbdd9ad74624c4bc33c335 
> > (a patch to the bundled libgd)
> >
> > 72339 has a CVE id: 2016-5766, but it should be fixed in libgd
> > 2.2.3 that we have according to the CVE description, and the
> > failure is different from what the report says.
> >
> > 39780 has the unexpected output described in the bug report, so it 
> > really fails. I don't think we can fix our libgd though, because
> > the bundled one has some php_* functions that are used to get a
> > warning instead of an error.
> >
> > we could include patches to our libgd to fix two (maybe four)
> > issues. We should also upgrade our sqlite version, but many
> > packages will then have to be rebuilt, or we could create a
> > separate package for the newer version. What do you suggest?  
> 
> Wow, thanks for this list! Including the two upstream gd fixes in a
> "gd-for-php" package should be fine, until a new release of gd is out.
> I'm more vary about including the PHP-specific ones though.
> 
> If there are serious problems with using an external (vanilla) gd, I
> think we either need to maintain a "gd-for-php" package indefinitely,
> or bite the bullet and use the bundled one.
> 
> Do you think it's safe to use our gd? And if not, would you be willing
> to keep up with PHP development and maintain the externalized gd
> component with it?

Failures in tests caused by external gd are not too serious to require
us to switch to the bundled one I think. We may not even need to patch
our libgd with php specific patches, since the failures are only slight
deviation from the spec on corner cases. If you prefer that we apply
these patches too, then we could, and I would still try to keep that up
to date.

What I am more worried about are the iconv crashes. That may be due to
lacking locales though.

> 
> I've confirmed that using a newer sqlite fixes the sqlite test, thanks
> for that. I will submit a "sqlite-3.15.1" package with this patch, and
> make sure it's updated in the next 'core-updates' cycle.

Cool, thanks :)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17 10:22                         ` Hartmut Goebel
@ 2016-11-17 19:38                           ` Julien Lepiller
  0 siblings, 0 replies; 28+ messages in thread
From: Julien Lepiller @ 2016-11-17 19:38 UTC (permalink / raw)
  To: guix-devel

On Thu, 17 Nov 2016 11:22:53 +0100
Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:

> Am 17.11.2016 um 01:01 schrieb Marius Bakke:
> > If there are no further comments, I will push this in the next few
> > days:  
> 
> Thanks for your work on this. It seems to be laborious.
> 
> I don't have time to inspect not to test the patch, so just some
> thought. I'm not a php-user, but wanted to install a php-driven
> website on Guix some weeks ago and had a look on what else would be
> required.
> 
>   * Does this php package include what other distributions call
>     "php-cli", "php-fpm" and "php-cgi"? Maybe you want to mention it
> in the synopsis. (Addendum: I just found in
>     <https://packages.debian.org/source/jessie/php5> that it looks
> like these are part of the package.)
>   * As far as I understood, "pear" and "pecl" are important for
>     installing php packages. Are these part of your package, too?

The package contains the following executables in sbin and bin:
php-fpm  pear  peardev  pecl  phar  phar.phar  php  php-cgi  php-config
phpdbg  phpize

> 
> 
>   * What do you think about adding "Packaging guideline" for "PHP
>     Modules" section to the manual?
>   * Do yo think we need some php build system?
I have no idea how system-wide php packages could be installed, so I
can't answer that (yet?). Sorry.

> 
> 

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17 19:34                             ` Julien Lepiller
@ 2016-11-17 20:43                               ` Marius Bakke
  2016-11-18 17:25                                 ` Julien Lepiller
  0 siblings, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-11-17 20:43 UTC (permalink / raw)
  To: Julien Lepiller, guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 4017 bytes --]

Julien Lepiller <julien@lepiller.eu> writes:

>> >> Unfortunately that only fixed a handful of tests, the remaining
>> >> 50-something had to be disabled for a variety of reasons.
>> >> 
>> >> I've added a commentary to each disabled test. If you recognize
>> >> any of these errors/think you know what's going on, please update
>> >> the patch. It would be nice to know if the iconv and gd stuff is
>> >> expected, and if the two sqlite tests can really be ignored. The
>> >> curl one is strange too.  
>> >
>> > Just as I wanted to send a similar patch ;)
>> >
>> > I've been looking at some of them. The failing sqlite test is a bug
>> > in sqlite that has been fixed last august 
>> > (https://sqlite.org/src/info/ef360601). We currently have version 
>> > 3.14.1, when the latest upstream version is 3.15.1. Updating should
>> > fix the problem.
>> >
>> > 73159 has been fixed in gd:
>> > https://github.com/libgd/libgd/issues/289 (more recent than latest
>> > gd release unfortunately)
>> >
>> > 73155 has also been fixed in gd: 
>> > https://github.com/libgd/libgd/issues/309 (even more recent)
>> >
>> > 72482 is fixed here: 
>> > https://gist.github.com/anonymous/873314feb4f89bd8336711333299f748
>> > (a patch to the bundled libgd)
>> >
>> > 73213 is fixed here: 
>> > https://git.php.net/?p=php-src.git;a=blobdiff;f=ext/gd/libgd/gd.c;h=033d4fa5f0e9740e8b8c397a9038a115c617c419;hp=0b4b42fa27558fa32cc54e14dc297d9d0ba10832;hb=9acfb1a3a5268febb123b7e5fbd4eaf072c83537;hpb=c0219b323e0048440acbdd9ad74624c4bc33c335 
>> > (a patch to the bundled libgd)
>> >
>> > 72339 has a CVE id: 2016-5766, but it should be fixed in libgd
>> > 2.2.3 that we have according to the CVE description, and the
>> > failure is different from what the report says.
>> >
>> > 39780 has the unexpected output described in the bug report, so it 
>> > really fails. I don't think we can fix our libgd though, because
>> > the bundled one has some php_* functions that are used to get a
>> > warning instead of an error.
>> >
>> > we could include patches to our libgd to fix two (maybe four)
>> > issues. We should also upgrade our sqlite version, but many
>> > packages will then have to be rebuilt, or we could create a
>> > separate package for the newer version. What do you suggest?  
>> 
>> Wow, thanks for this list! Including the two upstream gd fixes in a
>> "gd-for-php" package should be fine, until a new release of gd is out.
>> I'm more vary about including the PHP-specific ones though.
>> 
>> If there are serious problems with using an external (vanilla) gd, I
>> think we either need to maintain a "gd-for-php" package indefinitely,
>> or bite the bullet and use the bundled one.
>> 
>> Do you think it's safe to use our gd? And if not, would you be willing
>> to keep up with PHP development and maintain the externalized gd
>> component with it?
>
> Failures in tests caused by external gd are not too serious to require
> us to switch to the bundled one I think. We may not even need to patch
> our libgd with php specific patches, since the failures are only slight
> deviation from the spec on corner cases. If you prefer that we apply
> these patches too, then we could, and I would still try to keep that up
> to date.

OK. Let's use external gd for now barring any serious issues.

>
> What I am more worried about are the iconv crashes. That may be due to
> lacking locales though.

You could try commenting them out and adding "glibc-locales" to
native-inputs. Not sure if they will get picked up by that however.

A better test may be to try out that particular functionality using the
installed version of php. If that works, we can be reasonably sure that
dropping the tests is fine.

Attached is the final product, after adding a "gd-for-php" variable with
the two upstream patches, as well as sqlite-3.15.1 (separate patch).

I'll push this tomorrow if there are no further comments. Thanks for
your perseverance :)


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

[-- Attachment #2: php.patch --]
[-- Type: text/x-patch, Size: 28191 bytes --]

From ae98ee11b6eb2e0feb79c735497b8647ebf80d6f Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 17 Nov 2016 18:53:10 +0100
Subject: [PATCH 1/2] gnu: Add sqlite-3.15.1.

* gnu/packages/databases.scm (sqlite-3.15.1): New variable.
---
 gnu/packages/databases.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index ab9c6d6..d6746f0 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -558,6 +558,26 @@ widely deployed SQL database engine in the world.  The source code for SQLite
 is in the public domain.")
    (license public-domain)))
 
+(define-public sqlite-3.15.1
+  (package (inherit sqlite)
+           (version "3.15.1")
+           (source (origin
+                     (method url-fetch)
+                     (uri (let ((numeric-version
+                                 (match (string-split version #\.)
+                                   ((first-digit other-digits ...)
+                                    (string-append first-digit
+                                                   (string-pad-right
+                                                    (string-concatenate
+                                                     (map (cut string-pad <> 2 #\0)
+                                                          other-digits))
+                                                    6 #\0))))))
+                            (string-append "https://sqlite.org/2016/sqlite-autoconf-"
+                                           numeric-version ".tar.gz")))
+                     (sha256
+                      (base32
+                       "1ig2d9jzzixiifmgqsl6kjcvy17jwxby3s24gfnc5qvyd6vqkyjx"))))))
+
 (define-public tdb
   (package
     (name "tdb")
-- 
2.10.2


From ff314d0b0646d0d3e5e371886eab69b28f9ef879 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Fri, 11 Nov 2016 15:18:29 +0100
Subject: [PATCH 2/2] gnu: Add php.

* gnu/packages/php.scm: New file.
* gnu/packages/patches/gd-fix-chunk-size-on-boundaries.patch: New file.
* gnu/packages/patches/gd-fix-truecolor-format-correction.patch: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add php.
(dist_patch_DATA): Add gd patches.

Co-authored-by: Marius Bakke <mbakke@fastmail.com>
---
 gnu/local.mk                                       |   3 +
 .../patches/gd-fix-chunk-size-on-boundaries.patch  | 102 +++++++
 .../gd-fix-truecolor-format-correction.patch       |  95 ++++++
 gnu/packages/php.scm                               | 334 +++++++++++++++++++++
 4 files changed, 534 insertions(+)
 create mode 100644 gnu/packages/patches/gd-fix-chunk-size-on-boundaries.patch
 create mode 100644 gnu/packages/patches/gd-fix-truecolor-format-correction.patch
 create mode 100644 gnu/packages/php.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ff8586e..6a472e1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -295,6 +295,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pem.scm				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
+  %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
@@ -551,8 +552,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-6-cross-environment-variables.patch	\
   %D%/packages/patches/gd-CVE-2016-7568.patch			\
   %D%/packages/patches/gd-CVE-2016-8670.patch			\
+  %D%/packages/patches/gd-fix-chunk-size-on-boundaries.patch	\
   %D%/packages/patches/gd-fix-gd2-read-test.patch		\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
+  %D%/packages/patches/gd-fix-truecolor-format-correction.patch	\
   %D%/packages/patches/gegl-CVE-2012-4433.patch			\
   %D%/packages/patches/geoclue-config.patch			\
   %D%/packages/patches/ghostscript-CVE-2013-5653.patch		\
diff --git a/gnu/packages/patches/gd-fix-chunk-size-on-boundaries.patch b/gnu/packages/patches/gd-fix-chunk-size-on-boundaries.patch
new file mode 100644
index 0000000..e395c66
--- /dev/null
+++ b/gnu/packages/patches/gd-fix-chunk-size-on-boundaries.patch
@@ -0,0 +1,102 @@
+This fixes PHP bug #73155: https://bugs.php.net/bug.php?id=73155
+
+Patch adapted from upstream source repository:
+
+https://github.com/libgd/libgd/commit/8067a8ac336dfe0acbe96ec2eb24572209a7f279
+
+(.gitignore change removed)
+
+From 8067a8ac336dfe0acbe96ec2eb24572209a7f279 Mon Sep 17 00:00:00 2001
+From: "Christoph M. Becker" <cmbecker69@gmx.de>
+Date: Fri, 23 Sep 2016 18:29:52 +0200
+Subject: [PATCH] Fix #309: gdImageGd2() writes wrong chunk sizes on boundaries
+
+(cherry picked from commit bb1998a16e30d542ab22eba5501911a9aa066edb)
+---
+ src/gd_gd2.c             |  4 ++--
+ tests/gd2/CMakeLists.txt |  1 +
+ tests/gd2/Makemodule.am  |  1 +
+ tests/gd2/bug00309.c     | 37 +++++++++++++++++++++++++++++++++++++
+ 4 files changed, 41 insertions(+), 2 deletions(-)
+ create mode 100644 tests/gd2/bug00309.c
+
+diff --git a/src/gd_gd2.c b/src/gd_gd2.c
+index 75e5e1f..b9b2f93 100644
+--- a/src/gd_gd2.c
++++ b/src/gd_gd2.c
+@@ -938,8 +938,8 @@ _gdImageGd2 (gdImagePtr im, gdIOCtx * out, int cs, int fmt)
+ 	};
+ 
+ 	/* Work out number of chunks. */
+-	ncx = im->sx / cs + 1;
+-	ncy = im->sy / cs + 1;
++	ncx = (im->sx + cs - 1) / cs;
++	ncy = (im->sy + cs - 1) / cs;
+ 
+ 	/* Write the standard header. */
+ 	_gd2PutHeader (im, out, cs, fmt, ncx, ncy);
+diff --git a/tests/gd2/CMakeLists.txt b/tests/gd2/CMakeLists.txt
+index 3b650ad..247b466 100644
+--- a/tests/gd2/CMakeLists.txt
++++ b/tests/gd2/CMakeLists.txt
+@@ -1,5 +1,6 @@
+ SET(TESTS_FILES
+ 	bug_289
++	bug00309
+ 	gd2_empty_file
+ 	gd2_im2im
+ 	gd2_null
+diff --git a/tests/gd2/Makemodule.am b/tests/gd2/Makemodule.am
+index b8ee946..d69aee0 100644
+--- a/tests/gd2/Makemodule.am
++++ b/tests/gd2/Makemodule.am
+@@ -1,5 +1,6 @@
+ libgd_test_programs += \
+ 	gd2/bug_289 \
++	gd2/bug00309 \
+ 	gd2/gd2_empty_file \
+ 	gd2/php_bug_72339 \
+ 	gd2/gd2_read_corrupt
+diff --git a/tests/gd2/bug00309.c b/tests/gd2/bug00309.c
+new file mode 100644
+index 0000000..b649cdc
+--- /dev/null
++++ b/tests/gd2/bug00309.c
+@@ -0,0 +1,37 @@
++/**
++ * Regression test for <https://github.com/libgd/libgd/issues/309>.
++ *
++ * We test that an image with 64x64 pixels reports only a single chunk in the
++ * GD2 image header when the chunk size is 64.
++ */
++
++
++#include "gd.h"
++#include "gdtest.h"
++
++
++int main()
++{
++    gdImagePtr im;
++    unsigned char *buf;
++    int size, word;
++
++    im = gdImageCreate(64, 64);
++    gdImageColorAllocate(im, 0, 0, 0);
++
++    buf = gdImageGd2Ptr(im, 64, 1, &size);
++
++    gdImageDestroy(im);
++
++    word = buf[10] << 8 | buf[11];
++    gdTestAssertMsg(word == 64, "chunk size is %d, but expected 64\n", word);
++    word = buf[14] << 8 | buf[15];
++    gdTestAssertMsg(word == 1, "x chunk count is %d, but expected 1\n", word);
++    word = buf[16] << 8 | buf[17];
++    gdTestAssertMsg(word == 1, "y chunk count is %d, but expected 1\n", word);
++    gdTestAssertMsg(size == 5145, "file size is %d, but expected 5145\n", size);
++
++    gdFree(buf);
++
++    return gdNumFailures();
++}
diff --git a/gnu/packages/patches/gd-fix-truecolor-format-correction.patch b/gnu/packages/patches/gd-fix-truecolor-format-correction.patch
new file mode 100644
index 0000000..be3eff9
--- /dev/null
+++ b/gnu/packages/patches/gd-fix-truecolor-format-correction.patch
@@ -0,0 +1,95 @@
+This fixes PHP bug #73159: https://bugs.php.net/bug.php?id=73159
+
+Patch lifted from upstream source repository:
+
+https://github.com/libgd/libgd/commit/e1f61a4141d2e0937a13b8bfb1992b9f29eb05f5
+
+From e1f61a4141d2e0937a13b8bfb1992b9f29eb05f5 Mon Sep 17 00:00:00 2001
+From: "Christoph M. Becker" <cmbecker69@gmx.de>
+Date: Mon, 15 Aug 2016 17:49:40 +0200
+Subject: [PATCH] Fix #289: Passing unrecognized formats to gdImageGd2 results
+ in corrupted files
+
+We must not apply the format correction twice for truecolor images.
+
+(cherry picked from commit 09090c125658e23a4ae2a2e002646bb7278bd89e)
+---
+ src/gd_gd2.c             |  2 +-
+ tests/gd2/CMakeLists.txt |  1 +
+ tests/gd2/Makemodule.am  |  1 +
+ tests/gd2/bug_289.c      | 33 +++++++++++++++++++++++++++++++++
+ 4 files changed, 36 insertions(+), 1 deletion(-)
+ create mode 100644 tests/gd2/bug_289.c
+
+diff --git a/src/gd_gd2.c b/src/gd_gd2.c
+index 86c881e..75e5e1f 100644
+--- a/src/gd_gd2.c
++++ b/src/gd_gd2.c
+@@ -918,7 +918,7 @@ _gdImageGd2 (gdImagePtr im, gdIOCtx * out, int cs, int fmt)
+ 	/* Force fmt to a valid value since we don't return anything. */
+ 	/* */
+ 	if ((fmt != GD2_FMT_RAW) && (fmt != GD2_FMT_COMPRESSED)) {
+-		fmt = im->trueColor ? GD2_FMT_TRUECOLOR_COMPRESSED : GD2_FMT_COMPRESSED;
++		fmt = GD2_FMT_COMPRESSED;
+ 	};
+ 	if (im->trueColor) {
+ 		fmt += 2;
+diff --git a/tests/gd2/CMakeLists.txt b/tests/gd2/CMakeLists.txt
+index 8aecacc..3b650ad 100644
+--- a/tests/gd2/CMakeLists.txt
++++ b/tests/gd2/CMakeLists.txt
+@@ -1,4 +1,5 @@
+ SET(TESTS_FILES
++	bug_289
+ 	gd2_empty_file
+ 	gd2_im2im
+ 	gd2_null
+diff --git a/tests/gd2/Makemodule.am b/tests/gd2/Makemodule.am
+index 754a284..b8ee946 100644
+--- a/tests/gd2/Makemodule.am
++++ b/tests/gd2/Makemodule.am
+@@ -1,4 +1,5 @@
+ libgd_test_programs += \
++	gd2/bug_289 \
+ 	gd2/gd2_empty_file \
+ 	gd2/php_bug_72339 \
+ 	gd2/gd2_read_corrupt
+diff --git a/tests/gd2/bug_289.c b/tests/gd2/bug_289.c
+new file mode 100644
+index 0000000..ad311e9
+--- /dev/null
++++ b/tests/gd2/bug_289.c
+@@ -0,0 +1,33 @@
++/**
++ * Passing an unrecognized format to gdImageGd2() should result in
++ * GD2_FMT_TRUECOLOR_COMPRESSED for truecolor images.
++ *
++ * See <https://github.com/libgd/libgd/issues/289>.
++ */
++
++#include "gd.h"
++#include "gdtest.h"
++
++
++#define GD2_FMT_UNRECOGNIZED 0
++#define GD2_FMT_TRUECOLOR_COMPRESSED 4
++
++#define MSG "expected %s byte to be %d, but got %d\n"
++
++
++int main()
++{
++    gdImagePtr im;
++    char *buffer;
++    int size;
++
++    im = gdImageCreateTrueColor(10, 10);
++    gdTestAssert(im != NULL);
++    buffer = (char *) gdImageGd2Ptr(im, 128, GD2_FMT_UNRECOGNIZED, &size);
++    gdTestAssert(buffer != NULL);
++    gdImageDestroy(im);
++    gdTestAssertMsg(buffer[12] == 0, MSG, "1st", 0, buffer[12]);
++    gdTestAssertMsg(buffer[13] == GD2_FMT_TRUECOLOR_COMPRESSED, MSG, "2nd", GD2_FMT_TRUECOLOR_COMPRESSED, buffer[13]);
++
++    return gdNumFailures();
++}
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
new file mode 100644
index 0000000..0b47d7f
--- /dev/null
+++ b/gnu/packages/php.scm
@@ -0,0 +1,334 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; 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)
+  #: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 curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #: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 textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:))
+
+;; This fixes PHP bugs 73155 and 73159. Remove when gd
+;; is updated to > 2.2.3.
+(define gd-for-php
+  (package (inherit gd)
+           (source
+            (origin
+              (inherit (package-source gd))
+              (patches (search-patches
+                        "gd-fix-truecolor-format-correction.patch"
+                        "gd-fix-chunk-size-on-boundaries.patch"))))))
+
+(define-public php
+  (package
+    (name "php")
+    (version "7.0.13")
+    (home-page "https://secure.php.net/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "distributions/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1gzihbpcp51jc587gs1ryn59hsnr7vf5427dmcvdimvm77wsfyrm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(with-directory-excursion "ext"
+                  (for-each delete-file-recursively
+                            ;; Some of the bundled libraries have no proper upstream.
+                            ;; Ideally we'd extract these out as separate packages:
+                            ;;"mbstring/libmbfl"
+                            ;;"date/lib"
+                            ;;"bcmath/libbcmath"
+                            ;;"fileinfo/libmagic" ; This is a patched version of libmagic.
+                            '("gd/libgd"
+                              "mbstring/oniguruma"
+                              "pcre/pcrelib"
+                              "sqlite3/libsqlite"
+                              "xmlrpc/libxmlrpc"
+                              "zip/lib"))))))
+    (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-freetype-dir" "freetype")
+               (with "--with-gd" "gd")
+               (with "--with-gdbm" "gdbm")
+               (with "--with-gettext" "glibc") ; libintl.h
+               (with "--with-gmp" "gmp")
+               (with "--with-jpeg-dir" "libjpeg")
+               (with "--with-ldap" "openldap")
+               (with "--with-ldap-sasl" "cyrus-sasl")
+               (with "--with-libzip" "zip")
+               (with "--with-libxml-dir" "libxml2")
+               (with "--with-onig" "oniguruma")
+               (with "--with-pcre-dir" "pcre")
+               (with "--with-pcre-regex" "pcre")
+               (with "--with-pdo-pgsql" "postgresql")
+               (with "--with-pdo-sqlite" "sqlite")
+               (with "--with-pgsql" "postgresql")
+               (with "--with-png-dir" "libpng")
+               ;; PHP’s Pspell extension, while retaining its current name,
+               ;; now uses the Aspell library.
+               (with "--with-pspell" "aspell")
+               (with "--with-readline" "readline")
+               (with "--with-sqlite3" "sqlite")
+               (with "--with-tidy" "tidy")
+               (with "--with-webp-dir" "libwebp")
+               (with "--with-xpm-dir" "libxpm")
+               (with "--with-xsl" "libxslt")
+               (with "--with-zlib-dir" "zlib")
+               ;; We could add "--with-snmp", but it requires netsnmp that
+               ;; we don't have a package for. It is used to build the snmp
+               ;; extension of php.
+               "--with-iconv"
+               "--with-openssl"
+               "--with-pdo-mysql"
+               "--with-zlib"
+               "--enable-calendar"
+               "--enable-dba=shared"
+               "--enable-exif"
+               "--enable-flatfile"
+               "--enable-fpm"
+               "--enable-ftp"
+               "--enable-inifile"
+               "--enable-mbstring"
+               "--enable-pcntl"
+               "--enable-sockets"
+               "--enable-threads"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-record-build-flags
+           (lambda _
+             ;; Prevent configure flags from being stored and causing
+             ;; unnecessary runtime dependencies.
+             (substitute* "scripts/php-config.in"
+               (("@CONFIGURE_OPTIONS@") "")
+               (("@PHP_LDFLAGS@") ""))
+             ;; This file has ISO-8859-1 encoding.
+             (with-fluids ((%default-port-encoding "ISO-8859-1"))
+               (substitute* "main/build-defs.h.in"
+                 (("@CONFIGURE_COMMAND@") "(omitted)")))
+             #t))
+         (add-before 'build 'patch-/bin/sh
+           (lambda _
+             (substitute* '("run-tests.php" "ext/standard/proc_open.c")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'prepare-tests
+           (lambda _
+             ;; Some of these files have ISO-8859-1 encoding, whereas others
+             ;; use ASCII, so we can't use a "catch-all" find-files here.
+             (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/bug52861.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")))
+             ;; The encoding of this file is not recognized, so we simply drop it.
+             (delete-file "ext/mbstring/tests/mb_send_mail07.phpt")
+
+             (substitute* "ext/standard/tests/streams/bug60602.phpt"
+               (("'ls'") (string-append "'" (which "ls") "'")))
+
+             ;; Drop tests that are known to fail.
+             (for-each delete-file
+                       '("ext/posix/tests/posix_getgrgid.phpt"    ; Requires /etc/group.
+                         "ext/sockets/tests/bug63000.phpt"        ; Fails to detect OS.
+                         "ext/sockets/tests/socket_shutdown.phpt" ; Requires DNS.
+                         "ext/sockets/tests/socket_send.phpt"     ; Likewise.
+                         "ext/sockets/tests/mcast_ipv4_recv.phpt" ; Requires multicast.
+                         ;; These needs /etc/services.
+                         "ext/standard/tests/general_functions/getservbyname_basic.phpt"
+                         "ext/standard/tests/general_functions/getservbyport_basic.phpt"
+                         "ext/standard/tests/general_functions/getservbyport_variation1.phpt"
+                         ;; And /etc/protocols.
+                         "ext/standard/tests/network/getprotobyname_basic.phpt"
+                         "ext/standard/tests/network/getprotobynumber_basic.phpt"
+                         ;; And exotic locales.
+                         "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"
+
+                         ;; XXX: These gd tests fails.  Likely because our version
+                         ;; is different from the (patched) bundled one.
+                         ;; Here, gd quits immediately after "fatal libpng error"; while the
+                         ;; test expects it to additionally return a "setjmp" error and warning.
+                         "ext/gd/tests/bug39780_extern.phpt"
+                         "ext/gd/tests/libgd00086_extern.phpt"
+                         ;; Extra newline in gd-png output.
+                         "ext/gd/tests/bug45799.phpt"
+                         ;; Different error message than expected from imagecrop().
+                         "ext/gd/tests/bug66356.phpt"
+                         ;; Similarly for imagecreatefromgd2().
+                         "ext/gd/tests/bug72339.phpt"
+                         ;; Call to undefined function imageantialias().  They are
+                         ;; supposed to fail anyway.
+                         "ext/gd/tests/bug72482.phpt"
+                         "ext/gd/tests/bug72482_2.phpt"
+                         "ext/gd/tests/bug73213.phpt"
+                         ;; Test expects generic "gd warning" but gets the actual function name.
+                         "ext/gd/tests/createfromwbmp2_extern.phpt"
+                         ;; TODO: Enable these when libgd is built with xpm support.
+                         "ext/gd/tests/xpm2gd.phpt"
+                         "ext/gd/tests/xpm2jpg.phpt"
+                         "ext/gd/tests/xpm2png.phpt"
+
+                         ;; XXX: These iconv tests have the expected outcome,
+                         ;; but with different error messages.
+                         ;; Expects "illegal character", instead gets "unknown error (84)".
+                         "ext/iconv/tests/bug52211.phpt"
+                         ;; Expects "wrong charset", gets unknown error (22).
+                         "ext/iconv/tests/iconv_mime_decode_variation3.phpt"
+                         "ext/iconv/tests/iconv_strlen_error2.phpt"
+                         "ext/iconv/tests/iconv_strlen_variation2.phpt"
+                         "ext/iconv/tests/iconv_substr_error2.phpt"
+                         ;; Expects conversion error, gets "error condition Termsig=11".
+                         "ext/iconv/tests/iconv_strpos_error2.phpt"
+                         "ext/iconv/tests/iconv_strrpos_error2.phpt"
+                         ;; Similar, but iterating over multiple values.
+                         ;; iconv breaks the loop after the first error with Termsig=11.
+                         "ext/iconv/tests/iconv_strpos_variation4.phpt"
+                         "ext/iconv/tests/iconv_strrpos_variation3.phpt"
+
+                         ;; XXX: These test failures appear legitimate, needs investigation.
+                         ;; open_basedir() restriction failure.
+                         "ext/curl/tests/bug61948.phpt"
+                         ;; Expects a false boolean, gets empty array from glob().
+                         "ext/standard/tests/file/bug41655_1.phpt"
+                         "ext/standard/tests/file/glob_variation5.phpt"
+                         ;; Test output is correct, but in wrong order.
+                         "ext/standard/tests/streams/proc_open_bug64438.phpt"
+                         ;; The test expects an Array, but instead get the contents(?).
+                         "ext/gd/tests/bug43073.phpt"
+                         ;; imagettftext() returns wrong coordinates.
+                         "ext/gd/tests/bug48732.phpt"
+                         ;; Similarly for imageftbbox().
+                         "ext/gd/tests/bug48801.phpt"
+                         ;; Different expected output from imagecolorallocate().
+                         "ext/gd/tests/bug53504.phpt"
+                         ;; Wrong image size after scaling an image.
+                         "ext/gd/tests/bug73272.phpt"
+                         ;; Expects iconv to detect illegal characters, instead gets
+                         ;; "unknown error (84)" and heap corruption(!).
+                         "ext/iconv/tests/bug48147.phpt"
+                         ;; Expects illegal character ".", gets "=?utf-8?Q?."
+                         "ext/iconv/tests/bug51250.phpt"
+                         ;; @iconv() does not return expected output.
+                         "ext/iconv/tests/iconv003.phpt"
+                         ;; iconv throws "buffer length exceeded" on some string checks.
+                         "ext/iconv/tests/iconv_mime_encode.phpt"
+                         ;; file_get_contents(): iconv stream filter
+                         ;; ("ISO-8859-1"=>"UTF-8") unknown error.
+                         "ext/standard/tests/file/bug43008.phpt"
+                         ;; Table data not created in sqlite(?).
+                         "ext/pdo_sqlite/tests/bug_42589.phpt"))
+
+             ;; Skip tests requiring network access.
+             (setenv "SKIP_ONLINE_TESTS" "1")
+             ;; Without this variable, `make test' passes regardless of failures.
+             (setenv "REPORT_EXIT_STATUS" "1")
+             #t)))
+       #:test-target "test"))
+    (inputs
+     `(("aspell" ,aspell)
+       ("bzip2" ,bzip2)
+       ("curl" ,curl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("freetype" ,freetype)
+       ("gd" ,gd-for-php)
+       ("gdbm" ,gdbm)
+       ("glibc" ,glibc)
+       ("gmp" ,gmp)
+       ("libgcrypt" ,libgcrypt)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libwebp" ,libwebp)
+       ("libxml2" ,libxml2)
+       ("libxpm" ,libxpm)
+       ("libxslt" ,libxslt)
+       ("libx11" ,libx11)
+       ("oniguruma" ,oniguruma)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("postgresql" ,postgresql)
+       ("readline" ,readline)
+       ("sqlite" ,sqlite-3.15.1)
+       ("tidy" ,tidy)
+       ("zip" ,zip)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("bison" ,bison)
+       ("intltool" ,intltool)
+       ("procps" ,procps)))         ; For tests.
+    (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")       ; The PHP license.
+              (license:non-copyleft "file://Zend/LICENSE")  ; The Zend license.
+              license:lgpl2.1                               ; ext/mbstring/libmbfl
+              license:lgpl2.1+                              ; ext/bcmath/libbcmath
+              license:bsd-2                                 ; ext/fileinfo/libmagic
+              license:expat))))                             ; ext/date/lib
-- 
2.10.2


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-17 20:43                               ` Marius Bakke
@ 2016-11-18 17:25                                 ` Julien Lepiller
  2016-11-18 18:09                                   ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Julien Lepiller @ 2016-11-18 17:25 UTC (permalink / raw)
  To: guix-devel

On Thu, 17 Nov 2016 21:43:39 +0100
Marius Bakke <mbakke@fastmail.com> wrote:

> Julien Lepiller <julien@lepiller.eu> writes:
> 
> >> >> Unfortunately that only fixed a handful of tests, the remaining
> >> >> 50-something had to be disabled for a variety of reasons.
> >> >> 
> >> >> I've added a commentary to each disabled test. If you recognize
> >> >> any of these errors/think you know what's going on, please
> >> >> update the patch. It would be nice to know if the iconv and gd
> >> >> stuff is expected, and if the two sqlite tests can really be
> >> >> ignored. The curl one is strange too.  
> >> >
> >> > Just as I wanted to send a similar patch ;)
> >> >
> >> > I've been looking at some of them. The failing sqlite test is a
> >> > bug in sqlite that has been fixed last august 
> >> > (https://sqlite.org/src/info/ef360601). We currently have
> >> > version 3.14.1, when the latest upstream version is 3.15.1.
> >> > Updating should fix the problem.
> >> >
> >> > 73159 has been fixed in gd:
> >> > https://github.com/libgd/libgd/issues/289 (more recent than
> >> > latest gd release unfortunately)
> >> >
> >> > 73155 has also been fixed in gd: 
> >> > https://github.com/libgd/libgd/issues/309 (even more recent)
> >> >
> >> > 72482 is fixed here: 
> >> > https://gist.github.com/anonymous/873314feb4f89bd8336711333299f748
> >> > (a patch to the bundled libgd)
> >> >
> >> > 73213 is fixed here: 
> >> > https://git.php.net/?p=php-src.git;a=blobdiff;f=ext/gd/libgd/gd.c;h=033d4fa5f0e9740e8b8c397a9038a115c617c419;hp=0b4b42fa27558fa32cc54e14dc297d9d0ba10832;hb=9acfb1a3a5268febb123b7e5fbd4eaf072c83537;hpb=c0219b323e0048440acbdd9ad74624c4bc33c335 
> >> > (a patch to the bundled libgd)
> >> >
> >> > 72339 has a CVE id: 2016-5766, but it should be fixed in libgd
> >> > 2.2.3 that we have according to the CVE description, and the
> >> > failure is different from what the report says.
> >> >
> >> > 39780 has the unexpected output described in the bug report, so
> >> > it really fails. I don't think we can fix our libgd though,
> >> > because the bundled one has some php_* functions that are used
> >> > to get a warning instead of an error.
> >> >
> >> > we could include patches to our libgd to fix two (maybe four)
> >> > issues. We should also upgrade our sqlite version, but many
> >> > packages will then have to be rebuilt, or we could create a
> >> > separate package for the newer version. What do you suggest?  
> >> 
> >> Wow, thanks for this list! Including the two upstream gd fixes in a
> >> "gd-for-php" package should be fine, until a new release of gd is
> >> out. I'm more vary about including the PHP-specific ones though.
> >> 
> >> If there are serious problems with using an external (vanilla) gd,
> >> I think we either need to maintain a "gd-for-php" package
> >> indefinitely, or bite the bullet and use the bundled one.
> >> 
> >> Do you think it's safe to use our gd? And if not, would you be
> >> willing to keep up with PHP development and maintain the
> >> externalized gd component with it?
> >
> > Failures in tests caused by external gd are not too serious to
> > require us to switch to the bundled one I think. We may not even
> > need to patch our libgd with php specific patches, since the
> > failures are only slight deviation from the spec on corner cases.
> > If you prefer that we apply these patches too, then we could, and I
> > would still try to keep that up to date.
> 
> OK. Let's use external gd for now barring any serious issues.
> 
> >
> > What I am more worried about are the iconv crashes. That may be due
> > to lacking locales though.
> 
> You could try commenting them out and adding "glibc-locales" to
> native-inputs. Not sure if they will get picked up by that however.
> 
> A better test may be to try out that particular functionality using
> the installed version of php. If that works, we can be reasonably
> sure that dropping the tests is fine.
> 
> Attached is the final product, after adding a "gd-for-php" variable
> with the two upstream patches, as well as sqlite-3.15.1 (separate
> patch).
> 
> I'll push this tomorrow if there are no further comments. Thanks for
> your perseverance :)
Just one question: why defining gd-for-php with define, and not
define-public?

> 

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-18 17:25                                 ` Julien Lepiller
@ 2016-11-18 18:09                                   ` Marius Bakke
  2016-11-20 17:02                                     ` Marius Bakke
  0 siblings, 1 reply; 28+ messages in thread
From: Marius Bakke @ 2016-11-18 18:09 UTC (permalink / raw)
  To: Julien Lepiller, guix-devel

[-- Attachment #1: Type: text/plain, Size: 4796 bytes --]

Julien Lepiller <julien@lepiller.eu> writes:

> On Thu, 17 Nov 2016 21:43:39 +0100
> Marius Bakke <mbakke@fastmail.com> wrote:
>
>> Julien Lepiller <julien@lepiller.eu> writes:
>> 
>> >> >> Unfortunately that only fixed a handful of tests, the remaining
>> >> >> 50-something had to be disabled for a variety of reasons.
>> >> >> 
>> >> >> I've added a commentary to each disabled test. If you recognize
>> >> >> any of these errors/think you know what's going on, please
>> >> >> update the patch. It would be nice to know if the iconv and gd
>> >> >> stuff is expected, and if the two sqlite tests can really be
>> >> >> ignored. The curl one is strange too.  
>> >> >
>> >> > Just as I wanted to send a similar patch ;)
>> >> >
>> >> > I've been looking at some of them. The failing sqlite test is a
>> >> > bug in sqlite that has been fixed last august 
>> >> > (https://sqlite.org/src/info/ef360601). We currently have
>> >> > version 3.14.1, when the latest upstream version is 3.15.1.
>> >> > Updating should fix the problem.
>> >> >
>> >> > 73159 has been fixed in gd:
>> >> > https://github.com/libgd/libgd/issues/289 (more recent than
>> >> > latest gd release unfortunately)
>> >> >
>> >> > 73155 has also been fixed in gd: 
>> >> > https://github.com/libgd/libgd/issues/309 (even more recent)
>> >> >
>> >> > 72482 is fixed here: 
>> >> > https://gist.github.com/anonymous/873314feb4f89bd8336711333299f748
>> >> > (a patch to the bundled libgd)
>> >> >
>> >> > 73213 is fixed here: 
>> >> > https://git.php.net/?p=php-src.git;a=blobdiff;f=ext/gd/libgd/gd.c;h=033d4fa5f0e9740e8b8c397a9038a115c617c419;hp=0b4b42fa27558fa32cc54e14dc297d9d0ba10832;hb=9acfb1a3a5268febb123b7e5fbd4eaf072c83537;hpb=c0219b323e0048440acbdd9ad74624c4bc33c335 
>> >> > (a patch to the bundled libgd)
>> >> >
>> >> > 72339 has a CVE id: 2016-5766, but it should be fixed in libgd
>> >> > 2.2.3 that we have according to the CVE description, and the
>> >> > failure is different from what the report says.
>> >> >
>> >> > 39780 has the unexpected output described in the bug report, so
>> >> > it really fails. I don't think we can fix our libgd though,
>> >> > because the bundled one has some php_* functions that are used
>> >> > to get a warning instead of an error.
>> >> >
>> >> > we could include patches to our libgd to fix two (maybe four)
>> >> > issues. We should also upgrade our sqlite version, but many
>> >> > packages will then have to be rebuilt, or we could create a
>> >> > separate package for the newer version. What do you suggest?  
>> >> 
>> >> Wow, thanks for this list! Including the two upstream gd fixes in a
>> >> "gd-for-php" package should be fine, until a new release of gd is
>> >> out. I'm more vary about including the PHP-specific ones though.
>> >> 
>> >> If there are serious problems with using an external (vanilla) gd,
>> >> I think we either need to maintain a "gd-for-php" package
>> >> indefinitely, or bite the bullet and use the bundled one.
>> >> 
>> >> Do you think it's safe to use our gd? And if not, would you be
>> >> willing to keep up with PHP development and maintain the
>> >> externalized gd component with it?
>> >
>> > Failures in tests caused by external gd are not too serious to
>> > require us to switch to the bundled one I think. We may not even
>> > need to patch our libgd with php specific patches, since the
>> > failures are only slight deviation from the spec on corner cases.
>> > If you prefer that we apply these patches too, then we could, and I
>> > would still try to keep that up to date.
>> 
>> OK. Let's use external gd for now barring any serious issues.
>> 
>> >
>> > What I am more worried about are the iconv crashes. That may be due
>> > to lacking locales though.
>> 
>> You could try commenting them out and adding "glibc-locales" to
>> native-inputs. Not sure if they will get picked up by that however.
>> 
>> A better test may be to try out that particular functionality using
>> the installed version of php. If that works, we can be reasonably
>> sure that dropping the tests is fine.
>> 
>> Attached is the final product, after adding a "gd-for-php" variable
>> with the two upstream patches, as well as sqlite-3.15.1 (separate
>> patch).
>> 
>> I'll push this tomorrow if there are no further comments. Thanks for
>> your perseverance :)
> Just one question: why defining gd-for-php with define, and not
> define-public?

It's to prevent it from showing up when people are searching for 'gd',
and also to prevent it from being included by other files.

It's only a temporary measure until the next version is released, so I
saw no reason to export it.

I'm on my way out, but will commit this tomorrow most likely :-)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-18 18:09                                   ` Marius Bakke
@ 2016-11-20 17:02                                     ` Marius Bakke
  2016-11-20 17:13                                       ` Leo Famulari
  2016-11-21  8:46                                       ` Ludovic Courtès
  0 siblings, 2 replies; 28+ messages in thread
From: Marius Bakke @ 2016-11-20 17:02 UTC (permalink / raw)
  To: Julien Lepiller, guix-devel

[-- Attachment #1: Type: text/plain, Size: 1708 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

>>> > Failures in tests caused by external gd are not too serious to
>>> > require us to switch to the bundled one I think. We may not even
>>> > need to patch our libgd with php specific patches, since the
>>> > failures are only slight deviation from the spec on corner cases.
>>> > If you prefer that we apply these patches too, then we could, and I
>>> > would still try to keep that up to date.
>>> 
>>> OK. Let's use external gd for now barring any serious issues.
>>> 
>>> >
>>> > What I am more worried about are the iconv crashes. That may be due
>>> > to lacking locales though.
>>> 
>>> You could try commenting them out and adding "glibc-locales" to
>>> native-inputs. Not sure if they will get picked up by that however.
>>> 
>>> A better test may be to try out that particular functionality using
>>> the installed version of php. If that works, we can be reasonably
>>> sure that dropping the tests is fine.
>>> 
>>> Attached is the final product, after adding a "gd-for-php" variable
>>> with the two upstream patches, as well as sqlite-3.15.1 (separate
>>> patch).
>>> 
>>> I'll push this tomorrow if there are no further comments. Thanks for
>>> your perseverance :)
>> Just one question: why defining gd-for-php with define, and not
>> define-public?
>
> It's to prevent it from showing up when people are searching for 'gd',
> and also to prevent it from being included by other files.
>
> It's only a temporary measure until the next version is released, so I
> saw no reason to export it.
>
> I'm on my way out, but will commit this tomorrow most likely :-)

Sorry for the delay, PHP is in master now!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 454 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-20 17:02                                     ` Marius Bakke
@ 2016-11-20 17:13                                       ` Leo Famulari
  2016-11-21  8:46                                       ` Ludovic Courtès
  1 sibling, 0 replies; 28+ messages in thread
From: Leo Famulari @ 2016-11-20 17:13 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 152 bytes --]

On Sun, Nov 20, 2016 at 06:02:59PM +0100, Marius Bakke wrote:
> Sorry for the delay, PHP is in master now!

Wow, thanks to everyone who worked on this!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH] Add php
  2016-11-20 17:02                                     ` Marius Bakke
  2016-11-20 17:13                                       ` Leo Famulari
@ 2016-11-21  8:46                                       ` Ludovic Courtès
  1 sibling, 0 replies; 28+ messages in thread
From: Ludovic Courtès @ 2016-11-21  8:46 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

Marius Bakke <mbakke@fastmail.com> skribis:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>>>> > Failures in tests caused by external gd are not too serious to
>>>> > require us to switch to the bundled one I think. We may not even
>>>> > need to patch our libgd with php specific patches, since the
>>>> > failures are only slight deviation from the spec on corner cases.
>>>> > If you prefer that we apply these patches too, then we could, and I
>>>> > would still try to keep that up to date.
>>>> 
>>>> OK. Let's use external gd for now barring any serious issues.
>>>> 
>>>> >
>>>> > What I am more worried about are the iconv crashes. That may be due
>>>> > to lacking locales though.
>>>> 
>>>> You could try commenting them out and adding "glibc-locales" to
>>>> native-inputs. Not sure if they will get picked up by that however.
>>>> 
>>>> A better test may be to try out that particular functionality using
>>>> the installed version of php. If that works, we can be reasonably
>>>> sure that dropping the tests is fine.
>>>> 
>>>> Attached is the final product, after adding a "gd-for-php" variable
>>>> with the two upstream patches, as well as sqlite-3.15.1 (separate
>>>> patch).
>>>> 
>>>> I'll push this tomorrow if there are no further comments. Thanks for
>>>> your perseverance :)
>>> Just one question: why defining gd-for-php with define, and not
>>> define-public?
>>
>> It's to prevent it from showing up when people are searching for 'gd',
>> and also to prevent it from being included by other files.
>>
>> It's only a temporary measure until the next version is released, so I
>> saw no reason to export it.
>>
>> I'm on my way out, but will commit this tomorrow most likely :-)
>
> Sorry for the delay, PHP is in master now!

Cool, thank you all!

Ludo’.

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2016-11-21 16:06 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-30 12:08 [PATCH] Add php Julien Lepiller
2016-10-30 14:01 ` Efraim Flashner
2016-10-30 14:03 ` Tobias Geerinckx-Rice
2016-10-30 16:51   ` Julien Lepiller
2016-10-30 22:24     ` Ludovic Courtès
2016-10-30 23:17     ` Marius Bakke
2016-11-02 21:40       ` Julien Lepiller
2016-11-09 15:44         ` Ludovic Courtès
2016-11-11 16:31           ` Julien Lepiller
2016-11-14  9:48             ` Marius Bakke
2016-11-14  9:57               ` Marius Bakke
2016-11-14 12:59                 ` Ludovic Courtès
2016-11-14 13:53                   ` Marius Bakke
2016-11-14 14:46                     ` Ludovic Courtès
2016-11-17  0:01                       ` Marius Bakke
2016-11-17 10:22                         ` Hartmut Goebel
2016-11-17 19:38                           ` Julien Lepiller
2016-11-17 11:08                         ` tyreunom
2016-11-17 12:27                           ` Ludovic Courtès
2016-11-17 18:22                           ` Marius Bakke
2016-11-17 19:34                             ` Julien Lepiller
2016-11-17 20:43                               ` Marius Bakke
2016-11-18 17:25                                 ` Julien Lepiller
2016-11-18 18:09                                   ` Marius Bakke
2016-11-20 17:02                                     ` Marius Bakke
2016-11-20 17:13                                       ` Leo Famulari
2016-11-21  8:46                                       ` Ludovic Courtès
2016-11-01 17:07 ` Leo Famulari

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).