diff mbox

Add php

Message ID 20161111173123.51375f43@polymos.lepiller.eu
State New
Headers show

Commit Message

Julien Lepiller Nov. 11, 2016, 4:31 p.m. UTC
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’.
diff mbox

Patch

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