GNU bug report logs - #42338
[PATCH] Add composer build system (PHP)

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Julien Lepiller <julien@HIDDEN>; Keywords: patch; dated Sun, 12 Jul 2020 22:22:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 18 Dec 2020 23:43:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 18 18:43:30 2020
Received: from localhost ([127.0.0.1]:40502 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kqPPG-0004eD-8k
	for submit <at> debbugs.gnu.org; Fri, 18 Dec 2020 18:43:30 -0500
Received: from lepiller.eu ([89.234.186.109]:57722)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1kqPPD-0004e3-Td
 for 42338 <at> debbugs.gnu.org; Fri, 18 Dec 2020 18:43:28 -0500
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id b0d3dc51;
 Fri, 18 Dec 2020 23:43:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type:content-transfer-encoding; s=dkim; bh=gtadFR5dm4Ky
 Oz25cU5hrjEkb1yBJ99ji6FE1fsStnc=; b=Q+USl78HUv1oUSu5WZC/HVAKAQaS
 65jal/pbYFv13vvga09FpYxMy42xf//vGqCWuw3ZAZBX3buLTKKuguf2sPKkKmWS
 9wYt6YnVvq26khfAOt8XxWJzLf8uQcVQfcR/h/JaxnrQZPaydz3T24vmytfA+Yz+
 S4FtKC1A9vHB/KZdw+10vnN7KMATD/Hq94ny/WHDCzXhA4K6QrCdfX1wK4sQQEEP
 Dsqj+TSQUjMD51kbbjzwcAxRfikCGDQwERPfSMHZR/oEX5ESvd6mPgsOhrLqcj9f
 6mFSAPzoX3BtOvo/4EuFazk2lU4A6JKPatCHzP/etWZj+6vjDrJss2plmQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id cfacdb7c
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); 
 Fri, 18 Dec 2020 23:43:24 +0000 (UTC)
Date: Sat, 19 Dec 2020 00:43:18 +0100
From: Julien Lepiller <julien@HIDDEN>
To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= <ludo@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
Message-ID: <20201219004318.2c94830d@HIDDEN>
In-Reply-To: <87blhn39dz.fsf@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN>
 <87imcphe6a.fsf@HIDDEN>
 <20200918004403.0d755d60@HIDDEN>
 <87eemz1nib.fsf@HIDDEN>
 <20200919012420.301201e8@HIDDEN>
 <87eemq16y3.fsf@HIDDEN>
 <20200929164920.0684be42@HIDDEN>
 <87blhn39dz.fsf@HIDDEN>
X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Le Wed, 30 Sep 2020 11:24:08 +0200,
Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :
>=20
> To bring in Guile-JSON, you need to do something similar to what
> =E2=80=98gexp->file=E2=80=99 does with =E2=80=98load-path-expression=E2=
=80=99, along these lines
> (untested):
>=20
>   (define guile-json-drv
>     (package-derivation store
>                         (module-ref (resolve-interface '(gnu packages
> guile)) 'guile-json)
>                         system))
>=20
>   (define builder
>     `(begin
>        (add-to-load-path (string-append ,(derivation->output-path
> guile-json-drv) "/share/guile/site/"
>                                         (effective-version)))
>        (use-modules ,@modules)
>        =E2=80=A6))
>=20
>    ;; =E2=80=A6
>=20
>    (build-expression->derivation store name builder
>                                  ;; =E2=80=A6
>                                  #:inputs (append inputs
>                                                   `(("guile-json"
> ,guile-json-drv))))
>=20
> I guess clunkiness is the reason why we didn=E2=80=99t do it last time=E2=
=80=A6
>=20
> HTH!
>=20
> Ludo=E2=80=99.

Hi Ludo, sorry for the delay!

I tried that (replacing 'guile-json with 'guile-json-4), but it doesn't
work: when building the package, guix first builds a modules-compiled
that fails because it can't find (json). It seems to be related to the
compilation of (guix build composer-build-system) which uses the (json)
module: when removing the import, it's modules-compiled works (with a
lot of warnings), but obviously guix can't build the php package.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 30 Sep 2020 09:24:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 30 05:24:18 2020
Received: from localhost ([127.0.0.1]:58204 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kNYLR-0006E1-SA
	for submit <at> debbugs.gnu.org; Wed, 30 Sep 2020 05:24:18 -0400
Received: from eggs.gnu.org ([209.51.188.92]:54308)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kNYLP-0006Dn-Jx
 for 42338 <at> debbugs.gnu.org; Wed, 30 Sep 2020 05:24:16 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:58657)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kNYLK-0002HX-6I; Wed, 30 Sep 2020 05:24:10 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=58752 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kNYLJ-0003Zj-Np; Wed, 30 Sep 2020 05:24:09 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN> <87imcphe6a.fsf@HIDDEN>
 <20200918004403.0d755d60@HIDDEN>
 <87eemz1nib.fsf@HIDDEN>
 <20200919012420.301201e8@HIDDEN>
 <87eemq16y3.fsf@HIDDEN>
 <20200929164920.0684be42@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 9 =?utf-8?Q?Vend=C3=A9miaire?= an 229 de la
 =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Wed, 30 Sep 2020 11:24:08 +0200
In-Reply-To: <20200929164920.0684be42@HIDDEN> (Julien
 Lepiller's message of "Tue, 29 Sep 2020 16:49:20 +0200")
Message-ID: <87blhn39dz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi,

Julien Lepiller <julien@HIDDEN> skribis:

> Here's a new version, hopefully this addresses all your remarks. I'm
> still not sure how (json) is pulled in to the build side though... How
> does guix know it needs to use guile-json-3 instead of guile-json-1 for
> instance?

Ah, see below.

> How does it work with inferiors?

I think inferiors have nothing to do with it.

> From 432f57aeeb3b2e48591288e6491d66ab299661f0 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@HIDDEN>
> Date: Tue, 29 Oct 2019 20:58:51 +0100
> Subject: [PATCH 03/34] guix: Add composer-build-system.
>
> * guix/build-system/composer.scm: New file.
> * guix/build/composer-build-system.scm: New file.
> * gnu/packages/aux-files/findclass.php: New file.
> * Makefile.am: Add them.
> * doc/guix.texi (Build Systems): Document it.

[...]

> +(define %composer-build-system-modules
> +  ;; Build-side modules imported by default.
> +  `((guix build composer-build-system)
> +    (guix build union)
> +    (json)
> +    (json builder)
> +    (json parser)
> +    (json record)

Here, as the comment says, you=E2=80=99re importing (json =E2=80=A6) from t=
he host side
to the build side.  That=E2=80=99s why it works.

The problem is that it=E2=80=99s just picking whatever (json =E2=80=A6) mod=
ules are on
your load path on the host side: if you have Guile-JSON 3.x, it=E2=80=99ll =
use
that, if you have 4.x, that=E2=80=99ll be 4.x, and if you have nothing, it=
=E2=80=99ll
fail to build.

So the fix is to remove those modules from this list.  You should only
ever import Guix modules.

Now you need to bring Guile-JSON into the environment.  When using gexp,
we do that with =E2=80=98with-extensions=E2=80=99, but here it=E2=80=99s a =
bit clunky=E2=80=A6

> +                         (modules '((guix build composer-build-system)
> +                                    (guix build utils)
> +                                    (json))))

I think you don=E2=80=99t need (json) here.  (This is the list of modules in
scope.)

> +  (define builder
> +    `(begin
> +       (use-modules ,@modules)
> +       (composer-build #:source ,(match (assoc-ref inputs "source")
> +                                   (((? derivation? source))
> +                                    (derivation->output-path source))
> +                                   ((source)
> +                                    source)
> +                                   (source
> +                                    source))
> +                       #:system ,system
> +                       #:outputs %outputs
> +                       #:inputs %build-inputs
> +                       #:search-paths ',(map search-path-specification->=
sexp
> +                                             search-paths)
> +                       #:phases ,phases
> +                       #:out-of-source? ,out-of-source?
> +                       #:composer-file ,composer-file
> +                       #:tests? ,tests?
> +                       #:test-target ,test-target
> +                       #:install-target ,install-target
> +                       #:validate-runpath? ,validate-runpath?
> +                       #:patch-shebangs? ,patch-shebangs?
> +                       #:strip-binaries? ,strip-binaries?
> +                       #:strip-flags ,strip-flags
> +                       #:strip-directories ,strip-directories)))

To bring in Guile-JSON, you need to do something similar to what
=E2=80=98gexp->file=E2=80=99 does with =E2=80=98load-path-expression=E2=80=
=99, along these lines
(untested):

  (define guile-json-drv
    (package-derivation store
                        (module-ref (resolve-interface '(gnu packages guile=
))
                                    'guile-json)
                        system))

  (define builder
    `(begin
       (add-to-load-path (string-append ,(derivation->output-path guile-jso=
n-drv)
                                        "/share/guile/site/"
                                        (effective-version)))
       (use-modules ,@modules)
       =E2=80=A6))

   ;; =E2=80=A6

   (build-expression->derivation store name builder
                                 ;; =E2=80=A6
                                 #:inputs (append inputs
                                                  `(("guile-json" ,guile-js=
on-drv))))

I guess clunkiness is the reason why we didn=E2=80=99t do it last time=E2=
=80=A6

HTH!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 29 Sep 2020 14:49:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 29 10:49:51 2020
Received: from localhost ([127.0.0.1]:56881 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kNGwq-00088X-DV
	for submit <at> debbugs.gnu.org; Tue, 29 Sep 2020 10:49:51 -0400
Received: from lepiller.eu ([89.234.186.109]:50914)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1kNGwl-00088H-3K
 for 42338 <at> debbugs.gnu.org; Tue, 29 Sep 2020 10:49:43 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 404a0e97;
 Tue, 29 Sep 2020 14:49:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type; s=dkim; bh=wcgz7dM5pytS2F368frIn8dmtK8Z2cfDrcDtOl
 QnJBI=; b=bIlnXpDp3q4J1FY0ixsQvM2pYKwjwwBslVDCljyrfn0hRifhqwEFkF
 4aTtgdv5l3CGOMEEjPof77PH5uVZPszZ3fF/J5WhNeFE59WAjJgruRMJAZBqfVga
 /mZaWtuBkOjCko4z3LjDktiK0DNk0aL94TR56OPLGPddhLp4ljvserPBKlLTaF4H
 6SfxAO7pZrjwDaKB58cC2jkuDBwSGpUuI+q4nMxZndgSkAE/PnP7L8BwWIxoO6io
 hdKMXL8KAFgDfGGAEmt2Hoz6VVOvqKfabGMlmcX5WyGr1AGvG1+M/Pax68hpTYlW
 2HZ8se017GEM7zThNwG9zBhfxN2N+IhA==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 3bf0a08d
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); 
 Tue, 29 Sep 2020 14:49:36 +0000 (UTC)
Date: Tue, 29 Sep 2020 16:49:20 +0200
From: Julien Lepiller <julien@HIDDEN>
To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= <ludo@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
Message-ID: <20200929164920.0684be42@HIDDEN>
In-Reply-To: <87eemq16y3.fsf@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN>
 <87imcphe6a.fsf@HIDDEN>
 <20200918004403.0d755d60@HIDDEN>
 <87eemz1nib.fsf@HIDDEN>
 <20200919012420.301201e8@HIDDEN>
 <87eemq16y3.fsf@HIDDEN>
X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_/wX.Yq./3HOZ_fNNuuCidCBh"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--MP_/wX.Yq./3HOZ_fNNuuCidCBh
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Fri, 25 Sep 2020 12:33:56 +0200,
Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :

> Hi,
>=20
> As for Guile-JSON: perhaps you can post a draft that we can play with
> to see if there=E2=80=99s anything wrong, but off the top of my head I do=
n=E2=80=99t
> see why it wouldn=E2=80=99t work.
>=20
> Thanks,
> Ludo=E2=80=99.

Here's a new version, hopefully this addresses all your remarks. I'm
still not sure how (json) is pulled in to the build side though... How
does guix know it needs to use guile-json-3 instead of guile-json-1 for
instance? How does it work with inferiors?

--MP_/wX.Yq./3HOZ_fNNuuCidCBh
Content-Type: text/x-patch
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename=0003-guix-Add-composer-build-system.patch

=46rom 432f57aeeb3b2e48591288e6491d66ab299661f0 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@HIDDEN>
Date: Tue, 29 Oct 2019 20:58:51 +0100
Subject: [PATCH 03/34] guix: Add composer-build-system.

* guix/build-system/composer.scm: New file.
* guix/build/composer-build-system.scm: New file.
* gnu/packages/aux-files/findclass.php: New file.
* Makefile.am: Add them.
* doc/guix.texi (Build Systems): Document it.
---
 Makefile.am                          |   5 +-
 doc/guix.texi                        |  14 ++
 gnu/packages/aux-files/findclass.php | 125 ++++++++++++++
 guix/build-system/composer.scm       | 173 +++++++++++++++++++
 guix/build/composer-build-system.scm | 241 +++++++++++++++++++++++++++
 5 files changed, 557 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/aux-files/findclass.php
 create mode 100644 guix/build-system/composer.scm
 create mode 100644 guix/build/composer-build-system.scm

diff --git a/Makefile.am b/Makefile.am
index 6ce1430ea6..5af964b0e9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -115,6 +115,7 @@ MODULES =3D					\
   guix/build-system/cargo.scm			\
   guix/build-system/clojure.scm			\
   guix/build-system/cmake.scm			\
+  guix/build-system/composer.scm		\
   guix/build-system/dub.scm			\
   guix/build-system/dune.scm			\
   guix/build-system/emacs.scm			\
@@ -163,6 +164,7 @@ MODULES =3D					\
   guix/build/cargo-build-system.scm		\
   guix/build/cargo-utils.scm			\
   guix/build/cmake-build-system.scm		\
+  guix/build/composer-build-system.scm		\
   guix/build/dub-build-system.scm		\
   guix/build/dune-build-system.scm		\
   guix/build/emacs-build-system.scm		\
@@ -354,7 +356,8 @@ AUX_FILES =3D						\
   gnu/packages/aux-files/linux-libre/4.4-i686.conf	\
   gnu/packages/aux-files/linux-libre/4.4-x86_64.conf	\
   gnu/packages/aux-files/pack-audit.c			\
-  gnu/packages/aux-files/run-in-namespace.c
+  gnu/packages/aux-files/run-in-namespace.c		\
+  gnu/packages/aux-files/findclass.php
=20
 # Templates, examples.
 EXAMPLES =3D					\
diff --git a/doc/guix.texi b/doc/guix.texi
index 626915fd39..6870163c23 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6941,6 +6941,20 @@ debugging information''), which roughly means that c=
ode is compiled with
 @code{-O2 -g}, as is the case for Autoconf-based packages by default.
 @end defvr
