From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:53219) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hHMAx-0001Rn-SY for guix-patches@gnu.org; Fri, 19 Apr 2019 01:35:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hHMAw-0003UN-Kp for guix-patches@gnu.org; Fri, 19 Apr 2019 01:35:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:57592) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hHMAw-0003UF-E7 for guix-patches@gnu.org; Fri, 19 Apr 2019 01:35:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hHMAw-0002Pl-8z for guix-patches@gnu.org; Fri, 19 Apr 2019 01:35:02 -0400 Subject: [bug#35318] [PATCH] Update cargo-build-system to expand package inputs Resent-Message-ID: Received: from eggs.gnu.org ([209.51.188.92]:53123) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hHMAB-0001Oc-8P for guix-patches@gnu.org; Fri, 19 Apr 2019 01:34:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hHMAA-0003CA-6Q for guix-patches@gnu.org; Fri, 19 Apr 2019 01:34:15 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:41986) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hHMA9-0003BX-QW for guix-patches@gnu.org; Fri, 19 Apr 2019 01:34:14 -0400 Received: by mail-pg1-x543.google.com with SMTP id p6so2194922pgh.9 for ; Thu, 18 Apr 2019 22:34:13 -0700 (PDT) From: Ivan Petkov Content-Type: multipart/mixed; boundary="Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6" Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\)) Date: Thu, 18 Apr 2019 22:34:05 -0700 Message-Id: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 35318@debbugs.gnu.org Cc: Chris Marusich --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 When building, cargo requires the source of all transitive dependencies = to be present in its index. Rather than force package definitions to list out all transitive inputs, = the build system will automatically expand the inputs as necessary. Because it is possible for crates to have apparent cycles in their = native dependencies, the build system must take some measures to work around potential = cycles. This patch series takes an initial naive stab at resolving the problem, by never building = native-inputs. I plan on revisiting this sometime soon and making the system a bit more = intelligent (namely building native-inputs where possible and breaking any cycles). = But for now this should unblock working on package definitions. I=E2=80=99ve also included three rust crates as a proof of concept that = the system works and it handles potential native-input cycles. These crates do nothing on their own, but = they=E2=80=99re heavily depended upon by the rest of the crates ecosystem, so they will eventually be = useful to have in guix. =E2=80=94Ivan --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6 Content-Disposition: attachment; filename=0001-packages-allow-dynamic-input-closure-computation.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-packages-allow-dynamic-input-closure-computation.patch" Content-Transfer-Encoding: quoted-printable =46rom=20ca6dfd9451f22c4d6dc02aa7eceee0c35800dd57=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Tue,=2016=20Apr=202019=2003:32:44=20-0700=0ASubject:=20[PATCH=20= 1/4]=20packages:=20allow=20dynamic=20input=20closure=20computation=0A=0A= *=20guix/packages:=20(transitive-inputs):=20Rename=20to=0A= package-transitive-dependencies.=0A(package-transitive-dependencies):=20= Add=20proc=20parameter=20and=20use=20it.=0A(transitive-inputs):=20Add=20= it.=0A---=0A=20guix/packages.scm=20|=2023=20+++++++++++++++++------=0A=20= 1=20file=20changed,=2017=20insertions(+),=206=20deletions(-)=0A=0Adiff=20= --git=20a/guix/packages.scm=20b/guix/packages.scm=0Aindex=20= c94a651f27..658b2427ca=20100644=0A---=20a/guix/packages.scm=0A+++=20= b/guix/packages.scm=0A@@=20-4,6=20+4,7=20@@=0A=20;;;=20Copyright=20=C2=A9=20= 2015=20Eric=20Bavier=20=0A=20;;;=20Copyright=20=C2=A9= =202016=20Alex=20Kost=20=0A=20;;;=20Copyright=20=C2=A9=20= 2017=20Efraim=20Flashner=20=0A+;;;=20Copyright=20= =C2=A9=202019=20Ivan=20Petkov=20=0A=20;;;=0A=20= ;;;=20This=20file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-95,6=20= +96,7=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package-direct-sources=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package-transitive-sources=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package-direct-inputs=0A+=20=20=20=20=20=20=20=20=20=20=20=20= package-transitive-dependencies=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package-transitive-inputs=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package-transitive-target-inputs=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package-transitive-native-inputs=0A@@=20-650,13=20+652,13=20@@=20= specifies=20modules=20in=20scope=20when=20evaluating=20SNIPPET."=0A=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= #:deprecation-warnings=20#t=20;to=20avoid=20a=20rebuild=0A=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= #:guile-for-build=20guile-for-build))))=0A=20=0A-(define=20= (transitive-inputs=20inputs)=0A-=20=20"Return=20the=20closure=20of=20= INPUTS=20when=20considering=20the=20'propagated-inputs'=0A-edges.=20=20= Omit=20duplicate=20inputs,=20except=20for=20those=20already=20present=20= in=20INPUTS=0A-itself.=0A+(define=20(package-transitive-dependencies=20= inputs=20proc)=0A+=20=20"Return=20the=20closure=20of=20INPUTS=20when=20= considering=20the=20edges=20extracted=0A+from=20each=20package=20via=20= PROC.=20=20Omit=20duplicate=20inputs,=20except=20for=20those=0A+already=20= present=20in=20INPUTS=20itself.=0A=20=0A=20This=20is=20implemented=20as=20= a=20breadth-first=20traversal=20such=20that=20INPUTS=20is=0A-preserved,=20= and=20only=20duplicate=20propagated=20inputs=20are=20removed."=0A= +preserved,=20and=20only=20duplicate=20extracted=20inputs=20are=20= removed."=0A=20=20=20(define=20(seen?=20seen=20item=20outputs)=0A=20=20=20= =20=20;;=20FIXME:=20We're=20using=20pointer=20identity=20here,=20which=20= is=20extremely=20sensitive=0A=20=20=20=20=20;;=20to=20memoization=20in=20= package-producing=20procedures;=20see=0A@@=20-680,7=20+682,7=20@@=20= preserved,=20and=20only=20duplicate=20propagated=20inputs=20are=20= removed."=0A=20=20=20=20=20=20=20=20=20=20=20=20(loop=20rest=20result=20= propagated=20first?=20seen)=0A=20=20=20=20=20=20=20=20=20=20=20=20(loop=20= rest=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20= input=20result)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (cons=20(package-propagated-inputs=20package)=20propagated)=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20(proc=20package)=20= propagated)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= first?=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (vhash-consq=20package=20outputs=20seen))))=0A=20=20=20=20=20=20=20= ((input=20rest=20...)=0A@@=20-696,6=20+698,15=20@@=20PACKAGE's=20= inputs."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (_=20#f))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (package-direct-inputs=20package))))=0A=20=0A+(define=20= (transitive-inputs=20inputs)=0A+=20=20"Return=20the=20closure=20of=20= INPUTS=20when=20considering=20the=20'propagated-inputs'=0A+edges.=20=20= Omit=20duplicate=20inputs,=20except=20for=20those=20already=20present=20= in=20INPUTS=0A+itself.=0A+=0A+This=20is=20implemented=20as=20a=20= breadth-first=20traversal=20such=20that=20INPUTS=20is=0A+preserved,=20= and=20only=20duplicate=20propagated=20inputs=20are=20removed."=0A+=20=20= (package-transitive-dependencies=20inputs=20package-propagated-inputs))=0A= +=0A=20(define=20(package-transitive-sources=20package)=0A=20=20=20= "Return=20PACKAGE's=20direct=20sources,=20and=20their=20direct=20= sources,=20recursively."=0A=20=20=20(delete-duplicates=0A--=20=0A2.21.0=0A= =0A= --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6 Content-Disposition: attachment; filename=0002-build-system-cargo-expand-transitive-package-inputs.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0002-build-system-cargo-expand-transitive-package-inputs.patch" Content-Transfer-Encoding: quoted-printable =46rom=207b42290f238d5ab50d83232ec6d95db665a98302=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Tue,=2016=20Apr=202019=2003:37:44=20-0700=0ASubject:=20[PATCH=20= 2/4]=20build-system/cargo:=20expand=20transitive=20package=20inputs=0A=0A= *=20guix/build/cargo:=20(package-target-inputs):=20Add=20it.=0A= (expand-inputs):=20Add=20it.=0A(expand-native-inputs):=20Add=20it.=0A= (lower):=20Use=20new=20variables.=0A---=0A=20guix/build-system/cargo.scm=20= |=2066=20+++++++++++++++++++++++++++++++++++--=0A=201=20file=20changed,=20= 64=20insertions(+),=202=20deletions(-)=0A=0Adiff=20--git=20= a/guix/build-system/cargo.scm=20b/guix/build-system/cargo.scm=0Aindex=20= dc137421e9..65dcd5d339=20100644=0A---=20a/guix/build-system/cargo.scm=0A= +++=20b/guix/build-system/cargo.scm=0A@@=20-121,6=20+121,68=20@@=20to=20= NAME=20and=20VERSION."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:outputs=20(cons=20= "src"=20outputs)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:guile-for-build=20= guile-for-build))=0A=20=0A+(define=20package-target-inputs=0A+=20=20= (lambda=20(pkg)=0A+=20=20=20=20(append=20(package-inputs=20pkg)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20(package-propagated-inputs=20pkg))))=0A+=0A= +(define*=20(expand-inputs=20inputs)=0A+=20=20"Return=20the=20transitive=20= target=20inputs=20for=20each=20package=20in=20INPUTS.=0A+=0A+Cargo=20= requires=20all=20transitive=20crate=20dependencies=20to=20be=20available=20= in=20its=20index,=0A+even=20if=20they=20are=20optional=20(this=20is=20so=20= it=20can=20generate=20deterministic=0A+Cargo.lock=20files=20regardless=20= of=20the=20target=20platform=20or=20enabled=20features).=0A+=0A+Rather=20= than=20burden=20the=20package=20definition=20to=20expand=20these,=20= we'll=20automate=0A+that=20process=20in=20the=20build=20system."=0A+=20=20= (package-transitive-dependencies=20inputs=20package-target-inputs))=0A+=0A= +(define*=20(expand-native-inputs=20native-inputs)=0A+=20=20"Return=20= the=20transitive=20target=20inputs=20for=20each=20package=20in=20= NATIVE-INPUTS.=0A+=0A+We=20need=20all=20transitive=20crate=20= dependencies=20for=20any=20cargo=20dev-dependencies,=0A+but=20this=20is=20= only=20needed=20when=20building/testing=20a=20crate=20directly=0A+(i.e.=20= we=20will=20never=20need=20transitive=20dev-dependencies=20for=20any=20= dependency=0A+crates).=0A+=0A+In=20addition,=20we=20need=20to=20modify=20= any=20native-inputs=20to=20avoid=20any=20apparent=0A+cycles.=20Cargo=20= does=20not=20permit=20cyclic=20dependencies=20between=20crates,=20= however,=0A+it=20permits=20cycles=20to=20occur=20via=20dev-dependencies.=20= For=20example,=20if=20crate=20X=0A+depends=20on=20crate=20Y,=20crate=20= Y's=20tests=20could=20pull=20in=20crate=20X=20to=20to=20verify=0A= +everything=20builds=20properly=20(this=20is=20a=20rare=20scenario,=20= but=20it=20it=20happens=20for=0A+example=20with=20the=20`proc-macro2`=20= and=20`quote`=20crates).=20This=20is=20allowed=20by=20cargo=0A+because=20= tests=20are=20built=20as=20a=20pseudo-crate=20which=20happens=20to=20= depend=20on=20the=0A+X=20and=20Y=20crates,=20forming=20an=20acyclic=20= graph.=0A+=0A+Cargo=20ultimately=20needs=20only=20the=20crate=20sources=20= available=20when=20doing=20a=20build.=0A+Ultimately,=20if=20a=20cycle=20= is=20detected,=20we=20can=20break=20it=20by=20replacing=20the=20current=0A= +crate=20we're=20trying=20to=20build=20with=20a=20no-op=20build=20which=20= only=20packages=20the=20crate=0A+source;=20cargo=20will=20then=20find=20= the=20source=20available=20in=20its=20index=20and=20build=20things=0A= +properly."=0A+=20=20(map=0A+=20=20=20=20(lambda=20(dep)=0A+=20=20=20=20=20= =20(match=20dep=0A+=20=20=20=20=20=20=20((name=20input=20rest=20...)=0A+=20= =20=20=20=20=20=20=20;;=20TODO:=20Starting=20out=20real=20simple=20by=20= ensuring=20no=20native-inputs=20are=0A+=20=20=20=20=20=20=20=20;;=20= actually=20built=20so=20we=20don't=20accidentally=20hit=20a=20cycle.=20= We=20can=20revisit=0A+=20=20=20=20=20=20=20=20;;=20this=20later=20and=20= more=20intelligently=20replace=20any=20dependency=20on=20the=20cycle=0A+=20= =20=20=20=20=20=20=20;;=20root=20with=20a=20version=20of=20the=20root=20= with=20#:skip-build?=20enabled.=0A+=20=20=20=20=20=20=20=20;;=0A+=20=20=20= =20=20=20=20=20;;=20Right=20now=20this=20means=20that=20if=20a=20package=20= shows=20up=20in=20both=20input=0A+=20=20=20=20=20=20=20=20;;=20and=20= native-input=20closures,=20we'll=20try=20to=20build=20it's=20src=20= output=20twice.=0A+=20=20=20=20=20=20=20=20;;=0A+=20=20=20=20=20=20=20=20= ;;=20This=20also=20means=20that=20we're=20potentially=20setting=20the=20= #:skip-build?=0A+=20=20=20=20=20=20=20=20;;=20flag=20on=20non=20= cargo-build-system=20packages,=20but=20this=20should=20be=20okay=0A+=20=20= =20=20=20=20=20=20;;=20for=20now.=0A+=20=20=20=20=20=20=20=20(let*=20= ((translated-input=20(package=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(inherit=20= input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(inputs=20'())=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(propagated-inputs=20'())=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (native-inputs=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(arguments=20= '(#:skip-build?=20#t)))))=0A+=20=20=20=20=20=20=20=20=20=20`(,name=20= ,translated-input=20,@rest)))))=0A+=20=20=20= (package-transitive-dependencies=20native-inputs=20= package-target-inputs)))=0A+=0A=20(define*=20(lower=20name=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20#:key=20source=20inputs=20= native-inputs=20outputs=20system=20target=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(rust=20(default-rust))=0A@@=20-139,13=20+201,13=20= @@=20to=20NAME=20and=20VERSION."=0A=20=20=20=20=20=20=20=20=20=20= (host-inputs=20`(,@(if=20source=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20`(("source"=20= ,source))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20'())=0A-=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20,@inputs=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20,@(expand-inputs=20inputs)=0A= =20=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20;;=20Keep=20the=20standard=20inputs=20of=20'gnu-build-system'=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ,@(standard-packages)))=0A=20=20=20=20=20=20=20=20=20=20(build-inputs=20= `(("cargo"=20,rust=20"cargo")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20("rustc"=20,rust)=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ,@native-inputs))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20,@(expand-native-inputs=20native-inputs)))=0A=20=20=20= =20=20=20=20=20=20=20(outputs=20outputs)=0A=20=20=20=20=20=20=20=20=20=20= (build=20cargo-build)=0A=20=20=20=20=20=20=20=20=20=20(arguments=20= (strip-keyword-arguments=20private-keywords=20arguments)))))=0A--=20=0A= 2.21.0=0A=0A= --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6 Content-Disposition: attachment; filename=0003-gnu-crate-add-unicode-xid.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0003-gnu-crate-add-unicode-xid.patch" Content-Transfer-Encoding: quoted-printable =46rom=20922e985c684b4fcafe30f1c25d698396ffb58191=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Tue,=2016=20Apr=202019=2003:40:14=20-0700=0ASubject:=20[PATCH=20= 3/4]=20gnu:=20crate:=20add=20unicode-xid=0A=0Agnu/local.mk:=20= (GNU_SYSTEM_MODULES):=20Add=20new=20file.=0Agnu/packages/crates-io.scm:=20= (rust-unicode-xid):=20New=20variable.=0A---=0A=20gnu/local.mk=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=201=20+=0A=20= gnu/packages/crates-io.scm=20|=2045=20= ++++++++++++++++++++++++++++++++++++++=0A=202=20files=20changed,=2046=20= insertions(+)=0A=20create=20mode=20100644=20gnu/packages/crates-io.scm=0A= =0Adiff=20--git=20a/gnu/local.mk=20b/gnu/local.mk=0Aindex=20= 41924a7de5..bf44af76b7=20100644=0A---=20a/gnu/local.mk=0A+++=20= b/gnu/local.mk=0A@@=20-121,6=20+121,7=20@@=20GNU_SYSTEM_MODULES=20=3D=09=09= =09=09\=0A=20=20=20%D%/packages/cpp.scm=20=09=09=09=09\=0A=20=20=20= %D%/packages/cppi.scm=09=09=09=09\=0A=20=20=20%D%/packages/cran.scm=09=09= =09=09\=0A+=20=20%D%/packages/crates-io.scm=09=09=09\=0A=20=20=20= %D%/packages/cross-base.scm=09=09=09\=0A=20=20=20%D%/packages/crypto.scm=09= =09=09\=0A=20=20=20%D%/packages/cryptsetup.scm=09=09=09\=0Adiff=20--git=20= a/gnu/packages/crates-io.scm=20b/gnu/packages/crates-io.scm=0Anew=20file=20= mode=20100644=0Aindex=200000000000..533fe0d21e=0A---=20/dev/null=0A+++=20= b/gnu/packages/crates-io.scm=0A@@=20-0,0=20+1,45=20@@=0A+;;;=20GNU=20= Guix=20---=20Functional=20package=20management=20for=20GNU=0A+;;;=20= Copyright=20=C2=A9=202019=20Ivan=20Petkov=20=0A= +;;;=0A+;;;=20This=20file=20is=20part=20of=20GNU=20Guix.=0A+;;;=0A+;;;=20= GNU=20Guix=20is=20free=20software;=20you=20can=20redistribute=20it=20= and/or=20modify=20it=0A+;;;=20under=20the=20terms=20of=20the=20GNU=20= General=20Public=20License=20as=20published=20by=0A+;;;=20the=20Free=20= Software=20Foundation;=20either=20version=203=20of=20the=20License,=20or=20= (at=0A+;;;=20your=20option)=20any=20later=20version.=0A+;;;=0A+;;;=20GNU=20= Guix=20is=20distributed=20in=20the=20hope=20that=20it=20will=20be=20= useful,=20but=0A+;;;=20WITHOUT=20ANY=20WARRANTY;=20without=20even=20the=20= implied=20warranty=20of=0A+;;;=20MERCHANTABILITY=20or=20FITNESS=20FOR=20= A=20PARTICULAR=20PURPOSE.=20=20See=20the=0A+;;;=20GNU=20General=20Public=20= License=20for=20more=20details.=0A+;;;=0A+;;;=20You=20should=20have=20= received=20a=20copy=20of=20the=20GNU=20General=20Public=20License=0A+;;;=20= along=20with=20GNU=20Guix.=20=20If=20not,=20see=20= .=0A+=0A+(define-module=20(gnu=20packages=20= crates-io)=0A+=20=20#:use-module=20(guix=20build-system=20cargo)=0A+=20=20= #:use-module=20(guix=20download)=0A+=20=20#:use-module=20((guix=20= licenses)=20#:prefix=20license:)=0A+=20=20#:use-module=20(guix=20= packages))=0A+=0A+(define-public=20rust-unicode-xid=0A+=20=20(package=0A= +=20=20=20=20(name=20"rust-unicode-xid")=0A+=20=20=20=20(version=20= "0.1.0")=0A+=20=20=20=20(source=0A+=20=20=20=20=20=20(origin=0A+=20=20=20= =20=20=20=20=20(method=20url-fetch)=0A+=20=20=20=20=20=20=20=20(uri=20= (crate-uri=20"unicode-xid"=20version))=0A+=20=20=20=20=20=20=20=20= (file-name=0A+=20=20=20=20=20=20=20=20=20=20(string-append=20name=20"-"=20= version=20".tar.gz"))=0A+=20=20=20=20=20=20=20=20(sha256=0A+=20=20=20=20=20= =20=20=20=20=20(base32=0A+=20=20=20=20=20=20=20=20=20=20=20=20= "1z57lqh4s18rr4x0j4fw4fmp9hf9346h0kmdgqsqx0fhjr3k0wpw"))))=0A+=20=20=20=20= (build-system=20cargo-build-system)=0A+=20=20=20=20(home-page=0A+=20=20=20= =20=20=20"https://github.com/unicode-rs/unicode-xid")=0A+=20=20=20=20= (synopsis=20"Determine=20Unicode=20XID=20related=20properties")=0A+=20=20= =20=20(description=20"Determine=20whether=20characters=20have=20the=20= XID_Start=0A+or=20XID_Continue=20properties=20according=20to=20Unicode=20= Standard=20Annex=20#31.")=0A+=20=20=20=20;;=20Dual=20licensed.=0A+=20=20=20= =20(license=20(list=20license:asl2.0=20license:expat))))=0A--=20=0A= 2.21.0=0A=0A= --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6 Content-Disposition: attachment; filename=0004-gnu-crate-Add-proc-macro2-and-quote.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0004-gnu-crate-Add-proc-macro2-and-quote.patch" Content-Transfer-Encoding: quoted-printable =46rom=2070f96162e55ac1d1116a5d94134d61aa769f8be7=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Tue,=2016=20Apr=202019=2003:42:27=20-0700=0ASubject:=20[PATCH=20= 4/4]=20gnu:=20crate:=20Add=20proc-macro2=20and=20quote=0A=0A*=20= gnu/packages/crates-io.scm:=20(rust-proc-macro2):=20New=20variable.=0A= (rust-quote):=20New=20variable.=0A---=0A=20gnu/packages/crates-io.scm=20= |=2048=20++++++++++++++++++++++++++++++++++++++=0A=201=20file=20changed,=20= 48=20insertions(+)=0A=0Adiff=20--git=20a/gnu/packages/crates-io.scm=20= b/gnu/packages/crates-io.scm=0Aindex=20533fe0d21e..90e08731ea=20100644=0A= ---=20a/gnu/packages/crates-io.scm=0A+++=20b/gnu/packages/crates-io.scm=0A= @@=20-43,3=20+43,51=20@@=0A=20or=20XID_Continue=20properties=20according=20= to=20Unicode=20Standard=20Annex=20#31.")=0A=20=20=20=20=20;;=20Dual=20= licensed.=0A=20=20=20=20=20(license=20(list=20license:asl2.0=20= license:expat))))=0A+=0A+(define-public=20rust-proc-macro2=0A+=20=20= (package=0A+=20=20=20=20(name=20"rust-proc-macro2")=0A+=20=20=20=20= (version=20"0.4.27")=0A+=20=20=20=20(source=0A+=20=20=20=20=20=20(origin=0A= +=20=20=20=20=20=20=20=20(method=20url-fetch)=0A+=20=20=20=20=20=20=20=20= (uri=20(crate-uri=20"proc-macro2"=20version))=0A+=20=20=20=20=20=20=20=20= (file-name=0A+=20=20=20=20=20=20=20=20=20=20(string-append=20name=20"-"=20= version=20".tar.gz"))=0A+=20=20=20=20=20=20=20=20(sha256=0A+=20=20=20=20=20= =20=20=20=20=20(base32=0A+=20=20=20=20=20=20=20=20=20=20=20=20= "05c92v787snyaq4ss16vxc9mdv6zndfgsdq8k3hnnyffmsf7ycad"))))=0A+=20=20=20=20= (build-system=20cargo-build-system)=0A+=20=20=20=20(native-inputs=0A+=20=20= =20=20=20=20`(("rust-quote"=20,rust-quote=20"src")))=0A+=20=20=20=20= (inputs=0A+=20=20=20=20=20=20`(("rust-unicode-xid"=20,rust-unicode-xid=20= "src")))=0A+=20=20=20=20(home-page=20= "https://github.com/alexcrichton/proc-macro2")=0A+=20=20=20=20(synopsis=20= "Stable=20implementation=20of=20the=20upcoming=20new=20`proc_macro`=20= API")=0A+=20=20=20=20(description=20"This=20package=20provides=20a=20= stable=20implementation=20of=20the=20upcoming=20new=0A+`proc_macro`=20= API.=20=20Comes=20with=20an=20option,=20off=20by=20default,=20to=20also=20= reimplement=20itself=0A+in=20terms=20of=20the=20upstream=20unstable=20= API.")=0A+=20=20=20=20;;=20Dual=20licensed.=0A+=20=20=20=20(license=20= (list=20license:asl2.0=20license:expat))))=0A+=0A+(define-public=20= rust-quote=0A+=20=20(package=0A+=20=20=20=20(name=20"rust-quote")=0A+=20=20= =20=20(version=20"0.6.12")=0A+=20=20=20=20(source=0A+=20=20=20=20=20=20= (origin=0A+=20=20=20=20=20=20=20=20(method=20url-fetch)=0A+=20=20=20=20=20= =20=20=20(uri=20(crate-uri=20"quote"=20version))=0A+=20=20=20=20=20=20=20= =20(file-name=0A+=20=20=20=20=20=20=20=20=20=20(string-append=20name=20= "-"=20version=20".tar.gz"))=0A+=20=20=20=20=20=20=20=20(sha256=0A+=20=20=20= =20=20=20=20=20=20=20(base32=0A+=20=20=20=20=20=20=20=20=20=20=20=20= "1nw0klza45hf127kfyrpxsxd5jw2l6h21qxalil3hkr7bnf7kx7s"))))=0A+=20=20=20=20= (build-system=20cargo-build-system)=0A+=20=20=20=20(inputs=0A+=20=20=20=20= =20=20`(("rust-proc-macro2"=20,rust-proc-macro2=20"src")))=0A+=20=20=20=20= (home-page=20"https://github.com/dtolnay/quote")=0A+=20=20=20=20= (synopsis=20"Quasi-quoting=20macro=20quote!(...)")=0A+=20=20=20=20= (description=20"Quasi-quoting=20macro=20quote!(...)")=0A+=20=20=20=20;;=20= Dual=20licensed.=0A+=20=20=20=20(license=20(list=20license:asl2.0=20= license:expat))))=0A--=20=0A2.21.0=0A=0A= --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_DA76C889-91C6-47B0-A08C-2578701A12D6--