From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:57201) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1ha7dT-0005D4-UC for guix-patches@gnu.org; Sun, 09 Jun 2019 19:54:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ha7dS-0000t0-Si for guix-patches@gnu.org; Sun, 09 Jun 2019 19:54:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:42064) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ha7dS-0000so-J5 for guix-patches@gnu.org; Sun, 09 Jun 2019 19:54:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ha7dS-0007dX-Ga for guix-patches@gnu.org; Sun, 09 Jun 2019 19:54:02 -0400 Subject: [bug#35318] [PATCH] Update cargo-build-system to expand package inputs Resent-Message-ID: Content-Type: multipart/mixed; boundary="Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E" Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\)) From: Ivan Petkov In-Reply-To: Date: Sun, 9 Jun 2019 16:53:48 -0700 Message-Id: References: <87ftpsnhal.fsf@gnu.org> <2C03880B-F90E-4949-9637-DC918B6D40A0@gmail.com> <074E4899-C4FF-4A76-8E97-093378D2F8D5@gmail.com> <87pnojvqdu.fsf@gnu.org> <6A0A0108-A722-4D73-85B7-E61AB8230026@gmail.com> <87ftoj9as8.fsf@gmail.com> 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: Chris Marusich Cc: 35318@debbugs.gnu.org --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 I=E2=80=99ve updated the patch series with the following improvements: * I've applied any naming feedback which came from Ludo * I've changed the cargo-build-system to only unpack inputs into the = cargo vendor directory if the following applies: - The input is a path to a gzip tarball - The archive contains a file called Cargo.toml at its root - This means that we no longer require crate sources to include a ".crate" extension Whew, given that this has gotten pretty long, I'd be happy to land this = as it is for now (barring any blocking issues!), and iterating further going = forward! Thanks again to everyone for their feedback! =E2=80=94Ivan --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0001-build-system-cargo-expand-transitive-crate-sources.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-build-system-cargo-expand-transitive-crate-sources.patch" Content-Transfer-Encoding: quoted-printable =46rom=20c063c354c02df84ae2a3aaad81175725622cc9d2=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= 1/7]=20build-system/cargo:=20expand=20transitive=20crate=20sources=0A=0A= *=20guix/build/cargo:=20(package-cargo-inputs):=20Add=20it.=0A= (package-cargo-development-inputs):=20Add=20it.=0A(crate-clsoure):=20Add=20= it.=0A(expand-crate-sources):=20Add=20it.=0A(lower):=20New=20= cargo-inputs=20and=20cargo-development-inputs=20keywords.=0AUse=20= expand-crate-sources.=0A(private-keywords):=20Add=20new=20keywords.=0A= ---=0A=20guix/build-system/cargo.scm=20|=20115=20= +++++++++++++++++++++++++++++++++++-=0A=201=20file=20changed,=20114=20= insertions(+),=201=20deletion(-)=0A=0Adiff=20--git=20= a/guix/build-system/cargo.scm=20b/guix/build-system/cargo.scm=0Aindex=20= dc137421e9..828382678d=20100644=0A---=20a/guix/build-system/cargo.scm=0A= +++=20b/guix/build-system/cargo.scm=0A@@=20-29,6=20+29,8=20@@=0A=20=20=20= #:use-module=20(guix=20build-system)=0A=20=20=20#:use-module=20(guix=20= build-system=20gnu)=0A=20=20=20#:use-module=20(ice-9=20match)=0A+=20=20= #:use-module=20(ice-9=20vlist)=0A+=20=20#:use-module=20(srfi=20srfi-1)=0A= =20=20=20#:use-module=20(srfi=20srfi-26)=0A=20=20=20#:export=20= (%cargo-build-system-modules=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= %cargo-utils-modules=0A@@=20-121,15=20+123,125=20@@=20to=20NAME=20and=20= VERSION."=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=20guile-for-build))=0A=20=0A= +(define=20(package-cargo-inputs=20p)=0A+=20=20(apply=0A+=20=20=20=20= (lambda*=20(#:key=20(cargo-inputs=20'())=20#:allow-other-keys)=0A+=20=20=20= =20=20=20cargo-inputs)=0A+=20=20=20=20(package-arguments=20p)))=0A+=0A= +(define=20(package-cargo-development-inputs=20p)=0A+=20=20(apply=0A+=20=20= =20=20(lambda*=20(#:key=20(cargo-development-inputs=20'())=20= #:allow-other-keys)=0A+=20=20=20=20=20=20cargo-development-inputs)=0A+=20= =20=20=20(package-arguments=20p)))=0A+=0A+(define=20(crate-closure=20= inputs)=0A+=20=20"Return=20the=20closure=20of=20INPUTS=20when=20= considering=20the=20'cargo-inputs'=20and=0A+'cargod-dev-deps'=20edges.=20= =20Omit=20duplicate=20inputs,=20except=20for=20those=0A+already=20= present=20in=20INPUTS=20itself.=0A+=0A+This=20is=20implemented=20as=20a=20= breadth-first=20traversal=20such=20that=20INPUTS=20is=0A+preserved,=20= and=20only=20duplicate=20extracted=20inputs=20are=20removed.=0A+=0A= +Forked=20from=20((guix=20packages)=20transitive-inputs)=20since=20this=20= extraction=0A+uses=20slightly=20different=20rules=20compared=20to=20the=20= rest=20of=20Guix=20(i.e.=20we=0A+do=20not=20extract=20the=20conventional=20= inputs)."=0A+=20=20(define=20(seen?=20seen=20item)=0A+=20=20=20=20;;=20= FIXME:=20We're=20using=20pointer=20identity=20here,=20which=20is=20= extremely=20sensitive=0A+=20=20=20=20;;=20to=20memoization=20in=20= package-producing=20procedures;=20see=0A+=20=20=20=20;;=20= .=0A+=20=20=20=20(vhash-assq=20item=20seen))=0A= +=0A+=20=20(let=20loop=20((inputs=20=20=20=20=20inputs)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20(result=20=20=20=20=20'())=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20(propagated=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20(first?=20=20=20=20=20#t)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (seen=20=20=20=20=20=20=20vlist-null))=0A+=20=20=20=20(match=20inputs=0A= +=20=20=20=20=20=20(()=0A+=20=20=20=20=20=20=20(if=20(null?=20= propagated)=0A+=20=20=20=20=20=20=20=20=20=20=20(reverse=20result)=0A+=20= =20=20=20=20=20=20=20=20=20=20(loop=20(reverse=20(concatenate=20= propagated))=20result=20'()=20#f=20seen)))=0A+=20=20=20=20=20=20(((and=20= input=20(label=20(?=20package?=20package)))=20rest=20...)=0A+=20=20=20=20= =20=20=20(if=20(and=20(not=20first?)=20(seen?=20seen=20package))=0A+=20=20= =20=20=20=20=20=20=20=20=20(loop=20rest=20result=20propagated=20first?=20= seen)=0A+=20=20=20=20=20=20=20=20=20=20=20(loop=20rest=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(cons=20input=20result)=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20(package-cargo-inputs=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=20propagated)=0A+=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= (vhash-consq=20package=20package=20seen))))=0A+=20=20=20=20=20=20((input=20= rest=20...)=0A+=20=20=20=20=20=20=20(loop=20rest=20(cons=20input=20= result)=20propagated=20first?=20seen)))))=0A+=0A+(define=20= (expand-crate-sources=20cargo-inputs=20cargo-development-inputs)=0A+=20=20= "Extract=20all=20transitive=20sources=20for=20CARGO-INPUTS=20and=20= CARGO-DEVELOPMENT-INPUTS=0A+along=20their=20'cargo-inputs'=20edges.=0A+=0A= +Cargo=20requires=20all=20transitive=20crate=20dependencies'=20sources=20= to=20be=20available=0A+in=20its=20index,=20even=20if=20they=20are=20= optional=20(this=20is=20so=20it=20can=20generate=0A+deterministic=20= Cargo.lock=20files=20regardless=20of=20the=20target=20platform=20or=20= enabled=0A+features).=20Thus=20we=20need=20all=20transitive=20crate=20= dependencies=20for=20any=20cargo=0A+dev-dependencies,=20but=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=20crates).=0A+=0A+Another=20complication=20arises=20due=20= potential=20dependency=20cycles=20from=20Guix's=0A+perspective:=20= Although=20cargo=20does=20not=20permit=20cyclic=20dependencies=20between=20= crates,=0A+however,=20it=20permits=20cycles=20to=20occur=20via=20= dev-dependencies.=20For=20example,=20if=20crate=0A+X=20depends=20on=20= crate=20Y,=20crate=20Y's=20tests=20could=20pull=20in=20crate=20X=20to=20= to=20verify=0A+everything=20builds=20properly=20(this=20is=20a=20rare=20= scenario,=20but=20it=20it=20happens=20for=0A+example=20with=20the=20= `proc-macro2`=20and=20`quote`=20crates).=20This=20is=20allowed=20by=20= cargo=0A+because=20tests=20are=20built=20as=20a=20pseudo-crate=20which=20= happens=20to=20depend=20on=20the=0A+X=20and=20Y=20crates,=20forming=20an=20= acyclic=20graph.=0A+=0A+We=20can=20side=20step=20this=20problem=20by=20= only=20considering=20regular=20cargo=20dependencies=0A+since=20they=20= are=20guaranteed=20to=20not=20have=20cycles.=20We=20can=20further=20= resolve=20any=0A+potential=20dev-dependency=20cycles=20by=20extracting=20= package=20sources=20(which=20never=20have=0A+any=20dependencies=20and=20= thus=20no=20cycles=20can=20exist).=0A+=0A+There=20are=20several=20= implications=20of=20this=20decision:=0A+*=20Building=20a=20package=20= definition=20does=20not=20require=20actually=20building/checking=0A+any=20= dependent=20crates.=20This=20can=20be=20a=20benefits:=0A+=20-=20For=20= example,=20sometimes=20a=20crate=20may=20have=20an=20optional=20= dependency=20on=20some=20OS=0A+=20specific=20package=20which=20cannot=20= be=20built=20or=20run=20on=20the=20current=20system.=20This=0A+=20= approach=20means=20that=20the=20build=20will=20not=20fail=20if=20cargo=20= ends=20up=20internally=20ignoring=0A+=20the=20dependency.=0A+=20-=20It=20= avoids=20waiting=20for=20quadratic=20builds=20from=20source:=20cargo=20= always=20builds=0A+=20dependencies=20within=20the=20current=20workspace.=20= This=20is=20largely=20due=20to=20Rust=20not=0A+=20having=20a=20stable=20= ABI=20and=20other=20resolutions=20that=20cargo=20applies.=20This=20means=20= that=0A+=20if=20we=20have=20a=20depencency=20chain=20of=20X=20->=20Y=20= ->=20Z=20and=20we=20build=20each=20definition=0A+=20independently=20the=20= following=20will=20happen:=0A+=20=20*=20Cargo=20will=20build=20and=20= test=20crate=20Z=0A+=20=20*=20Cargo=20will=20build=20crate=20Z=20in=20= Y's=20workspace,=20then=20build=20and=20test=20Y=0A+=20=20*=20Cargo=20= will=20build=20crates=20Y=20and=20Z=20in=20X's=20workspace,=20then=20= build=20and=20test=20X=0A+*=20But=20there=20are=20also=20some=20= downsides=20with=20this=20approach:=0A+=20=20-=20If=20a=20dependent=20= crate=20is=20subtly=20broken=20on=20the=20system=20(i.e.=20it=20builds=20= but=20its=0A+=20=20tests=20fail)=20the=20consuming=20crates=20may=20= build=20and=20test=20successfully=20but=0A+=20=20actually=20fail=20= during=20normal=20usage=20(however,=20the=20CI=20will=20still=20build=20= all=0A+=20=20packages=20which=20will=20give=20visibility=20in=20case=20= packages=20suddenly=20break).=0A+=20=20-=20Because=20crates=20aren't=20= declared=20as=20regular=20inputs,=20other=20Guix=20facilities=0A+=20=20= such=20as=20tracking=20package=20graphs=20may=20not=20work=20by=20= default=20(however,=20this=20is=0A+=20=20something=20that=20can=20always=20= be=20extended=20or=20reworked=20in=20the=20future)."=0A+=20=20= (filter-map=0A+=20=20=20=20(match-lambda=0A+=20=20=20=20=20=20((label=20= (?=20package?=20p))=0A+=20=20=20=20=20=20=20(list=20label=20= (package-source=20p)))=0A+=20=20=20=20=20=20((label=20input)=0A+=20=20=20= =20=20=20=20(list=20label=20input)))=0A+=20=20=20=20(crate-closure=20= (append=20cargo-inputs=20cargo-development-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=20= source=20inputs=20native-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=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(cargo-inputs=20'())=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(cargo-development-inputs=20'())=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:allow-other-keys=0A=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:rest=20arguments)=0A=20=20= =20"Return=20a=20bag=20for=20NAME."=0A=20=0A=20=20=20(define=20= private-keywords=0A-=20=20=20=20'(#:source=20#:target=20#:rust=20= #:inputs=20#:native-inputs=20#:outputs))=0A+=20=20=20=20'(#:source=20= #:target=20#:rust=20#:inputs=20#:native-inputs=20#:outputs=0A+=20=20=20=20= =20=20#:cargo-inputs=20#:cargo-development-inputs))=0A=20=0A=20=20=20= (and=20(not=20target)=20;;=20TODO:=20support=20cross-compilation=0A=20=20= =20=20=20=20=20=20(bag=0A@@=20-145,6=20+257,7=20@@=20to=20NAME=20and=20= VERSION."=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= ,@(expand-crate-sources=20cargo-inputs=20cargo-development-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=20= ,@native-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=0A2.21.0=0A=0A= --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0002-build-system-cargo-use-sources-from-package-sources.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0002-build-system-cargo-use-sources-from-package-sources.patch" Content-Transfer-Encoding: quoted-printable =46rom=2093d8e04dc6d863213ad240ab11147a140bd665a9=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Thu,=2016=20May=202019=2023:02:12=20-0700=0ASubject:=20[PATCH=20= 2/7]=20build-system/cargo:=20use=20sources=20from=20package=20sources=0A=0A= *=20guix/build/cargo-build-system:=20(configure):=20Expand=20crate=20= tarballs=20in=0Avendor=20directory.=0A---=0A=20= guix/build/cargo-build-system.scm=20|=2035=20= +++++++++++++++++++++++++------=0A=201=20file=20changed,=2029=20= insertions(+),=206=20deletions(-)=0A=0Adiff=20--git=20= a/guix/build/cargo-build-system.scm=20= b/guix/build/cargo-build-system.scm=0Aindex=209f44bd6ee9..b368074e8a=20= 100644=0A---=20a/guix/build/cargo-build-system.scm=0A+++=20= b/guix/build/cargo-build-system.scm=0A@@=20-54,6=20+54,22=20@@=0A=20=20=20= =20=20=20=20=20=20=20(bin-dep?=20(lambda=20(dep)=20(find=20bin?=20= (get-kinds=20dep)))))=0A=20=20=20=20=20(find=20bin-dep?=20= (manifest-targets))))=0A=20=0A+(define=20(crate-src?=20path)=0A+=20=20= "Check=20if=20PATH=20refers=20to=20a=20crate=20source,=20namely=20a=20= gzipped=20tarball=20with=20a=0A+Cargo.toml=20file=20present=20at=20its=20= root."=0A+=20=20=20=20(and=20(gzip-file?=20path)=0A+=20=20=20=20=20=20=20= =20=20;;=20First=20we=20print=20out=20all=20file=20names=20within=20the=20= tarball=20to=20see=20if=20it=0A+=20=20=20=20=20=20=20=20=20;;=20looks=20= like=20the=20source=20of=20a=20crate.=20However,=20the=20tarball=20will=20= include=0A+=20=20=20=20=20=20=20=20=20;;=20an=20extra=20path=20component=20= which=20we=20would=20like=20to=20ignore=20(since=20we're=0A+=20=20=20=20=20= =20=20=20=20;;=20interested=20in=20checking=20if=20a=20Cargo.toml=20= exists=20at=20the=20root=20of=20the=0A+=20=20=20=20=20=20=20=20=20;;=20= archive,=20but=20not=20nested=20anywhere=20else).=20We=20do=20this=20by=20= cutting=20up=0A+=20=20=20=20=20=20=20=20=20;;=20each=20output=20line=20= and=20only=20looking=20at=20the=20second=20component.=20We=20then=0A+=20=20= =20=20=20=20=20=20=20;;=20check=20if=20it=20matches=20Cargo.toml=20= exactly=20and=20short=20circuit=20if=20it=20does.=0A+=20=20=20=20=20=20=20= =20=20(zero?=20(apply=20system*=20(list=20"sh"=20"-c"=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=20=20(string-append=20"tar=20-tf=20"=20path=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=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"=20|=20= cut=20-d/=20-f2"=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=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20"=20|=20grep=20-q=20'^Cargo.toml$'"))))))=0A+=0A= =20(define*=20(configure=20#:key=20inputs=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(vendor-dir=20"guix-vendor")=0A=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= #:allow-other-keys)=0A@@=20-67,14=20+83,21=20@@=0A=20=20=20(for-each=0A=20= =20=20=20=20(match-lambda=0A=20=20=20=20=20=20=20((name=20.=20path)=0A-=20= =20=20=20=20=20=20(let*=20((rust-share=20(string-append=20path=20= "/share/rust-source"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (basepath=20(basename=20path))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(link-dir=20(string-append=20vendor-dir=20"/"=20basepath)))=0A-=20=20=20= =20=20=20=20=20=20(and=20(file-exists?=20rust-share)=0A+=20=20=20=20=20=20= =20(let*=20((basepath=20(basename=20path))=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(crate-dir=20(string-append=20vendor-dir=20"/"=20= basepath)))=0A+=20=20=20=20=20=20=20=20=20(and=20(crate-src?=20path)=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Gracefully=20handle=20= duplicate=20inputs=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20(not=20= (file-exists?=20link-dir))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (symlink=20rust-share=20link-dir)))))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(not=20(file-exists?=20crate-dir))=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(mkdir-p=20crate-dir)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20;;=20Cargo=20crates=20are=20simply=20gzipped=20tarballs=20but=20= with=20a=20.crate=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20= extension.=20We=20expand=20the=20source=20to=20a=20directory=20name=20we=20= control=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20so=20that=20we=20= can=20generate=20any=20cargo=20checksums.=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20;;=20The=20--strip-components=20argument=20is=20needed=20to=20= prevent=20creating=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20an=20= extra=20directory=20within=20`crate-dir`.=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(invoke=20"tar"=20"xvf"=20path=20"-C"=20crate-dir=20= "--strip-components"=20"1")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (generate-checksums=20crate-dir)))))=0A=20=20=20=20=20inputs)=0A+=0A=20=20= =20;;=20Configure=20cargo=20to=20actually=20use=20this=20new=20= directory.=0A=20=20=20(mkdir-p=20".cargo")=0A=20=20=20(let=20((port=20= (open-file=20".cargo/config"=20"w"=20#:encoding=20"utf-8")))=0A--=20=0A= 2.21.0=0A=0A= --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0003-build-system-cargo-don-t-copy-source-as-an-output.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0003-build-system-cargo-don-t-copy-source-as-an-output.patch" Content-Transfer-Encoding: quoted-printable =46rom=20fec67a58e05588813bfc4808bd0792dd8f7564c6=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Thu,=2016=20May=202019=2023:05:50=20-0700=0ASubject:=20[PATCH=20= 3/7]=20build-system/cargo:=20don't=20copy=20source=20as=20an=20output=0A=0A= *=20guix/build-system/cargo:=20= (cargo-build)[build-expression->derivation]:=0ADon't=20add=20"src"=20= output.=0A*=20guix/build/cargo-build-system:=20(install-source):=20= Delete=20it.=0A(%standard-phases):=20Delete=20'install-source.=0A---=0A=20= guix/build-system/cargo.scm=20=20=20=20=20=20=20|=20=202=20+-=0A=20= guix/build/cargo-build-system.scm=20|=2019=20-------------------=0A=202=20= files=20changed,=201=20insertion(+),=2020=20deletions(-)=0A=0Adiff=20= --git=20a/guix/build-system/cargo.scm=20b/guix/build-system/cargo.scm=0A= index=20828382678d..fa211d456d=20100644=0A---=20= a/guix/build-system/cargo.scm=0A+++=20b/guix/build-system/cargo.scm=0A@@=20= -120,7=20+120,7=20@@=20to=20NAME=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#:inputs=20inputs=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#:system=20system=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#:modules=20imported-modules=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= #: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#:outputs=20= outputs=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=20(define=20(package-cargo-inputs=20p)=0Adiff=20= --git=20a/guix/build/cargo-build-system.scm=20= b/guix/build/cargo-build-system.scm=0Aindex=20b368074e8a..1f36304b15=20= 100644=0A---=20a/guix/build/cargo-build-system.scm=0A+++=20= b/guix/build/cargo-build-system.scm=0A@@=20-140,24=20+140,6=20@@=20= directory=20=3D=20'"=20port)=0A=20(define=20(touch=20file-name)=0A=20=20=20= (call-with-output-file=20file-name=20(const=20#t)))=0A=20=0A-(define*=20= (install-source=20#:key=20inputs=20outputs=20#:allow-other-keys)=0A-=20=20= "Install=20the=20source=20for=20a=20given=20Cargo=20package."=0A-=20=20= (let*=20((out=20(assoc-ref=20outputs=20"out"))=0A-=20=20=20=20=20=20=20=20= =20(src=20(assoc-ref=20inputs=20"source"))=0A-=20=20=20=20=20=20=20=20=20= (rsrc=20(string-append=20(assoc-ref=20outputs=20"src")=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= "/share/rust-source")))=0A-=20=20=20=20(mkdir-p=20rsrc)=0A-=20=20=20=20= ;;=20Rust=20doesn't=20have=20a=20stable=20ABI=20yet.=20Because=20of=20= this=0A-=20=20=20=20;;=20Cargo=20doesn't=20have=20a=20search=20path=20= for=20binaries=20yet.=0A-=20=20=20=20;;=20Until=20this=20changes=20we=20= are=20working=20around=20this=20by=0A-=20=20=20=20;;=20vendoring=20the=20= crates'=20sources=20by=20symlinking=20them=0A-=20=20=20=20;;=20to=20= store=20paths.=0A-=20=20=20=20(copy-recursively=20"."=20rsrc)=0A-=20=20=20= =20(touch=20(string-append=20rsrc=20"/.cargo-ok"))=0A-=20=20=20=20= (generate-checksums=20rsrc)=0A-=20=20=20=20(install-file=20"Cargo.toml"=20= rsrc)=0A-=20=20=20=20#t))=0A-=0A=20(define*=20(install=20#:key=20inputs=20= outputs=20skip-build?=20#:allow-other-keys)=0A=20=20=20"Install=20a=20= given=20Cargo=20package."=0A=20=20=20(let*=20((out=20(assoc-ref=20= outputs=20"out")))=0A@@=20-179,7=20+161,6=20@@=20directory=20=3D=20'"=20= port)=0A=20(define=20%standard-phases=0A=20=20=20(modify-phases=20= gnu:%standard-phases=0A=20=20=20=20=20(delete=20'bootstrap)=0A-=20=20=20=20= (add-before=20'configure=20'install-source=20install-source)=0A=20=20=20=20= =20(replace=20'configure=20configure)=0A=20=20=20=20=20(replace=20'build=20= build)=0A=20=20=20=20=20(replace=20'check=20check)=0A--=20=0A2.21.0=0A=0A= --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0004-doc-Update-cargo-build-system-parameter-docs.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0004-doc-Update-cargo-build-system-parameter-docs.patch" Content-Transfer-Encoding: quoted-printable =46rom=207d75538f8e24bb0dcbdd252a19ec68dd42947831=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Fri,=2017=20May=202019=2009:07:54=20-0700=0ASubject:=20[PATCH=20= 4/7]=20doc:=20Update=20cargo-build-system=20parameter=20docs=0A=0A*=20= doc/guix.texi:=20(Build=20Systems)[cargo-build-system]:=20Add=20= references=20to=0Athe=20#:rust,=20#:cargo-inputs,=20and=20= #:cargo-development-inputs=20parameters.=0ARemove=20reference=20to=20= installing=20crate=20sources.=0A---=0A=20doc/guix.texi=20|=2019=20= +++++++++++++++----=0A=201=20file=20changed,=2015=20insertions(+),=204=20= deletions(-)=0A=0Adiff=20--git=20a/doc/guix.texi=20b/doc/guix.texi=0A= index=20a9cd66ce87..61f5de9e5d=20100644=0A---=20a/doc/guix.texi=0A+++=20= b/doc/guix.texi=0A@@=20-64,6=20+64,7=20@@=20Copyright=20@copyright{}=20= 2018=20Laura=20Lazzati@*=0A=20Copyright=20@copyright{}=202018=20Alex=20= Vong@*=0A=20Copyright=20@copyright{}=202019=20Josh=20Holland@*=0A=20= Copyright=20@copyright{}=202019=20Diego=20Nicola=20Barbato@*=0A= +Copyright=20@copyright{}=202019=20Ivan=20Petkov@*=0A=20=0A=20Permission=20= is=20granted=20to=20copy,=20distribute=20and/or=20modify=20this=20= document=0A=20under=20the=20terms=20of=20the=20GNU=20Free=20= Documentation=20License,=20Version=201.3=20or=0A@@=20-5814,10=20+5815,20=20= @@=20This=20variable=20is=20exported=20by=20@code{(guix=20build-system=20= cargo)}.=20=20It=0A=20supports=20builds=20of=20packages=20using=20Cargo,=20= the=20build=20tool=20of=20the=0A=20@uref{https://www.rust-lang.org,=20= Rust=20programming=20language}.=0A=20=0A-In=20its=20@code{configure}=20= phase,=20this=20build=20system=20replaces=20dependencies=0A-specified=20= in=20the=20@file{Cargo.toml}=20file=20with=20inputs=20to=20the=20Guix=20= package.=0A-The=20@code{install}=20phase=20installs=20the=20binaries,=20= and=20it=20also=20installs=20the=0A-source=20code=20and=20= @file{Cargo.toml}=20file.=0A+It=20adds=20@code{rustc}=20and=20= @code{cargo}=20to=20the=20set=20of=20inputs.=0A+A=20different=20Rust=20= package=20can=20be=20specified=20with=20the=20@code{#:rust}=20parameter.=0A= +=0A+Regular=20cargo=20dependencies=20should=20be=20added=20to=20the=20= package=20definition=20via=0A+the=20@code{#:cargo-inputs}=20parameter=20= as=20a=20list=20of=20name=20and=20spec=20pairs,=20where=20the=0A+spec=20= can=20be=20a=20package=20or=20a=20source=20definition.=20Note=20that=20= the=20spec=20must=20evaluate=0A+to=20a=20path=20to=20a=20gzipped=20= tarball=20which=20includes=20a=20@code{Cargo.toml}=20file=20at=20its=0A= +root,=20or=20it=20will=20be=20ignored.=20Similarly,=20cargo=20= dev-dependencies=20should=20be=20added=0A+to=20the=20package=20= definition=20via=20the=20@code{#:cargo-development-inputs}=20parameter.=0A= +=0A+In=20its=20@code{configure}=20phase,=20this=20build=20system=20will=20= make=20any=20source=20inputs=0A+specified=20in=20the=20= @code{#:cargo-inputs}=20and=20@code{#:cargo-development-inputs}=0A= +parameters=20available=20to=20cargo.=20The=20@code{install}=20phase=20= installs=20any=20crate=20the=0A+binaries=20if=20they=20are=20defined=20= by=20the=20crate.=0A=20@end=20defvr=0A=20=0A=20@cindex=20Clojure=20= (programming=20language)=0A--=20=0A2.21.0=0A=0A= --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0005-import-crate-define-dependencies-as-arguments.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0005-import-crate-define-dependencies-as-arguments.patch" Content-Transfer-Encoding: quoted-printable =46rom=20ee47fe46390f7996e77a8af7974899be68000dda=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Ivan=20Petkov=20=0A= Date:=20Fri,=2017=20May=202019=2000:26:07=20-0700=0ASubject:=20[PATCH=20= 5/7]=20import:=20crate:=20define=20dependencies=20as=20arguments=0A=0A*=20= guix/import/crate.scm:=0A(crate-fetch)[input-crates]:=20Rename=20to=20= dev-crates.=0A[native-input-crates]:=20Rename=20to=20dev-dep-crates.=0A= [inputs]:=20Rename=20to=20cargo-inputs.=0A[native-inputs]:=20Rename=20to=20= cargo-development-inputs.=0A(maybe-cargo-inputs):=20Add=20it.=0A= (maybe-cargo-development-inputs):=20Add=20it.=0A(maybe-arguments):=20Add=20= it.=0A(make-crate-sexp):=20Use=20new=20procedures.=0A[inputs]:=20Rename=20= to=20cargo-inputs.=0A[native-inputs]:=20Rename=20to=20= cargo-development-inputs.=0A*=20guix/import/utils.scm:=20= (package-names->package-inputs):=20Make=20public.=0AAdd=20doc=20string.=0A= ---=0A=20guix/import/crate.scm=20|=2047=20= +++++++++++++++++++++++++++++++++----------=0A=20guix/import/utils.scm=20= |=20=204=20++++=0A=202=20files=20changed,=2040=20insertions(+),=2011=20= deletions(-)=0A=0Adiff=20--git=20a/guix/import/crate.scm=20= b/guix/import/crate.scm=0Aindex=20e0b400d054..9a73d9fe16=20100644=0A---=20= a/guix/import/crate.scm=0A+++=20b/guix/import/crate.scm=0A@@=20-65,29=20= +65,53=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(path=20= (string-append=20"/"=20version=20"/dependencies"))=0A=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(deps-json=20(json-fetch-alist=20(string-append=20= crate-url=20name=20path)))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (deps=20(assoc-ref=20deps-json=20"dependencies"))=0A-=20=20=20=20=20=20=20= =20=20=20=20=20=20(input-crates=20(filter=20(crate-kind-predicate=20= "normal")=20deps))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20= (native-input-crates=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (dep-crates=20(filter=20(crate-kind-predicate=20"normal")=20deps))=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20(dev-dep-crates=0A=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(filter=20(lambda=20(dep)=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(not=20= ((crate-kind-predicate=20"normal")=20dep)))=20deps))=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20(inputs=20(crates->inputs=20input-crates))=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20(native-inputs=20(crates->inputs=20= native-input-crates))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (cargo-inputs=20(crates->inputs=20dep-crates))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20(cargo-development-inputs=20(crates->inputs=20= dev-dep-crates))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(home-page=20= (match=20homepage=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(()=20repository)=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(_=20homepage))))=0A= =20=20=20=20=20(callback=20#:name=20name=20#:version=20version=0A-=20=20=20= =20=20=20=20=20=20=20=20=20=20=20#:inputs=20inputs=20#:native-inputs=20= native-inputs=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= #:cargo-inputs=20cargo-inputs=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= #:cargo-development-inputs=20cargo-development-inputs=0A=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20#:home-page=20home-page=20#:synopsis=20= synopsis=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:description=20= description=20#:license=20license)))=0A=20=0A-(define*=20= (make-crate-sexp=20#:key=20name=20version=20inputs=20native-inputs=0A= +(define=20(maybe-cargo-inputs=20package-names)=0A+=20=20(match=20= (package-names->package-inputs=20package-names)=0A+=20=20=20=20(()=0A+=20= =20=20=20=20'())=0A+=20=20=20=20((package-inputs=20...)=0A+=20=20=20=20=20= `((#:cargo-inputs=20,package-inputs)))))=0A+=0A+(define=20= (maybe-cargo-development-inputs=20package-names)=0A+=20=20(match=20= (package-names->package-inputs=20package-names)=0A+=20=20=20=20(()=0A+=20= =20=20=20=20'())=0A+=20=20=20=20((package-inputs=20...)=0A+=20=20=20=20=20= `((#:cargo-development-inputs=20,package-inputs)))))=0A+=0A+(define=20= (maybe-arguments=20arguments)=0A+=20=20(match=20arguments=0A+=20=20=20=20= (()=0A+=20=20=20=20=20'())=0A+=20=20=20=20((args=20...)=0A+=20=20=20=20=20= `((arguments=20(,'quasiquote=20,args))))))=0A+=0A+(define*=20= (make-crate-sexp=20#:key=20name=20version=20cargo-inputs=20= cargo-development-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=20=20home-page=20synopsis=20description=20= license=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#:allow-other-keys)=0A=20=20=20"Return=20the=20= `package'=20s-expression=20for=20a=20rust=20package=20with=20the=20given=20= NAME,=0A-VERSION,=20INPUTS,=20NATIVE-INPUTS,=20HOME-PAGE,=20SYNOPSIS,=20= DESCRIPTION,=20and=20LICENSE."=0A+VERSION,=20CARGO-INPUTS,=20= CARGO-DEVELOPMENT-INPUTS,=20HOME-PAGE,=20SYNOPSIS,=20DESCRIPTION,=0A+and=20= LICENSE."=0A=20=20=20(let*=20((port=20(http-fetch=20(crate-uri=20name=20= version)))=0A=20=20=20=20=20=20=20=20=20=20(guix-name=20= (crate-name->package-name=20name))=0A-=20=20=20=20=20=20=20=20=20(inputs=20= (map=20crate-name->package-name=20inputs))=0A-=20=20=20=20=20=20=20=20=20= (native-inputs=20(map=20crate-name->package-name=20native-inputs))=0A+=20= =20=20=20=20=20=20=20=20(cargo-inputs=20(map=20crate-name->package-name=20= cargo-inputs))=0A+=20=20=20=20=20=20=20=20=20(cargo-development-inputs=20= (map=20crate-name->package-name=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=20=20=20= =20=20cargo-development-inputs))=0A=20=20=20=20=20=20=20=20=20=20(pkg=20= `(package=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (name=20,guix-name)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(version=20,version)=0A@@=20-99,8=20+123,9=20@@=20VERSION,=20= INPUTS,=20NATIVE-INPUTS,=20HOME-PAGE,=20SYNOPSIS,=20DESCRIPTION,=20and=20= LICENSE."=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(base32=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= ,(bytevector->nix-base32-string=20(port-sha256=20port))))))=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(build-system=20= cargo-build-system)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20,@(maybe-native-inputs=20native-inputs=20"src")=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20,@(maybe-inputs=20inputs=20"src")=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ,@(maybe-arguments=20(append=20(maybe-cargo-inputs=20cargo-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=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (maybe-cargo-development-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=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20cargo-development-inputs)))=0A=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(home-page=20,(match=20= home-page=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"")=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(_=20home-page)))=0Adiff=20--git=20a/guix/import/utils.scm=20= b/guix/import/utils.scm=0Aindex=2063fc9bbb27..84503ab907=20100644=0A---=20= a/guix/import/utils.scm=0A+++=20b/guix/import/utils.scm=0A@@=20-52,6=20= +52,7=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=20=20url-fetch=0A=20=20=20= =20=20=20=20=20=20=20=20=20=20guix-hash-url=0A=20=0A+=20=20=20=20=20=20=20= =20=20=20=20=20package-names->package-inputs=0A=20=20=20=20=20=20=20=20=20= =20=20=20=20maybe-inputs=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= maybe-native-inputs=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= package->definition=0A@@=20-236,6=20+237,9=20@@=20into=20a=20proper=20= sentence=20and=20by=20using=20two=20spaces=20between=20sentences."=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=20cleaned=20'pre=20".=20=20"=20'post)))=0A=20=0A=20(define*=20= (package-names->package-inputs=20names=20#:optional=20(output=20#f))=0A+=20= =20"Given=20a=20list=20of=20PACKAGE-NAMES,=20and=20an=20optional=20= OUTPUT,=20tries=20to=20generate=20a=0A+quoted=20list=20of=20inputs,=20as=20= suitable=20to=20use=20in=20an=20'inputs'=20field=20of=20a=20package=0A= +definition."=0A=20=20=20(map=20(lambda=20(input)=0A=20=20=20=20=20=20=20= =20=20=20(cons*=20input=20(list=20'unquote=20(string->symbol=20input))=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(or=20(and=20output=20(list=20output))=0A--=20=0A2.21.0=0A=0A= --Apple-Mail=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0006-gnu-crate-add-unicode-xid.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0006-gnu-crate-add-unicode-xid.patch" Content-Transfer-Encoding: quoted-printable =46rom=20d6ee18d7df3af4b2a6ca445328c3c88cf145ffd5=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= 6/7]=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= 907641ff3e..048359ce4e=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=_2C67887A-0A6D-4616-BC1E-C10D0957183E Content-Disposition: attachment; filename=0007-gnu-crate-Add-proc-macro2-and-quote.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0007-gnu-crate-Add-proc-macro2-and-quote.patch" Content-Transfer-Encoding: quoted-printable =46rom=204caa240fd6a245b89e640f6ef1fcaaf9a2b06c3e=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= 7/7]=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= |=2047=20++++++++++++++++++++++++++++++++++++++=0A=201=20file=20changed,=20= 47=20insertions(+)=0A=0Adiff=20--git=20a/gnu/packages/crates-io.scm=20= b/gnu/packages/crates-io.scm=0Aindex=20533fe0d21e..b480b6fe56=20100644=0A= ---=20a/gnu/packages/crates-io.scm=0A+++=20b/gnu/packages/crates-io.scm=0A= @@=20-43,3=20+43,50=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(arguments=0A+=20=20=20= =20=20=20`(#:cargo-inputs=20(("rust-unicode-xid"=20,rust-unicode-xid))=0A= +=20=20=20=20=20=20=20=20#:cargo-development-inputs=20(("rust-quote"=20= ,rust-quote))))=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(arguments=0A+=20=20=20= =20=20=20`(#:cargo-inputs=20(("rust-proc-macro2"=20,rust-proc-macro2))))=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=_2C67887A-0A6D-4616-BC1E-C10D0957183E--