=20
+@defvr {Scheme Variable} composer-build-system
+This variable is exported by @code{(guix build-system composer)}.  It
+implements the build procedure for packages using
+@url{https://getcomposer.org/, Composer}, the PHP package manager.
+
+It automatically adds the @code{php} package to the set of inputs.  Which
+package is used can be specified with the @code{#:php} parameter.
+
+The @code{#:test-target} parameter is used to control which script is run
+for the tests.  By default, the @code{test} script is run if it exists.  If
+the script does not exist, the build system will run @code{phpunit} from t=
he
+source directory, assuming there is a @file{phpunit.xml} file.
+@end defvr
+
 @defvr {Scheme Variable} dune-build-system
 This variable is exported by @code{(guix build-system dune)}.  It
 supports builds of packages using @uref{https://dune.build/, Dune}, a build
diff --git a/gnu/packages/aux-files/findclass.php b/gnu/packages/aux-files/=
findclass.php
new file mode 100644
index 0000000000..d0b250c8e1
--- /dev/null
+++ b/gnu/packages/aux-files/findclass.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * The content of this file is copied from composer's src/Composer/Autoloa=
d/ClassMapGenerator.php
+ * the findClasses method was extracted, to prevent using any dependency.
+ *
+ * Composer (and thus this file) is distributed under the expat license, a=
nd
+ * ClassMapGenerator.php also contains this notice:
+ *
+ *   This file is part of Composer.
+ *
+ *   (c) Nils Adermann <naderman@HIDDEN>
+ *       Jordi Boggiano <j.boggiano@HIDDEN>
+ *
+ *   For the full copyright and license information, please view the LICEN=
SE
+ *   file that was distributed with this source code.
+ *
+ *   This file is copied from the Symfony package.
+ *
+ *   (c) Fabien Potencier <fabien@HIDDEN>
+ *=20
+ * To the extent to wich it makes sense, as the author of the extract:
+ * Copyright =C2=A9 2020 Julien Lepiller <julien@HIDDEN>
+ */
+
+/**
+ * Extract the classes in the given file
+ *
+ * @param  string            $path The file to check
+ * @throws \RuntimeException
+ * @return array             The found classes
+ */
+function findClasses($path)
+{
+    $extraTypes =3D PHP_VERSION_ID < 50400 ? '' : '|trait';
+    if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=
=3D')) {
+        $extraTypes .=3D '|enum';
+    }
+    // Use @ here instead of Silencer to actively suppress 'unhelpful' out=
put
+    // @link https://github.com/composer/composer/pull/4886
+    $contents =3D @php_strip_whitespace($path);
+    if (!$contents) {
+        if (!file_exists($path)) {
+            $message =3D 'File at "%s" does not exist, check your classmap=
 definitions';
+        } elseif (!is_readable($path)) {
+            $message =3D 'File at "%s" is not readable, check its permissi=
ons';
+        } elseif ('' =3D=3D=3D trim(file_get_contents($path))) {
+            // The input file was really empty and thus contains no classes
+            return array();
+        } else {
+            $message =3D 'File at "%s" could not be parsed as PHP, it may =
be binary or corrupted';
+        }
+        $error =3D error_get_last();
+        if (isset($error['message'])) {
+            $message .=3D PHP_EOL . 'The following message may be helpful:=
' . PHP_EOL . $error['message'];
+        }
+        throw new \RuntimeException(sprintf($message, $path));
+    }
+    // return early if there is no chance of matching anything in this file
+    if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents=
)) {
+        return array();
+    }
+    // strip heredocs/nowdocs
+    $contents =3D preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?=
:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=3D\s+|[;,.)])}s', 'null', $contents);
+    // strip strings
+    $contents =3D preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\=
\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents);
+    // strip leading non-php code if needed
+    if (substr($contents, 0, 2) !=3D=3D '<?') {
+        $contents =3D preg_replace('{^.+?<\?}s', '<?', $contents, 1, $repl=
acements);
+        if ($replacements =3D=3D=3D 0) {
+            return array();
+        }
+    }
+    // strip non-php blocks in the file
+    $contents =3D preg_replace('{\?>(?:[^<]++|<(?!\?))*+<\?}s', '?><?', $c=
ontents);
+    // strip trailing non-php code if needed
+    $pos =3D strrpos($contents, '?>');
+    if (false !=3D=3D $pos && false =3D=3D=3D strpos(substr($contents, $po=
s), '<?')) {
+        $contents =3D substr($contents, 0, $pos);
+    }
+    // strip comments if short open tags are in the file
+    if (preg_match('{(<\?)(?!(php|hh))}i', $contents)) {
+        $contents =3D preg_replace('{//.* | /\*(?:[^*]++|\*(?!/))*\*/}x', =
'', $contents);
+    }
+    preg_match_all('{
+        (?:
+             \b(?<![\$:>])(?P<type>class|interface'.$extraTypes.') \s++ (?=
P<name>[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+)
+           | \b(?<![\$:>])(?P<ns>namespace) (?P<nsname>\s++[a-zA-Z_\x7f-\x=
ff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-=
\xff]*+)*+)? \s*+ [\{;]
+        )
+    }ix', $contents, $matches);
+    $classes =3D array();
+    $namespace =3D '';
+    for ($i =3D 0, $len =3D count($matches['type']); $i < $len; $i++) {
+        if (!empty($matches['ns'][$i])) {
+            $namespace =3D str_replace(array(' ', "\t", "\r", "\n"), '', $=
matches['nsname'][$i]) . '\\';
+        } else {
+            $name =3D $matches['name'][$i];
+            // skip anon classes extending/implementing
+            if ($name =3D=3D=3D 'extends' || $name =3D=3D=3D 'implements')=
 {
+                continue;
+            }
+            if ($name[0] =3D=3D=3D ':') {
+                // This is an XHP class, https://github.com/facebook/xhp
+                $name =3D 'xhp'.substr(str_replace(array('-', ':'), array(=
'_', '__'), $name), 1);
+            } elseif ($matches['type'][$i] =3D=3D=3D 'enum') {
+                // In Hack, something like:
+                //   enum Foo: int { HERP =3D '123'; }
+                // The regex above captures the colon, which isn't part of
+                // the class name.
+                $name =3D rtrim($name, ':');
+            }
+            $classes[] =3D ltrim($namespace . $name, '\\');
+        }
+    }
+    return $classes;
+}
+
+$options =3D getopt('i:f:', []);
+$file =3D $options["f"];
+$input =3D $options["i"];
+
+$classes =3D findClasses($file);
+foreach($classes as $class) {
+  echo '$classmap[\''.$class.'\'] =3D \''.$input.'/'.$file.'\';';
+  echo "\n";
+}
diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm
new file mode 100644
index 0000000000..0299f11906
--- /dev/null
+++ b/guix/build-system/composer.scm
@@ -0,0 +1,173 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix build-system composer)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:export (%composer-build-system-modules
+            lower
+            composer-build
+            composer-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for PHP packages using Composer. This is imple=
mented
+;; as an extension of `gnu-build-system'.
+;;
+;; Code:
+
+(define (default-php)
+  "Return the default PHP package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages php))))
+    (module-ref module 'php)))
+
+(define (default-findclass)
+  "Return the default findclass script."
+  (search-auxiliary-file "findclass.php"))
+
+(define (default-composer-classloader)
+  "Return the default composer-classloader package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages php-xyz))))
+    (module-ref module 'composer-classloader)))
+
+(define %composer-build-system-modules
+  ;; Build-side modules imported by default.
+  `((guix build composer-build-system)
+    (guix build union)
+    (json)
+    (json builder)
+    (json parser)
+    (json record)
+    ,@%gnu-build-system-modules))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs system target
+                (php (default-php))
+                (composer-classloader (default-composer-classloader))
+                (findclass (default-findclass))
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME."
+  (define private-keywords
+    '(#:source #:target #:php #:composer-classloader #:findclass #:inputs =
#:native-inputs))
+
+  (and (not target)                               ;XXX: no cross-compilati=
on
+       (bag
+         (name name)
+         (system system)
+         (host-inputs `(,@(if source
+                              `(("source" ,source))
+                              '())
+                        ,@inputs
+
+                        ;; Keep the standard inputs of 'gnu-build-system'.
+                        ,@(standard-packages)))
+         (build-inputs `(("php" ,php)
+                         ("findclass.php" ,findclass)
+			 ("composer-classloader" ,composer-classloader)
+                         ,@native-inputs))
+         (outputs outputs)
+         (build composer-build)
+         (arguments (strip-keyword-arguments private-keywords arguments)))=
))
+
+(define* (composer-build store name inputs
+                         #:key (guile #f)
+                         (outputs '("out")) (configure-flags ''())
+                         (search-paths '())
+                         (out-of-source? #t)
+                         (composer-file "composer.json")
+                         (tests? #t)
+                         (test-target "test")
+                         (install-target "install")
+                         (validate-runpath? #t)
+                         (patch-shebangs? #t)
+                         (strip-binaries? #t)
+                         (strip-flags ''("--strip-debug"))
+                         (strip-directories ''("lib" "lib64" "libexec"
+                                               "bin" "sbin"))
+                         (phases '(@ (guix build composer-build-system)
+                                     %standard-phases))
+                         (system (%current-system))
+                         (imported-modules %composer-build-system-modules)
+                         (modules '((guix build composer-build-system)
+                                    (guix build utils)
+                                    (json))))
+  "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provi=
des
+a 'composer.json' file as its build system."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (composer-build #:source ,(match (assoc-ref inputs "source")
+                                   (((? derivation? source))
+                                    (derivation->output-path source))
+                                   ((source)
+                                    source)
+                                   (source
+                                    source))
+                       #:system ,system
+                       #:outputs %outputs
+                       #:inputs %build-inputs
+                       #:search-paths ',(map search-path-specification->se=
xp
+                                             search-paths)
+                       #:phases ,phases
+                       #:out-of-source? ,out-of-source?
+                       #:composer-file ,composer-file
+                       #:tests? ,tests?
+                       #:test-target ,test-target
+                       #:install-target ,install-target
+                       #:validate-runpath? ,validate-runpath?
+                       #:patch-shebangs? ,patch-shebangs?
+                       #:strip-binaries? ,strip-binaries?
+                       #:strip-flags ,strip-flags
+                       #:strip-directories ,strip-directories)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:system system
+                                #:inputs inputs
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define composer-build-system
+  (build-system
+    (name 'composer)
+    (description "The standard Composer build system")
+    (lower lower)))
+
+;;; composer.scm ends here
diff --git a/guix/build/composer-build-system.scm b/guix/build/composer-bui=
ld-system.scm
new file mode 100644
index 0000000000..1af5e59b81
--- /dev/null
+++ b/guix/build/composer-build-system.scm
@@ -0,0 +1,241 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix build composer-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 match)
+  #:use-module (json)
+  #:use-module (srfi srfi-26)
+  #:export (%standard-phases
+            composer-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the standard composer build procedure.
+;;
+;; Code:
+
+(define (json->require dict)
+  (if dict
+      (let loop ((result '()) (require dict))
+        (match require
+          (() result)
+          ((((? (cut string-contains <> "/") name) . _)
+             require ...)
+           (loop (cons name result) require))
+          ((_ require ...) (loop result require))))
+      '()))
+
+(define-json-mapping <composer-autoload> make-composer-autoload composer-a=
utoload?
+  json->composer-autoload
+  (psr-4 composer-autoload-psr-4 "psr-4"
+                (match-lambda
+                  (#f '())
+                  (psr-4 psr-4)))
+  (classmap composer-autoload-classmap "classmap"
+            (match-lambda
+              (#f '())
+              (#(lst ...) lst))))
+
+(define-json-mapping <composer-package> make-composer-package composer-pac=
kage?
+  json->composer-package
+  (name         composer-package-name)
+  (autoload     composer-package-autoload "autoload" json->composer-autolo=
ad)
+  (autoload-dev composer-package-autoload-dev "autoload-dev" json->compose=
r-autoload)
+  (require      composer-package-require "require" json->require)
+  (dev-require  composer-package-dev-require "require-dev" json->require)
+  (scripts      composer-package-scripts "scripts"
+                (match-lambda
+                  (#f '())
+                  ((scripts ...) scripts)))
+  (binaries     composer-package-binaries "bin"
+                (match-lambda
+                  (#f '())
+                  (#(lst ...) lst))))
+
+(define* (read-package-data #:key (filename "composer.json"))
+  (call-with-input-file filename
+    (lambda (port)
+      (json->composer-package (json->scm port)))))
+
+(define* (check #:key composer-file inputs outputs tests? test-target #:al=
low-other-keys)
+  "Install the given package."
+  (when tests?
+    (mkdir-p "vendor")
+    (create-autoload (string-append (getcwd) "/vendor") composer-file
+                     (append inputs outputs) #:dev-dependencies? #t)
+    (let* ((package-data (read-package-data #:filename composer-file))
+           (scripts (composer-package-scripts package-data))
+           (test-script (assoc-ref scripts test-target))
+           (dependencies (composer-package-require package-data))
+           (dependencies-dev (composer-package-dev-require package-data))
+           (name (composer-package-name package-data)))
+      (for-each
+        (match-lambda
+          ((_ . input)
+           (let ((bin (find-php-bin input)))
+             (when bin
+               (copy-recursively bin "vendor/bin")))))
+        inputs)
+      (match test-script
+        ((? string? command)
+         (unless (zero? (system command))
+           (throw 'failed-command command)))
+        (('@ (? string? command) ...)
+         (for-each
+           (lambda (c)
+             (unless (zero? (system c))
+               (throw 'failed-command c)))
+           command))
+        (#f (invoke "vendor/bin/phpunit")))))
+  #t)
+
+(define (find-php-bin input)
+  (let* ((web-dir (string-append input "/share/web"))
+         (vendors (if (file-exists? web-dir)
+                      (find-files web-dir "^vendor$" #:directories? #t)
+                      #f)))
+    (match vendors
+      ((vendor)
+       (let ((bin (string-append vendor "/bin")))
+         (and (file-exists? bin) bin)))
+      (_ #f))))
+
+(define (find-php-dep inputs dependency)
+  (let loop ((inputs inputs))
+    (match inputs
+      (() (throw 'unsatisfied-dependency "Unsatisfied dependency: required=
 "
+                 dependency))
+      (((_ . input) inputs ...)
+       (let ((autoload (string-append input "/share/web/" dependency
+                                      "/vendor/autoload_conf.php")))
+          (if (file-exists? autoload)
+              autoload
+              (loop inputs)))))))
+
+(define* (create-autoload vendor composer-file inputs #:key dev-dependenci=
es?)
+  "creates an autoload.php file that sets up the class locations for this =
package,
+so it can be autoloaded by PHP when the package classes are required."
+  (with-output-to-file (string-append vendor "/autoload.php")
+    (lambda _
+      (display (string-append
+                 "<?php
+// autoload.php @generated by Guix
+$map =3D $psr4map =3D $classmap =3D array();
+require_once '" vendor "/autoload_conf.php'
+require_once '" (assoc-ref inputs "composer-classloader") "/share/web/comp=
oser/ClassLoader.php'
+$loader =3D new \\Composer\\Autoload\\ClassLoader();
+foreach ($map as $namespace =3D> $path) {
+  $loader->set($namespace, $path);
+}
+foreach ($psr4map as $namespace =3D> $path) {
+  $loader->setPsr4($namespace, $path);
+}
+$loader->addClassMap($classmap);
+$loader->register();
+"))))
+  ;; Now, create autoload_conf.php that contains the actual data, as a set
+  ;; of arrays
+  (let* ((package-data (read-package-data #:filename composer-file))
+         (autoload (composer-package-autoload package-data))
+         (autoload-dev (composer-package-autoload-dev package-data))
+         (dependencies (composer-package-require package-data))
+         (dependencies-dev (composer-package-dev-require package-data)))
+    (with-output-to-file (string-append vendor "/autoload_conf.php")
+      (lambda _
+        (format #t "<?php~%")
+        (format #t "// autoload_conf.php @generated by Guix~%")
+        (force-output)
+        (for-each
+          (lambda (psr4)
+            (match psr4
+              ((key . value)
+               (format #t "$psr4map['~a'] =3D '~a/../~a';~%"
+                       (string-join (string-split key #\\) "\\\\")
+                       vendor value))))
+          (append
+            (composer-autoload-psr-4 autoload)
+            (if dev-dependencies?
+                (composer-autoload-psr-4 autoload-dev)
+                '())))
+        (for-each
+          (lambda (classmap)
+            (for-each
+              (lambda (file)
+                (invoke "php" (assoc-ref inputs "findclass.php")
+                        "-i" (string-append vendor "/..") "-f" file))
+              (find-files classmap ".(php|hh|inc)$")))
+          (append
+            (composer-autoload-classmap autoload)
+            (if dev-dependencies?
+                (composer-autoload-classmap autoload-dev)
+                '())))
+        (for-each
+          (lambda (dep)
+            (format #t "require_once '~a';~%" (find-php-dep inputs dep)))
+          (append
+            dependencies
+            (if dev-dependencies?
+                dependencies-dev
+                '())))))))
+
+(define* (install #:key inputs outputs composer-file #:allow-other-keys)
+  "Install the given package."
+  (let* ((out (assoc-ref outputs "out"))
+         (package-data (read-package-data #:filename composer-file))
+         (name (composer-package-name package-data))
+         (php-dir (string-append out "/share/web/" name))
+         (bin-dir (string-append php-dir "/vendor/bin"))
+         (bin (string-append out "/bin"))
+         (binaries (composer-package-binaries package-data)))
+      (mkdir-p php-dir)
+      (copy-recursively "." php-dir)
+      (mkdir-p (string-append php-dir "/vendor"))
+      (when binaries
+        (mkdir-p bin-dir)
+        (mkdir-p bin)
+        (for-each
+          (lambda (file)
+            (let ((installed-file (string-append bin-dir "/" (basename fil=
e)))
+                  (bin-file (string-append bin "/" (basename file)))
+                  (original-file (string-append php-dir "/" file)))
+              (symlink original-file installed-file)
+              (symlink original-file bin-file)))
+          binaries))
+      (create-autoload (string-append php-dir "/vendor")
+                       composer-file inputs))
+  #t)
+
+(define %standard-phases
+  ;; Everything is as with the GNU Build System except for the `configure'
+  ;; , `build', `check' and `install' phases.
+  (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
+    (delete 'configure)
+    (delete 'build)
+    (delete 'check)
+    (replace 'install install)
+    (add-after 'install 'check check)))
+
+(define* (composer-build #:key inputs (phases %standard-phases)
+                         #:allow-other-keys #:rest args)
+  "Build the given package, applying all of PHASES in order."
+  (apply gnu:gnu-build #:inputs inputs #:phases phases args))
+
+;;; composer-build-system.scm ends here
--=20
2.28.0


--MP_/wX.Yq./3HOZ_fNNuuCidCBh--




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 25 Sep 2020 10:34:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 25 06:34:13 2020
Received: from localhost ([127.0.0.1]:42784 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kLl3N-0006SN-2a
	for submit <at> debbugs.gnu.org; Fri, 25 Sep 2020 06:34:13 -0400
Received: from eggs.gnu.org ([209.51.188.92]:39702)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kLl3L-0006SA-K9
 for 42338 <at> debbugs.gnu.org; Fri, 25 Sep 2020 06:34:12 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:56389)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kLl3G-00012x-3v; Fri, 25 Sep 2020 06:34:06 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=60868 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kLl37-0000S9-Tj; Fri, 25 Sep 2020 06:34:04 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN> <87imcphe6a.fsf@HIDDEN>
 <20200918004403.0d755d60@HIDDEN>
 <87eemz1nib.fsf@HIDDEN>
 <20200919012420.301201e8@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 4 =?utf-8?Q?Vend=C3=A9miaire?= an 229 de la
 =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Fri, 25 Sep 2020 12:33:56 +0200
In-Reply-To: <20200919012420.301201e8@HIDDEN> (Julien
 Lepiller's message of "Sat, 19 Sep 2020 01:24:20 +0200")
Message-ID: <87eemq16y3.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi,

Julien Lepiller <julien@HIDDEN> skribis:

> Le Fri, 18 Sep 2020 10:45:48 +0200,
> Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :
>
>> Hi,
>>=20
>> Julien Lepiller <julien@HIDDEN> skribis:
>>=20
>> > +    (let* ((package-data (read-package-data #:filename
>> > composer-file))
>> > +           (scripts (match (assoc-ref package-data "scripts")
>> > +                      (('@ script ...) script)
>> > +                      (#f '())))
>> > +           (test-script
>> > +             (assoc-ref scripts test-target))
>> > +           (dependencies (filter (lambda (dep) (string-contains
>> > dep "/"))
>> > +                                 (map car
>> > +                                      (match (assoc-ref
>> > package-data "require")
>> > +                                        (('@ dependency ...)
>> > dependency)
>> > +                                        (#f '())))))
>> > +           (dependencies-dev
>> > +             (filter (lambda (dep) (string-contains dep "/"))
>> > +                     (map car
>> > +                          (match (assoc-ref package-data
>> > "require-dev")
>> > +                            (('@ dependency ...) dependency)
>> > +                            (#f '())))))
>> > +           (name (assoc-ref package-data "name")))=20=20
>>=20
>> This is also a case for =E2=80=98define-json-mapping=E2=80=99.  I suppos=
e we could use
>> Guile-JSON instead of (guix build json), no?
>>=20
>> I think this code and similar occurrences would be less intimidating
>> if we used =E2=80=98define-json-mapping=E2=80=99; it would make the data=
 structures
>> clearer, unlike here where one has to keep in mind what the list/tree
>> looks like so they can map car/cdr around.
>
> I think we already tried that with the node build system, but we had to
> revert, because we were importing guile-json from the host side. I
> don't remember the details though, so if you think it's OK now, I'll
> gladly make the code look nicer :)

Yes please. :-)  I think code full of alists/dictionaries would be hard
to read and to maintain since mistakes could end up being silently
ignored or lead to a wrong-type-#f error far down the road.

Also please remember to avoid car/cdr:

  https://guix.gnu.org/manual/en/html_node/Data-Types-and-Pattern-Matching.=
html

As for Guile-JSON: perhaps you can post a draft that we can play with to
see if there=E2=80=99s anything wrong, but off the top of my head I don=E2=
=80=99t see
why it wouldn=E2=80=99t work.

>> > +      (match test-script
>> > +        ((? string? command)
>> > +         (unless (equal? (system command) 0)
>> > +           (throw 'failed-command command)))
>> > +        (('@ (? string? command) ...)
>> > +         (for-each
>> > +           (lambda (c)
>> > +             (unless (equal? (system c) 0)
>> > +               (throw 'failed-command c)))
>> > +           command))=20=20
>>=20
>> Use (zero? x) instead of (equal? 0 x).
>>=20
>> Also, why not use =E2=80=98invoke=E2=80=99?  I this because these comman=
ds are really
>> shell commands and expect things like glob patterns and tilde
>> expansion? If these are not shell commands, I recommend =E2=80=98invoke=
=E2=80=99,
>> which will report failures more nicely.
>
> Here I have a single string that contains shell commands, so I don't
> think I can use invoke.

=E2=80=98system=E2=80=99 passes the string to =E2=80=9Csh -c=E2=80=9D, whic=
h means the string is subject
to shelly things: glob expansion, semicolon interpretation, string
quotation, etc.

If those strings are meant to be shell-interpreted, then passing them to
=E2=80=98system=E2=80=99 is the right thing.  Otherwise, it should be avoid=
ed IMO.

Thanks,
Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 25 Sep 2020 10:27:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 25 06:27:16 2020
Received: from localhost ([127.0.0.1]:42776 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kLkwe-000495-0s
	for submit <at> debbugs.gnu.org; Fri, 25 Sep 2020 06:27:16 -0400
Received: from eggs.gnu.org ([209.51.188.92]:38218)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kLkwd-00048u-0t
 for 42338 <at> debbugs.gnu.org; Fri, 25 Sep 2020 06:27:15 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:55944)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kLkwW-0000HE-KO; Fri, 25 Sep 2020 06:27:08 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=60850 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kLkwR-0007bR-4B; Fri, 25 Sep 2020 06:27:05 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 01/34] guix: import: Add composer importer.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN> <87mu21heay.fsf@HIDDEN>
 <20200918004333.127aa5da@HIDDEN>
 <87sgbf1o5w.fsf@HIDDEN>
 <20200919012055.1b2e686f@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 4 =?utf-8?Q?Vend=C3=A9miaire?= an 229 de la
 =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Fri, 25 Sep 2020 12:27:01 +0200
In-Reply-To: <20200919012055.1b2e686f@HIDDEN> (Julien
 Lepiller's message of "Sat, 19 Sep 2020 01:20:55 +0200")
Message-ID: <87lfgy179m.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Julien,

Julien Lepiller <julien@HIDDEN> skribis:

> From 70b9cb2bb389f3e5f9dcc75a44d7d60c28f997bc Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@HIDDEN>
> Date: Tue, 29 Oct 2019 08:07:38 +0100
> Subject: [PATCH 01/34] guix: import: Add composer importer.
>
> * guix/import/composer.scm: New file.
> * guix/scripts/import/composer.scm: New file.
> * guix/tests/composer.scm: New file.
> * Makefile.am: Add them.
> * guix/scripts/import.scm: Add composer importer.
> * doc/guix.texi (Invoking guix import): Mention it.

[...]

> +@cindex PHP
> +Import metadat from the @uref{https://getcomposer.org/, Composer} package
                ^
Typo.

> +(define* (composer-fetch name #:optional version)
> +  "Return an alist representation of the Composer metadata for the packa=
ge NAME,
> +or #f on failure."
> +  (let ((package (json-fetch
> +                   (string-append (%composer-base-url) "/p/" name ".json=
"))))
> +    (if package
> +        (let* ((packages (assoc-ref package "packages"))
> +               (package (or (assoc-ref packages name) package))
> +               (versions (filter
> +                           (lambda (version)
> +                             (and (not (string-contains version "dev"))
> +                                  (not (string-contains version "beta"))=
))
> +                           (map car package)))
> +               (version (or (if (null? version) #f version)
> +                            (latest-version versions))))
> +          (assoc-ref package version))
> +        #f)))

I think this should directly return a <composer-package> since the all
the callers pass the alist through =E2=80=98json->composer-package=E2=80=99=
.  The idea
is that alists should be converted to records as soon as they enter the
process.

Also it=E2=80=99s weird that =E2=80=98package=E2=80=99 above has a =E2=80=
=9Cpackages=E2=80=9D (plural) entry.
Perhaps we=E2=80=99re missing another JSON mapping?

[...]

> +++ b/guix/scripts/import/composer.scm
> @@ -0,0 +1,107 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright =C2=A9 2015 David Thompson <davet@HIDDEN>
> +;;; Copyright =C2=A9 2018 Oleg Pykhalov <go.wigust@HIDDEN>

You can preserve these two lines if you think it=E2=80=99s relevant, but I=
=E2=80=99d
suggest adding one for yourself.

OK to push with changes along these lines.

Thanks for taking the time to convert to =E2=80=98define-json-mapping=E2=80=
=99 and all!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 18 Sep 2020 23:24:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 18 19:24:33 2020
Received: from localhost ([127.0.0.1]:45343 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kJPk0-0001zf-VJ
	for submit <at> debbugs.gnu.org; Fri, 18 Sep 2020 19:24:33 -0400
Received: from lepiller.eu ([89.234.186.109]:45370)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1kJPjz-0001zX-9b
 for 42338 <at> debbugs.gnu.org; Fri, 18 Sep 2020 19:24:31 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 3ca00baf;
 Fri, 18 Sep 2020 23:24:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type:content-transfer-encoding; s=dkim; bh=2vm6zjelqGCW
 EGpKnTmnH/4eFtLtrchGKJuLJZAxaqA=; b=ZHtswwonl9gcevuPz3TzA/8iHeVo
 bkjLiJUXjpIaTohjGVNL0+V8VGzvI+NWQzIwLir15lIxBOszFoXUSW74CwfkzVUA
 FeuB5aFaljEotlyEPinvRa8xtl1ht522xh4RtV/Otvqxb9k7ksSJsyqx9F2ogVo5
 mBvxEjAg+3vpRuJaMJ7F+wcWMx8lY0jqijpQHYHBwH5WVzBQjRzw2/NIm13hK90/
 tAt/RLJCF1C00IT/ckWDehxWihl5tP1Qnoxj9DciSfV8OggHVhUZWBQgsGhVFzn7
 bRC4AOuyAYiqZVgrBC+LsnnYXLnKWhTrxBWlD3VwySJbA/OnVTuayYuCIw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id cd75d289
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); 
 Fri, 18 Sep 2020 23:24:29 +0000 (UTC)
Date: Sat, 19 Sep 2020 01:24:20 +0200
From: Julien Lepiller <julien@HIDDEN>
To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= <ludo@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
Message-ID: <20200919012420.301201e8@HIDDEN>
In-Reply-To: <87eemz1nib.fsf@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN>
 <87imcphe6a.fsf@HIDDEN>
 <20200918004403.0d755d60@HIDDEN>
 <87eemz1nib.fsf@HIDDEN>
X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Le Fri, 18 Sep 2020 10:45:48 +0200,
Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :

> Hi,
>=20
> Julien Lepiller <julien@HIDDEN> skribis:
>=20
> > +    (let* ((package-data (read-package-data #:filename
> > composer-file))
> > +           (scripts (match (assoc-ref package-data "scripts")
> > +                      (('@ script ...) script)
> > +                      (#f '())))
> > +           (test-script
> > +             (assoc-ref scripts test-target))
> > +           (dependencies (filter (lambda (dep) (string-contains
> > dep "/"))
> > +                                 (map car
> > +                                      (match (assoc-ref
> > package-data "require")
> > +                                        (('@ dependency ...)
> > dependency)
> > +                                        (#f '())))))
> > +           (dependencies-dev
> > +             (filter (lambda (dep) (string-contains dep "/"))
> > +                     (map car
> > +                          (match (assoc-ref package-data
> > "require-dev")
> > +                            (('@ dependency ...) dependency)
> > +                            (#f '())))))
> > +           (name (assoc-ref package-data "name"))) =20
>=20
> This is also a case for =E2=80=98define-json-mapping=E2=80=99.  I suppose=
 we could use
> Guile-JSON instead of (guix build json), no?
>=20
> I think this code and similar occurrences would be less intimidating
> if we used =E2=80=98define-json-mapping=E2=80=99; it would make the data =
structures
> clearer, unlike here where one has to keep in mind what the list/tree
> looks like so they can map car/cdr around.

I think we already tried that with the node build system, but we had to
revert, because we were importing guile-json from the host side. I
don't remember the details though, so if you think it's OK now, I'll
gladly make the code look nicer :)

>=20
> > +      (for-each
> > +        (lambda (input) =20
>=20
> Like for =E2=80=98map=E2=80=99, please indent on the same line:
>=20
>   (for-each (lambda (input)
>=20
> > +      (match test-script
> > +        ((? string? command)
> > +         (unless (equal? (system command) 0)
> > +           (throw 'failed-command command)))
> > +        (('@ (? string? command) ...)
> > +         (for-each
> > +           (lambda (c)
> > +             (unless (equal? (system c) 0)
> > +               (throw 'failed-command c)))
> > +           command)) =20
>=20
> Use (zero? x) instead of (equal? 0 x).
>=20
> Also, why not use =E2=80=98invoke=E2=80=99?  I this because these command=
s are really
> shell commands and expect things like glob patterns and tilde
> expansion? If these are not shell commands, I recommend =E2=80=98invoke=
=E2=80=99,
> which will report failures more nicely.

Here I have a single string that contains shell commands, so I don't
think I can use invoke.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 18 Sep 2020 23:21:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 18 19:21:16 2020
Received: from localhost ([127.0.0.1]:45335 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kJPgl-0001uY-FJ
	for submit <at> debbugs.gnu.org; Fri, 18 Sep 2020 19:21:16 -0400
Received: from lepiller.eu ([89.234.186.109]:45360)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1kJPgh-0001uM-LZ
 for 42338 <at> debbugs.gnu.org; Fri, 18 Sep 2020 19:21:10 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 1599ee07;
 Fri, 18 Sep 2020 23:21:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type; s=dkim; bh=d9OJKWHtNuimwvGYuacxUtDtYOKA0IAbcKDbJe
 a7BWg=; b=VFiFaxPagrAZ3xp6/X4Xkl4FnrW8G76tlBxoMqPQG9g+YTkxi99/eC
 g6p1+dJb6SH/8wWSv8dq/NgBu9ayGoMOj1V8OtNa9emt55CYu/rhLBbj2xFy2QAE
 wPmmCYCKHdSWU/iv/lJeezVdgjzoH+5d7Fth+/uDPLs9oPz+g0Afq0SGksjq5WrN
 qs/AUj0AGuy9fqJmZNvtbnm1x3ReSR0oXGpolrvTonV4cYd4pisR0+/JaXf33g51
 eh6RmsTKyBRycPWtDgEziybyk5ZI1LxTkOrgHIaEQgQtPIO383DGZdpTB6MtTElE
 MlubApr1EaH/ssPN05hQeM5KjKjFATvw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id ab9ff704
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); 
 Fri, 18 Sep 2020 23:21:04 +0000 (UTC)
Date: Sat, 19 Sep 2020 01:20:55 +0200
From: Julien Lepiller <julien@HIDDEN>
To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= <ludo@HIDDEN>
Subject: Re: [bug#42338] [PATCH 01/34] guix: import: Add composer importer.
Message-ID: <20200919012055.1b2e686f@HIDDEN>
In-Reply-To: <87sgbf1o5w.fsf@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <87mu21heay.fsf@HIDDEN>
 <20200918004333.127aa5da@HIDDEN>
 <87sgbf1o5w.fsf@HIDDEN>
X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_/0LhbN0ey7AXzR3WziH.SLMv"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--MP_/0LhbN0ey7AXzR3WziH.SLMv
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Fri, 18 Sep 2020 10:31:39 +0200,
Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :

> Hi!
>=20
> Julien Lepiller <julien@HIDDEN> skribis:
>=20
> > From 6d521ca9f066f82488abefd5d3630e38305c0fd1 Mon Sep 17 00:00:00
> > 2001 From: Julien Lepiller <julien@HIDDEN>
> > Date: Tue, 29 Oct 2019 08:07:38 +0100
> > Subject: [PATCH 01/34] guix: import: Add composer importer.
> >
> > * guix/import/composer.scm: New file.
> > * guix/scripts/import/composer.scm: New file.
> > * guix/tests/composer.scm: New file.
> > * Makefile.am: Add them.
> > * guix/scripts/import.scm: Add composer importer.
> > * doc/guix.texi (Invoking guix import): Mention it. =20
>=20
> [...]
>=20
> > +@item composer
> > +@cindex COMPOSER =20
>=20
> s/COMPOSER/Composer/ ?
>=20
> > +Import metadat from the @uref{https://getcomposer.org/, Composer}
> > package =20
>                 ^
> metadata
>=20
> > +archive used by the PHP community. =20
>=20
> Could you add an example command line like we have for some of the
> other importers?  (It=E2=80=99s also useful for us as a test against the
> actual servers=E2=80=A6)
>=20
> > +  (let ((package (json-fetch
> > +                   (string-append (%composer-base-url) "/p/" name
> > ".json"))))
> > +    (if package
> > +        (let* ((packages (assoc-ref package "packages"))
> > +               (package (assoc-ref packages name))
> > +               (versions (filter
> > +                           (lambda (version)
> > +                             (and (not (string-contains version
> > "dev"))
> > +                                  (not (string-contains version
> > "beta"))))
> > +                           (map car package))) =20
>=20
> Like I wrote before, I recommend =E2=80=98define-json-mapping=E2=80=99.  =
If you prefer
> you can make that change later on once you=E2=80=99ve pushed this first
> version, but I really think it=E2=80=99ll help maintainability.
>=20
> This should also help avoid (map car =E2=80=A6), which is frowned upon in
> Guix. :-)
>=20
> > +               (versions (map
> > +                           (lambda (version) =20
>=20
> Rather indent as: (map (lambda (version)
>=20
> Otherwise LGTM! =20
>=20
> Ludo=E2=80=99.

Thanks, here's a new version

--MP_/0LhbN0ey7AXzR3WziH.SLMv
Content-Type: text/x-patch
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename=0001-guix-import-Add-composer-importer.patch

=46rom 70b9cb2bb389f3e5f9dcc75a44d7d60c28f997bc Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@HIDDEN>
Date: Tue, 29 Oct 2019 08:07:38 +0100
Subject: [PATCH 01/34] guix: import: Add composer importer.

* guix/import/composer.scm: New file.
* guix/scripts/import/composer.scm: New file.
* guix/tests/composer.scm: New file.
* Makefile.am: Add them.
* guix/scripts/import.scm: Add composer importer.
* doc/guix.texi (Invoking guix import): Mention it.
---
 Makefile.am                      |   3 +
 doc/guix.texi                    |  11 ++
 guix/import/composer.scm         | 270 +++++++++++++++++++++++++++++++
 guix/scripts/import.scm          |   2 +-
 guix/scripts/import/composer.scm | 107 ++++++++++++
 tests/composer.scm               |  92 +++++++++++
 6 files changed, 484 insertions(+), 1 deletion(-)
 create mode 100644 guix/import/composer.scm
 create mode 100644 guix/scripts/import/composer.scm
 create mode 100644 tests/composer.scm

diff --git a/Makefile.am b/Makefile.am
index 8e91e1e558..6ce1430ea6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -223,6 +223,7 @@ MODULES =3D					\
   guix/search-paths.scm				\
   guix/packages.scm				\
   guix/import/cabal.scm				\
+  guix/import/composer.scm			\
   guix/import/cpan.scm				\
   guix/import/cran.scm				\
   guix/import/crate.scm				\
@@ -269,6 +270,7 @@ MODULES =3D					\
   guix/scripts/system/reconfigure.scm		\
   guix/scripts/lint.scm				\
   guix/scripts/challenge.scm			\
+  guix/scripts/import/composer.scm		\
   guix/scripts/import/crate.scm			\
   guix/scripts/import/cran.scm			\
   guix/scripts/import/elpa.scm  		\
@@ -402,6 +404,7 @@ SCM_TESTS =3D					\
   tests/challenge.scm				\
   tests/channels.scm				\
   tests/combinators.scm			\
+  tests/composer.scm				\
   tests/containers.scm				\
   tests/cpan.scm				\
   tests/cpio.scm				\
diff --git a/doc/guix.texi b/doc/guix.texi
index 88128a4b3a..5d29567153 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10164,6 +10164,17 @@ in Guix.
 @cindex OCaml
 Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package
 repository used by the OCaml community.
+
+@item composer
+@cindex Composer
+@cindex PHP
+Import metadat from the @uref{https://getcomposer.org/, Composer} package
+archive used by the PHP community, as in this example:
+
+@example
+guix import composer phpunit/phpunit
+@end example
+
 @end table
=20
 The structure of the @command{guix import} code is modular.  It would be
diff --git a/guix/import/composer.scm b/guix/import/composer.scm
new file mode 100644
index 0000000000..9b284d0dd2
--- /dev/null
+++ b/guix/import/composer.scm
@@ -0,0 +1,270 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix import composer)
+  #:use-module (ice-9 match)
+  #:use-module (json)
+  #:use-module (gcrypt hash)
+  #:use-module (guix base32)
+  #:use-module (guix build git)
+  #:use-module (guix build utils)
+  #:use-module (guix build-system)
+  #:use-module (guix import json)
+  #:use-module (guix import utils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix serialization)
+  #:use-module (guix upstream)
+  #:use-module (guix utils)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:use-module (srfi srfi-26)
+  #:export (composer->guix-package
+            %composer-updater
+            composer-recursive-import
+
+            %composer-base-url))
+
+(define %composer-base-url
+  (make-parameter "https://repo.packagist.org"))
+
+;; XXX adapted from (guix scripts hash)
+(define (file-hash file select? recursive?)
+  ;; Compute the hash of FILE.
+  (if recursive?
+      (let-values (((port get-hash) (open-sha256-port)))
+        (write-file file port #:select? select?)
+        (force-output port)
+        (get-hash))
+      (call-with-input-file file port-sha256)))
+
+;; XXX taken from (guix scripts hash)
+(define (vcs-file? file stat)
+  (case (stat:type stat)
+    ((directory)
+     (member (basename file) '(".bzr" ".git" ".hg" ".svn" "CVS")))
+    ((regular)
+     ;; Git sub-modules have a '.git' file that is a regular text file.
+     (string=3D? (basename file) ".git"))
+    (else
+     #f)))
+
+(define (fix-version version)
+  "Return a fixed version from a version string.  For instance, v10.1 -> 1=
0.1"
+  (cond
+    ((string-prefix? "version" version)
+     (if (char-set-contains? char-set:digit (string-ref version 7))
+         (substring version 7)
+         (substring version 8)))
+    ((string-prefix? "v" version)
+     (substring version 1))
+    (else version)))
+
+(define (latest-version versions)
+  (fold (lambda (a b) (if (version>? (fix-version a) (fix-version b)) a b))
+        (car versions) versions))
+
+(define (json->require dict)
+  (if dict
+      (let loop ((result '()) (require dict))
+        (match require
+          (() result)
+          ((((? (cut string-contains <> "/") name) . _)
+             require ...)
+           (loop (cons name result) require))
+          ((_ require ...) (loop result require))))
+      '()))
+
+(define-json-mapping <composer-source> make-composer-source composer-sourc=
e?
+  json->composer-source
+  (type      composer-source-type)
+  (url       composer-source-url)
+  (reference composer-source-reference))
+
+(define-json-mapping <composer-package> make-composer-package composer-pac=
kage?
+  json->composer-package
+  (description composer-package-description)
+  (homepage    composer-package-homepage)
+  (source      composer-package-source "source" json->composer-source)
+  (name        composer-package-name "name" php-package-name)
+  (version     composer-package-version "version" fix-version)
+  (require     composer-package-require "require" json->require)
+  (dev-require composer-package-dev-require "require-dev" json->require)
+  (license     composer-package-license "license"
+               (lambda (vector)
+                 (map string->license (vector->list vector)))))
+
+(define* (composer-fetch name #:optional version)
+  "Return an alist representation of the Composer metadata for the package=
 NAME,
+or #f on failure."
+  (let ((package (json-fetch
+                   (string-append (%composer-base-url) "/p/" name ".json")=
)))
+    (if package
+        (let* ((packages (assoc-ref package "packages"))
+               (package (or (assoc-ref packages name) package))
+               (versions (filter
+                           (lambda (version)
+                             (and (not (string-contains version "dev"))
+                                  (not (string-contains version "beta"))))
+                           (map car package)))
+               (version (or (if (null? version) #f version)
+                            (latest-version versions))))
+          (assoc-ref package version))
+        #f)))
+
+(define (php-package-name name)
+  "Given the NAME of a package on Packagist, return a Guix-compliant name =
for
+the package."
+  (let ((name (string-join (string-split name #\/) "-")))
+    (if (string-prefix? "php-" name)
+        (snake-case name)
+        (string-append "php-" (snake-case name)))))
+
+(define (make-php-sexp composer-package)
+  "Return the `package' s-expression for a PHP package for the given
+COMPOSER-PACKAGE."
+  (let* ((source (composer-package-source composer-package))
+         (dependencies (map php-package-name
+                            (composer-package-require composer-package)))
+         (dev-dependencies (map php-package-name
+                                (composer-package-dev-require composer-pac=
kage)))
+         (git? (equal? (composer-source-type source) "git")))
+    ((if git? call-with-temporary-directory call-with-temporary-output-fil=
e)
+     (lambda* (temp #:optional port)
+       (and (if git?
+                (begin
+                  (mkdir-p temp)
+                  (git-fetch (composer-source-url source)
+                             (composer-source-reference source)
+                             temp))
+                (url-fetch (composer-source-url source) temp))
+            `(package
+               (name ,(composer-package-name composer-package))
+               (version ,(composer-package-version composer-package))
+               (source (origin
+                         ,@(if git?
+                               `((method git-fetch)
+                                 (uri (git-reference
+                                        (url ,(composer-source-url source))
+                                        (commit ,(composer-source-referenc=
e source))))
+                                 (file-name (git-file-name name version))
+                                 (sha256
+                                   (base32
+                                     ,(bytevector->nix-base32-string
+                                       (file-hash temp (negate vcs-file?) =
#t)))))
+                               `((method url-fetch)
+                                 (uri ,(composer-source-url source))
+                                 (sha256 (base32 ,(guix-hash-url temp)))))=
))
+               (build-system composer-build-system)
+               ,@(if (null? dependencies)
+                     '()
+                     `((inputs
+                        (,'quasiquote
+                         ,(map (lambda (name)
+                                 `(,name
+                                   (,'unquote
+                                    ,(string->symbol name))))
+                               dependencies)))))
+               ,@(if (null? dev-dependencies)
+                     '()
+                     `((native-inputs
+                        (,'quasiquote
+                         ,(map (lambda (name)
+                                 `(,name
+                                   (,'unquote
+                                    ,(string->symbol name))))
+                               dev-dependencies)))))
+               (synopsis "")
+               (description ,(composer-package-description composer-packag=
e))
+               (home-page ,(composer-package-homepage composer-package))
+               (license ,(match (composer-package-license composer-package)
+                           (() #f)
+                           ((license) license)
+                           (_ license)))))))))
+
+(define* (composer->guix-package package-name #:optional version)
+  "Fetch the metadata for PACKAGE-NAME from packagist.org, and return the
+`package' s-expression corresponding to that package, or #f on failure."
+  (let ((package (composer-fetch package-name version)))
+    (and package
+         (let* ((package (json->composer-package package))
+                (dependencies-names (composer-package-require package))
+                (dev-dependencies-names (composer-package-dev-require pack=
age)))
+           (values (make-php-sexp package)
+                   (append dependencies-names dev-dependencies-names))))))
+
+(define (guix-name->composer-name name)
+  "Given a guix package name, return the name of the package in Packagist."
+  (if (string-prefix? "php-" name)
+      (let ((components (string-split (substring name 4) #\-)))
+        (match components
+          ((namespace name ...)
+           (string-append namespace "/" (string-join name "-")))))
+      name))
+
+(define (guix-package->composer-name package)
+  "Given a Composer PACKAGE built from Packagist, return the name of the
+package in Packagist."
+  (let ((upstream-name (assoc-ref
+                         (package-properties package)
+                         'upstream-name))
+        (name (package-name package)))
+    (if upstream-name
+      upstream-name
+      (guix-name->composer-name name))))
+
+(define (string->license str)
+  "Convert the string STR into a license object."
+  (match str
+    ("GNU LGPL" 'license:lgpl2.0)
+    ("GPL" 'license:gpl3)
+    ((or "BSD" "BSD License" "BSD-3-Clause") 'license:bsd-3)
+    ((or "MIT" "MIT license" "Expat license") 'license:expat)
+    ("Public domain" 'license:public-domain)
+    ((or "Apache License, Version 2.0" "Apache 2.0") 'license:asl2.0)
+    (_ #f)))
+
+(define (php-package? package)
+  "Return true if PACKAGE is a PHP package from Packagist."
+  (and
+    (eq? (build-system-name (package-build-system package)) 'composer)
+    (string-prefix? "php-" (package-name package))))
+
+(define (latest-release package)
+  "Return an <upstream-source> for the latest release of PACKAGE."
+  (let* ((php-name (guix-package->composer-name package))
+         (metadata (composer-fetch php-name))
+         (package (json->composer-package metadata))
+         (version (composer-package-version package))
+         (url (composer-source-url (composer-package-source package))))
+    (upstream-source
+     (package (package-name package))
+     (version version)
+     (urls (list url)))))
+
+(define %composer-updater
+  (upstream-updater
+   (name 'composer)
+   (description "Updater for Composer packages")
+   (pred php-package?)
+   (latest latest-release)))
+
+(define* (composer-recursive-import package-name #:optional version)
+  (recursive-import package-name '()
+                    #:repo->guix-package composer->guix-package
+                    #:guix-name php-package-name))
diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm
index 0a3863f965..23da295e48 100644
--- a/guix/scripts/import.scm
+++ b/guix/scripts/import.scm
@@ -77,7 +77,7 @@ rather than \\n."
 ;;;
=20
 (define importers '("gnu" "nix" "pypi" "cpan" "hackage" "stackage" "elpa" =
"gem"
-                    "cran" "crate" "texlive" "json" "opam"))
+                    "cran" "crate" "texlive" "json" "opam" "composer"))
=20
 (define (resolve-importer name)
   (let ((module (resolve-interface
diff --git a/guix/scripts/import/composer.scm b/guix/scripts/import/compose=
r.scm
new file mode 100644
index 0000000000..412bae6318
--- /dev/null
+++ b/guix/scripts/import/composer.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2015 David Thompson <davet@HIDDEN>
+;;; Copyright =C2=A9 2018 Oleg Pykhalov <go.wigust@HIDDEN>
+;;;
+;;; 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 (guix scripts import composer)
+  #:use-module (guix ui)
+  #:use-module (guix utils)
+  #:use-module (guix scripts)
+  #:use-module (guix import composer)
+  #:use-module (guix scripts import)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:use-module (srfi srfi-37)
+  #:use-module (srfi srfi-41)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 format)
+  #:export (guix-import-composer))
+
+=0C
+;;;
+;;; Command-line options.
+;;;
+
+(define %default-options
+  '())
+
+(define (show-help)
+  (display (G_ "Usage: guix import composer PACKAGE-NAME
+Import and convert the Composer package for PACKAGE-NAME.\n"))
+  (display (G_ "
+  -h, --help             display this help and exit"))
+  (display (G_ "
+  -V, --version          display version information and exit"))
+  (display (G_ "
+  -r, --recursive        generate package expressions for all Composer pac=
kages\
+ that are not yet in Guix"))
+  (newline)
+  (show-bug-report-information))
+
+(define %options
+  ;; Specification of the command-line options.
+  (cons* (option '(#\h "help") #f #f
+                 (lambda args
+                   (show-help)
+                   (exit 0)))
+         (option '(#\V "version") #f #f
+                 (lambda args
+                   (show-version-and-exit "guix import composer")))
+         (option '(#\r "recursive") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'recursive #t result)))
+         %standard-import-options))
+
+=0C
+;;;
+;;; Entry point.
+;;;
+
+(define (guix-import-composer . args)
+  (define (parse-options)
+    ;; Return the alist of option values.
+    (args-fold* args %options
+                (lambda (opt name arg result)
+                  (leave (G_ "~A: unrecognized option~%") name))
+                (lambda (arg result)
+                  (alist-cons 'argument arg result))
+                %default-options))
+
+  (let* ((opts (parse-options))
+         (args (filter-map (match-lambda
+                            (('argument . value)
+                             value)
+                            (_ #f))
+                           (reverse opts))))
+    (match args
+      ((package-name)
+       (if (assoc-ref opts 'recursive)
+           (map (match-lambda
+                  ((and ('package ('name name) . rest) pkg)
+                   `(define-public ,(string->symbol name)
+                      ,pkg))
+                  (_ #f))
+                (composer-recursive-import package-name))
+           (let ((sexp (composer->guix-package package-name)))
+             (unless sexp
+               (leave (G_ "failed to download meta-data for package '~a'~%=
")
+                      package-name))
+             sexp)))
+      (()
+       (leave (G_ "too few arguments~%")))
+      ((many ...)
+       (leave (G_ "too many arguments~%"))))))
diff --git a/tests/composer.scm b/tests/composer.scm
new file mode 100644
index 0000000000..cefaf9f434
--- /dev/null
+++ b/tests/composer.scm
@@ -0,0 +1,92 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2020 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (test-composer)
+  #:use-module (guix import composer)
+  #:use-module (guix base32)
+  #:use-module (gcrypt hash)
+  #:use-module (guix tests http)
+  #:use-module (guix grafts)
+  #:use-module (srfi srfi-64)
+  #:use-module (web client)
+  #:use-module (ice-9 match))
+
+;; Globally disable grafts because they can trigger early builds.
+(%graft? #f)
+
+(define test-json
+  "{
+  \"packages\": {
+    \"foo/bar\": {
+      \"0.1\": {
+        \"name\": \"foo/bar\",
+        \"description\": \"description\",
+        \"keywords\": [\"testing\"],
+        \"homepage\": \"http://example.com\",
+        \"version\": \"0.1\",
+        \"license\": [\"BSD-3-Clause\"],
+        \"source\": {
+          \"type\": \"url\",
+          \"url\": \"http://example.com/Bar-0.1.tar.gz\"
+        },
+        \"require\": {},
+        \"require-dev\": {\"phpunit/phpunit\": \"1.0.0\"}
+      }
+    }
+  }
+}")
+
+(define test-source
+  "foobar")
+
+;; Avoid collisions with other tests.
+(%http-server-port 10450)
+
+(test-begin "composer")
+
+(test-assert "composer->guix-package"
+  ;; Replace network resources with sample data.
+  (with-http-server `((200 ,test-json)
+                      (200 ,test-source))
+    (parameterize ((%composer-base-url (%local-url))
+                   (current-http-proxy (%local-url)))
+      (match (composer->guix-package "foo/bar")
+        (('package
+           ('name "php-foo-bar")
+           ('version "0.1")
+           ('source ('origin
+                      ('method 'url-fetch)
+                      ('uri "http://example.com/Bar-0.1.tar.gz")
+                      ('sha256
+                       ('base32
+                        (? string? hash)))))
+           ('build-system 'composer-build-system)
+           ('native-inputs
+            ('quasiquote
+             (("php-phpunit-phpunit" ('unquote 'php-phpunit-phpunit)))))
+           ('synopsis "")
+           ('description "description")
+           ('home-page "http://example.com")
+           ('license 'license:bsd-3))
+         (string=3D? (bytevector->nix-base32-string
+                    (call-with-input-string test-source port-sha256))
+                   hash))
+        (x
+         (pk 'fail x #f))))))
+
+(test-end "composer")
--=20
2.28.0


--MP_/0LhbN0ey7AXzR3WziH.SLMv--




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 18 Sep 2020 08:46:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 18 04:46:15 2020
Received: from localhost ([127.0.0.1]:40833 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kJC22-0001hN-PR
	for submit <at> debbugs.gnu.org; Fri, 18 Sep 2020 04:46:15 -0400
Received: from eggs.gnu.org ([209.51.188.92]:59352)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kJC20-0001hA-LP
 for 42338 <at> debbugs.gnu.org; Fri, 18 Sep 2020 04:46:12 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:58880)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kJC1o-0008RW-WE; Fri, 18 Sep 2020 04:46:01 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=42002 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kJC1e-0000ae-8W; Fri, 18 Sep 2020 04:45:51 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN> <87imcphe6a.fsf@HIDDEN>
 <20200918004403.0d755d60@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: Jour du Travail de =?utf-8?Q?l'Ann=C3=A9e?= 228 de la
 =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Fri, 18 Sep 2020 10:45:48 +0200
In-Reply-To: <20200918004403.0d755d60@HIDDEN> (Julien
 Lepiller's message of "Fri, 18 Sep 2020 00:44:03 +0200")
Message-ID: <87eemz1nib.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi,

Julien Lepiller <julien@HIDDEN> skribis:

> From bb5d102b6ea5e6b5c06bbf90a58927c6180e23bc Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@HIDDEN>
> Date: Tue, 29 Oct 2019 20:58:51 +0100
> Subject: [PATCH 03/34] guix: Add composer-build-system.
>
> * guix/build-system/composer.scm: New file.
> * guix/build/composer-build-system.scm: New file.
> * gnu/packages/aux-files/findclass.php: New file.
> * Makefile.am: Add them.
> * doc/guix.texi (Build Systems): Document it.

[...]

> --- /dev/null
> +++ b/gnu/packages/aux-files/findclass.php

I can=E2=80=99t believe we=E2=80=99ll have PHP in our code base.  :-)

> +;;; 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 (guix build-system composer)

Missing newline.

> +    (let* ((package-data (read-package-data #:filename composer-file))
> +           (scripts (match (assoc-ref package-data "scripts")
> +                      (('@ script ...) script)
> +                      (#f '())))
> +           (test-script
> +             (assoc-ref scripts test-target))
> +           (dependencies (filter (lambda (dep) (string-contains dep "/"))
> +                                 (map car
> +                                      (match (assoc-ref package-data "re=
quire")
> +                                        (('@ dependency ...) dependency)
> +                                        (#f '())))))
> +           (dependencies-dev
> +             (filter (lambda (dep) (string-contains dep "/"))
> +                     (map car
> +                          (match (assoc-ref package-data "require-dev")
> +                            (('@ dependency ...) dependency)
> +                            (#f '())))))
> +           (name (assoc-ref package-data "name")))

This is also a case for =E2=80=98define-json-mapping=E2=80=99.  I suppose w=
e could use
Guile-JSON instead of (guix build json), no?

I think this code and similar occurrences would be less intimidating if
we used =E2=80=98define-json-mapping=E2=80=99; it would make the data struc=
tures
clearer, unlike here where one has to keep in mind what the list/tree
looks like so they can map car/cdr around.

> +      (for-each
> +        (lambda (input)

Like for =E2=80=98map=E2=80=99, please indent on the same line:

  (for-each (lambda (input)

> +      (match test-script
> +        ((? string? command)
> +         (unless (equal? (system command) 0)
> +           (throw 'failed-command command)))
> +        (('@ (? string? command) ...)
> +         (for-each
> +           (lambda (c)
> +             (unless (equal? (system c) 0)
> +               (throw 'failed-command c)))
> +           command))

Use (zero? x) instead of (equal? 0 x).

Also, why not use =E2=80=98invoke=E2=80=99?  I this because these commands =
are really
shell commands and expect things like glob patterns and tilde expansion?
If these are not shell commands, I recommend =E2=80=98invoke=E2=80=99, whic=
h will report
failures more nicely.

> +(define (find-php-dep inputs dependency)
> +  (let loop ((inputs (map cdr inputs)))
> +    (if (null? inputs)
> +        (throw 'unsatisfied-dependency "Unsatisfied dependency: required=
 " dependency)
> +        (let ((autoload (string-append (car inputs) "/share/web/" depend=
ency "/vendor/autoload_conf.php")))
> +          (if (file-exists? autoload)
> +              autoload
> +              (loop (cdr inputs)))))))

Please use =E2=80=98match=E2=80=99 instead of car/cdr.

> +(define* (create-autoload vendor composer-file inputs #:key dev-dependen=
cies?)
> +  (with-output-to-file (string-append vendor "/autoload.php")
> +    (lambda _
> +      (display "<?php
> +// autoload.php @generated by Guix
> +$map =3D $psr4map =3D $classmap =3D array();
> +")
> +      (format #t "require_once '~a/autoload_conf.php'~%" vendor)
> +      (format #t "require_once '~a/share/web/composer/ClassLoader.php'~%"
> +              (assoc-ref inputs "composer-classloader"))
> +      (display "$loader =3D new \\Composer\\Autoload\\ClassLoader();
> +foreach ($map as $namespace =3D> $path) {
> +  $loader->set($namespace, $path);
> +}
> +foreach ($psr4map as $namespace =3D> $path) {
> +  $loader->setPsr4($namespace, $path);
> +}
> +$loader->addClassMap($classmap);
> +$loader->register();
> +")))

Please add a docstring explaining what=E2=80=99s happening here.  Also, per=
haps
use =E2=80=98string-append=E2=80=99 instead of =E2=80=98format=E2=80=99 so =
we don=E2=80=99t end up generating
things like:

  require_once '#f/autoload_conf.php'

:-)

In short, I think we must pay attention to the style to facilitate
maintainability.

Could you send an updated patch?

Thanks!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 18 Sep 2020 08:31:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 18 04:31:50 2020
Received: from localhost ([127.0.0.1]:40775 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kJBo6-0000fV-5d
	for submit <at> debbugs.gnu.org; Fri, 18 Sep 2020 04:31:50 -0400
Received: from eggs.gnu.org ([209.51.188.92]:55328)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kJBo3-0000Z2-Mh
 for 42338 <at> debbugs.gnu.org; Fri, 18 Sep 2020 04:31:48 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:58699)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kJBnx-0006Az-CC; Fri, 18 Sep 2020 04:31:41 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=41992 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kJBnw-00060I-OT; Fri, 18 Sep 2020 04:31:41 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 01/34] guix: import: Add composer importer.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN> <87mu21heay.fsf@HIDDEN>
 <20200918004333.127aa5da@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: Jour du Travail de =?utf-8?Q?l'Ann=C3=A9e?= 228 de la
 =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Fri, 18 Sep 2020 10:31:39 +0200
In-Reply-To: <20200918004333.127aa5da@HIDDEN> (Julien
 Lepiller's message of "Fri, 18 Sep 2020 00:43:33 +0200")
Message-ID: <87sgbf1o5w.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi!

Julien Lepiller <julien@HIDDEN> skribis:

> From 6d521ca9f066f82488abefd5d3630e38305c0fd1 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@HIDDEN>
> Date: Tue, 29 Oct 2019 08:07:38 +0100
> Subject: [PATCH 01/34] guix: import: Add composer importer.
>
> * guix/import/composer.scm: New file.
> * guix/scripts/import/composer.scm: New file.
> * guix/tests/composer.scm: New file.
> * Makefile.am: Add them.
> * guix/scripts/import.scm: Add composer importer.
> * doc/guix.texi (Invoking guix import): Mention it.

[...]

> +@item composer
> +@cindex COMPOSER

s/COMPOSER/Composer/ ?

> +Import metadat from the @uref{https://getcomposer.org/, Composer} package
                ^
metadata

> +archive used by the PHP community.

Could you add an example command line like we have for some of the other
importers?  (It=E2=80=99s also useful for us as a test against the actual s=
ervers=E2=80=A6)

> +  (let ((package (json-fetch
> +                   (string-append (%composer-base-url) "/p/" name ".json=
"))))
> +    (if package
> +        (let* ((packages (assoc-ref package "packages"))
> +               (package (assoc-ref packages name))
> +               (versions (filter
> +                           (lambda (version)
> +                             (and (not (string-contains version "dev"))
> +                                  (not (string-contains version "beta"))=
))
> +                           (map car package)))

Like I wrote before, I recommend =E2=80=98define-json-mapping=E2=80=99.  If=
 you prefer
you can make that change later on once you=E2=80=99ve pushed this first ver=
sion,
but I really think it=E2=80=99ll help maintainability.

This should also help avoid (map car =E2=80=A6), which is frowned upon in G=
uix.
:-)

> +               (versions (map
> +                           (lambda (version)

Rather indent as: (map (lambda (version)

Otherwise LGTM!=20=20

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 17 Sep 2020 22:44:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 17 18:44:24 2020
Received: from localhost ([127.0.0.1]:39976 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kJ2dV-0002pj-3Y
	for submit <at> debbugs.gnu.org; Thu, 17 Sep 2020 18:44:24 -0400
Received: from lepiller.eu ([89.234.186.109]:60166)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1kJ2dR-0002pZ-Lr
 for 42338 <at> debbugs.gnu.org; Thu, 17 Sep 2020 18:44:15 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 8e4696b9;
 Thu, 17 Sep 2020 22:44:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type; s=dkim; bh=WiTscoOT/QVLK9no5oR9UOTk4hAom/ba6v+351
 hBkzc=; b=DoSWN4Y08gdy7jh7OvZ4prf1oISWCdxC/fWDCroDnD14bDsVDiLOJ/
 yvHsUcS5F+RE5L73MuEowsht/uJmpAcXHmqhM4epOuShLt1r7pqNyKPYqpDWCl+I
 Uc1VlnUpILLf99SU2Qf3eQJ3VjBqY6LhUExJ5ov+FsYpKQPsBybY98OjSNasEYbE
 QNk0Zm+igRJQLXN+vPV10vELFHZwSiw6tgcnJMl7T7lRgGPFzPn+6wSsClO5usjQ
 Ie34577OIHfZEV1qEko5Y3dhVUdEqUP6pTSAZMVDOzJmOO6AZhDK9yqMId7RMyOy
 46A9pH7QmbKCRwEUXBf0TitwLya+3Jag==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id e796f823
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); 
 Thu, 17 Sep 2020 22:44:12 +0000 (UTC)
Date: Fri, 18 Sep 2020 00:44:03 +0200
From: Julien Lepiller <julien@HIDDEN>
To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= <ludo@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
Message-ID: <20200918004403.0d755d60@HIDDEN>
In-Reply-To: <87imcphe6a.fsf@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN>
 <87imcphe6a.fsf@HIDDEN>
X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_/g/9OkOXYbSbP0ceAuztCluC"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--MP_/g/9OkOXYbSbP0ceAuztCluC
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Mon, 07 Sep 2020 16:09:01 +0200,
Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :

> Julien Lepiller <julien@HIDDEN> skribis:
>=20
> > * guix/build-system/composer.scm: New file.
> > * guix/build/composer-build-system.scm: New file.
> > * guix/build-system/findclass.php: New file.
> > * Makefile.am: Add them.
> > * doc/guix.texi (Build Systems): Document it. =20
>=20
> [...]
>=20
> > +++ b/guix/build-system/findclass.php
> > @@ -0,0 +1,102 @@
> > +<?php
> > +/**
> > + * Extract the classes in the given file
> > + *
> > + * @param  string            $path The file to check
> > + * @throws \RuntimeException
> > + * @return array             The found classes
> > + */ =20
>=20
> This should rather be under gnu/packages/aux-files IMO.  Also, could
> you add a copyright header and possibly info as to where it
> originates?
>=20
> > +(define* (create-autoload vendor composer-file inputs #:key
> > dev-dependencies?)
> > +  (with-output-to-file (string-append vendor "/autoload.php")
> > +    (lambda _
> > +      (format #t "<?php~%")
> > +      (format #t "// autoload.php @generated by Guix~%")
> > +      (format #t "$map =3D $psr4map =3D $classmap =3D array();~%")
> > +      (format #t "require_once '~a/autoload_conf.php';~%" vendor)
> > +      (format #t "require_once
> > '~a/share/web/composer/ClassLoader.php';~%"
> > +                 (assoc-ref inputs "composer-classloader"))
> > +      (format #t "$loader =3D new
> > \\Composer\\Autoload\\ClassLoader();~%")
> > +      (format #t "foreach ($map as $namespace =3D> $path) {~%")
> > +      (format #t "  $loader->set($namespace, $path);~%")
> > +      (format #t "}~%")
> > +      (format #t "foreach ($psr4map as $namespace =3D> $path) {~%")
> > +      (format #t "  $loader->setPsr4($namespace, $path);~%")
> > +      (format #t "}~%")
> > +      (format #t "$loader->addClassMap($classmap);~%")
> > +      (format #t "$loader->register();~%"))) =20
>=20
> I think it=E2=80=99d be clearer as a single string:
>=20
>   (display "\
> <?php
> // autoload.php =E2=80=A6")
>=20
> Ludo=E2=80=99.

Thanks, here's a new version

--MP_/g/9OkOXYbSbP0ceAuztCluC
Content-Type: text/x-patch
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename=0003-guix-Add-composer-build-system.patch

=46rom bb5d102b6ea5e6b5c06bbf90a58927c6180e23bc Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@HIDDEN>
Date: Tue, 29 Oct 2019 20:58:51 +0100
Subject: [PATCH 03/34] guix: Add composer-build-system.

* guix/build-system/composer.scm: New file.
* guix/build/composer-build-system.scm: New file.
* gnu/packages/aux-files/findclass.php: New file.
* Makefile.am: Add them.
* doc/guix.texi (Build Systems): Document it.
---
 Makefile.am                          |   5 +-
 doc/guix.texi                        |  14 ++
 gnu/packages/aux-files/findclass.php | 125 +++++++++++++++
 guix/build-system/composer.scm       | 170 ++++++++++++++++++++
 guix/build/composer-build-system.scm | 226 +++++++++++++++++++++++++++
 5 files changed, 539 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/aux-files/findclass.php
 create mode 100644 guix/build-system/composer.scm
 create mode 100644 guix/build/composer-build-system.scm

diff --git a/Makefile.am b/Makefile.am
index 6ce1430ea6..5af964b0e9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -115,6 +115,7 @@ MODULES =3D					\
   guix/build-system/cargo.scm			\
   guix/build-system/clojure.scm			\
   guix/build-system/cmake.scm			\
+  guix/build-system/composer.scm		\
   guix/build-system/dub.scm			\
   guix/build-system/dune.scm			\
   guix/build-system/emacs.scm			\
@@ -163,6 +164,7 @@ MODULES =3D					\
   guix/build/cargo-build-system.scm		\
   guix/build/cargo-utils.scm			\
   guix/build/cmake-build-system.scm		\
+  guix/build/composer-build-system.scm		\
   guix/build/dub-build-system.scm		\
   guix/build/dune-build-system.scm		\
   guix/build/emacs-build-system.scm		\
@@ -354,7 +356,8 @@ AUX_FILES =3D						\
   gnu/packages/aux-files/linux-libre/4.4-i686.conf	\
   gnu/packages/aux-files/linux-libre/4.4-x86_64.conf	\
   gnu/packages/aux-files/pack-audit.c			\
-  gnu/packages/aux-files/run-in-namespace.c
+  gnu/packages/aux-files/run-in-namespace.c		\
+  gnu/packages/aux-files/findclass.php
=20
 # Templates, examples.
 EXAMPLES =3D					\
diff --git a/doc/guix.texi b/doc/guix.texi
index ca4eb347c7..6ee4d7e5f0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6941,6 +6941,20 @@ debugging information''), which roughly means that c=
ode is compiled with
 @code{-O2 -g}, as is the case for Autoconf-based packages by default.
 @end defvr
=20
+@defvr {Scheme Variable} composer-build-system
+This variable is exported by @code{(guix build-system composer)}.  It
+implements the build procedure for packages using
+@url{https://getcomposer.org/, Composer}, the PHP package manager.
+
+It automatically adds the @code{php} package to the set of inputs.  Which
+package is used can be specified with the @code{#:php} parameter.
+
+The @code{#:test-target} parameter is used to control which script is run
+for the tests.  By default, the @code{test} script is run if it exists.  If
+the script does not exist, the build system will run @code{phpunit} from t=
he
+source directory, assuming there is a @file{phpunit.xml} file.
+@end defvr
+
 @defvr {Scheme Variable} dune-build-system
 This variable is exported by @code{(guix build-system dune)}.  It
 supports builds of packages using @uref{https://dune.build/, Dune}, a build
diff --git a/gnu/packages/aux-files/findclass.php b/gnu/packages/aux-files/=
findclass.php
new file mode 100644
index 0000000000..d0b250c8e1
--- /dev/null
+++ b/gnu/packages/aux-files/findclass.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * The content of this file is copied from composer's src/Composer/Autoloa=
d/ClassMapGenerator.php
+ * the findClasses method was extracted, to prevent using any dependency.
+ *
+ * Composer (and thus this file) is distributed under the expat license, a=
nd
+ * ClassMapGenerator.php also contains this notice:
+ *
+ *   This file is part of Composer.
+ *
+ *   (c) Nils Adermann <naderman@HIDDEN>
+ *       Jordi Boggiano <j.boggiano@HIDDEN>
+ *
+ *   For the full copyright and license information, please view the LICEN=
SE
+ *   file that was distributed with this source code.
+ *
+ *   This file is copied from the Symfony package.
+ *
+ *   (c) Fabien Potencier <fabien@HIDDEN>
+ *=20
+ * To the extent to wich it makes sense, as the author of the extract:
+ * Copyright =C2=A9 2020 Julien Lepiller <julien@HIDDEN>
+ */
+
+/**
+ * Extract the classes in the given file
+ *
+ * @param  string            $path The file to check
+ * @throws \RuntimeException
+ * @return array             The found classes
+ */
+function findClasses($path)
+{
+    $extraTypes =3D PHP_VERSION_ID < 50400 ? '' : '|trait';
+    if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=
=3D')) {
+        $extraTypes .=3D '|enum';
+    }
+    // Use @ here instead of Silencer to actively suppress 'unhelpful' out=
put
+    // @link https://github.com/composer/composer/pull/4886
+    $contents =3D @php_strip_whitespace($path);
+    if (!$contents) {
+        if (!file_exists($path)) {
+            $message =3D 'File at "%s" does not exist, check your classmap=
 definitions';
+        } elseif (!is_readable($path)) {
+            $message =3D 'File at "%s" is not readable, check its permissi=
ons';
+        } elseif ('' =3D=3D=3D trim(file_get_contents($path))) {
+            // The input file was really empty and thus contains no classes
+            return array();
+        } else {
+            $message =3D 'File at "%s" could not be parsed as PHP, it may =
be binary or corrupted';
+        }
+        $error =3D error_get_last();
+        if (isset($error['message'])) {
+            $message .=3D PHP_EOL . 'The following message may be helpful:=
' . PHP_EOL . $error['message'];
+        }
+        throw new \RuntimeException(sprintf($message, $path));
+    }
+    // return early if there is no chance of matching anything in this file
+    if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents=
)) {
+        return array();
+    }
+    // strip heredocs/nowdocs
+    $contents =3D preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?=
:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=3D\s+|[;,.)])}s', 'null', $contents);
+    // strip strings
+    $contents =3D preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\=
\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents);
+    // strip leading non-php code if needed
+    if (substr($contents, 0, 2) !=3D=3D '<?') {
+        $contents =3D preg_replace('{^.+?<\?}s', '<?', $contents, 1, $repl=
acements);
+        if ($replacements =3D=3D=3D 0) {
+            return array();
+        }
+    }
+    // strip non-php blocks in the file
+    $contents =3D preg_replace('{\?>(?:[^<]++|<(?!\?))*+<\?}s', '?><?', $c=
ontents);
+    // strip trailing non-php code if needed
+    $pos =3D strrpos($contents, '?>');
+    if (false !=3D=3D $pos && false =3D=3D=3D strpos(substr($contents, $po=
s), '<?')) {
+        $contents =3D substr($contents, 0, $pos);
+    }
+    // strip comments if short open tags are in the file
+    if (preg_match('{(<\?)(?!(php|hh))}i', $contents)) {
+        $contents =3D preg_replace('{//.* | /\*(?:[^*]++|\*(?!/))*\*/}x', =
'', $contents);
+    }
+    preg_match_all('{
+        (?:
+             \b(?<![\$:>])(?P<type>class|interface'.$extraTypes.') \s++ (?=
P<name>[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+)
+           | \b(?<![\$:>])(?P<ns>namespace) (?P<nsname>\s++[a-zA-Z_\x7f-\x=
ff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-=
\xff]*+)*+)? \s*+ [\{;]
+        )
+    }ix', $contents, $matches);
+    $classes =3D array();
+    $namespace =3D '';
+    for ($i =3D 0, $len =3D count($matches['type']); $i < $len; $i++) {
+        if (!empty($matches['ns'][$i])) {
+            $namespace =3D str_replace(array(' ', "\t", "\r", "\n"), '', $=
matches['nsname'][$i]) . '\\';
+        } else {
+            $name =3D $matches['name'][$i];
+            // skip anon classes extending/implementing
+            if ($name =3D=3D=3D 'extends' || $name =3D=3D=3D 'implements')=
 {
+                continue;
+            }
+            if ($name[0] =3D=3D=3D ':') {
+                // This is an XHP class, https://github.com/facebook/xhp
+                $name =3D 'xhp'.substr(str_replace(array('-', ':'), array(=
'_', '__'), $name), 1);
+            } elseif ($matches['type'][$i] =3D=3D=3D 'enum') {
+                // In Hack, something like:
+                //   enum Foo: int { HERP =3D '123'; }
+                // The regex above captures the colon, which isn't part of
+                // the class name.
+                $name =3D rtrim($name, ':');
+            }
+            $classes[] =3D ltrim($namespace . $name, '\\');
+        }
+    }
+    return $classes;
+}
+
+$options =3D getopt('i:f:', []);
+$file =3D $options["f"];
+$input =3D $options["i"];
+
+$classes =3D findClasses($file);
+foreach($classes as $class) {
+  echo '$classmap[\''.$class.'\'] =3D \''.$input.'/'.$file.'\';';
+  echo "\n";
+}
diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm
new file mode 100644
index 0000000000..ebc472c717
--- /dev/null
+++ b/guix/build-system/composer.scm
@@ -0,0 +1,170 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix build-system composer)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:export (%composer-build-system-modules
+            lower
+            composer-build
+            composer-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for PHP packages using Composer. This is imple=
mented
+;; as an extension of `gnu-build-system'.
+;;
+;; Code:
+
+(define (default-php)
+  "Return the default PHP package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages php))))
+    (module-ref module 'php)))
+
+(define (default-findclass)
+  "Return the default findclass script."
+  (search-auxiliary-file "findclass.php"))
+
+(define (default-composer-classloader)
+  "Return the default composer-classloader package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages php-xyz))))
+    (module-ref module 'composer-classloader)))
+
+(define %composer-build-system-modules
+  ;; Build-side modules imported by default.
+  `((guix build composer-build-system)
+    (guix build json)
+    (guix build union)
+    ,@%gnu-build-system-modules))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs system target
+                (php (default-php))
+                (composer-classloader (default-composer-classloader))
+                (findclass (default-findclass))
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME."
+  (define private-keywords
+    '(#:source #:target #:php #:composer-classloader #:findclass #:inputs =
#:native-inputs))
+
+  (and (not target)                               ;XXX: no cross-compilati=
on
+       (bag
+         (name name)
+         (system system)
+         (host-inputs `(,@(if source
+                              `(("source" ,source))
+                              '())
+                        ,@inputs
+
+                        ;; Keep the standard inputs of 'gnu-build-system'.
+                        ,@(standard-packages)))
+         (build-inputs `(("php" ,php)
+                         ("findclass.php" ,findclass)
+			 ("composer-classloader" ,composer-classloader)
+                         ,@native-inputs))
+         (outputs outputs)
+         (build composer-build)
+         (arguments (strip-keyword-arguments private-keywords arguments)))=
))
+
+(define* (composer-build store name inputs
+                         #:key (guile #f)
+                         (outputs '("out")) (configure-flags ''())
+                         (search-paths '())
+                         (out-of-source? #t)
+                         (composer-file "composer.json")
+                         (tests? #t)
+                         (test-target "test")
+                         (install-target "install")
+                         (validate-runpath? #t)
+                         (patch-shebangs? #t)
+                         (strip-binaries? #t)
+                         (strip-flags ''("--strip-debug"))
+                         (strip-directories ''("lib" "lib64" "libexec"
+                                               "bin" "sbin"))
+                         (phases '(@ (guix build composer-build-system)
+                                     %standard-phases))
+                         (system (%current-system))
+                         (imported-modules %composer-build-system-modules)
+                         (modules '((guix build composer-build-system)
+                                    (guix build json)
+                                    (guix build utils))))
+  "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provi=
des
+a 'composer.json' file as its build system."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (composer-build #:source ,(match (assoc-ref inputs "source")
+                                   (((? derivation? source))
+                                    (derivation->output-path source))
+                                   ((source)
+                                    source)
+                                   (source
+                                    source))
+                       #:system ,system
+                       #:outputs %outputs
+                       #:inputs %build-inputs
+                       #:search-paths ',(map search-path-specification->se=
xp
+                                             search-paths)
+                       #:phases ,phases
+                       #:out-of-source? ,out-of-source?
+                       #:composer-file ,composer-file
+                       #:tests? ,tests?
+                       #:test-target ,test-target
+                       #:install-target ,install-target
+                       #:validate-runpath? ,validate-runpath?
+                       #:patch-shebangs? ,patch-shebangs?
+                       #:strip-binaries? ,strip-binaries?
+                       #:strip-flags ,strip-flags
+                       #:strip-directories ,strip-directories)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:system system
+                                #:inputs inputs
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define composer-build-system
+  (build-system
+    (name 'composer)
+    (description "The standard Composer build system")
+    (lower lower)))
+
+;;; composer.scm ends here
diff --git a/guix/build/composer-build-system.scm b/guix/build/composer-bui=
ld-system.scm
new file mode 100644
index 0000000000..f73684f8d5
--- /dev/null
+++ b/guix/build/composer-build-system.scm
@@ -0,0 +1,226 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix build composer-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build json)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 match)
+  #:export (%standard-phases
+            composer-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the standard composer build procedure.
+;;
+;; Code:
+
+(define* (read-package-data #:key (filename "composer.json"))
+  (call-with-input-file filename
+    (lambda (port)
+      (read-json port))))
+
+(define* (check #:key composer-file inputs outputs tests? test-target #:al=
low-other-keys)
+  "Install the given package."
+  (when tests?
+    (mkdir-p "vendor")
+    (create-autoload (string-append (getcwd) "/vendor") composer-file
+                     (append inputs outputs) #:dev-dependencies? #t)
+    (let* ((package-data (read-package-data #:filename composer-file))
+           (scripts (match (assoc-ref package-data "scripts")
+                      (('@ script ...) script)
+                      (#f '())))
+           (test-script
+             (assoc-ref scripts test-target))
+           (dependencies (filter (lambda (dep) (string-contains dep "/"))
+                                 (map car
+                                      (match (assoc-ref package-data "requ=
ire")
+                                        (('@ dependency ...) dependency)
+                                        (#f '())))))
+           (dependencies-dev
+             (filter (lambda (dep) (string-contains dep "/"))
+                     (map car
+                          (match (assoc-ref package-data "require-dev")
+                            (('@ dependency ...) dependency)
+                            (#f '())))))
+           (name (assoc-ref package-data "name")))
+      (for-each
+        (lambda (input)
+          (let ((bin (find-php-bin (cdr input))))
+            (when bin
+              (copy-recursively bin "vendor/bin"))))
+        inputs)
+      (match test-script
+        ((? string? command)
+         (unless (equal? (system command) 0)
+           (throw 'failed-command command)))
+        (('@ (? string? command) ...)
+         (for-each
+           (lambda (c)
+             (unless (equal? (system c) 0)
+               (throw 'failed-command c)))
+           command))
+        (#f (invoke "vendor/bin/phpunit")))))
+  #t)
+
+(define (find-php-bin input)
+  (let* ((web-dir (string-append input "/share/web"))
+         (vendors (if (file-exists? web-dir)
+                      (find-files web-dir "^vendor$" #:directories? #t)
+                      #f)))
+    (match vendors
+      ((vendor)
+       (let ((bin (string-append vendor "/bin")))
+         (and (file-exists? bin) bin)))
+      (_ #f))))
+
+(define (find-php-dep inputs dependency)
+  (let loop ((inputs (map cdr inputs)))
+    (if (null? inputs)
+        (throw 'unsatisfied-dependency "Unsatisfied dependency: required "=
 dependency)
+        (let ((autoload (string-append (car inputs) "/share/web/" dependen=
cy "/vendor/autoload_conf.php")))
+          (if (file-exists? autoload)
+              autoload
+              (loop (cdr inputs)))))))
+
+(define* (create-autoload vendor composer-file inputs #:key dev-dependenci=
es?)
+  (with-output-to-file (string-append vendor "/autoload.php")
+    (lambda _
+      (display "<?php
+// autoload.php @generated by Guix
+$map =3D $psr4map =3D $classmap =3D array();
+")
+      (format #t "require_once '~a/autoload_conf.php'~%" vendor)
+      (format #t "require_once '~a/share/web/composer/ClassLoader.php'~%"
+              (assoc-ref inputs "composer-classloader"))
+      (display "$loader =3D new \\Composer\\Autoload\\ClassLoader();
+foreach ($map as $namespace =3D> $path) {
+  $loader->set($namespace, $path);
+}
+foreach ($psr4map as $namespace =3D> $path) {
+  $loader->setPsr4($namespace, $path);
+}
+$loader->addClassMap($classmap);
+$loader->register();
+")))
+  (let* ((package-data (read-package-data #:filename composer-file))
+         (autoload
+           (match (assoc-ref package-data "autoload")
+             (('@ autoload ...) autoload)
+             (#f '())))
+         (autoload-dev
+           (match (assoc-ref package-data "autoload-dev")
+             (('@ autoload-dev ...) autoload-dev)
+             (#f '())))
+         (dependencies (filter (lambda (dep) (string-contains dep "/"))
+                               (map car
+                                    (match (assoc-ref package-data "requir=
e")
+                                      (('@ dependency ...) dependency)
+                                      (#f '())))))
+         (dependencies-dev
+           (filter (lambda (dep) (string-contains dep "/"))
+                   (map car
+                        (match (assoc-ref package-data "require-dev")
+                          (('@ dependency ...) dependency)
+                          (#f '()))))))
+    (with-output-to-file (string-append vendor "/autoload_conf.php")
+      (lambda _
+        (format #t "<?php~%")
+        (format #t "// autoload_conf.php @generated by Guix~%")
+        (force-output)
+        (for-each
+          (lambda (psr4)
+            (match psr4
+              ((key . value)
+               (format #t "$psr4map['~a'] =3D '~a/../~a';~%"
+                       (string-join (string-split key #\\) "\\\\")
+                       vendor value))))
+          (append
+            (match (assoc-ref autoload "psr-4")
+              (('@ psr4 ...) psr4)
+              (#f '()))
+            (if dev-dependencies?
+                (match (assoc-ref autoload-dev "psr-4")
+                  (('@ psr4 ...) psr4)
+                  (#f '()))
+                '())))
+        (for-each
+          (lambda (classmap)
+            (for-each
+              (lambda (file)
+                (invoke "php" (assoc-ref inputs "findclass.php")
+                        "-i" (string-append vendor "/..") "-f" file))
+              (find-files classmap ".(php|hh|inc)$")))
+          (append
+            (or (assoc-ref autoload "classmap") '())
+            (if dev-dependencies?
+                (or (assoc-ref autoload-dev "classmap") '())
+                '())))
+        (for-each
+          (lambda (dep)
+            (format #t "require_once '~a';~%" (find-php-dep inputs dep)))
+          (append
+            dependencies
+            (if dev-dependencies?
+                dependencies-dev
+                '())))))))
+
+(define* (install #:key inputs outputs composer-file #:allow-other-keys)
+  "Install the given package."
+  (let* ((out (assoc-ref outputs "out"))
+         (package-data (read-package-data #:filename composer-file))
+         (name (assoc-ref package-data "name"))
+         (php-dir (string-append out "/share/web/" name))
+         (bin-dir (string-append php-dir "/vendor/bin"))
+         (bin (string-append out "/bin"))
+         (binaries (assoc-ref package-data "bin")))
+      (mkdir-p php-dir)
+      (copy-recursively "." php-dir)
+      (mkdir-p (string-append php-dir "/vendor"))
+      (when binaries
+        (mkdir-p bin-dir)
+        (mkdir-p bin)
+        (for-each
+          (lambda (file)
+            (let ((installed-file (string-append bin-dir "/" (basename fil=
e)))
+                  (bin-file (string-append bin "/" (basename file)))
+                  (original-file (string-append php-dir "/" file)))
+              (symlink original-file installed-file)
+              (symlink original-file bin-file)))
+          binaries))
+      (create-autoload (string-append php-dir "/vendor")
+                       composer-file inputs))
+  #t)
+
+(define %standard-phases
+  ;; Everything is as with the GNU Build System except for the `configure'
+  ;; , `build', `check' and `install' phases.
+  (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
+    (delete 'configure)
+    (delete 'build)
+    (delete 'check)
+    (replace 'install install)
+    (add-after 'install 'check check)))
+
+(define* (composer-build #:key inputs (phases %standard-phases)
+                         #:allow-other-keys #:rest args)
+  "Build the given package, applying all of PHASES in order."
+  (apply gnu:gnu-build #:inputs inputs #:phases phases args))
+
+;;; composer-build-system.scm ends here
--=20
2.28.0


--MP_/g/9OkOXYbSbP0ceAuztCluC--




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 17 Sep 2020 22:43:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 17 18:43:54 2020
Received: from localhost ([127.0.0.1]:39972 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kJ2d3-0002oa-6B
	for submit <at> debbugs.gnu.org; Thu, 17 Sep 2020 18:43:54 -0400
Received: from lepiller.eu ([89.234.186.109]:60156)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1kJ2d0-0002oQ-Sy
 for 42338 <at> debbugs.gnu.org; Thu, 17 Sep 2020 18:43:48 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 3fb8f51c;
 Thu, 17 Sep 2020 22:43:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:cc:subject:message-id:in-reply-to:references:mime-version
 :content-type; s=dkim; bh=wNZQ0+XdWWGsaMA+RR2MlZ8/1Eyqs1IH5r7qqU
 g8Tjc=; b=ghNrXtkCyHBi+b7eAobLTKJtqOQ+VS7Ejz66Et+eg+P+G74HO/oVzV
 hGjbZhDtv29nwf6cPLiNv3J6RTCjC1bkJrcrgdho/xlp+dPzBdN+8ZagoXBm8Xx8
 dxVMWbVAFDp6wInInmqtlQqtfD8Nwki1GcuXqzP9sBwE/mFppMkio56DCbwa5T2C
 wvk/k1DEY1occWDzqnvrGdrtyQEafTaemPc4uNIjswYmTN4MATypQaaJFRxJ+7Up
 /hCGmhnhZqjXVoBkcUsUHWbaxQkNqmkLKcuMwP+ulEBMUhgJLCDHwz1IGW//tbCj
 zJeTQULxwXotTj01CyPyGuuYR84WbdKQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 8e35d7f8
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); 
 Thu, 17 Sep 2020 22:43:44 +0000 (UTC)
Date: Fri, 18 Sep 2020 00:43:33 +0200
From: Julien Lepiller <julien@HIDDEN>
To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= <ludo@HIDDEN>
Subject: Re: [bug#42338] [PATCH 01/34] guix: import: Add composer importer.
Message-ID: <20200918004333.127aa5da@HIDDEN>
In-Reply-To: <87mu21heay.fsf@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <87mu21heay.fsf@HIDDEN>
X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_/Nb0qTNLZeDOi6GOcim.fLs2"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--MP_/Nb0qTNLZeDOi6GOcim.fLs2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Mon, 07 Sep 2020 16:06:13 +0200,
Ludovic Court=C3=A8s <ludo@HIDDEN> a =C3=A9crit :

> Hi Julien,
>=20
> There=E2=80=99s a lot of interesting work in here!  I=E2=80=99m not famil=
iar with PHP;
> I=E2=80=99ll just make a bird=E2=80=99s eye review.
>=20
> Julien Lepiller <julien@HIDDEN> skribis:
>=20
> > * guix/import/composer.scm: New file.
> > * guix/scripts/import/composer.scm: New file.
> > * Makefile.am: Add them.
> > * guix/scripts/import.scm: Add composer importer. =20
>=20
> Please add tests and a mention in =E2=80=9CInvoking guix import=E2=80=9D =
in the
> manual.
>=20
> For tests, a strategy that I think works well is that used in
> tests/cpan.scm, where we spawn an HTTP server to mock the real one.
>=20
> > +(define* (composer-fetch name #:optional version)
> > +  "Return an alist representation of the Composer metadata for the
> > package NAME, +or #f on failure."
> > +  (let ((package (json-fetch
> > +                   (string-append "https://repo.packagist.org/p/"
> > name ".json"))))
> > +    (if package
> > +        (let* ((packages (assoc-ref package "packages"))
> > +               (package (assoc-ref packages name))
> > +               (versions (filter
> > +                           (lambda (version)
> > +                             (and (not (string-contains version
> > "dev"))
> > +                                  (not (string-contains version
> > "beta"))))
> > +                           (map car package)))
> > +               (versions (map
> > +                           (lambda (version)
> > +                             (cons (fix-version version) version))
> > +                           versions))
> > +               (version (or (if (null? version) #f version)
> > +                            (latest-version (map car versions)))))
> > +          (assoc-ref package (assoc-ref versions version)))
> > +        #f))) =20
>=20
> I recommend using =E2=80=98define-json-mapping=E2=80=99 instead of browsi=
ng alists:
> it=E2=80=99s less error-prone, hides the JSON details away, and leads to =
more
> readable code.  The pypi, crates, cpan importers use it.
>=20
> Thanks!
>=20
> Ludo=E2=80=99.

Thanks, here's a new version

--MP_/Nb0qTNLZeDOi6GOcim.fLs2
Content-Type: text/x-patch
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename=0001-guix-import-Add-composer-importer.patch

=46rom 6d521ca9f066f82488abefd5d3630e38305c0fd1 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@HIDDEN>
Date: Tue, 29 Oct 2019 08:07:38 +0100
Subject: [PATCH 01/34] guix: import: Add composer importer.

* guix/import/composer.scm: New file.
* guix/scripts/import/composer.scm: New file.
* guix/tests/composer.scm: New file.
* Makefile.am: Add them.
* guix/scripts/import.scm: Add composer importer.
* doc/guix.texi (Invoking guix import): Mention it.
---
 Makefile.am                      |   3 +
 doc/guix.texi                    |   6 +
 guix/import/composer.scm         | 257 +++++++++++++++++++++++++++++++
 guix/scripts/import.scm          |   2 +-
 guix/scripts/import/composer.scm | 107 +++++++++++++
 tests/composer.scm               |  92 +++++++++++
 6 files changed, 466 insertions(+), 1 deletion(-)
 create mode 100644 guix/import/composer.scm
 create mode 100644 guix/scripts/import/composer.scm
 create mode 100644 tests/composer.scm

diff --git a/Makefile.am b/Makefile.am
index 8e91e1e558..6ce1430ea6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -223,6 +223,7 @@ MODULES =3D					\
   guix/search-paths.scm				\
   guix/packages.scm				\
   guix/import/cabal.scm				\
+  guix/import/composer.scm			\
   guix/import/cpan.scm				\
   guix/import/cran.scm				\
   guix/import/crate.scm				\
@@ -269,6 +270,7 @@ MODULES =3D					\
   guix/scripts/system/reconfigure.scm		\
   guix/scripts/lint.scm				\
   guix/scripts/challenge.scm			\
+  guix/scripts/import/composer.scm		\
   guix/scripts/import/crate.scm			\
   guix/scripts/import/cran.scm			\
   guix/scripts/import/elpa.scm  		\
@@ -402,6 +404,7 @@ SCM_TESTS =3D					\
   tests/challenge.scm				\
   tests/channels.scm				\
   tests/combinators.scm			\
+  tests/composer.scm				\
   tests/containers.scm				\
   tests/cpan.scm				\
   tests/cpio.scm				\
diff --git a/doc/guix.texi b/doc/guix.texi
index 88128a4b3a..ca4eb347c7 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10164,6 +10164,12 @@ in Guix.
 @cindex OCaml
 Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package
 repository used by the OCaml community.
+
+@item composer
+@cindex COMPOSER
+@cindex PHP
+Import metadat from the @uref{https://getcomposer.org/, Composer} package
+archive used by the PHP community.
 @end table
=20
 The structure of the @command{guix import} code is modular.  It would be
diff --git a/guix/import/composer.scm b/guix/import/composer.scm
new file mode 100644
index 0000000000..db8075edb2
--- /dev/null
+++ b/guix/import/composer.scm
@@ -0,0 +1,257 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix import composer)
+  #:use-module (ice-9 match)
+  #:use-module (json)
+  #:use-module (gcrypt hash)
+  #:use-module (guix base32)
+  #:use-module (guix build git)
+  #:use-module (guix build utils)
+  #:use-module (guix build-system)
+  #:use-module (guix import json)
+  #:use-module (guix import utils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix serialization)
+  #:use-module (guix upstream)
+  #:use-module (guix utils)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:export (composer->guix-package
+            %composer-updater
+            composer-recursive-import
+
+            %composer-base-url))
+
+(define %composer-base-url
+  (make-parameter "https://repo.packagist.org"))
+
+;; XXX adapted from (guix scripts hash)
+(define (file-hash file select? recursive?)
+  ;; Compute the hash of FILE.
+  (if recursive?
+      (let-values (((port get-hash) (open-sha256-port)))
+        (write-file file port #:select? select?)
+        (force-output port)
+        (get-hash))
+      (call-with-input-file file port-sha256)))
+
+;; XXX taken from (guix scripts hash)
+(define (vcs-file? file stat)
+  (case (stat:type stat)
+    ((directory)
+     (member (basename file) '(".bzr" ".git" ".hg" ".svn" "CVS")))
+    ((regular)
+     ;; Git sub-modules have a '.git' file that is a regular text file.
+     (string=3D? (basename file) ".git"))
+    (else
+     #f)))
+
+(define (latest-version versions)
+  (fold (lambda (a b) (if (version>? a b) a b)) (car versions) versions))
+
+(define (fix-version version)
+  "Return a fixed version from a version string.  For instance, v10.1 -> 1=
0.1"
+  (cond
+    ((string-prefix? "version" version)
+     (if (char-set-contains? char-set:digit (string-ref version 7))
+         (substring version 7)
+         (substring version 8)))
+    ((string-prefix? "v" version)
+     (substring version 1))
+    (else version)))
+
+(define* (composer-fetch name #:optional version)
+  "Return an alist representation of the Composer metadata for the package=
 NAME,
+or #f on failure."
+  (let ((package (json-fetch
+                   (string-append (%composer-base-url) "/p/" name ".json")=
)))
+    (if package
+        (let* ((packages (assoc-ref package "packages"))
+               (package (assoc-ref packages name))
+               (versions (filter
+                           (lambda (version)
+                             (and (not (string-contains version "dev"))
+                                  (not (string-contains version "beta"))))
+                           (map car package)))
+               (versions (map
+                           (lambda (version)
+                             (cons (fix-version version) version))
+                           versions))
+               (version (or (if (null? version) #f version)
+                            (latest-version (map car versions)))))
+          (assoc-ref package (assoc-ref versions version)))
+        #f)))
+
+(define (php-package-name name)
+  "Given the NAME of a package on Packagist, return a Guix-compliant name =
for
+the package."
+  (let ((name (string-join (string-split name #\/) "-")))
+    (if (string-prefix? "php-" name)
+        (snake-case name)
+        (string-append "php-" (snake-case name)))))
+
+(define (make-php-sexp name version home-page description dependencies
+                       dev-dependencies licenses source)
+  "Return the `package' s-expression for a PHP package with the given NAME,
+VERSION, HOME-PAGE, DESCRIPTION, DEPENDENCIES, LICENSES and SOURCE."
+  (let ((git? (equal? (assoc-ref source "type") "git")))
+    ((if git? call-with-temporary-directory call-with-temporary-output-fil=
e)
+     (lambda* (temp #:optional port)
+       (and (if git?
+                (begin
+                  (mkdir-p temp)
+                  (git-fetch (assoc-ref source "url")
+                             (assoc-ref source "reference")
+                             temp))
+                (url-fetch (assoc-ref source "url") temp))
+            `(package
+               (name ,(php-package-name name))
+               (version ,version)
+               (source (origin
+                         ,@(if git?
+                               `((method git-fetch)
+                                 (uri (git-reference
+                                        (url ,(assoc-ref source "url"))
+                                        (commit ,(assoc-ref source "refere=
nce"))))
+                                 (file-name (git-file-name name version))
+                                 (sha256
+                                   (base32
+                                     ,(bytevector->nix-base32-string
+                                       (file-hash temp (negate vcs-file?) =
#t)))))
+                               `((method url-fetch)
+                                 (uri ,(assoc-ref source "url"))
+                                 (sha256 (base32 ,(guix-hash-url temp)))))=
))
+               (build-system composer-build-system)
+               ,@(if (null? dependencies)
+                     '()
+                     `((inputs
+                        (,'quasiquote
+                         ,(map (lambda (name)
+                                 `(,name
+                                   (,'unquote
+                                    ,(string->symbol name))))
+                               dependencies)))))
+               ,@(if (null? dev-dependencies)
+                     '()
+                     `((native-inputs
+                        (,'quasiquote
+                         ,(map (lambda (name)
+                                 `(,name
+                                   (,'unquote
+                                    ,(string->symbol name))))
+                               dev-dependencies)))))
+               (synopsis "")
+               (description ,description)
+               (home-page ,home-page)
+               (license ,(match licenses
+                           (() #f)
+                           ((license) (license->symbol license))
+                           (_ `(list ,@(map license->symbol licenses))))))=
)))))
+
+(define* (composer->guix-package package-name #:optional version)
+  "Fetch the metadata for PACKAGE-NAME from packagist.org, and return the
+`package' s-expression corresponding to that package, or #f on failure."
+  (let ((package (composer-fetch package-name version)))
+    (and package
+         (let* ((name         (assoc-ref package "name"))
+                (version      (fix-version (assoc-ref package "version")))
+                (description  (beautify-description
+                               (assoc-ref package "description")))
+                (home-page    (assoc-ref package "homepage"))
+                (dependencies-names (filter
+                                      (lambda (dep)
+                                        (string-contains dep "/"))
+                                      (map car (assoc-ref package "require=
"))))
+                (dependencies (map php-package-name dependencies-names))
+                (require-dev (assoc-ref package "require-dev"))
+                (dev-dependencies-names
+                  (if require-dev
+                      (filter
+                        (lambda (dep)
+                          (string-contains dep "/"))
+                        (map car require-dev))
+                      '()))
+                (dev-dependencies (map php-package-name dev-dependencies-n=
ames))
+                (licenses     (map string->license
+                                   (vector->list
+                                    (assoc-ref package "license")))))
+           (values (make-php-sexp name version home-page description depen=
dencies
+                                  dev-dependencies licenses (assoc-ref pac=
kage "source"))
+                   (append dependencies-names dev-dependencies-names))))))
+
+(define (guix-name->composer-name name)
+  "Given a guix package name, return the name of the package in Packagist."
+  (if (string-prefix? "php-" name)
+      (let ((components (string-split (substring name 4) #\-)))
+        (match components
+          ((namespace name ...)
+           (string-append namespace "/" (string-join name "-")))))
+      name))
+
+(define (guix-package->composer-name package)
+  "Given a Composer PACKAGE built from Packagist, return the name of the
+package in Packagist."
+  (let ((upstream-name (assoc-ref
+                         (package-properties package)
+                         'upstream-name))
+        (name (package-name package)))
+    (if upstream-name
+      upstream-name
+      (guix-name->composer-name name))))
+
+(define (string->license str)
+  "Convert the string STR into a license object."
+  (match str
+    ("GNU LGPL" license:lgpl2.0)
+    ("GPL" license:gpl3)
+    ((or "BSD" "BSD License" "BSD-3-Clause") license:bsd-3)
+    ((or "MIT" "MIT license" "Expat license") license:expat)
+    ("Public domain" license:public-domain)
+    ((or "Apache License, Version 2.0" "Apache 2.0") license:asl2.0)
+    (_ #f)))
+
+(define (php-package? package)
+  "Return true if PACKAGE is a PHP package from Packagist."
+  (and
+    (eq? (build-system-name (package-build-system package)) 'composer)
+    (string-prefix? "php-" (package-name package))))
+
+(define (latest-release package)
+  "Return an <upstream-source> for the latest release of PACKAGE."
+  (let* ((php-name (guix-package->composer-name package))
+         (metadata (composer-fetch php-name))
+         (version (fix-version (assoc-ref metadata "version")))
+         (url (assoc-ref (assoc-ref metadata "source") "url")))
+    (upstream-source
+     (package (package-name package))
+     (version version)
+     (urls (list url)))))
+
+(define %composer-updater
+  (upstream-updater
+   (name 'composer)
+   (description "Updater for Composer packages")
+   (pred php-package?)
+   (latest latest-release)))
+
+(define* (composer-recursive-import package-name #:optional version)
+  (recursive-import package-name '()
+                    #:repo->guix-package composer->guix-package
+                    #:guix-name php-package-name))
diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm
index 0a3863f965..23da295e48 100644
--- a/guix/scripts/import.scm
+++ b/guix/scripts/import.scm
@@ -77,7 +77,7 @@ rather than \\n."
 ;;;
=20
 (define importers '("gnu" "nix" "pypi" "cpan" "hackage" "stackage" "elpa" =
"gem"
-                    "cran" "crate" "texlive" "json" "opam"))
+                    "cran" "crate" "texlive" "json" "opam" "composer"))
=20
 (define (resolve-importer name)
   (let ((module (resolve-interface
diff --git a/guix/scripts/import/composer.scm b/guix/scripts/import/compose=
r.scm
new file mode 100644
index 0000000000..412bae6318
--- /dev/null
+++ b/guix/scripts/import/composer.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2015 David Thompson <davet@HIDDEN>
+;;; Copyright =C2=A9 2018 Oleg Pykhalov <go.wigust@HIDDEN>
+;;;
+;;; 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 (guix scripts import composer)
+  #:use-module (guix ui)
+  #:use-module (guix utils)
+  #:use-module (guix scripts)
+  #:use-module (guix import composer)
+  #:use-module (guix scripts import)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:use-module (srfi srfi-37)
+  #:use-module (srfi srfi-41)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 format)
+  #:export (guix-import-composer))
+
+=0C
+;;;
+;;; Command-line options.
+;;;
+
+(define %default-options
+  '())
+
+(define (show-help)
+  (display (G_ "Usage: guix import composer PACKAGE-NAME
+Import and convert the Composer package for PACKAGE-NAME.\n"))
+  (display (G_ "
+  -h, --help             display this help and exit"))
+  (display (G_ "
+  -V, --version          display version information and exit"))
+  (display (G_ "
+  -r, --recursive        generate package expressions for all Composer pac=
kages\
+ that are not yet in Guix"))
+  (newline)
+  (show-bug-report-information))
+
+(define %options
+  ;; Specification of the command-line options.
+  (cons* (option '(#\h "help") #f #f
+                 (lambda args
+                   (show-help)
+                   (exit 0)))
+         (option '(#\V "version") #f #f
+                 (lambda args
+                   (show-version-and-exit "guix import composer")))
+         (option '(#\r "recursive") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'recursive #t result)))
+         %standard-import-options))
+
+=0C
+;;;
+;;; Entry point.
+;;;
+
+(define (guix-import-composer . args)
+  (define (parse-options)
+    ;; Return the alist of option values.
+    (args-fold* args %options
+                (lambda (opt name arg result)
+                  (leave (G_ "~A: unrecognized option~%") name))
+                (lambda (arg result)
+                  (alist-cons 'argument arg result))
+                %default-options))
+
+  (let* ((opts (parse-options))
+         (args (filter-map (match-lambda
+                            (('argument . value)
+                             value)
+                            (_ #f))
+                           (reverse opts))))
+    (match args
+      ((package-name)
+       (if (assoc-ref opts 'recursive)
+           (map (match-lambda
+                  ((and ('package ('name name) . rest) pkg)
+                   `(define-public ,(string->symbol name)
+                      ,pkg))
+                  (_ #f))
+                (composer-recursive-import package-name))
+           (let ((sexp (composer->guix-package package-name)))
+             (unless sexp
+               (leave (G_ "failed to download meta-data for package '~a'~%=
")
+                      package-name))
+             sexp)))
+      (()
+       (leave (G_ "too few arguments~%")))
+      ((many ...)
+       (leave (G_ "too many arguments~%"))))))
diff --git a/tests/composer.scm b/tests/composer.scm
new file mode 100644
index 0000000000..cefaf9f434
--- /dev/null
+++ b/tests/composer.scm
@@ -0,0 +1,92 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright =C2=A9 2020 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (test-composer)
+  #:use-module (guix import composer)
+  #:use-module (guix base32)
+  #:use-module (gcrypt hash)
+  #:use-module (guix tests http)
+  #:use-module (guix grafts)
+  #:use-module (srfi srfi-64)
+  #:use-module (web client)
+  #:use-module (ice-9 match))
+
+;; Globally disable grafts because they can trigger early builds.
+(%graft? #f)
+
+(define test-json
+  "{
+  \"packages\": {
+    \"foo/bar\": {
+      \"0.1\": {
+        \"name\": \"foo/bar\",
+        \"description\": \"description\",
+        \"keywords\": [\"testing\"],
+        \"homepage\": \"http://example.com\",
+        \"version\": \"0.1\",
+        \"license\": [\"BSD-3-Clause\"],
+        \"source\": {
+          \"type\": \"url\",
+          \"url\": \"http://example.com/Bar-0.1.tar.gz\"
+        },
+        \"require\": {},
+        \"require-dev\": {\"phpunit/phpunit\": \"1.0.0\"}
+      }
+    }
+  }
+}")
+
+(define test-source
+  "foobar")
+
+;; Avoid collisions with other tests.
+(%http-server-port 10450)
+
+(test-begin "composer")
+
+(test-assert "composer->guix-package"
+  ;; Replace network resources with sample data.
+  (with-http-server `((200 ,test-json)
+                      (200 ,test-source))
+    (parameterize ((%composer-base-url (%local-url))
+                   (current-http-proxy (%local-url)))
+      (match (composer->guix-package "foo/bar")
+        (('package
+           ('name "php-foo-bar")
+           ('version "0.1")
+           ('source ('origin
+                      ('method 'url-fetch)
+                      ('uri "http://example.com/Bar-0.1.tar.gz")
+                      ('sha256
+                       ('base32
+                        (? string? hash)))))
+           ('build-system 'composer-build-system)
+           ('native-inputs
+            ('quasiquote
+             (("php-phpunit-phpunit" ('unquote 'php-phpunit-phpunit)))))
+           ('synopsis "")
+           ('description "description")
+           ('home-page "http://example.com")
+           ('license 'license:bsd-3))
+         (string=3D? (bytevector->nix-base32-string
+                    (call-with-input-string test-source port-sha256))
+                   hash))
+        (x
+         (pk 'fail x #f))))))
+
+(test-end "composer")
--=20
2.28.0


--MP_/Nb0qTNLZeDOi6GOcim.fLs2--




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 7 Sep 2020 14:09:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 07 10:09:14 2020
Received: from localhost ([127.0.0.1]:50314 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kFHpZ-0001LX-QH
	for submit <at> debbugs.gnu.org; Mon, 07 Sep 2020 10:09:14 -0400
Received: from eggs.gnu.org ([209.51.188.92]:32980)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kFHpY-0001LM-Qf
 for 42338 <at> debbugs.gnu.org; Mon, 07 Sep 2020 10:09:13 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:42551)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kFHpT-0004c0-El; Mon, 07 Sep 2020 10:09:07 -0400
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=44454 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kFHpS-0001LH-Dr; Mon, 07 Sep 2020 10:09:07 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 03/34] guix: Add composer-build-system.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
 <20200712222538.18092-3-julien@HIDDEN>
Date: Mon, 07 Sep 2020 16:09:01 +0200
In-Reply-To: <20200712222538.18092-3-julien@HIDDEN> (Julien Lepiller's
 message of "Mon, 13 Jul 2020 00:25:07 +0200")
Message-ID: <87imcphe6a.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Julien Lepiller <julien@HIDDEN> skribis:

> * guix/build-system/composer.scm: New file.
> * guix/build/composer-build-system.scm: New file.
> * guix/build-system/findclass.php: New file.
> * Makefile.am: Add them.
> * doc/guix.texi (Build Systems): Document it.

[...]

> +++ b/guix/build-system/findclass.php
> @@ -0,0 +1,102 @@
> +<?php
> +/**
> + * Extract the classes in the given file
> + *
> + * @param  string            $path The file to check
> + * @throws \RuntimeException
> + * @return array             The found classes
> + */

This should rather be under gnu/packages/aux-files IMO.  Also, could you
add a copyright header and possibly info as to where it originates?

> +(define* (create-autoload vendor composer-file inputs #:key dev-dependen=
cies?)
> +  (with-output-to-file (string-append vendor "/autoload.php")
> +    (lambda _
> +      (format #t "<?php~%")
> +      (format #t "// autoload.php @generated by Guix~%")
> +      (format #t "$map =3D $psr4map =3D $classmap =3D array();~%")
> +      (format #t "require_once '~a/autoload_conf.php';~%" vendor)
> +      (format #t "require_once '~a/share/web/composer/ClassLoader.php';~=
%"
> +                 (assoc-ref inputs "composer-classloader"))
> +      (format #t "$loader =3D new \\Composer\\Autoload\\ClassLoader();~%=
")
> +      (format #t "foreach ($map as $namespace =3D> $path) {~%")
> +      (format #t "  $loader->set($namespace, $path);~%")
> +      (format #t "}~%")
> +      (format #t "foreach ($psr4map as $namespace =3D> $path) {~%")
> +      (format #t "  $loader->setPsr4($namespace, $path);~%")
> +      (format #t "}~%")
> +      (format #t "$loader->addClassMap($classmap);~%")
> +      (format #t "$loader->register();~%")))

I think it=E2=80=99d be clearer as a single string:

  (display "\
<?php
// autoload.php =E2=80=A6")

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 7 Sep 2020 14:06:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 07 10:06:29 2020
Received: from localhost ([127.0.0.1]:50310 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kFHmv-0001Hh-AF
	for submit <at> debbugs.gnu.org; Mon, 07 Sep 2020 10:06:29 -0400
Received: from eggs.gnu.org ([209.51.188.92]:60810)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1kFHmt-0001HW-VZ
 for 42338 <at> debbugs.gnu.org; Mon, 07 Sep 2020 10:06:28 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:42538)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1kFHmn-0004Qc-IX; Mon, 07 Sep 2020 10:06:21 -0400
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=44452 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1kFHml-0001Cc-Ht; Mon, 07 Sep 2020 10:06:20 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Julien Lepiller <julien@HIDDEN>
Subject: Re: [bug#42338] [PATCH 01/34] guix: import: Add composer importer.
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
Date: Mon, 07 Sep 2020 16:06:13 +0200
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN> (Julien Lepiller's
 message of "Mon, 13 Jul 2020 00:25:05 +0200")
Message-ID: <87mu21heay.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 42338
Cc: 42338 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Julien,

There=E2=80=99s a lot of interesting work in here!  I=E2=80=99m not familia=
r with PHP;
I=E2=80=99ll just make a bird=E2=80=99s eye review.

Julien Lepiller <julien@HIDDEN> skribis:

> * guix/import/composer.scm: New file.
> * guix/scripts/import/composer.scm: New file.
> * Makefile.am: Add them.
> * guix/scripts/import.scm: Add composer importer.

Please add tests and a mention in =E2=80=9CInvoking guix import=E2=80=9D in=
 the manual.

For tests, a strategy that I think works well is that used in
tests/cpan.scm, where we spawn an HTTP server to mock the real one.

> +(define* (composer-fetch name #:optional version)
> +  "Return an alist representation of the Composer metadata for the packa=
ge NAME,
> +or #f on failure."
> +  (let ((package (json-fetch
> +                   (string-append "https://repo.packagist.org/p/" name "=
.json"))))
> +    (if package
> +        (let* ((packages (assoc-ref package "packages"))
> +               (package (assoc-ref packages name))
> +               (versions (filter
> +                           (lambda (version)
> +                             (and (not (string-contains version "dev"))
> +                                  (not (string-contains version "beta"))=
))
> +                           (map car package)))
> +               (versions (map
> +                           (lambda (version)
> +                             (cons (fix-version version) version))
> +                           versions))
> +               (version (or (if (null? version) #f version)
> +                            (latest-version (map car versions)))))
> +          (assoc-ref package (assoc-ref versions version)))
> +        #f)))

I recommend using =E2=80=98define-json-mapping=E2=80=99 instead of browsing=
 alists: it=E2=80=99s
less error-prone, hides the JSON details away, and leads to more
readable code.  The pypi, crates, cpan importers use it.

Thanks!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:54 2020
Received: from localhost ([127.0.0.1]:47088 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZe-0003yJ-2u
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:54 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ9-0003ad-ML
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:06 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 7f0639ec
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=s8ceYJ2fUGQUNnwEIyVAP3M5k
 cIbLCI4fmiN6V4oBkY=; b=DDuA4HTM8Ncr6MXCIvixesAm7OgRJwt6AUwclNwKE
 IO9UCFuIn4woQ7/HuPAo10ycCrn+shktc/WTnf/4fcETV/ae1vwZ5eOi0fGEZ6bJ
 oV8RKC/c0iPZrRaNfgiDQDF70JvjqmNf98JWN/yW0oDCZPXV/4yq/dRFR//iGI+h
 nsoWFZ7ycOkEyD6Z4ro35IeoAvWwFqFHfSaOWkxXrrb0mSaysBnpwu4nfGp+zypJ
 YFuAulYu7d4soWh/bRS3FAXJ6a8leREAT6+UIW8Wqz/dClCWE9hIUfkUqc2tYxFp
 Z8XNOG7tBWh+UNLpnylkXIbUzM64nKB5IJSlADnwUUNTw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 4170c07a
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:03 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 34/34] gnu: Add phpunit.
Date: Mon, 13 Jul 2020 00:25:38 +0200
Message-Id: <20200712222538.18092-34-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-phpunit): New variable.
---
 gnu/packages/php-xyz.scm | 45 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 0ae92c4600..eebf64c1a3 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -791,3 +791,48 @@ timeout.")
 represent the PHP code units.")
     (home-page "https://github.com/sebastianbergmann/code-unit")
     (license license:bsd-3)))
+
+(define-public php-phpunit-phpunit
+  (package
+    (name "phpunit")
+    (version "9.2.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/phpunit.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ck41faxkqr6painsqirklzsl08k8biadi2ksnpsmpjf3dp5p5gl"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; Requires phpspec/prophecy-phpunit, which in turns requires phpunit.
+     `(#:tests? #f))
+    (inputs
+     `(("php-sebastian-version" ,php-sebastian-version)
+       ("php-sebastian-type" ,php-sebastian-type)
+       ("php-sebastian-resource-operations" ,php-sebastian-resource-operations)
+       ("php-sebastian-object-enumerator" ,php-sebastian-object-enumerator)
+       ("php-sebastian-global-state" ,php-sebastian-global-state)
+       ("php-sebastian-exporter" ,php-sebastian-exporter)
+       ("php-sebastian-environment" ,php-sebastian-environment)
+       ("php-sebastian-diff" ,php-sebastian-diff)
+       ("php-sebastian-comparator" ,php-sebastian-comparator)
+       ("php-sebastian-code-unit" ,php-sebastian-code-unit)
+       ("php-phpunit-php-timer" ,php-phpunit-php-timer)
+       ("php-phpunit-php-text-template" ,php-phpunit-php-text-template)
+       ("php-phpunit-php-invoker" ,php-phpunit-php-invoker)
+       ("php-phpunit-php-file-iterator" ,php-phpunit-php-file-iterator)
+       ("php-phpunit-php-code-coverage" ,php-phpunit-php-code-coverage)
+       ("php-phpspec-prophecy" ,php-phpspec-prophecy)
+       ("php-phar-io-version" ,php-phar-io-version)
+       ("php-phar-io-manifest" ,php-phar-io-manifest)
+       ("php-myclabs-deep-copy" ,php-myclabs-deep-copy)
+       ("php-doctrine-instantiator" ,php-doctrine-instantiator)))
+    (properties `((upstream-name . "phpunit/phpunit")))
+    (synopsis "PHP Unit Testing framework")
+    (description "PHPUnit is a testing framework for PHP.  It is an instance of
+the xUnit architecture for unit testing frameworks.")
+    (home-page "https://phpunit.de/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:54 2020
Received: from localhost ([127.0.0.1]:47086 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZd-0003yC-S7
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:54 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ5-0003aw-2d
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:01 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id ab54cefd
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=ClE/cqGnerN7eJUHMLdcf/FMV
 extlp4n9142NxUmods=; b=cC4a/85X9TOW+uhhnBAFgKlN8fuyS3ojVyobPDVUY
 EV2llM81WLw882wofZH2nF0U70mkKPPlj+PoLhaKwzTYmtt58S1ZGn3MHporkEii
 nIJ5b2F8Nt0ZhED/GdnIekWk4qUCzmGbPlpeVwvkHC385obnvfOBLTboGPUQcI9j
 vbQKKipEBTj/pO+zIuPwGeGHAYENXK6JLcJf97j4XnoXYe/9COpZAi4C5kBre4lR
 lm6tkJyXFtFt/I2vmCZXeBjqE6+dPbvNH0j91Gv4Mok5Ptj1lzHAGLWbgUEYpQ6U
 Fng9hm6+wocW9XTy6lK+6MVzyu3HvGty9yl7cVTEuG4UA==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 3a149bc4
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:59 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 27/34] gnu: Add php-sebastian-object-enumerator.
Date: Mon, 13 Jul 2020 00:25:31 +0200
Message-Id: <20200712222538.18092-27-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-object-enumerator): New
variable.
---
 gnu/packages/php-xyz.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 4872523b31..8cf5668030 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -618,3 +618,29 @@ of PHPUnit.  It provides support for creating a snapshot of the global state
 of a PHP program.")
     (home-page "http://www.github.com/sebastianbergmann/global-state")
     (license license:bsd-3)))
+
+(define-public php-sebastian-object-enumerator
+  (package
+    (name "php-sebastian-object-enumerator")
+    (version "4.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/object-enumerator.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qx28r0ncbh0x9i0jplyg870paxxsy7g1ibgbdqq11176101aj6q"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-sebastian-recursion-context" ,php-sebastian-recursion-context)
+       ("php-sebastian-object-reflector" ,php-sebastian-object-reflector)))
+    (synopsis "Enumerate PHP objects")
+    (description "This package allows PHP programs to traverse array structures
+and object graphs to enumerate all referenced objects.")
+    (home-page "https://github.com/sebastianbergmann/object-enumerator/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:53 2020
Received: from localhost ([127.0.0.1]:47084 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZd-0003y5-HV
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:53 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ6-0003aw-2z
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:02 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 610e85ee
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=eHL0kSmunxMjst4KfVmNZc71R
 toTR2VqQqzZ8m4PA1I=; b=Ix4dpOAaDv4tqa5m3vp1mMwFci5QuMiIifUz9XePG
 FBTr5+/ejKa3moPc9UzwI/G1q2LN3MgrpdI/e1kDysVgcAxMs+BGrWJJp7ZeIvqO
 G7Cm502Dlv0caThscLxsxVY9TmWw7ajsKrn6rcmqHUjBeFkEX8GOT639UFyqR4y4
 0S6he/bXiZCeet79uGqT7090wYCC0dsGjX1OpB3KQ5uVedZofgIqqmFkgIw5cVVy
 Nddl3icc5lZ4fO4pF0zIwUJ8Zpyuu6E+DyFETW0H39JPXC4IhGhJiw/YGAmFaoiy
 1dvdNJexXM/Nlz9bOUz2CYqfM9bFqaRTV0T2i119alVZw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 0b09d2d7
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:00 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 29/34] gnu: Add php-sebastian-type.
Date: Mon, 13 Jul 2020 00:25:33 +0200
Message-Id: <20200712222538.18092-29-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-type): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index aee08c0878..9a50c431b7 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -667,3 +667,26 @@ and object graphs to enumerate all referenced objects.")
 operate on resources.")
     (home-page "https://www.github.com/sebastianbergmann/resource-operations")
     (license license:bsd-3)))
+
+(define-public php-sebastian-type
+  (package
+    (name "php-sebastian-type")
+    (version "2.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/type.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0gvdb9188a4903q0dnhhdcm9qd67is5pns8jbccxr7hxv8w7d7h3"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "PHP type system representation")
+    (description "This package is a collection of value objects that represent
+the types of the PHP type system.")
+    (home-page "https://github.com/sebastianbergmann/type")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:53 2020
Received: from localhost ([127.0.0.1]:47082 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZd-0003xy-Az
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:53 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ8-0003ad-UC
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:05 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id bbcbc978
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=L9xJ4HcR0J7jmXsft45Sp1C3W
 dAo28fxpc3Xcm7ckqQ=; b=JES/3q2nGBE2kO340L58eaJL1FGC0htX7B+F1ZZED
 m0VnEm3WIbiuq2WepwT4kDZd2/u5stp/GVikFYAt/4gV508zyEc4ckokdfbtdsGu
 rLqilFIIvUUWMjrpgGhtESYUsQWD+moTOA1f1gUZ/FlzdVRk9FX6oSQfJiC3i1jT
 N3QTvVDps682AxnjzxCYLnHBunC3vfe10AjyoR1zZnfS/uZ9/9GWslapQRorGIyN
 L7wQVULZfGRZlsp0zbwJFUUK58Og9Q9OlvmT2kr9Vhi4o9zT3azSRQgRwLQN2REB
 fTKJ3kU76D7SlaOUCS7BeE0SlA8pNnngtfzJMANTp6gHA==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 81d9ce70
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:02 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 33/34] gnu: Add php-sebastian-code-unit.
Date: Mon, 13 Jul 2020 00:25:37 +0200
Message-Id: <20200712222538.18092-33-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-code-unit): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 484fb17790..0ae92c4600 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -768,3 +768,26 @@ of PHPUnit.  It provides a utility class for timing.")
 timeout.")
     (home-page "https://github.com/sebastianbergmann/php-invoker/")
     (license license:bsd-3)))
+
+(define-public php-sebastian-code-unit
+  (package
+    (name "php-sebastian-code-unit")
+    (version "1.0.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/code-unit.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "058ykqcmzm900c513j2qvi189bgn0scxsrhbrik5xycrr620krxc"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "PHP collection of value objects for code units")
+    (description "This package contains a collection of value objects that
+represent the PHP code units.")
+    (home-page "https://github.com/sebastianbergmann/code-unit")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:53 2020
Received: from localhost ([127.0.0.1]:47080 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZd-0003xq-57
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:53 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ7-0003ad-Bj
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:03 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 2037a007
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=lz+mBMYGaLKQZQs7bLjATFy9x
 nAb/57/jZRsFi1l/bY=; b=bamk86Mp9aLLGISvJhdzuXT444FDak/NMVmbMIhsx
 9SWZKPjXf8vCK4/VJwafe4+kJSLdvXm3Ko+utiH2WVeXepGIRxdqL2OTbeyoglOm
 XAhVx14RCKA84baW5YljSVSTobzDOoA5Rv0kmWCUMItnaJ60bio7MlHQ46bKbSbp
 4yENKbM6V8xZHd8EW8qIM4EKB3t8Tslp84gM7e+zBi2mHZz5UB5yt2YrJ7wQ92y5
 hPk24JBFVq9fpwEyMh7R1wV+GuOOUsy1EiIcJrDc1aFhS8Lm4AO8jueXblFxDr5V
 w+Q6CyBDZm+xQsF3c+W04mYK6qccHQYp2h18kw50nrohQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id f80f817e
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:01 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 31/34] gnu: Add php-phpunit-php-timer.
Date: Mon, 13 Jul 2020 00:25:35 +0200
Message-Id: <20200712222538.18092-31-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-php-timer): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 2d186c5190..1b6669abcc 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -722,3 +722,26 @@ the types of the PHP type system.")
 processing, and rendering functionality for PHP code coverage information.")
     (home-page "https://github.com/sebastianbergmann/php-code-coverage")
     (license license:bsd-3)))
+
+(define-public php-phpunit-php-timer
+  (package
+    (name "php-phpunit-php-timer")
+    (version "5.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/php-timer.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0hyy5c8b22zki6836a7fhzr3s6dpvga33r2rzfrsbv1arh19ay60"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Utility class for timing")
+    (description "This package contains a stand-alone component originally part
+of PHPUnit.  It provides a utility class for timing.")
+    (home-page "https://github.com/sebastianbergmann/php-timer/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:53 2020
Received: from localhost ([127.0.0.1]:47078 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZc-0003xj-Tt
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:53 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ6-0003ad-Bo
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:03 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id d4daa355
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=dwXnSI5EhNLTIj0NKHyqqLx76
 6HZilyFKKlX/S7M+aQ=; b=EK79fZhiveB/bGhIIlw51VlmwIaeZU6AIy8/EH2k4
 vLjnOZarDxd2ZiFXiPPfMrE2R9TGRFFOpkGtXZ9J31G3LlOIpvoht7wch+SO6OWk
 UCHvhrk3ofowurN3f+qAT6Z9qQ9YFOoMTRz1Yb0JmvA/dhtw7h19QFqYZ0AIaazS
 t3LQZ0Ig1WwONkUquBZVrtmavTXQqjVyIqncp7OYJ11c8cDWlPXhAsKYwqYdyfKA
 nMgE1n9D9eGb/F6dEXPOt2pPqEYYt5vbDH0039ZWwIFHbqdf5JOkS7/j3ESCSNkj
 PQIHapZRxz+2yOxSwB/0fMa4lbJO1c58k2DyK/Kdhmb1w==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 63350582
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:01 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 30/34] gnu: Add php-phpunit-php-code-coverage.
Date: Mon, 13 Jul 2020 00:25:34 +0200
Message-Id: <20200712222538.18092-30-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-php-code-coverage): New
variable.
---
 gnu/packages/php-xyz.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 9a50c431b7..2d186c5190 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -690,3 +690,35 @@ operate on resources.")
 the types of the PHP type system.")
     (home-page "https://github.com/sebastianbergmann/type")
     (license license:bsd-3)))
+
+(define-public php-phpunit-php-code-coverage
+  (package
+    (name "php-phpunit-php-code-coverage")
+    (version "8.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/php-code-coverage.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qr7x9y8636bvv0fk8hl0kl9d2y8fy6qw65kpi4yb1yyqhfddkgh"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-theseer-tokenizer" ,php-theseer-tokenizer)
+       ("php-sebastian-version" ,php-sebastian-version)
+       ("php-sebastian-environment" ,php-sebastian-environment)
+       ("php-sebastian-code-unit-reverse-lookup"
+	,php-sebastian-code-unit-reverse-lookup)
+       ("php-phpunit-php-text-template" ,php-phpunit-php-text-template)
+       ("php-phpunit-php-token-stream" ,php-phpunit-php-token-stream)
+       ("php-phpunit-php-file-iterator" ,php-phpunit-php-file-iterator)))
+    (synopsis "Code coverage information library")
+    (description "This package is a library that provides collection,
+processing, and rendering functionality for PHP code coverage information.")
+    (home-page "https://github.com/sebastianbergmann/php-code-coverage")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:52 2020
Received: from localhost ([127.0.0.1]:47076 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZc-0003xc-KQ
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:52 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ8-0003ad-47
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:04 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 3b5f4b2e
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=OWSnpMvuCC87j/8TEEDei2pmP
 AMWtrDXZVYs4SyuRKE=; b=ZISX1DtWNEn30rGBufJaZE/RX2vqdQrTIDG3lwZMl
 shScoAQZXiwEok/G55BoYibPpC6HEGZ5fsDMduztr+vuziTB2iqIZrmMw1GIts+O
 YpLvIvXa3Wztb5Uvxj1o9y0QVmoFPPomuVPE7+iDSIbqSXIp2/E0Z7lX9Lc9GgBv
 39SEitWAju8+7sJBo/+i6MNOW3PqEn3Kf60DggV2y7T8+sYQwTbv3lHi6scmZC1f
 CKbl4qZe7UW+m/iOucdZFr5lIJ1lKKL1vyogwgwk2CCaXn+x8if+hYiHJFoiujmB
 hzTFzP6xT/2AcigMhXO1db86ngJ5aBcbOJs2zjcGVtnKg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id b658fdcc
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:02 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 32/34] gnu: Add php-phpunit-php-invoker.
Date: Mon, 13 Jul 2020 00:25:36 +0200
Message-Id: <20200712222538.18092-32-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-php-invoker): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 1b6669abcc..484fb17790 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -745,3 +745,26 @@ processing, and rendering functionality for PHP code coverage information.")
 of PHPUnit.  It provides a utility class for timing.")
     (home-page "https://github.com/sebastianbergmann/php-timer/")
     (license license:bsd-3)))
+
+(define-public php-phpunit-php-invoker
+  (package
+    (name "php-phpunit-php-invoker")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/php-invoker.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1xs7m0wiminnhkd400glmixyhrx1ir710j6fds9i03dhicfcj7db"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "PHP library for invoking functions")
+    (description "This package contains a library to invoke callables with a
+timeout.")
+    (home-page "https://github.com/sebastianbergmann/php-invoker/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:52 2020
Received: from localhost ([127.0.0.1]:47074 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZc-0003xV-E9
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:52 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ4-0003ad-KJ
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:01 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 00c04cd6
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:59 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=VS9Eulv2aLaA/xOjdkIWxjJr8
 +JtffK9yZak+HeY/5A=; b=Mw9c5daO4WRZZO17stkn4lhBU5RNtP03ZPFSjAsgD
 lk6qU2snpNIK/vem6foAFlwLm8dQIWdNkwAQp9QnXXqZ1V6ls79QEqA1UfQNP6q5
 +m/8Tl5LHmKVlQJ8hyInBnrySNbXawBYoBufcWsrJD0LRz/OzcEZBU4QUCPH5vnQ
 AGKmGV23F0G9NP127FkN+DY5O0QjDWZHG703DyZalM84EOpYOW0uRPbjWoFXI3P0
 QxLmZG3PyXrCdishfjxIZiZxH/gP/J5BdmxugzQZPA2n5Gu+0EaE5AZ05zTrT/Pt
 5VPVmEH5Z9gLT46JMEg3wnDrsB+7o9D0BKLO2lpt7ZkXA==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 77c34ee2
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:58 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 25/34] gnu: Add php-sebastian-object-reflector.
Date: Mon, 13 Jul 2020 00:25:29 +0200
Message-Id: <20200712222538.18092-25-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-object-reflector): New
variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 8c96d9aabc..899f6a3f69 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -568,3 +568,26 @@ for equality.")
 5.3+ projects.")
     (home-page "https://github.com/phpspec/prophecy")
     (license license:expat)))
+
+(define-public php-sebastian-object-reflector
+  (package
+    (name "php-sebastian-object-reflector")
+    (version "2.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/object-reflector.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qkvp2s932h53f161l30qlnxicw4fklirmnds173wgmavms1b5yb"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "PHP reflexion library")
+    (description "This package allows reflection of object attributes, including
+inherited and non-public ones.")
+    (home-page "https://github.com/sebastianbergmann/object-reflector/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:35:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:35:52 2020
Received: from localhost ([127.0.0.1]:47072 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukZc-0003xP-3J
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:35:52 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ5-0003ad-DB
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:02 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 58905ec1
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=tNrWM7CxSOP9v4S0ymA6FxK0l
 qIVBvVOc3Y8oK2nP4M=; b=ieZ3RHdpASmk4/aKsrcwXHT4OVUHgx+5ipnMDBH9/
 ++J05/0BR2PGxBrGuDhK2sBtyQ2bY1T3+YQLTKu9WDMXHrEp/ZnSoAlz/6ML0XPK
 jTyLdbVOCRzGHzsXdhFRv57U9rL377wZfNmOQJl3niu+Nr64g8YDnpFoyiHOHRHA
 hX3gB+PHvtXsEWDOaiTLROuMWCPz++C67VIP7/1SUR5KtK7FRdx6IFIVJVcjKje1
 GEhTYa/cYs+RaF57V6TiRZVrVvU32Aa1xbxNyZWwGQDKexYSRxWVbbdKvRxe/MCW
 WmnNsoNiW1Xu2Acnd+JWZQxviRCAqc3onHVBeO8Ehqsfw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 57a74380
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:26:00 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 28/34] gnu: Add php-sebastian-resource-operations.
Date: Mon, 13 Jul 2020 00:25:32 +0200
Message-Id: <20200712222538.18092-28-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-resource-operations): New
variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 8cf5668030..aee08c0878 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -644,3 +644,26 @@ of a PHP program.")
 and object graphs to enumerate all referenced objects.")
     (home-page "https://github.com/sebastianbergmann/object-enumerator/")
     (license license:bsd-3)))
+
+(define-public php-sebastian-resource-operations
+  (package
+    (name "php-sebastian-resource-operations")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/resource-operations.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "09s2gsmx6fg8sx64yyz2dszy22dcsspazlhskv3d9mflpmrk0d9y"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "List built-in PHP functions")
+    (description "This package provides a list of PHP built-in functions that
+operate on resources.")
+    (home-page "https://www.github.com/sebastianbergmann/resource-operations")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:13 2020
Received: from localhost ([127.0.0.1]:47055 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQH-0003hJ-3E
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:13 -0400
Received: from lepiller.eu ([89.234.186.109]:42904)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ4-0003bs-Ty
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:01 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 7738412d
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:59 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=029Ek/R5BYmvPDQl2IF3KxsXB
 xji7EIFCw896eNwLzk=; b=Akl7BYFopLVOa+viQKPder0+F0suocGDJBncO6j97
 YjbxxkImS0fte2xROpo8nTen37UbVAqOipD6Y1WZupLuH2DvB52zB41NKLMhRfEp
 D2LNzeX3Kf796/Ruwm9pxFusPIXWdVbu4TmxKxKjsfUSU2Ob6Qcf0TG9LQVUc+va
 YpqumZtp3qvSSGEbdBT6+lYm3zLvVLP3ADWHzHlvaZDbVjoX5PEfumfD8PcU0yav
 tx3xX54q5GgRrGRRC7v2c+iXD8C36sFpIyozOv7xvq2d44Nyk2pRncLFFiJLGhI7
 /gIOX+zfHFQUEVWkfHa+ArNtqHbsoGmmXMFWzaxg2Rj9A==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 667d0b86
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:58 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 26/34] gnu: Add php-sebastian-global-state.
Date: Mon, 13 Jul 2020 00:25:30 +0200
Message-Id: <20200712222538.18092-26-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-global-state): New variable.
---
 gnu/packages/php-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 899f6a3f69..4872523b31 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -591,3 +591,30 @@ for equality.")
 inherited and non-public ones.")
     (home-page "https://github.com/sebastianbergmann/object-reflector/")
     (license license:bsd-3)))
+
+(define-public php-sebastian-global-state
+  (package
+    (name "php-sebastian-global-state")
+    (version "4.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/global-state.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0x6sfw353px5y7azipn2mb15w7w7zxbbpbv3dbhhkryrhad8w064"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-sebastian-recursion-context" ,php-sebastian-recursion-context)
+       ("php-sebastian-object-reflector" ,php-sebastian-object-reflector)))
+    (synopsis "Snapshotting of global state")
+    (description "This package contains a stand-alone component originally part
+of PHPUnit.  It provides support for creating a snapshot of the global state
+of a PHP program.")
+    (home-page "http://www.github.com/sebastianbergmann/global-state")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:13 2020
Received: from localhost ([127.0.0.1]:47053 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQG-0003hC-Ro
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:13 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ4-0003aw-9Q
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:00 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id ae1fe683
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:58 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=RMH8u9Jh4tWYtY6BEA/FscYKB
 JvL+v/ph7M1WoFM+ts=; b=OWn7UPZ+P3kMj04L0je/jRl/q16BR349zyGOfDzkb
 R7Ej9OrZcHXk3QjGoiespdGa+bN9Sd5vsbfaVdyzC2HHNObYXs+pyJjXT9pX6EqA
 hFwUUg4/DemDid904FjEkD8MRdBHpF3U5RsCykkvSZWg6QFNynXTOwMqQwwD10GH
 AhQ9QY4kuvy05cfM7Z13FikQDqmfAfnKJ5Oe2rHMj14AsfvCnOeHmZtREhVejeN6
 SVn8ccqSd2av0aoxzD+0YY7XRQq1W5xRJAhVcbms/wCBmFIMKuMEmjGgBR7j+grA
 2kzFkkfsR1fDEwTprkfj+rwXaPOYlJnTcoDgINSmV1s4w==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 13bcaa83
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:57 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 24/34] gnu: Add php-phpspec-prophecy.
Date: Mon, 13 Jul 2020 00:25:28 +0200
Message-Id: <20200712222538.18092-24-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpspec-prophecy): New variable.
---
 gnu/packages/php-xyz.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 9ee823bcda..8c96d9aabc 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -539,3 +539,32 @@ for equality.")
     (description "This package provides functionality to handle HHVM/PHP environments")
     (home-page "http://www.github.com/sebastianbergmann/environment")
     (license license:bsd-3)))
+
+(define-public php-phpspec-prophecy
+  (package
+    (name "php-phpspec-prophecy")
+    (version "1.11.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/phpspec/prophecy.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pd6iz6pbfpaz5rqa36q01l569zgiqpjgqmzw3rra2qdh1jrwdy1"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-sebastian-recursion-context" ,php-sebastian-recursion-context)
+       ("php-doctrine-instantiator" ,php-doctrine-instantiator)
+       ("php-sebastian-comparator" ,php-sebastian-comparator)
+       ("php-phpdocumentor-reflection-docblock"
+	,php-phpdocumentor-reflection-docblock)))
+    (synopsis "Mocking framework for PHP 5.3+")
+    (description "This package contains a mocking framework for testing PHP
+5.3+ projects.")
+    (home-page "https://github.com/phpspec/prophecy")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:12 2020
Received: from localhost ([127.0.0.1]:47051 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQG-0003h5-JV
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:12 -0400
Received: from lepiller.eu ([89.234.186.109]:42904)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ4-0003bs-2f
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:00 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 09995805
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:58 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=tPl65p3+upIny5KhV19aucdox
 TFk6hVKH0EQJlvkHMQ=; b=hKjxjy5ODJucs79MSOBTrahvaNMyYTeuVUkdpLyMn
 mHJtBkWtyGvn3jqSuGmj2ahs8ZGBfqpRuJ8CI5RP0px/UqKwgB64tjGUXi5CDPjO
 rvnbsS3xAeuv6LXUDzkxEtTGzFgsyiCuMOa3Q1BpFMC1EgettRrGtJPzSIctLC1S
 LxJEaDvgckE97z7BbTPWc+KqvdbbbltyXVODp+mxN083bRusb8kUFA4IpzSmjXzV
 X0hDmkgaIaOB0j8GPI6BdIpOWfq3WYsAPhTq6ZzlwSYAWGn946x72+QUhd7i9DMY
 0+2x7O3MY1WkBM3JdkUGT+/VweB7EQk+yI2HqIYg8jk6g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 6b95a1ea
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:57 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 23/34] gnu: Add php-sebastian-environment.
Date: Mon, 13 Jul 2020 00:25:27 +0200
Message-Id: <20200712222538.18092-23-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-environment): New variable.
---
 gnu/packages/php-xyz.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index aff2ed79a7..9ee823bcda 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -517,3 +517,25 @@ that filters files based on a list of suffixes.")
 for equality.")
     (home-page "https://github.com/sebastianbergmann/comparator")
     (license license:bsd-3)))
+
+(define-public php-sebastian-environment
+  (package
+    (name "php-sebastian-environment")
+    (version "5.1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/environment.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0lhaiwk6dbwii9kmjaq3gjl2x5s1rikmxkvmy4mjvjcbi7imp38s"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Handle HHVM and PHP environments")
+    (description "This package provides functionality to handle HHVM/PHP environments")
+    (home-page "http://www.github.com/sebastianbergmann/environment")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:12 2020
Received: from localhost ([127.0.0.1]:47049 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQG-0003gy-BM
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:12 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ3-0003ad-Oc
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:00 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id b6176355
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=KO2Ilrm8dXS85dF4zW4WfG4m3
 Hz0HjUkJm1V7cHbjDA=; b=h2gDj/KTfYx5xB6qafHELqh57r/g83lIGMA3TnQrI
 bpczYS8oiCfqbgxwfutZRLWsb+GaAwjzks3s2qRkD16tLtDEWbpeCEd3Hg49jMqo
 MEQLLAwtdndPJv3RcUpIBFTp7BdZ3QJarhYh/Ex4t5FIl3zBfzyVce9JBzo56OhM
 UDd2kUZkifUrhCOolMEkR16DMIANArCthfEFM+cIUnEaCANZ+cAwG7C/Y56gLr+a
 gJO3HiQnXpo8d/oR3+dVZoPGU3MtRMqmqikHvdsAXU0q8ro4eWYVKpv9FYtnk5/t
 j7n5rRXgsQygW53SooFYd0yMZNqaUzYgNwRSlaBa5AphQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id b001dbe6
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:56 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 22/34] gnu: Add php-sebastian-comparator.
Date: Mon, 13 Jul 2020 00:25:26 +0200
Message-Id: <20200712222538.18092-22-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-comparator): New variable.
---
 gnu/packages/php-xyz.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index ccc613baaf..aff2ed79a7 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -491,3 +491,29 @@ that filters files based on a list of suffixes.")
     (description "This package contains a PHP implementation of a diff function.")
     (home-page "https://github.com/sebastianbergmann/diff")
     (license license:bsd-3)))
+
+(define-public php-sebastian-comparator
+  (package
+    (name "php-sebastian-comparator")
+    (version "4.0.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/comparator.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1scw7vm26layqh5mzvdhjiil520fj6ipixkjnmwm036xr925iww0"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-sebastian-exporter" ,php-sebastian-exporter)
+       ("php-sebastian-diff" ,php-sebastian-diff)))
+    (synopsis "PHP value comparison")
+    (description "This package provides the functionality to compare PHP values
+for equality.")
+    (home-page "https://github.com/sebastianbergmann/comparator")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:12 2020
Received: from localhost ([127.0.0.1]:47047 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQG-0003gr-3J
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:12 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ3-0003aw-GZ
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:59 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 4db10f77
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=v/JWPGPMKieJ4H9c4euXY9JAo
 AXKmTjqnBwFXCRD370=; b=JH3AZxLOTt6DK1ZBFYtZxeChleGsDY0LrokpZXrG3
 w50j/Srl1oS4fD3sFOnnklTE12yjBgCt7N/F7bfcezjmjjr3HtNWaZKRxdlldvEC
 6SaOGqbU4K5vEA7NE24hkQBprCzhbMB+1WoEu05Bc0Kp9XYglQdPKRpudohxPVoU
 4bufgkFW+aqnF7/fTHKpR8924OZAynNyHsk11AbkX58nScCgpLqLka1Nt1/FzeP4
 V/3Ra5iZIEL5VMnMRm7lSUIMFXFiyvye0iCROFLO/8QH6zhgXZgGV2yAtUx7OqI3
 lXBGAIzccQFYiP86IsDu//cyf5cDG2s//z5iYwUfa2ngQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id d49bf957
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:56 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 21/34] gnu: Add php-sebastian-diff.
Date: Mon, 13 Jul 2020 00:25:25 +0200
Message-Id: <20200712222538.18092-21-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-diff): New variable.
---
 gnu/packages/php-xyz.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index b5abcaae36..ccc613baaf 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -469,3 +469,25 @@ that filters files based on a list of suffixes.")
     (description "This package contains a library for a simple templating engine.")
     (home-page "https://github.com/sebastianbergmann/php-text-template/")
     (license license:bsd-3)))
+
+(define-public php-sebastian-diff
+  (package
+    (name "php-sebastian-diff")
+    (version "4.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/diff.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0fr5vrmz3d1wwpf59y16fin5lgi55sjd7dqfkx0zqmsqadbjrjxq"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Diff implementation")
+    (description "This package contains a PHP implementation of a diff function.")
+    (home-page "https://github.com/sebastianbergmann/diff")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:12 2020
Received: from localhost ([127.0.0.1]:47045 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQF-0003gj-Qv
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:12 -0400
Received: from lepiller.eu ([89.234.186.109]:42904)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ3-0003bs-1T
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:59 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id e764dc85
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=1ngwT8cVQz+D/F83QwNOvt1r7
 eSvIwdzz/dG8IMLmDg=; b=iq3cVnsp92lrZwMMUaTMkOde5po+iekmUZlUIlXRz
 lfUnONCeMyKPtYl5ruiWq+sya922batXgP09Wk+3hW23M6UWUSVbaa7cLuPgAmbj
 v9NePvoPm0nwfVKEnRJuiTTxmJcsbLE8s2cy/fOvUus1/UyqD49b+f2oFu8BOSIW
 dina4rn5mWILmziuN6nvdqpXZD/yEunHKcH9b6rm3lSnZW9hrFEx4odeE+y5Vqle
 grtTTvuGKH7Jl05QTldPseIqEh8uR3KYeXTLO6jkL7GOb2ToPATz3lMFYkNLx0Lm
 3W7xujRNQBYP7zkPYq2kFQw2H8yHAWV+9jbNXjQww5Dqg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id b733766a
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:55 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 20/34] gnu: Add php-phpunit-php-text-template.
Date: Mon, 13 Jul 2020 00:25:24 +0200
Message-Id: <20200712222538.18092-20-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-php-text-template): New
variable.
---
 gnu/packages/php-xyz.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 5d06bea0cb..b5abcaae36 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -447,3 +447,25 @@ number of Git-hosted PHP projects.")
 that filters files based on a list of suffixes.")
     (home-page "https://github.com/sebastianbergmann/php-file-iterator/")
     (license license:bsd-3)))
+
+(define-public php-phpunit-php-text-template
+  (package
+    (name "php-phpunit-php-text-template")
+    (version "2.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/php-text-template.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0x38kj1xlnysg9xgad560k361l93vh32mvkyfn7rss3p2r319jhx"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Simple template engine")
+    (description "This package contains a library for a simple templating engine.")
+    (home-page "https://github.com/sebastianbergmann/php-text-template/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:11 2020
Received: from localhost ([127.0.0.1]:47043 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQF-0003gc-IG
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:11 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ2-0003ad-SN
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:59 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 8e9eb377
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=5ortme/8PwEwzx5TzOlY8dWDM
 1R6Ev5lZKNZUpzGsGk=; b=mk9KpL6GwHyRhvUXW2XRlWZFsw+8q4qIU3obGWGAj
 6SD5ucECQ2cGDNl+3Al0cTXO6VPcVaQ9J0+4QGfi16giHnE50Hsg4XdAIKy2a/4U
 Grnqld05E9t9iFMm2HAif+cfkiPu385lNj6B/7LVWVxn3oGAd/FU+lCXImiUXwUX
 P4WyWktUS4v3ERiW2NB+ZniIdgmIWOTuO9Qsa6/68nmQlWxozhwiGSQs/7Aoc87b
 3ACUpYLRvbSLrF1KzjUwSE7Y8vNj5etV2m/WXbyatWFk+ze0588UN9awaoRU73AU
 vteqmeDkK0FyEIbCbZkY6MqgE6pQiwiNYJieDC+vBFYSg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 865d82b8
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:55 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 19/34] gnu: Add php-phpunit-php-file-iterator.
Date: Mon, 13 Jul 2020 00:25:23 +0200
Message-Id: <20200712222538.18092-19-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-php-file-iterator): New
variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 906a88d49e..5d06bea0cb 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -424,3 +424,26 @@ extension.")
 number of Git-hosted PHP projects.")
     (home-page "https://github.com/sebastianbergmann/version")
     (license license:bsd-3)))
+
+(define-public php-phpunit-php-file-iterator
+  (package
+    (name "php-phpunit-php-file-iterator")
+    (version "3.0.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/php-file-iterator.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pglbp8m4iv5w16gshlp49k4ngpsx28mhwip761kyvvd5w27ysr2"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Filter file by extension")
+    (description "This package contains a @code{FilterIterator} implementation
+that filters files based on a list of suffixes.")
+    (home-page "https://github.com/sebastianbergmann/php-file-iterator/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:11 2020
Received: from localhost ([127.0.0.1]:47041 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQF-0003gV-9d
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:11 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ2-0003aw-Jn
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:59 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id e018e868
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=tOa92GiXxdqHHACSMuP7r2lwH
 8wTmdRENLgOS3HWhIc=; b=f4COZPRZD+Qkvomwt6RUuIdKLrSbBLNf2ISKtwLXF
 Z8bq9n6tU3F+RDtIb+JZ0w/Bstuv2x7Dk4n5Rk1D7DtoClgbsIg/+nQT1IXdBn46
 Cv2R1517eSsvxFlv7plRrlApEmN7Z+Mb8aVDU4jORtMAQwYauU/ebC60cO2eutsv
 ClEAaYbgCvEOpQGmQ9v+V/EBc1wCH3kDTuIpazjNP1zx1X+jeUrIXj51mYmkyOUr
 vnnTLodpqC5wz6/+OuuAfGVhYGm8mkUZmjkyTMv3ItHGLFOOo6b7e0iBKWvFQakV
 tAtbX5a0O8QkccXjymkAsYO4FJkPg6WGcQpPQciXImDUg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id dc675e69
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:54 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 18/34] gnu: Add php-sebastian-version.
Date: Mon, 13 Jul 2020 00:25:22 +0200
Message-Id: <20200712222538.18092-18-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-version): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 344c413d2c..906a88d49e 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -401,3 +401,26 @@ method a line of code belongs to.")
 extension.")
     (home-page "https://github.com/sebastianbergmann/php-token-stream/")
     (license license:bsd-3)))
+
+(define-public php-sebastian-version
+  (package
+    (name "php-sebastian-version")
+    (version "3.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/version.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1kr2i6s7y4k18bz09cqj4pc4bqzph9n6ncgpqq4p4fg790h5i5ym"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "PHP versionning library")
+    (description "This package is a library that helps with managing the version
+number of Git-hosted PHP projects.")
+    (home-page "https://github.com/sebastianbergmann/version")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:11 2020
Received: from localhost ([127.0.0.1]:47039 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQF-0003gO-1d
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:11 -0400
Received: from lepiller.eu ([89.234.186.109]:42904)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ2-0003bs-7u
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:58 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 5b66db5c
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=Wb5frlZXN2TP+d7ZBGnP/ti9t
 0Skzmaitz/44sKue0I=; b=KU9A3lFOEQ6Gmpe+24vHxN4RPNC5bRs3MgRhF9w4r
 PZMT7CF4cqPHwkwJ8NtEnBnmnn+kh+j0mHJZev54X7E1jze76cwKbxV50rjR/LF+
 Akls7Rog2h9IZ08NfpSf+fvjjKvoltj2SACgSpwmVBHvekxZCKJPvGj68yu0eLUh
 HZksEd6hxEeU15EjCtifDrYIDfujR4D0Ie86rKFTbc0vxPa5O+luj03tJ6Hgh7pt
 kx1LHh90MLE4v+iOOfwpqYz811UfdGvNHPwupkhMJTApO/8gFl1wBIeyNY6NvrDJ
 GiTuyuu25M7t1J9nGD9fWM/54TRLYlI3y2W4M9h+ZzvLw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 09be9181
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:54 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 17/34] gnu: Add php-phpunit-php-token-stream.
Date: Mon, 13 Jul 2020 00:25:21 +0200
Message-Id: <20200712222538.18092-17-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpunit-php-token-stream): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 13584273f9..344c413d2c 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -378,3 +378,26 @@ PHP source code into XML and potentially other formats.")
 method a line of code belongs to.")
     (home-page "https://github.com/sebastianbergmann/code-unit-reverse-lookup/")
     (license license:bsd-3)))
+
+(define-public php-phpunit-php-token-stream
+  (package
+    (name "php-phpunit-php-token-stream")
+    (version "4.0.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/php-token-stream.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0iv8ssvyjhgxa1qpp5s8i0j409w49s2kc9qwv1c27qgdhv7yhf7h"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Wrapper around PHP's tokenizer extension")
+    (description "This library provides a wrapper around PHP's tokenizer
+extension.")
+    (home-page "https://github.com/sebastianbergmann/php-token-stream/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:11 2020
Received: from localhost ([127.0.0.1]:47037 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQE-0003gG-PZ
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:11 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ2-0003ad-3h
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:58 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 058eb13c
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=WlCw+XsIXhjy3Yz/r3dm7ewNB
 Qr6vheTqK4bOHyhYYE=; b=e9+PPzQNZQl1ZoakJx4qKRrcto+udou9ldn3Hys2O
 nVuHRXTkdMRuHgoR/mt0gjdnMabm+WrgOumq1xbl8AyPRZy7y46t9mZoqCjfXPgr
 MJtTJDp2mRfTDNqIzLmssNeD2Yg4YWrQP6NlN5ARLrF+QDCL3VDGTKVzzG/7gG1S
 gqYXr/Gb5s/TnmBC0K40AInwLAszw6RBYGbQ3nv4u46yANnnYzDbHh081bDHR5Th
 PCmgJ+iwIFlDCy5VHBMltVmYxvxCxAPlXTYoje/KPkWTz9v8TspGmQGn0QO5E+/Y
 aOxQapXMdVRdXt1QoY0J4AgkapMQsrLKL4g5p8m+uDPvQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 020fd3cf
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:53 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 16/34] gnu: Add php-sebastian-code-unit-reverse-lookup.
Date: Mon, 13 Jul 2020 00:25:20 +0200
Message-Id: <20200712222538.18092-16-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-code-unit-reverse-lookup): New
variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index f54b875d92..13584273f9 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -355,3 +355,26 @@ in a DocBlock.")
 PHP source code into XML and potentially other formats.")
     (home-page "https://github.com/theseer/tokenizer")
     (license license:bsd-3)))
+
+(define-public php-sebastian-code-unit-reverse-lookup
+  (package
+    (name "php-sebastian-code-unit-reverse-lookup")
+    (version "2.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0lppni3qcd6gx50jf16y3n71ldj12xjd06kl9ml78zd5p2s6z4qc"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Look up function name from location")
+    (description "This package provides a facility to look up which function or
+method a line of code belongs to.")
+    (home-page "https://github.com/sebastianbergmann/code-unit-reverse-lookup/")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:10 2020
Received: from localhost ([127.0.0.1]:47035 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQE-0003g9-Ho
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:10 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ1-0003aw-Vl
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:58 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 70125a8d
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=Yk+713NZzUPlkeHadCSGzMIqn
 98ZpP8iRlnNRBG2gls=; b=iO7fgCqqS9gpEBI6BqdcEknjkWSZ/JlkdB9QraVJ9
 sq1eIXeP2Y7+hfD+4tzZgQZOINbZvsF4mbh+ptlBEdCRXe4NVhrsYXNMNP4RjjYl
 BgeSFGObij9DXaaQZmdmaaPtTKJ+ra6CcCpnHDyFFzcUyJfsLpyT0veAYgX1iBSe
 P1KXcTltS6uwwTtwuNxqQURDR+HL6jneTJaZ/+xXrLqb7SiNo+2i6Z658gSVwHfR
 UpqfGufnJa2VQmSPSZ/VHW/YWBTZa134WM+c5/PoRFRmQ1bnSbteI1otV7K1Ea1v
 yly4RdCpkiYBLy9pEWVv1eDOZO+AtB96U5iec6aNuzkKw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 9fa0080d
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:53 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 15/34] gnu: Add php-theseer-tokenizer.
Date: Mon, 13 Jul 2020 00:25:19 +0200
Message-Id: <20200712222538.18092-15-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-theseer-tokenizer): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index df9c490bbf..f54b875d92 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -332,3 +332,26 @@ annotations via DocBlocks or otherwise retrieve information that is embedded
 in a DocBlock.")
     (home-page "https://github.com/phpDocumentor/ReflectionDocBlock")
     (license license:expat)))
+
+(define-public php-theseer-tokenizer
+  (package
+    (name "php-theseer-tokenizer")
+    (version "1.1.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/theseer/tokenizer.git")
+                     (commit "11336f6f84e16a720dae9d8e6ed5019efa85a0f9")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0j436a3jpynnlqrvd7la7a7smj78aklkragwa9l8p91973xra18l"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Convert PHP to XML")
+    (description "This package provides a small library for converting tokenized
+PHP source code into XML and potentially other formats.")
+    (home-page "https://github.com/theseer/tokenizer")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:10 2020
Received: from localhost ([127.0.0.1]:47033 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQE-0003g2-7k
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:10 -0400
Received: from lepiller.eu ([89.234.186.109]:42904)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ1-0003bs-I0
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:57 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 563921ca
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=GTIyCO5taEhWcVbMdN6redc1p
 eOp/8eHl6Qni64kLIU=; b=Nyx/no5Lw+Nu1RebhSwWRvYM1RSDMUtURutnsbIkW
 YsGUh48WVTf0A+x3tOWI9MepbQ0SGwtCcQDMZ9n9OQkHOiS3chx/RiJm9dA4aCYa
 hbaAbegafhIOWLhGsZ/DRBjKgQwOrAv9YIbF/P/0eyc6RYJ0bmF3iA0urTHsJ+uD
 eQbg4yAMid67CGvaZsKrGFQPu77jjPiZHhgJkTHGk/URZ+9YXfxu+J7KVIITcy0i
 j0mAL2OuLzeRGAbRzMGxkou8jP8yPVVf+G1A3fueUrWgqKJ/XOc9L5rk5UQ//GJa
 tZ/zZk7vL5z1reWU1+oUolueuiq4/5MkRu8jHfEqQT9cA==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id d349199f
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:52 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 14/34] gnu: Add php-phpdocumentor-reflection-docblock.
Date: Mon, 13 Jul 2020 00:25:18 +0200
Message-Id: <20200712222538.18092-14-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpdocumentor-reflection-docblock): New
variable.
---
 gnu/packages/php-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 93d8649bee..df9c490bbf 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -304,3 +304,31 @@ to analyze the code structure.")
 types and structural element names.")
     (home-page "http://www.phpdoc.org")
     (license license:expat)))
+
+(define-public php-phpdocumentor-reflection-docblock
+  (package
+    (name "php-phpdocumentor-reflection-docblock")
+    (version "5.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/phpDocumentor/ReflectionDocBlock.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1bsqwcq5ix7f5p56kc92pl1nqpjdpfc92pjvwyshp1syrrspa3rr"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-webmozart-assert" ,php-webmozart-assert)
+       ("php-phpdocumentor-reflection-common" ,php-phpdocumentor-reflection-common)
+       ("php-phpdocumentor-type-resolver" ,php-phpdocumentor-type-resolver)))
+    (synopsis "Library for retrieving documentation in code fro the code")
+    (description "With this component, a library can provide support for
+annotations via DocBlocks or otherwise retrieve information that is embedded
+in a DocBlock.")
+    (home-page "https://github.com/phpDocumentor/ReflectionDocBlock")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:10 2020
Received: from localhost ([127.0.0.1]:47031 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQD-0003fv-Ui
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:10 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ1-0003ad-3q
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:57 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id d24ed555
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=V4ZamGc/HDdD54Y2DnrMIoork
 eCwBMq2p7TPFt6E9tc=; b=dcRCI/Rvx5q8PAyXf6B/KjCgDnmVfYyExJfdseUax
 YuS84XUKGsV4lahd7aXg54/3QMi0KKd2TUduUqwp18HnjwFvsWIZzDgLhRXV1Efx
 +m9AG2gFLrPk4Lhd8v7CSUrIztccPPm/jh96WHLIHzeziGwdOQtgIDJEv/O5Uq/L
 bNLg+7JBscpzqakkTFCUU+YN5DzBOpMy3UbpBRc0/6l8WGzJMTvGArT0CNEBOgwq
 XWcNyT+JJBDOUDezwuA9MybjeJ14aD8sHFbD4EuQX6jxbWu+Q9t2HBJxIg7jpaik
 NNaaJggSDU9ydXtkFmpY92RubDrGelfigTe5n+FSoue/g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 8dae4503
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:51 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 12/34] gnu: Add php-phpdocumentor-reflection-common.
Date: Mon, 13 Jul 2020 00:25:16 +0200
Message-Id: <20200712222538.18092-12-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpdocumentor-reflection-common): New
variable.
---
 gnu/packages/php-xyz.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index ffc2eb7b11..9b604c46f0 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -255,3 +255,27 @@ who run php versions without the ctype extension.")
 and output of PHP methods.")
     (home-page "https://github.com/webmozart/assert")
     (license license:expat)))
+
+(define-public php-phpdocumentor-reflection-common
+  (package
+    (name "php-phpdocumentor-reflection-common")
+    (version "2.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/phpDocumentor/ReflectionCommon.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1q685cpwbfxqy42iz61xxv6zbcc1qskn07nkipflj6c5s935l8jy"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Common reflection classes used by phpdocumentor to reflect
+the code structure")
+    (description "This package contains common classes used by phpdocumentor
+to analyze the code structure.")
+    (home-page "http://www.phpdoc.org")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:09 2020
Received: from localhost ([127.0.0.1]:47029 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQD-0003fs-LP
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:09 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ1-0003aw-9y
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:57 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 0b0f58bb
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=6ZA693+Ka/gFJ9eLmg5rKs1j0
 3eWnHFaIFcrDliPTYQ=; b=M3aEIJvmDV45CKfQkr+zc9rzRiGootcKt6nve8Mas
 SCuGgREvOBpsELG9Rtw1xgHfASj5dbbsNttPzfvl2FoCvLhSZmCQtTw5n1Bv1wsd
 BbUjKkjb7djC0MTTM40FqKiA7wkQntyrk/o2/NZ/upJeEHk+WRoAp9mXuTTdlJMv
 fFARs4uL5TwAP3zzkdT4oKMg3GldWp7j8gcIwx3101vypZuQ15kLR5M4EVHHQIal
 xuAclfBicUOULV/VmhU+EFv5pJ5trTN79WC2ciXojGtUZk61pZidfK4Ma+zdrY51
 o9grDWiVud6NdKydKdA7L95xHtmjy+eHGJzi4WZTqMyDg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 797c362f
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:52 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 13/34] gnu: Add php-phpdocumentor-type-resolver.
Date: Mon, 13 Jul 2020 00:25:17 +0200
Message-Id: <20200712222538.18092-13-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phpdocumentor-type-resolver): New
variable.
---
 gnu/packages/php-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 9b604c46f0..93d8649bee 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -279,3 +279,28 @@ the code structure")
 to analyze the code structure.")
     (home-page "http://www.phpdoc.org")
     (license license:expat)))
+
+(define-public php-phpdocumentor-type-resolver
+  (package
+    (name "php-phpdocumentor-type-resolver")
+    (version "1.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/phpDocumentor/TypeResolver.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0wshv49z4hxraygg2vhzn0s9ih2y9ymzpcnyjfk14vcfq5yx53l9"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-phpdocumentor-reflection-common" ,php-phpdocumentor-reflection-common)))
+    (synopsis "Resolver of class names, types and structural element names")
+    (description "This package provides a PSR-5 based resolver of class names,
+types and structural element names.")
+    (home-page "http://www.phpdoc.org")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:04 2020
Received: from localhost ([127.0.0.1]:47015 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ8-0003eQ-8D
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:04 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ0-0003aw-GX
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:57 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 36620d57
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=uz1sNx9UFoysgOqUDb7m5ignU
 YMo77G0AjoPQNV1b1Y=; b=UDKShAZiYYNKTyhzPdBg/GeRsPB4uUQ5SOit5S9a1
 qJp01ReiVzBd9aO7TyNmxwUKamjtwRV9z1r6qjMilS2HzXP0VuPu+gPW6ocX7Pmw
 3OhI7BmrpKcx7ovZ5rTTXVaX9ca+LoJLrkeQWXhAFrPYKVQwsukAS6z9yZ2Wfswn
 0qnzoSw0QwKElBtJe3WNiiREaynyEftUhvNrzhUbxyEbKPUC9ZgjVpa1pT24plOC
 uubMa3V0I1Ecqh1N+YI3ZTGeIl76n80hRJoKgmmBtHSuBUnWqeG1YYbd1ckuM8ce
 A2Yb5UJyimSWOLhKT4H51iFlEi7HU9xdNUEV6Vq3Td98g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 00fa5e19
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:51 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 11/34] gnu: Add php-webmozart-assert.
Date: Mon, 13 Jul 2020 00:25:15 +0200
Message-Id: <20200712222538.18092-11-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-webmozart-assert): New variable.
---
 gnu/packages/php-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 51e51ac51b..ffc2eb7b11 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -230,3 +230,28 @@ information from a PHP Archive (PHAR)")
 who run php versions without the ctype extension.")
     (home-page "https://symfony.com")
     (license license:expat)))
+
+(define-public php-webmozart-assert
+  (package
+    (name "php-webmozart-assert")
+    (version "1.9.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/webmozart/assert.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1q9bp4sp11r8ghdzr0qswdf1k5bf9b5s525im3kspar6y8019sh9"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-symfony-polyfill-ctype" ,php-symfony-polyfill-ctype)))
+    (synopsis "Assertions to validate method input/output with nice error messages.")
+    (description "This library contains efficient assertions to test the input
+and output of PHP methods.")
+    (home-page "https://github.com/webmozart/assert")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:04 2020
Received: from localhost ([127.0.0.1]:47013 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ7-0003eI-Tt
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:04 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukQ0-0003ad-7E
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:56 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id cb2e4179
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=hWHvPbRvzpUR705oPqHJ8cYsH
 wtQvN5dfthRUkZFT/s=; b=AsR2UZKC65N8Af64qBOlmZHgmsbkkOKTO05kWrKqe
 ZwoP82w6Aw1RuGAmmJy/sRHcaf+6AcNTN8y6Bbb9X66K6Z8GrITXN8fisdogBdOi
 jKMsN7ppGu1lht0KnbWL7fkFaifgV5H/ISW4OvXFxBYwaIVYI7oySjNEraZkbUHs
 fLABEeuolX+RaTo+QrDTNOsL4rv/O4/VS3+w5J3Rjy/HRblBGCgptzvrpx5BmR9V
 R2gFDLug3TLgCkA9GbQz0TJdwDt/qQsc2bK0MIZLmPivnOCc0w1OR+jtBBDvCmtQ
 XDr/Qzezzig93ySoY7fCTh2LKPeZ9bsNdOpt6lryJLe1g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 8878a5d9
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:50 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 10/34] gnu: Add php-symfony-polyfill-ctype.
Date: Mon, 13 Jul 2020 00:25:14 +0200
Message-Id: <20200712222538.18092-10-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php.scm (php-symfony-polyfill-ctype): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index f0f4fe650a..51e51ac51b 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -207,3 +207,26 @@ and constraints.")
 information from a PHP Archive (PHAR)")
     (home-page "https://phar.io")
     (license license:bsd-3)))
+
+(define-public php-symfony-polyfill-ctype
+  (package
+    (name "php-symfony-polyfill-ctype")
+    (version "1.17.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/symfony/polyfill-ctype.git")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0bh22vwq2idy7fi8ajm6aggjdvds64s98y9854b5gl9s84dk9pz8"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Ctype functions for older PHP versions")
+    (description "This component provides @code{ctype_*} functions to users
+who run php versions without the ctype extension.")
+    (home-page "https://symfony.com")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:03 2020
Received: from localhost ([127.0.0.1]:47009 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ7-0003e5-Eo
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:03 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPz-0003aw-Lj
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:56 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id c8bb9bd5
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=FwDKhNXemO3Jc4fLZvhWwG2YE
 heKNEOf2e4xFq41DhU=; b=OE/bj5XBxIV/AsYSYqesTvEjV4x0/hQ0GfzlnlHn7
 GYmTa3q+3CYnB/YEeAGZed9PbFDYyBNFVtTj7r45n8N8sOJxGBG/QVBACFDlz9vL
 ZrOB/l+LYkXhUkbkKpewhkr+oijhF8UfE/0NhVlNIoFkrAwCPK/5AOLZvQCo4Bv9
 kXcohgM4NakR+XFSzylrAs769aGflhnhHJWi4WPbN0YX4MP1mxUSkmfR7zZyJCQe
 JdGTybDazpQH7m53UWFFuXpWXVvW/K6UhSOIhRqBOpmcXZJ7gtuxKUJVtcon6P+9
 /0J+ROCwK9v0mHlcOf5umdSdagCSpIJ/ggtsa0CsW5huw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 975ccc30
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:49 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 09/34] gnu: Add php-phar-io-manifest.
Date: Mon, 13 Jul 2020 00:25:13 +0200
Message-Id: <20200712222538.18092-9-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* qnu/packages/php-xyz.scm (php-phar-io-manifest): New variable.
---
 gnu/packages/php-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 0b64efe6ca..f0f4fe650a 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -180,3 +180,30 @@ designed to work even in the presence of cycles in the association graph.")
 and constraints.")
     (home-page "https://phar.io")
     (license license:bsd-3)))
+
+(define-public php-phar-io-manifest
+  (package
+    (name "php-phar-io-manifest")
+    (version "2.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/phar-io/manifest.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0r2s1qdkhn7782g1y6skxvp5w397vmwb496fymsnik2818w0q469"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-phar-io-version" ,php-phar-io-version)))
+    (properties
+     `((upstream-name . "phar-io/manifest")))
+    (synopsis "PHP Archive information reader")
+    (description "This package contains a component for reading phar.io manifest
+information from a PHP Archive (PHAR)")
+    (home-page "https://phar.io")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:03 2020
Received: from localhost ([127.0.0.1]:47007 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ7-0003dw-3R
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:03 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPz-0003ad-Bz
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:55 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id a9112a6c
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=ew6dTcFWEUNz/DSp78Fm7H1GZ
 Mu5TpkIu9ZLBe8In/M=; b=XsS2al8M8mXBLD2HhJtHkUjBWmP/eFgupqoh/4Esc
 uw6khWz8MiMuNMIL1ZrEEui2kNUPzPObAscm6ijAU7yxPS4rsuY2XMjit++Zdbwf
 h4jiw/0okWmZkaiDuhIP+jMj3V35IaF6YDwMGLD1oPfz49PLboICIQjCFJpz98eF
 X4tJXb0dXwxChMUDYXKXxzR4mY6BmgDG6KMYHSri7nCQN5JhGbh1XvvjTC4DKs8h
 Q0OJqbtSoleKvkf26ZLLyYbo+tD2pdyNuC6GAfrnYaltO+eS/xLOYsGY4/ObQ21y
 UAMKWO/L3SbxO4uZNaA78mbgBe8USCfvVXGPJc395028g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 09a91e5a
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:49 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 08/34] gnu: Add php-phar-io-version.
Date: Mon, 13 Jul 2020 00:25:12 +0200
Message-Id: <20200712222538.18092-8-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-phar-io-version): New variable.
---
 gnu/packages/php-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index a45726a484..0b64efe6ca 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -155,3 +155,28 @@ recursively create new copies of any object referenced by the object.  It is
 designed to work even in the presence of cycles in the association graph.")
     (home-page "https://github.com/myclabs/DeepCopy.git")
     (license license:expat)))
+
+(define-public php-phar-io-version
+  (package
+    (name "php-phar-io-version")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/phar-io/version.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0r9470p0azw7l0x2wbn7kh0zhpswvjnm32vc8vml5v5nskmnqz4c"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (properties
+     `((upstream-name . "phar-io/version")))
+    (synopsis "Library for handling version information and constraints")
+    (description "This package contains a library for handling version information
+and constraints.")
+    (home-page "https://phar.io")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:03 2020
Received: from localhost ([127.0.0.1]:47004 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ6-0003di-M1
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:03 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPy-0003aw-Py
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:55 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 9050a1be
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=ZS6Q5zoeuCxbQNh9YGOIG5BI+
 pvpdyA9N3v+P0fdAMw=; b=RPevbg/0LOHFIQOvhEWbHEBvh3ZDwKcAVy6rbwOQF
 InqmInYIyyzMCEdOnQ7/dAOVAruBNxWMyVzWN7Cv7eghyk0OFRgMSfsqGtuOYMVM
 9eHbKzfcy5pdh86KY2/T/E7OYD6TZrQbvCbw5GM35BwJKDtjWX3749XPqVJWeDF1
 hh36sqZjJlK0NL5eVyxAJUjf82oV4AbQzJNWigC3OU5j2ych1I1UFVHSa75Q2Ija
 1E2ufEfq9e/KnLBIwmA7j/5BUlB0B1JOs6UzwpkDaNDS6T59HhdWTjaVvyXDt3VD
 anE4JfxEdkKwM3FX+gUAAZU4xGw5PocOIgWTZRLvjfuIg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 3a3fd905
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:48 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 07/34] gnu: Add php-myclabs-deep-copy.
Date: Mon, 13 Jul 2020 00:25:11 +0200
Message-Id: <20200712222538.18092-7-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-myclabs-deep-copy): New variable.
---
 gnu/packages/php-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index ae7d7ff6b2..a45726a484 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -130,3 +130,28 @@ PHP variables")
 variables for visualization")
     (home-page "http://www.github.com/sebastianbergmann/exporter")
     (license license:bsd-3)))
+
+(define-public php-myclabs-deep-copy
+  (package
+    (name "php-myclabs-deep-copy")
+    (version "1.10.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/myclabs/DeepCopy.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ms4qhx5cf19ggdicnd7qjrigwam206py6mj6nw8bz71mafq9nbi"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Create copies of PHP objects")
+    (description "This package contains a facility to create deep copies (clones)
+of PHP objects.  This package not only creates a new copy of an object, it
+recursively create new copies of any object referenced by the object.  It is
+designed to work even in the presence of cycles in the association graph.")
+    (home-page "https://github.com/myclabs/DeepCopy.git")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:02 2020
Received: from localhost ([127.0.0.1]:47000 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ6-0003da-7R
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:02 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPy-0003ad-Ne
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:55 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 56b02dcd
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=+YHtspz68HbKgS386ApmA15tF
 VQnqCPAxrKZCeEtZC4=; b=i6IFmAW9VS67b7oxXJ5lL42FVs2wrPadUiINKvwg/
 DFbQTcv7+OySB/XW+NkflJpStlJI7JxX9DU+sgJ18MDAvilo5FEZkT0no8LgZUmi
 0jkvQdptiD0p8Kn7YAG/C8cQKmAImLqGO3yQVZoZ8tehR9T81U2LUgGm+Y/vi4xS
 yU0DzGgRCUTHnj32CWM9UL2m7koXM27JPaAbmG1Y6dNj5p4oj0O6eYb4nytMGnqb
 QBukphI7JliSeY45wHVfmhu8Gg6+BsnCngjDBN0KojY/dRmJtDlsgAmJxoI/jQRk
 b8eW2ixABpu8/ZnZSxR3txQVQWviaakePPCeD8RUb97vg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 9448a9f4
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:48 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 06/34] gnu: Add php-sebastian-exporter.
Date: Mon, 13 Jul 2020 00:25:10 +0200
Message-Id: <20200712222538.18092-6-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-exporter): New variable.
---
 gnu/packages/php-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index b04b8e0859..ae7d7ff6b2 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -105,3 +105,28 @@ instantiate objects in PHP without invoking their constructors")
 PHP variables")
     (home-page "http://www.github.com/sebastianbergmann/recursion-context")
     (license license:bsd-3)))
+
+(define-public php-sebastian-exporter
+  (package
+    (name "php-sebastian-exporter")
+    (version "4.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/exporter.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "03xj9gbi8ifnbj5n72gfpwyg65l71gg1r8yvzpbg6d3yxbqaa8f6"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (inputs
+     `(("php-sebastian-recursion-context" ,php-sebastian-recursion-context)))
+    (synopsis "Visualize PHP variables")
+    (description "This package provides the functionality to export PHP
+variables for visualization")
+    (home-page "http://www.github.com/sebastianbergmann/exporter")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:02 2020
Received: from localhost ([127.0.0.1]:46998 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ5-0003dP-Lt
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:02 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPx-0003aw-VU
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:54 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id abdcce0b
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=Mv0wFoDUATXnkFJHHgEXEH0hg
 /u7FpWTZl8lac2uegI=; b=ThZKNKmz0JXQRzMeeUQ3Vliz60EHPAU8KgMzpNQfI
 EN9xXaSlrNugnRWcPS0xi4FZ09UcgoQHzqTqjtOBJEkNRx27JggaGV98b/6GIFcJ
 xU7706JK9KyiPmHBD5Q4Vl6kUz3YgL5dGO8q08A2zQ/Q2WAaTCepg392CgQIbne0
 xJJYsscii6BYLUN30IJ6a8i5XIrEW4qS3TbzTGx5blpygg+U3Gl8JZrn16jsdhJC
 Q2nkmBUhEULQIp9XO34b+IdADLobjSIHhr+EEAger+OoSN2t1DFiSwQr3tKj9sOJ
 ozhgmJw69zbpWJGis9PfqnG3C4xhLVvEx8x9vRR98wptg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id c7026b00
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:47 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 05/34] gnu: Add php-sebastian-recursion-context.
Date: Mon, 13 Jul 2020 00:25:09 +0200
Message-Id: <20200712222538.18092-5-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-sebastian-recursion-context): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index 28d8909dad..b04b8e0859 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -82,3 +82,26 @@ to build its own store-aware autoloading feature.")
 instantiate objects in PHP without invoking their constructors")
     (home-page "https://www.doctrine-project.org/projects/instantiator.html")
     (license license:expat)))
+
+(define-public php-sebastian-recursion-context
+  (package
+    (name "php-sebastian-recursion-context")
+    (version "4.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sebastianbergmann/recursion-context.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0glpydmvr95f9xbmh76vgid2nz7rf6lxwfz1j7ksvgmf4m1dniyz"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Process PHP variables recursively")
+    (description "This package provides functionality to recursively process
+PHP variables")
+    (home-page "http://www.github.com/sebastianbergmann/recursion-context")
+    (license license:bsd-3)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:01 2020
Received: from localhost ([127.0.0.1]:46994 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ5-0003d9-6P
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:01 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPx-0003ad-TQ
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:54 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 38c0c9b7
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding; s=dkim; bh=1/rQdUXDKhldFCGF+1lyhoAzV
 QWS2UbYaLHdmhQU9cw=; b=OO/OeI6Sf9TPYBkrp9KFw2bM1LBT0nKDfg00fmt5U
 Efulw/2vyf1eK5bIbu9rr4AD4nm3NfvrzFVuGBn69rA2+C7fQP/SV5nee50P1Cwj
 s+D6BSFfRaL+Uc1gkWlJSfQ0l/IEmyjZP9dvdzKzsMnPhvOyiNmly3kMQlOs2FPm
 EwCWC4eJvoqDtJJZPIvu5t5vBcg0K6lle+/gcp5sM2HO8uJZN/+JKMWyHFCvT4e0
 sjcQjsPPEBJ3+wr1TNO3eER5pKj2f7w7Xw1Py/NbxcKTnmMaeeHWg07IB7yv50ud
 WKQ6Wzx9zh9K0eRhq9dC/f1XjBcwCWwkRz39eARxJszBw==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id a35baf7d
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:47 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 04/34] gnu: Add php-doctrine-instantiator.
Date: Mon, 13 Jul 2020 00:25:08 +0200
Message-Id: <20200712222538.18092-4-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/php-xyz.scm (php-doctrine-instantiator): New variable.
---
 gnu/packages/php-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
index dab660f84f..28d8909dad 100644
--- a/gnu/packages/php-xyz.scm
+++ b/gnu/packages/php-xyz.scm
@@ -59,3 +59,26 @@
 build its autoloading feature.  This package is used by the composer-build-system
 to build its own store-aware autoloading feature.")
     (license license:expat)))
+
+(define-public php-doctrine-instantiator
+  (package
+    (name "php-doctrine-instantiator")
+    (version "1.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/doctrine/instantiator.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "17c72j29p77gdgh06b9qc0nivmav0k5yc22z4ryygj7dhr1h65nq"))))
+    (build-system composer-build-system)
+    (arguments
+     ;; We do not have phpunit yet
+     `(#:tests? #f))
+    (synopsis "Utility for instantiating PHP objects")
+    (description "This package provides a small, lightweight utility to
+instantiate objects in PHP without invoking their constructors")
+    (home-page "https://www.doctrine-project.org/projects/instantiator.html")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:26:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:26:01 2020
Received: from localhost ([127.0.0.1]:46983 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukQ2-0003cM-RG
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:26:01 -0400
Received: from lepiller.eu ([89.234.186.109]:42902)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPw-0003aw-HR
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:53 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 2891cdb7
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-type:content-transfer-encoding; s=dkim; bh=l56iDKkIW/PU
 57U9GbIxtL0WZwDZzlpkKmybhnKZj8Q=; b=W3bUYDZZ1+YrzkdPSts/lZ3x0fg7
 sEwmK1tacEkGE44WLBdgFX95/VqE8/4V8dGEN8YJ+OympRrf1XAs10sVzcNbo6C0
 MIrYDZCMtwsZ8DySSL3+21yD4as5gSjV6bbKXpe9IbBRYL30OzMlE8q+Ibg4UvEZ
 BiNqDUFWNHcUV3+XJyWhf1o3t9cuaaq/ScZNBl9YgWtL1eTfBdfpd3kF7nr7qJf4
 SVpwiPkZQcx8aCVBDqyCX2HdDTu2YwoWuUEGRvm5rxolvilGcHER7tIrbBvXzkG9
 hixYy3PBrTKcAWjZWLr9gTtn2x2SqZieeqitxnAkWmlcdJB9o51RoM+9gQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 93c9228c
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:46 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 03/34] guix: Add composer-build-system.
Date: Mon, 13 Jul 2020 00:25:07 +0200
Message-Id: <20200712222538.18092-3-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* guix/build-system/composer.scm: New file.
* guix/build/composer-build-system.scm: New file.
* guix/build-system/findclass.php: New file.
* Makefile.am: Add them.
* doc/guix.texi (Build Systems): Document it.
---
 Makefile.am                          |   2 +
 doc/guix.texi                        |  14 ++
 guix/build-system/composer.scm       | 169 ++++++++++++++++++++
 guix/build-system/findclass.php      | 102 ++++++++++++
 guix/build/composer-build-system.scm | 224 +++++++++++++++++++++++++++
 5 files changed, 511 insertions(+)
 create mode 100644 guix/build-system/composer.scm
 create mode 100644 guix/build-system/findclass.php
 create mode 100644 guix/build/composer-build-system.scm

diff --git a/Makefile.am b/Makefile.am
index 623ddf32b2..363af872fa 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -117,6 +117,7 @@ MODULES =					\
   guix/build-system/cargo.scm			\
   guix/build-system/clojure.scm			\
   guix/build-system/cmake.scm			\
+  guix/build-system/composer.scm		\
   guix/build-system/dub.scm			\
   guix/build-system/dune.scm			\
   guix/build-system/emacs.scm			\
@@ -164,6 +165,7 @@ MODULES =					\
   guix/build/cargo-build-system.scm		\
   guix/build/cargo-utils.scm			\
   guix/build/cmake-build-system.scm		\
+  guix/build/composer-build-system.scm		\
   guix/build/dub-build-system.scm		\
   guix/build/dune-build-system.scm		\
   guix/build/emacs-build-system.scm		\
diff --git a/doc/guix.texi b/doc/guix.texi
index 17338ed764..0613f669a0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6687,6 +6687,20 @@ debugging information''), which roughly means that code is compiled with
 @code{-O2 -g}, as is the case for Autoconf-based packages by default.
 @end defvr
 
+@defvr {Scheme Variable} composer-build-system
+This variable is exported by @code{(guix build-system composer)}.  It
+implements the build procedure for packages using
+@url{https://getcomposer.org/, Composer}, the PHP package manager.
+
+It automatically adds the @code{php} package to the set of inputs.  Which
+package is used can be specified with the @code{#:php} parameter.
+
+The @code{#:test-target} parameter is used to control which script is run
+for the tests.  By default, the @code{test} script is run if it exists.  If
+the script does not exist, the build system will run @code{phpunit} from the
+source directory, assuming there is a @file{phpunit.xml} file.
+@end defvr
+
 @defvr {Scheme Variable} dune-build-system
 This variable is exported by @code{(guix build-system dune)}.  It
 supports builds of packages using @uref{https://dune.build/, Dune}, a build
diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm
new file mode 100644
index 0000000000..19455b1920
--- /dev/null
+++ b/guix/build-system/composer.scm
@@ -0,0 +1,169 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix build-system composer)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:export (%composer-build-system-modules
+            lower
+            composer-build
+            composer-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for PHP packages using Composer. This is implemented
+;; as an extension of `gnu-build-system'.
+;;
+;; Code:
+
+(define (default-php)
+  "Return the default PHP package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages php))))
+    (module-ref module 'php)))
+
+(define (default-findclass)
+  "Return the default findclass script."
+  (local-file (string-append (current-source-directory) "/findclass.php")))
+
+(define (default-composer-classloader)
+  "Return the default composer-classloader package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages php-xyz))))
+    (module-ref module 'composer-classloader)))
+
+(define %composer-build-system-modules
+  ;; Build-side modules imported by default.
+  `((guix build composer-build-system)
+    (guix build json)
+    (guix build union)
+    ,@%gnu-build-system-modules))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs system target
+                (php (default-php))
+                (composer-classloader (default-composer-classloader))
+                (findclass (default-findclass))
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME."
+  (define private-keywords
+    '(#:source #:target #:php #:composer-classloader #:findclass #:inputs #:native-inputs))
+
+  (and (not target)                               ;XXX: no cross-compilation
+       (bag
+         (name name)
+         (system system)
+         (host-inputs `(,@(if source
+                              `(("source" ,source))
+                              '())
+                        ,@inputs
+
+                        ;; Keep the standard inputs of 'gnu-build-system'.
+                        ,@(standard-packages)))
+         (build-inputs `(("php" ,php)
+                         ("findclass.php" ,findclass)
+			 ("composer-classloader" ,composer-classloader)
+                         ,@native-inputs))
+         (outputs outputs)
+         (build composer-build)
+         (arguments (strip-keyword-arguments private-keywords arguments)))))
+
+(define* (composer-build store name inputs
+                         #:key (guile #f)
+                         (outputs '("out")) (configure-flags ''())
+                         (search-paths '())
+                         (out-of-source? #t)
+                         (composer-file "composer.json")
+                         (tests? #t)
+                         (test-target "test")
+                         (install-target "install")
+                         (validate-runpath? #t)
+                         (patch-shebangs? #t)
+                         (strip-binaries? #t)
+                         (strip-flags ''("--strip-debug"))
+                         (strip-directories ''("lib" "lib64" "libexec"
+                                               "bin" "sbin"))
+                         (phases '(@ (guix build composer-build-system)
+                                     %standard-phases))
+                         (system (%current-system))
+                         (imported-modules %composer-build-system-modules)
+                         (modules '((guix build composer-build-system)
+                                    (guix build json)
+                                    (guix build utils))))
+  "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provides
+a 'composer.json' file as its build system."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (composer-build #:source ,(match (assoc-ref inputs "source")
+                                   (((? derivation? source))
+                                    (derivation->output-path source))
+                                   ((source)
+                                    source)
+                                   (source
+                                    source))
+                       #:system ,system
+                       #:outputs %outputs
+                       #:inputs %build-inputs
+                       #:search-paths ',(map search-path-specification->sexp
+                                             search-paths)
+                       #:phases ,phases
+                       #:out-of-source? ,out-of-source?
+                       #:composer-file ,composer-file
+                       #:tests? ,tests?
+                       #:test-target ,test-target
+                       #:install-target ,install-target
+                       #:validate-runpath? ,validate-runpath?
+                       #:patch-shebangs? ,patch-shebangs?
+                       #:strip-binaries? ,strip-binaries?
+                       #:strip-flags ,strip-flags
+                       #:strip-directories ,strip-directories)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:system system
+                                #:inputs inputs
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define composer-build-system
+  (build-system
+    (name 'composer)
+    (description "The standard Composer build system")
+    (lower lower)))
+
+;;; composer.scm ends here
diff --git a/guix/build-system/findclass.php b/guix/build-system/findclass.php
new file mode 100644
index 0000000000..a9704f809c
--- /dev/null
+++ b/guix/build-system/findclass.php
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Extract the classes in the given file
+ *
+ * @param  string            $path The file to check
+ * @throws \RuntimeException
+ * @return array             The found classes
+ */
+function findClasses($path)
+{
+    $extraTypes = PHP_VERSION_ID < 50400 ? '' : '|trait';
+    if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) {
+        $extraTypes .= '|enum';
+    }
+    // Use @ here instead of Silencer to actively suppress 'unhelpful' output
+    // @link https://github.com/composer/composer/pull/4886
+    $contents = @php_strip_whitespace($path);
+    if (!$contents) {
+        if (!file_exists($path)) {
+            $message = 'File at "%s" does not exist, check your classmap definitions';
+        } elseif (!is_readable($path)) {
+            $message = 'File at "%s" is not readable, check its permissions';
+        } elseif ('' === trim(file_get_contents($path))) {
+            // The input file was really empty and thus contains no classes
+            return array();
+        } else {
+            $message = 'File at "%s" could not be parsed as PHP, it may be binary or corrupted';
+        }
+        $error = error_get_last();
+        if (isset($error['message'])) {
+            $message .= PHP_EOL . 'The following message may be helpful:' . PHP_EOL . $error['message'];
+        }
+        throw new \RuntimeException(sprintf($message, $path));
+    }
+    // return early if there is no chance of matching anything in this file
+    if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents)) {
+        return array();
+    }
+    // strip heredocs/nowdocs
+    $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=\s+|[;,.)])}s', 'null', $contents);
+    // strip strings
+    $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents);
+    // strip leading non-php code if needed
+    if (substr($contents, 0, 2) !== '<?') {
+        $contents = preg_replace('{^.+?<\?}s', '<?', $contents, 1, $replacements);
+        if ($replacements === 0) {
+            return array();
+        }
+    }
+    // strip non-php blocks in the file
+    $contents = preg_replace('{\?>(?:[^<]++|<(?!\?))*+<\?}s', '?><?', $contents);
+    // strip trailing non-php code if needed
+    $pos = strrpos($contents, '?>');
+    if (false !== $pos && false === strpos(substr($contents, $pos), '<?')) {
+        $contents = substr($contents, 0, $pos);
+    }
+    // strip comments if short open tags are in the file
+    if (preg_match('{(<\?)(?!(php|hh))}i', $contents)) {
+        $contents = preg_replace('{//.* | /\*(?:[^*]++|\*(?!/))*\*/}x', '', $contents);
+    }
+    preg_match_all('{
+        (?:
+             \b(?<![\$:>])(?P<type>class|interface'.$extraTypes.') \s++ (?P<name>[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+)
+           | \b(?<![\$:>])(?P<ns>namespace) (?P<nsname>\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;]
+        )
+    }ix', $contents, $matches);
+    $classes = array();
+    $namespace = '';
+    for ($i = 0, $len = count($matches['type']); $i < $len; $i++) {
+        if (!empty($matches['ns'][$i])) {
+            $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\';
+        } else {
+            $name = $matches['name'][$i];
+            // skip anon classes extending/implementing
+            if ($name === 'extends' || $name === 'implements') {
+                continue;
+            }
+            if ($name[0] === ':') {
+                // This is an XHP class, https://github.com/facebook/xhp
+                $name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1);
+            } elseif ($matches['type'][$i] === 'enum') {
+                // In Hack, something like:
+                //   enum Foo: int { HERP = '123'; }
+                // The regex above captures the colon, which isn't part of
+                // the class name.
+                $name = rtrim($name, ':');
+            }
+            $classes[] = ltrim($namespace . $name, '\\');
+        }
+    }
+    return $classes;
+}
+
+$options = getopt('i:f:', []);
+$file = $options["f"];
+$input = $options["i"];
+
+$classes = findClasses($file);
+foreach($classes as $class) {
+  echo '$classmap[\''.$class.'\'] = \''.$input.'/'.$file.'\';';
+  echo "\n";
+}
diff --git a/guix/build/composer-build-system.scm b/guix/build/composer-build-system.scm
new file mode 100644
index 0000000000..3578b91954
--- /dev/null
+++ b/guix/build/composer-build-system.scm
@@ -0,0 +1,224 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix build composer-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build json)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 match)
+  #:export (%standard-phases
+            composer-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the standard composer build procedure.
+;;
+;; Code:
+
+(define* (read-package-data #:key (filename "composer.json"))
+  (call-with-input-file filename
+    (lambda (port)
+      (read-json port))))
+
+(define* (check #:key composer-file inputs outputs tests? test-target #:allow-other-keys)
+  "Install the given package."
+  (when tests?
+    (mkdir-p "vendor")
+    (create-autoload (string-append (getcwd) "/vendor") composer-file
+                     (append inputs outputs) #:dev-dependencies? #t)
+    (let* ((package-data (read-package-data #:filename composer-file))
+           (scripts (match (assoc-ref package-data "scripts")
+                      (('@ script ...) script)
+                      (#f '())))
+           (test-script
+             (assoc-ref scripts test-target))
+           (dependencies (filter (lambda (dep) (string-contains dep "/"))
+                                 (map car
+                                      (match (assoc-ref package-data "require")
+                                        (('@ dependency ...) dependency)
+                                        (#f '())))))
+           (dependencies-dev
+             (filter (lambda (dep) (string-contains dep "/"))
+                     (map car
+                          (match (assoc-ref package-data "require-dev")
+                            (('@ dependency ...) dependency)
+                            (#f '())))))
+           (name (assoc-ref package-data "name")))
+      (for-each
+        (lambda (input)
+          (let ((bin (find-php-bin (cdr input))))
+            (when bin
+              (copy-recursively bin "vendor/bin"))))
+        inputs)
+      (match test-script
+        ((? string? command)
+         (unless (equal? (system command) 0)
+           (throw 'failed-command command)))
+        (('@ (? string? command) ...)
+         (for-each
+           (lambda (c)
+             (unless (equal? (system c) 0)
+               (throw 'failed-command c)))
+           command))
+        (#f (invoke "vendor/bin/phpunit")))))
+  #t)
+
+(define (find-php-bin input)
+  (let* ((web-dir (string-append input "/share/web"))
+         (vendors (if (file-exists? web-dir)
+                      (find-files web-dir "^vendor$" #:directories? #t)
+                      #f)))
+    (match vendors
+      ((vendor)
+       (let ((bin (string-append vendor "/bin")))
+         (and (file-exists? bin) bin)))
+      (_ #f))))
+
+(define (find-php-dep inputs dependency)
+  (let loop ((inputs (map cdr inputs)))
+    (if (null? inputs)
+        (throw 'unsatisfied-dependency "Unsatisfied dependency: required " dependency)
+        (let ((autoload (string-append (car inputs) "/share/web/" dependency "/vendor/autoload_conf.php")))
+          (if (file-exists? autoload)
+              autoload
+              (loop (cdr inputs)))))))
+
+(define* (create-autoload vendor composer-file inputs #:key dev-dependencies?)
+  (with-output-to-file (string-append vendor "/autoload.php")
+    (lambda _
+      (format #t "<?php~%")
+      (format #t "// autoload.php @generated by Guix~%")
+      (format #t "$map = $psr4map = $classmap = array();~%")
+      (format #t "require_once '~a/autoload_conf.php';~%" vendor)
+      (format #t "require_once '~a/share/web/composer/ClassLoader.php';~%"
+                 (assoc-ref inputs "composer-classloader"))
+      (format #t "$loader = new \\Composer\\Autoload\\ClassLoader();~%")
+      (format #t "foreach ($map as $namespace => $path) {~%")
+      (format #t "  $loader->set($namespace, $path);~%")
+      (format #t "}~%")
+      (format #t "foreach ($psr4map as $namespace => $path) {~%")
+      (format #t "  $loader->setPsr4($namespace, $path);~%")
+      (format #t "}~%")
+      (format #t "$loader->addClassMap($classmap);~%")
+      (format #t "$loader->register();~%")))
+  (let* ((package-data (read-package-data #:filename composer-file))
+         (autoload
+           (match (assoc-ref package-data "autoload")
+             (('@ autoload ...) autoload)
+             (#f '())))
+         (autoload-dev
+           (match (assoc-ref package-data "autoload-dev")
+             (('@ autoload-dev ...) autoload-dev)
+             (#f '())))
+         (dependencies (filter (lambda (dep) (string-contains dep "/"))
+                               (map car
+                                    (match (assoc-ref package-data "require")
+                                      (('@ dependency ...) dependency)
+                                      (#f '())))))
+         (dependencies-dev
+           (filter (lambda (dep) (string-contains dep "/"))
+                   (map car
+                        (match (assoc-ref package-data "require-dev")
+                          (('@ dependency ...) dependency)
+                          (#f '()))))))
+    (with-output-to-file (string-append vendor "/autoload_conf.php")
+      (lambda _
+        (format #t "<?php~%")
+        (format #t "// autoload_conf.php @generated by Guix~%")
+        (force-output)
+        (for-each
+          (lambda (psr4)
+            (match psr4
+              ((key . value)
+               (format #t "$psr4map['~a'] = '~a/../~a';~%"
+                       (string-join (string-split key #\\) "\\\\")
+                       vendor value))))
+          (append
+            (match (assoc-ref autoload "psr-4")
+              (('@ psr4 ...) psr4)
+              (#f '()))
+            (if dev-dependencies?
+                (match (assoc-ref autoload-dev "psr-4")
+                  (('@ psr4 ...) psr4)
+                  (#f '()))
+                '())))
+        (for-each
+          (lambda (classmap)
+            (for-each
+              (lambda (file)
+                (invoke "php" (assoc-ref inputs "findclass.php")
+                        "-i" (string-append vendor "/..") "-f" file))
+              (find-files classmap ".(php|hh|inc)$")))
+          (append
+            (or (assoc-ref autoload "classmap") '())
+            (if dev-dependencies?
+                (or (assoc-ref autoload-dev "classmap") '())
+                '())))
+        (for-each
+          (lambda (dep)
+            (format #t "require_once '~a';~%" (find-php-dep inputs dep)))
+          (append
+            dependencies
+            (if dev-dependencies?
+                dependencies-dev
+                '())))))))
+
+(define* (install #:key inputs outputs composer-file #:allow-other-keys)
+  "Install the given package."
+  (let* ((out (assoc-ref outputs "out"))
+         (package-data (read-package-data #:filename composer-file))
+         (name (assoc-ref package-data "name"))
+         (php-dir (string-append out "/share/web/" name))
+         (bin-dir (string-append php-dir "/vendor/bin"))
+         (bin (string-append out "/bin"))
+         (binaries (assoc-ref package-data "bin")))
+      (mkdir-p php-dir)
+      (copy-recursively "." php-dir)
+      (mkdir-p (string-append php-dir "/vendor"))
+      (when binaries
+        (mkdir-p bin-dir)
+        (mkdir-p bin)
+        (for-each
+          (lambda (file)
+            (let ((installed-file (string-append bin-dir "/" (basename file)))
+                  (bin-file (string-append bin "/" (basename file)))
+                  (original-file (string-append php-dir "/" file)))
+              (symlink original-file installed-file)
+              (symlink original-file bin-file)))
+          binaries))
+      (create-autoload (string-append php-dir "/vendor")
+                       composer-file inputs))
+  #t)
+
+(define %standard-phases
+  ;; Everything is as with the GNU Build System except for the `configure'
+  ;; , `build', `check' and `install' phases.
+  (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
+    (delete 'configure)
+    (delete 'build)
+    (delete 'check)
+    (replace 'install install)
+    (add-after 'install 'check check)))
+
+(define* (composer-build #:key inputs (phases %standard-phases)
+                         #:allow-other-keys #:rest args)
+  "Build the given package, applying all of PHASES in order."
+  (apply gnu:gnu-build #:inputs inputs #:phases phases args))
+
+;;; composer-build-system.scm ends here
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:25:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:25:58 2020
Received: from localhost ([127.0.0.1]:46969 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukPy-0003bK-Sb
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:58 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPt-0003ad-I1
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:53 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 3b9a3814
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-type:content-transfer-encoding; s=dkim; bh=9T1JFawuPbva
 F8Q+AxWLysKCCKNkrq+wsbxAWancyhs=; b=Z+GMDCPNcohjKERigAJk+hB8SRuE
 QQcSI8joJMlgqcqQKxzfz+ZeUtxjS7WS45yZ8sSFTRWrSoH3zSEWPgwZddbKI1Y5
 pVkNaW3t/RrQ+LucJ8B6GCECFPlxjfaRFPu/wtHm6yq554J0V0lQK0P5bzOqc6kK
 RnLqolFbzMM+cKWcFivIwZ8u5sTiPYoN2TdZZAYliEdZ+LOc/sCNHYbDVPdi9q/I
 YOHmsaN4OX+6X/62b2XKtn4oLjOPn6MbyZM9qEavXcu5/cJzCg8ZIyelvmdg2+P3
 1OfKD6Qce95iD4i6fMjCDAtCFS7w+vRG4WX0Y3eAPl4o6aRGpOQkg3qEVQ==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 0adddc50
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:46 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 02/34] gnu: Add composer-classloader.
Date: Mon, 13 Jul 2020 00:25:06 +0200
Message-Id: <20200712222538.18092-2-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200712222538.18092-1-julien@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
 <20200712222538.18092-1-julien@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/local.mk b/gnu/local.mk
index 3046a840c9..90d1b1302b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -424,6 +424,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/photo.scm			\
   %D%/packages/phabricator.scm 			\
   %D%/packages/php.scm				\
+  %D%/packages/php-xyz.scm			\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/poedit.scm				\
diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm
new file mode 100644
index 0000000000..dab660f84f
--- /dev/null
+++ b/gnu/packages/php-xyz.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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-xyz)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages php)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system composer)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public composer-classloader
+  (package
+    (name "composer-classloader")
+    (version "1.9.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/composer/composer.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0127zmmg3yx84ljngfs86q7kjhyypybkf4d1ihfrfnzgynzxfxdf"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (install (string-append out "/share/web/composer/ClassLoader.php")))
+               (mkdir-p (dirname install))
+               (copy-file "src/Composer/Autoload/ClassLoader.php" install)))))))
+    (home-page "https://getcomposer.org")
+    (synopsis "PHP class loader extracted from the composer package")
+    (description "This package contains the class loader class used by Composer to
+build its autoloading feature.  This package is used by the composer-build-system
+to build its own store-aware autoloading feature.")
+    (license license:expat)))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at 42338 <at> debbugs.gnu.org:


Received: (at 42338) by debbugs.gnu.org; 12 Jul 2020 22:25:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:25:51 2020
Received: from localhost ([127.0.0.1]:46964 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukPv-0003ao-6h
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:51 -0400
Received: from lepiller.eu ([89.234.186.109]:42900)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukPs-0003ad-35
 for 42338 <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:25:49 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 09c2b194
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=from:to
 :subject:date:message-id:in-reply-to:references:mime-version
 :content-type:content-transfer-encoding; s=dkim; bh=TT5nxDDzLybC
 MT2oCWBXFISW25wTpl9AKS1jwYe3GMs=; b=N8WuMVsNyPdX993VlBSER6SBRNnI
 ap/lf6UuxFjDgwqmeX5HRdC5u4ZdPXqVZMBvVZ6yCthn9fNggclUY8q7tTxD/x4M
 X8rikR99lVJgT8kxF0Lq+Ecgo5CCbXX+xfjGrv3K80cwqTNu4c7VHCGxkxPXwfaf
 mI2eJ7H0nJSp65RxkUlyIqykTbyOuhnlH+VE80MIPRn4B+mt6dY3L6PvUNv3RxXm
 f0qWVH324zsI0lpYyKt8NrA1U15UCkOXW4KYZ3Uuego5wCoZ5C5aIOkVXoWhL5A2
 EkbfzlyrpTmQumEl1xk9vf3lyvObhAW2NsU6vY8k53rP7UNE0lifDFgB4g==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 4b55fd0b
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <42338 <at> debbugs.gnu.org>; Sun, 12 Jul 2020 22:25:45 +0000 (UTC)
From: Julien Lepiller <julien@HIDDEN>
To: 42338 <at> debbugs.gnu.org
Subject: [PATCH 01/34] guix: import: Add composer importer.
Date: Mon, 13 Jul 2020 00:25:05 +0200
Message-Id: <20200712222538.18092-1-julien@HIDDEN>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20200713002055.1553f136@HIDDEN>
References: <20200713002055.1553f136@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 42338
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* guix/import/composer.scm: New file.
* guix/scripts/import/composer.scm: New file.
* Makefile.am: Add them.
* guix/scripts/import.scm: Add composer importer.
---
 Makefile.am                      |   2 +
 guix/import/composer.scm         | 252 +++++++++++++++++++++++++++++++
 guix/scripts/import.scm          |   2 +-
 guix/scripts/import/composer.scm | 107 +++++++++++++
 4 files changed, 362 insertions(+), 1 deletion(-)
 create mode 100644 guix/import/composer.scm
 create mode 100644 guix/scripts/import/composer.scm

diff --git a/Makefile.am b/Makefile.am
index 20d43cd130..623ddf32b2 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -219,6 +219,7 @@ MODULES =					\
   guix/search-paths.scm				\
   guix/packages.scm				\
   guix/import/cabal.scm				\
+  guix/import/composer.scm			\
   guix/import/cpan.scm				\
   guix/import/cran.scm				\
   guix/import/crate.scm				\
@@ -265,6 +266,7 @@ MODULES =					\
   guix/scripts/system/reconfigure.scm		\
   guix/scripts/lint.scm				\
   guix/scripts/challenge.scm			\
+  guix/scripts/import/composer.scm		\
   guix/scripts/import/crate.scm			\
   guix/scripts/import/cran.scm			\
   guix/scripts/import/elpa.scm  		\
diff --git a/guix/import/composer.scm b/guix/import/composer.scm
new file mode 100644
index 0000000000..0e17eb0487
--- /dev/null
+++ b/guix/import/composer.scm
@@ -0,0 +1,252 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@HIDDEN>
+;;;
+;;; 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 (guix import composer)
+  #:use-module (ice-9 match)
+  #:use-module (json)
+  #:use-module (gcrypt hash)
+  #:use-module (guix base32)
+  #:use-module (guix build git)
+  #:use-module (guix build utils)
+  #:use-module (guix build-system)
+  #:use-module (guix import json)
+  #:use-module (guix import utils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix serialization)
+  #:use-module (guix upstream)
+  #:use-module (guix utils)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:export (composer->guix-package
+            %composer-updater
+            composer-recursive-import))
+
+;; XXX adapted from (guix scripts hash)
+(define (file-hash file select? recursive?)
+  ;; Compute the hash of FILE.
+  (if recursive?
+      (let-values (((port get-hash) (open-sha256-port)))
+        (write-file file port #:select? select?)
+        (force-output port)
+        (get-hash))
+      (call-with-input-file file port-sha256)))
+
+;; XXX taken from (guix scripts hash)
+(define (vcs-file? file stat)
+  (case (stat:type stat)
+    ((directory)
+     (member (basename file) '(".bzr" ".git" ".hg" ".svn" "CVS")))
+    ((regular)
+     ;; Git sub-modules have a '.git' file that is a regular text file.
+     (string=? (basename file) ".git"))
+    (else
+     #f)))
+
+(define (latest-version versions)
+  (fold (lambda (a b) (if (version>? a b) a b)) (car versions) versions))
+
+(define (fix-version version)
+  "Return a fixed version from a version string.  For instance, v10.1 -> 10.1"
+  (cond
+    ((string-prefix? "version" version)
+     (if (char-set-contains? char-set:digit (string-ref version 7))
+         (substring version 7)
+         (substring version 8)))
+    ((string-prefix? "v" version)
+     (substring version 1))
+    (else version)))
+
+(define* (composer-fetch name #:optional version)
+  "Return an alist representation of the Composer metadata for the package NAME,
+or #f on failure."
+  (let ((package (json-fetch
+                   (string-append "https://repo.packagist.org/p/" name ".json"))))
+    (if package
+        (let* ((packages (assoc-ref package "packages"))
+               (package (assoc-ref packages name))
+               (versions (filter
+                           (lambda (version)
+                             (and (not (string-contains version "dev"))
+                                  (not (string-contains version "beta"))))
+                           (map car package)))
+               (versions (map
+                           (lambda (version)
+                             (cons (fix-version version) version))
+                           versions))
+               (version (or (if (null? version) #f version)
+                            (latest-version (map car versions)))))
+          (assoc-ref package (assoc-ref versions version)))
+        #f)))
+
+(define (php-package-name name)
+  "Given the NAME of a package on Packagist, return a Guix-compliant name for
+the package."
+  (let ((name (string-join (string-split name #\/) "-")))
+    (if (string-prefix? "php-" name)
+        (snake-case name)
+        (string-append "php-" (snake-case name)))))
+
+(define (make-php-sexp name version home-page description dependencies
+                       dev-dependencies licenses source)
+  "Return the `package' s-expression for a PHP package with the given NAME,
+VERSION, HOME-PAGE, DESCRIPTION, DEPENDENCIES, LICENSES and SOURCE."
+  (let ((git? (equal? (assoc-ref source "type") "git")))
+    ((if git? call-with-temporary-directory call-with-temporary-output-file)
+     (lambda* (temp #:optional port)
+       (and (if git?
+                (begin
+                  (mkdir-p temp)
+                  (git-fetch (assoc-ref source "url")
+                             (assoc-ref source "reference")
+                             temp))
+                (url-fetch (assoc-ref source "url") temp))
+            `(package
+               (name ,(php-package-name name))
+               (version ,version)
+               (source (origin
+                         ,@(if git?
+                               `((method git-fetch)
+                                 (uri (git-reference
+                                        (url ,(assoc-ref source "url"))
+                                        (commit ,(assoc-ref source "reference"))))
+                                 (file-name (git-file-name name version))
+                                 (sha256
+                                   (base32
+                                     ,(bytevector->nix-base32-string
+                                       (file-hash temp (negate vcs-file?) #t)))))
+                               `((method url-fetch)
+                                 (uri ,(assoc-ref source "url"))
+                                 (sha256 (base32 ,(guix-hash-url temp)))))))
+               (build-system composer-build-system)
+               ,@(if (null? dependencies)
+                     '()
+                     `((inputs
+                        (,'quasiquote
+                         ,(map (lambda (name)
+                                 `(,name
+                                   (,'unquote
+                                    ,(string->symbol name))))
+                               dependencies)))))
+               ,@(if (null? dev-dependencies)
+                     '()
+                     `((native-inputs
+                        (,'quasiquote
+                         ,(map (lambda (name)
+                                 `(,name
+                                   (,'unquote
+                                    ,(string->symbol name))))
+                               dev-dependencies)))))
+               (synopsis "")
+               (description ,description)
+               (home-page ,home-page)
+               (license ,(match licenses
+                           (() #f)
+                           ((license) (license->symbol license))
+                           (_ `(list ,@(map license->symbol licenses)))))))))))
+
+(define* (composer->guix-package package-name #:optional version)
+  "Fetch the metadata for PACKAGE-NAME from packagist.org, and return the
+`package' s-expression corresponding to that package, or #f on failure."
+  (let ((package (composer-fetch package-name version)))
+    (and package
+         (let* ((name         (assoc-ref package "name"))
+                (version      (fix-version (assoc-ref package "version")))
+                (description  (beautify-description
+                               (assoc-ref package "description")))
+                (home-page    (assoc-ref package "homepage"))
+                (dependencies-names (filter
+                                      (lambda (dep)
+                                        (string-contains dep "/"))
+                                      (map car (assoc-ref package "require"))))
+                (dependencies (map php-package-name dependencies-names))
+                (require-dev (assoc-ref package "require-dev"))
+                (dev-dependencies-names
+                  (if require-dev
+                      (filter
+                        (lambda (dep)
+                          (string-contains dep "/"))
+                        (map car require-dev))
+                      '()))
+                (dev-dependencies (map php-package-name dev-dependencies-names))
+                (licenses     (map string->license
+                                   (vector->list
+                                    (assoc-ref package "license")))))
+           (values (make-php-sexp name version home-page description dependencies
+                                  dev-dependencies licenses (assoc-ref package "source"))
+                   (append dependencies-names dev-dependencies-names))))))
+
+(define (guix-name->composer-name name)
+  "Given a guix package name, return the name of the package in Packagist."
+  (if (string-prefix? "php-" name)
+      (let ((components (string-split (substring name 4) #\-)))
+        (match components
+          ((namespace name ...)
+           (string-append namespace "/" (string-join name "-")))))
+      name))
+
+(define (guix-package->composer-name package)
+  "Given a Composer PACKAGE built from Packagist, return the name of the
+package in Packagist."
+  (let ((upstream-name (assoc-ref
+                         (package-properties package)
+                         'upstream-name))
+        (name (package-name package)))
+    (if upstream-name
+      upstream-name
+      (guix-name->composer-name name))))
+
+(define (string->license str)
+  "Convert the string STR into a license object."
+  (match str
+    ("GNU LGPL" license:lgpl2.0)
+    ("GPL" license:gpl3)
+    ((or "BSD" "BSD License" "BSD-3-Clause") license:bsd-3)
+    ((or "MIT" "MIT license" "Expat license") license:expat)
+    ("Public domain" license:public-domain)
+    ((or "Apache License, Version 2.0" "Apache 2.0") license:asl2.0)
+    (_ #f)))
+
+(define (php-package? package)
+  "Return true if PACKAGE is a PHP package from Packagist."
+  (and
+    (eq? (build-system-name (package-build-system package)) 'composer)
+    (string-prefix? "php-" (package-name package))))
+
+(define (latest-release package)
+  "Return an <upstream-source> for the latest release of PACKAGE."
+  (let* ((php-name (guix-package->composer-name package))
+         (metadata (composer-fetch php-name))
+         (version (fix-version (assoc-ref metadata "version")))
+         (url (assoc-ref (assoc-ref metadata "source") "url")))
+    (upstream-source
+     (package (package-name package))
+     (version version)
+     (urls (list url)))))
+
+(define %composer-updater
+  (upstream-updater
+   (name 'composer)
+   (description "Updater for Composer packages")
+   (pred php-package?)
+   (latest latest-release)))
+
+(define* (composer-recursive-import package-name #:optional version)
+  (recursive-import package-name '()
+                    #:repo->guix-package composer->guix-package
+                    #:guix-name php-package-name))
diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm
index c6cc93fad8..4c91627283 100644
--- a/guix/scripts/import.scm
+++ b/guix/scripts/import.scm
@@ -76,7 +76,7 @@ rather than \\n."
 ;;;
 
 (define importers '("gnu" "nix" "pypi" "cpan" "hackage" "stackage" "elpa" "gem"
-                    "cran" "crate" "texlive" "json" "opam"))
+                    "cran" "crate" "texlive" "json" "opam" "composer"))
 
 (define (resolve-importer name)
   (let ((module (resolve-interface
diff --git a/guix/scripts/import/composer.scm b/guix/scripts/import/composer.scm
new file mode 100644
index 0000000000..412bae6318
--- /dev/null
+++ b/guix/scripts/import/composer.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@HIDDEN>
+;;; Copyright © 2018 Oleg Pykhalov <go.wigust@HIDDEN>
+;;;
+;;; 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 (guix scripts import composer)
+  #:use-module (guix ui)
+  #:use-module (guix utils)
+  #:use-module (guix scripts)
+  #:use-module (guix import composer)
+  #:use-module (guix scripts import)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:use-module (srfi srfi-37)
+  #:use-module (srfi srfi-41)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 format)
+  #:export (guix-import-composer))
+
+
+;;;
+;;; Command-line options.
+;;;
+
+(define %default-options
+  '())
+
+(define (show-help)
+  (display (G_ "Usage: guix import composer PACKAGE-NAME
+Import and convert the Composer package for PACKAGE-NAME.\n"))
+  (display (G_ "
+  -h, --help             display this help and exit"))
+  (display (G_ "
+  -V, --version          display version information and exit"))
+  (display (G_ "
+  -r, --recursive        generate package expressions for all Composer packages\
+ that are not yet in Guix"))
+  (newline)
+  (show-bug-report-information))
+
+(define %options
+  ;; Specification of the command-line options.
+  (cons* (option '(#\h "help") #f #f
+                 (lambda args
+                   (show-help)
+                   (exit 0)))
+         (option '(#\V "version") #f #f
+                 (lambda args
+                   (show-version-and-exit "guix import composer")))
+         (option '(#\r "recursive") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'recursive #t result)))
+         %standard-import-options))
+
+
+;;;
+;;; Entry point.
+;;;
+
+(define (guix-import-composer . args)
+  (define (parse-options)
+    ;; Return the alist of option values.
+    (args-fold* args %options
+                (lambda (opt name arg result)
+                  (leave (G_ "~A: unrecognized option~%") name))
+                (lambda (arg result)
+                  (alist-cons 'argument arg result))
+                %default-options))
+
+  (let* ((opts (parse-options))
+         (args (filter-map (match-lambda
+                            (('argument . value)
+                             value)
+                            (_ #f))
+                           (reverse opts))))
+    (match args
+      ((package-name)
+       (if (assoc-ref opts 'recursive)
+           (map (match-lambda
+                  ((and ('package ('name name) . rest) pkg)
+                   `(define-public ,(string->symbol name)
+                      ,pkg))
+                  (_ #f))
+                (composer-recursive-import package-name))
+           (let ((sexp (composer->guix-package package-name)))
+             (unless sexp
+               (leave (G_ "failed to download meta-data for package '~a'~%")
+                      package-name))
+             sexp)))
+      (()
+       (leave (G_ "too few arguments~%")))
+      ((many ...)
+       (leave (G_ "too many arguments~%"))))))
-- 
2.27.0





Information forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 12 Jul 2020 22:21:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 12 18:21:15 2020
Received: from localhost ([127.0.0.1]:46958 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jukLT-0003U3-JL
	for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:21:15 -0400
Received: from lists.gnu.org ([209.51.188.17]:52128)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <julien@HIDDEN>) id 1jukLP-0003Tu-HP
 for submit <at> debbugs.gnu.org; Sun, 12 Jul 2020 18:21:14 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:54704)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <julien@HIDDEN>)
 id 1jukLP-0004NS-1k
 for guix-patches@HIDDEN; Sun, 12 Jul 2020 18:21:11 -0400
Received: from lepiller.eu ([2a00:5884:8208::1]:59462)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <julien@HIDDEN>)
 id 1jukLM-0004s1-Io
 for guix-patches@HIDDEN; Sun, 12 Jul 2020 18:21:10 -0400
Received: from lepiller.eu (localhost [127.0.0.1])
 by lepiller.eu (OpenSMTPD) with ESMTP id 111c09e8
 for <guix-patches@HIDDEN>; Sun, 12 Jul 2020 22:21:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from
 :to:subject:message-id:mime-version:content-type
 :content-transfer-encoding; s=dkim; bh=qxvHX9iPqqOh9m/l0C72CAnvw
 1W+H/YLf520LuZKJoE=; b=WF02z1EsfnhCwWIU72eKO2gaRjU/BAMm3NKYr3juC
 d64U0EoAYHJkcov2xKZRT7f+UnKwHusXaDU6kWg6LpqOI8BHi/QCg4tfqIFbjBbZ
 qvSpqaTcaQgh/CEnQWZHI/JzYvl2oyCiJSfUP6NXV3K6mzfk6cDy3IJXo2j54rje
 WzXQIycMD+dYFDYd99MXJD1lGIxOobP86t3OnXlVczoVA0pg/6z/KepGwr9ZXclj
 5jd5li8CCm2JDBE4FhPNnoK9U9fgVAzQeChm1Dh/JFYqgdDTlMZtr91+NtNeCkHr
 dZLSx09mwF2f0BumwmALMpQIDGqv71i/A/FJPBRdJswqg==
Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id a54c00ee
 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO)
 for <guix-patches@HIDDEN>; Sun, 12 Jul 2020 22:21:03 +0000 (UTC)
Date: Mon, 13 Jul 2020 00:20:55 +0200
From: Julien Lepiller <julien@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH] Add composer build system (PHP)
Message-ID: <20200713002055.1553f136@HIDDEN>
X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Received-SPF: none client-ip=2a00:5884:8208::1;
 envelope-from=julien@HIDDEN; helo=lepiller.eu
X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache.
 That's all we know.
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001,
 SPF_NONE=0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Guix!

This patch series adds the composer-build-system, along with an
importer and an updater (first 3 patches).

The patch series also adds some php packages for phpunit and its
dependencies.

The patches are available in my composer branch at
https://framagit.org/tyreunom/guix/-/tree/composer




Acknowledgement sent to Julien Lepiller <julien@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#42338; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Fri, 18 Dec 2020 23:45:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.