antioxidant-packages.scm 338 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896
  1. ;;; Antioxidant --- Building Rust without cargo
  2. ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
  3. ;;;
  4. ;;; This file is part of Antioxidant.
  5. ;;;
  6. ;;; Antioxidant is free software; you can redistribute it and/or modify it
  7. ;;; under the terms of the GNU General Public License as published by
  8. ;;; the Free Software Foundation; either version 3 of the License, or (at
  9. ;;; your option) any later version.
  10. ;;;
  11. ;;; Antioxidant is distributed in the hope that it will be useful, but
  12. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. ;;; GNU General Public License for more details.
  15. ;;;
  16. ;;; You should have received a copy of the GNU General Public License
  17. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  18. (define-module (antioxidant-packages)
  19. #:use-module (guix monads)
  20. #:use-module (guix store)
  21. #:export (vitaminate/auto public-test-package
  22. %rust-library-outputs))
  23. (use-modules (guix packages) (guix build-system) (guix gexp) (guix utils) (guix modules)
  24. ((guix build-system gnu) #:select (%gnu-build-system-modules))
  25. (gnu packages compression) (gnu packages python) (gnu packages python-build)
  26. (gnu packages guile) (ice-9 match) (srfi srfi-1) (srfi srfi-71)
  27. (gnu packages rust-apps) (guix utils) (srfi srfi-26) (guix download)
  28. (guix git-download) (ice-9 optargs) ((guix licenses) #:prefix license:)
  29. (guix search-paths) (gnu packages rust) (gnu packages base))
  30. ;; Idea is to save some closure size (because things "lib" are usually linked
  31. ;; to statically so no point in downloading them if only the binary is needed instead).
  32. (define %rust-library-outputs
  33. '("out" ; rest
  34. "lib")) ; the .rlib and the .crate-info
  35. (define (rust-environment-variables target)
  36. `(;; TODO gnueabihf?
  37. ("CARGO_CFG_TARGET_ENV" .
  38. ,(if (or (target-linux? target) (target-hurd? target))
  39. "gnu"
  40. (unrecognised)))
  41. ("CARGO_CFG_TARGET_VENDOR" . "unknown") ; TODO: or pc?
  42. ("CARGO_CFG_TARGET_ENDIAN" . "little") ; TODO: big-endian
  43. ("CARGO_CFG_TARGET_ARCH" .
  44. ,(cond ((target-x86-64? target) "x86_64")
  45. ((target-aarch64? target) "aarch64")
  46. ((target-riscv64? target) "riscv64")
  47. (#true (unrecognised))))
  48. ("CARGO_CFG_TARGET_OS" .
  49. ,(cond ((target-linux? target) "linux")
  50. ((target-hurd? target) "hurd") ; TODO: or gnu?
  51. (#true (unrecognised))))
  52. ("CARGO_CFG_TARGET_FAMILY" .
  53. ,(cond ((target-linux? target) "unix")
  54. ((target-hurd? target) "unix") ; TODO: or gnu?
  55. (#true (unrecognised))))
  56. ("CARGO_CFG_TARGET_POINTER_WIDTH" .
  57. ,(cond ((target-64bit? target) "64")
  58. (#true "32")))
  59. ;; These CPU features are set by default, but antioxidant needs to know
  60. ;; these as well to set the appropriate environment variables expected by,
  61. ;; e.g., rust-sleef-sys. TODO: CPU tuning.
  62. ,@(if (target-x86-64? target)
  63. '(("CARGO_CFG_TARGET_FEATURE" . "sse,sse2"))
  64. '())
  65. ("RUST_BACKTRACE" . "full") ; backtraces are useful for investigating build.rs and test failures, so enable them.
  66. ("RUSTC_BOOTSTRAP" . "1"))) ; make it sometimes possible to use unstable features (TODO: not really a ‘target’ environment variable, needs some renaming).
  67. (define %gdk-pixbuf-loaders-cache-file
  68. (@ (guix build glib-or-gtk-build-system) %gdk-pixbuf-loaders-cache-file))
  69. (define %custom-phases
  70. `(("exa"
  71. ;; Preserve cargo-build-system phases, adjusted for antioxidant.
  72. ;; See rust-apps.scm for copyright lines.
  73. ;; Ignoring failing tests.
  74. ;; Reported in https://github.com/ogham/exa/issues/318
  75. ,#~((add-after 'unpack 'disable-failing-tests
  76. (lambda _
  77. (substitute* "src/options/mod.rs"
  78. (("^.*fn oneline_across.*" oneline-across)
  79. (string-append "#[ignore]\n" oneline-across)))
  80. (substitute* "src/options/view.rs"
  81. (("test!\\(across:.*") "")
  82. (("test!\\(cr:.*") "")
  83. (("test!\\(empty:.*") "")
  84. (("test!\\(gracross:.*") "")
  85. (("test!\\(grid:.*") "")
  86. (("test!\\(icons:.*") "")
  87. (("test!\\(just_binary:.*") "")
  88. (("test!\\(just_blocks:.*") "")
  89. (("test!\\(just_bytes:.*") "")
  90. (("test!\\(just_git:.*") "")
  91. (("test!\\(just_group:.*") "")
  92. (("test!\\(just_header:.*") "")
  93. (("test!\\(just_inode:.*") "")
  94. (("test!\\(just_links:.*") "")
  95. (("test!\\(leg:.*") "")
  96. (("test!\\(lid:.*") "")
  97. (("test!\\(original_g:.*") ""))))
  98. (add-after 'install 'install-extras
  99. (lambda* (#:key outputs #:allow-other-keys)
  100. (let* ((out (assoc-ref outputs "out"))
  101. (share (string-append out "/share"))
  102. (man1 (string-append share "/man/man1")))
  103. (install-file "contrib/man/exa.1" man1)
  104. (mkdir-p (string-append out "/etc/bash_completion.d"))
  105. (mkdir-p (string-append share "/fish/vendor_completions.d"))
  106. (mkdir-p (string-append share "/zsh/site-functions"))
  107. (copy-file "contrib/completions.bash"
  108. (string-append out "/etc/bash_completion.d/exa"))
  109. (copy-file "contrib/completions.fish"
  110. (string-append share "/fish/vendor_completions.d/exa.fish"))
  111. (copy-file "contrib/completions.zsh"
  112. (string-append share "/zsh/site-functions/_exa")))))))
  113. ("b3sum"
  114. ;; Preserve cargo-build-system phase. Preserve the #:installs-source? but adjusted
  115. ;; for antioxidant.
  116. ;;
  117. ;; Install the Cargo.toml, because that is the only reference
  118. ;; to the license information.
  119. ,#~((add-after 'install 'install-cargo.toml
  120. (lambda _
  121. (install-file "Cargo.toml" (string-append #$output
  122. "/share/doc/"
  123. #$"b3sum"
  124. "-"
  125. #$"0.3.8"
  126. #;#$(package-version this-package)))))
  127. (add-after 'unpack 'fix-tests
  128. (lambda _
  129. (substitute* "tests/cli_tests.rs"
  130. (("/bin/sh") (which "sh")))))
  131. (add-after 'install 'install-doc
  132. (lambda* (#:key outputs #:allow-other-keys)
  133. (let* ((out (assoc-ref outputs "out"))
  134. (doc (string-append out "/share/doc/" #$"b3sum" #;#$name "-"
  135. ;; XXX: when integrating back into guix, use package-version!
  136. #$"0.3.8"
  137. #;#$(package-version this-package))))
  138. (install-file "README.md" doc))))))
  139. ("git-absorb"
  140. ;; Preserve cargo-build-system phase, see rust-apps for copyright lines.
  141. ,#~((add-after 'install 'install-manual-page
  142. (lambda* (#:key outputs #:allow-other-keys)
  143. (let* ((out (assoc-ref outputs "out"))
  144. (man (string-append out "/share/man/man1")))
  145. (install-file "Documentation/git-absorb.1" man))))))
  146. ("libsequoia"
  147. ;; Not packaged, and test-only.
  148. ,#~((add-after 'unpack 'avoid-subplot-build
  149. (lambda _
  150. (substitute* "sq/build.rs"
  151. (("^(.*)[Ss]ubplot(.*)$") ""))))
  152. (add-after 'unpack 'avoid-build-failure
  153. (lambda _
  154. ;; Something about a 'send' trait.
  155. (for-each delete-file '("sq/tests/sq-certify.rs"
  156. "sq/tests/sq-revoke.rs"
  157. "sq/tests/sq-sign.rs"
  158. ;; TODO: fix OUT_DIR reference?
  159. "sq/tests/sq-subplot.rs"))))
  160. (replace 'install
  161. (lambda _
  162. (setenv "PREFIX" #$output)
  163. (setenv "CARGO" ":")
  164. (setenv "MAKE" ":") ; avoid non-existent ../store directory
  165. (substitute* "sq/Makefile"
  166. (("(.*)/release/sq") "")) ; already installed by build-binaries
  167. (invoke "make" "-C" "sq" "install")))))
  168. ("python-blake3"
  169. ,#~((add-after 'build 'reduce-closure
  170. (lambda* (#:key outputs #:allow-other-keys)
  171. ;; Remove the .crate-info, as it keeps references to the
  172. ;; (static!) Rust dependencies and it is unused
  173. (delete-file
  174. (search-input-file outputs "lib/guixcrate/blake3.crate-info"))))))
  175. ("ripgrep"
  176. ;; Preserve cargo-build-system build phase
  177. ,#~((add-after 'build 'install-manpage
  178. ;; NOTE: This is done before 'check so that there's only one output
  179. ;; directory with the man page.
  180. (lambda* (#:key outputs #:allow-other-keys)
  181. (match (find-files "." "^rg\\.1$")
  182. ((manpage)
  183. (install-file manpage (string-append
  184. (assoc-ref outputs "out")
  185. "/share/man/man1"))))))))
  186. ;; gnu-configure, pre-configure: Preserved from the cargo-build-system version, see
  187. ;; gnu/packages/gnome.scm for copyright lines.
  188. ("librsvg"
  189. ,#~((add-after 'unpack 'remove-cargo-assumptions
  190. (lambda _
  191. (delete-file "configure") ; TODO: more something for a snippet
  192. (substitute* "configure.ac"
  193. (("AC_MSG_ERROR\\(\\[cargo is required.*") "]"))
  194. (substitute* "Makefile.am"
  195. (("\\$\\(CARGO\\)") ":") ;; it is compiled with antioxidant instead of cargo, stub it.
  196. ;; the 'build-binaries' phase already takes care of installing rsvg-convert
  197. (("bin_SCRIPTS = .*") ""))))
  198. (add-after 'configure 'gnu-configure
  199. (lambda* (#:key outputs #:allow-other-keys #:rest args)
  200. (apply (assoc-ref (@ (guix build gnu-build-system) %standard-phases) 'configure)
  201. #:configure-flags
  202. (list "--disable-static"
  203. "--enable-vala"
  204. (string-append "--with-html-dir="
  205. (assoc-ref outputs "doc")
  206. "/share/gtk-doc/html"))
  207. args)))
  208. (add-before 'gnu-configure 'pre-configure
  209. (lambda _
  210. (substitute* "gdk-pixbuf-loader/Makefile.in"
  211. ;; By default the gdk-pixbuf loader is installed under
  212. ;; gdk-pixbuf's prefix. Work around that.
  213. (("gdk_pixbuf_moduledir = .*$")
  214. (string-append "gdk_pixbuf_moduledir = "
  215. "$(prefix)/"
  216. #$(dirname %gdk-pixbuf-loaders-cache-file) "/"
  217. "loaders\n")))
  218. (substitute* "configure"
  219. (("gdk_pixbuf_cache_file=.*")
  220. (string-append "gdk_pixbuf_cache_file="
  221. #$output "/"
  222. #$%gdk-pixbuf-loaders-cache-file "\n")))))
  223. ;; Let the Makefile turn the library archive (.a) into a shared library.
  224. (add-after 'build 'gnu-build
  225. (assoc-ref (@ (guix build gnu-build-system) %standard-phases) 'build))
  226. ;; 'build-binaries' expects .rlib instead of .a
  227. (add-after 'build 'build-as-rlib
  228. (lambda arguments
  229. ;; Remove the staticlib version from the cache, for the new version.
  230. ;; TODO: why is this necessary -- normally the old entry in the
  231. ;; hash table would automatically be replaced.
  232. (set! (@@ (antioxidant) *known-crate-information*)
  233. (make-hash-table))
  234. (apply (assoc-ref (@ (antioxidant) %standard-antioxidant-phases)
  235. 'build)
  236. (append arguments
  237. (list #:rust-crate-type "rlib"
  238. ;; tests have already been built
  239. #:tests? #false)))))
  240. (add-after 'build 'move-library-archive
  241. (lambda _
  242. ;; Move the compiled library to where the Makefile expects it.
  243. ;;
  244. ;; Use 'install-file' instead of 'rename-file', because there is no
  245. ;; guarantee that the store and the temporary working directory
  246. ;; are on the same file system.
  247. (install-file (string-append #$output "/lib/guixcrate/liblibrsvg.a")
  248. "target/release")
  249. ;; Clean up the '.../lib' subdirectory for build-as-rlib
  250. (delete-file-recursively (string-append #$output "/lib"))))
  251. (add-before 'create-all-outputs 'install ; TODO: keep an 'install' phase, even if only a stub
  252. (assoc-ref (@ (guix build gnu-build-system) %standard-phases) 'install))
  253. (add-after 'install 'cleanup
  254. (lambda _
  255. ;; TODO: the compiled shared library is three times as large as with
  256. ;; cargo-build-system, figure out how to shrink it.
  257. (delete-file-recursively (string-append #$output "/lib/guixcrate"))))))
  258. ("rust-analyzer"
  259. ,#~((add-after 'unpack 'remove-cargo-tests
  260. ;; Assumes Cargo.
  261. (lambda _
  262. (delete-file-recursively "crates/proc_macro_test")))))
  263. ("rust-arboard"
  264. ,#~((add-after 'unpack 'rust-image-compatibility
  265. (lambda _
  266. ;; TODO: upstream and update as appropriate
  267. (substitute* "src/common_linux.rs"
  268. (("\\bimage::png::PngEncoder\\b") "image::codecs::png::PngEncoder"))))
  269. (replace 'check rust-tests-check/xorg)))
  270. ("rust-arrow2"
  271. ,#~((add-after 'unpack 'avoid-non-compiling-tests
  272. (lambda _
  273. (substitute* "tests/it/io/mod.rs"
  274. (("\"io_(ipc|parquet)\"") "\"never\""))))))
  275. ("rust-async-process"
  276. ,#~((add-after 'unpack 'fix-/bin/sh-file-name
  277. (lambda _
  278. (substitute* "tests/std.rs"
  279. (("/bin/sh") (which "sh")))))))
  280. ;; Cause of test failure is unclear.
  281. ("rust-autocfg"
  282. ,#~((add-after 'unpack 'remove-rustflags
  283. (lambda _
  284. (delete-file "tests/rustflags.rs")))))
  285. ("rust-blake3-reference-impl"
  286. ,#~((add-after 'unpack 'chdir
  287. (lambda _
  288. (chdir "reference_impl")))))
  289. ;; TODO home page is incorrect
  290. ("rust-servo-fontconfig-sys"
  291. ,#~((add-after 'unpack 'unbundle
  292. (lambda _
  293. (for-each ((@ (srfi srfi-26) cut) delete-file-recursively <>)
  294. '("doc" "test" "src" "missing" "m4" "fonts.dtd" "fonts.conf.in"
  295. "fontconfig.spec" "fontconfig.spec.in" "fontconfig.pc.in"
  296. "fontconfig-zip.in" "fontconfig" "fc-validate"
  297. "fc-scan" "fc-query" "fc-pattern" "fc-match" "fc-list"
  298. "fc-lang" "fc-glyphname" "fc-cat" "fc-case"
  299. "depcomp" "configure.ac" "configure" "config.sub" "config.h.in"
  300. "config.guess" "config-fixups.h" "conf.d" "compile" "aclocal.m4"
  301. "Tools.mk" "Makefile.in"
  302. "README" "NEWS" "INSTALL" "ChangeLog" "AUTHORS" ; these are for freetype, not rust-servo-freetype-sys
  303. "COPYING" ; this is for freetype, not rust-servo-freetype-sys which is MPL
  304. ))))))
  305. ("rust-test-cert-gen"
  306. ,#~((add-after 'unpack 'fix-references
  307. (lambda* (#:key inputs #:allow-other-keys)
  308. (substitute* "src/lib.rs"
  309. (("Command::new\\(\"openssl\"\\)")
  310. (format #f "Command::new(~s)" (search-input-file inputs "bin/openssl"))))))))
  311. ("rust-trash"
  312. ;; Tests want to write in $HOME/.local/share/Trash/...
  313. ,#~((add-before 'unpack 'change-home
  314. (lambda _
  315. (setenv "HOME" (getcwd))))))
  316. ;; TODO: SOURCE_DATE_EPOCH support would be nice. Also maybe better fit for a snippet?
  317. ;;
  318. ;; Make the rust-vergen reproducible and avoid causing irreproducibility
  319. ;; in dependents. See: <https://issues.guix.gnu.org/56893>.
  320. ("rust-vergen"
  321. ,#~((add-after 'unpack 'remove-timestamp-irreproducibility
  322. (lambda _
  323. (substitute* (find-files "." "\\.rs$")
  324. (("^extern crate chrono;") "extern crate chrono; use chrono::Utc; use chrono::TimeZone;")
  325. (("^use chrono::Utc;") "use chrono::Utc; use chrono::TimeZone;")
  326. (("\\bUtc::now\\(\\)") "Utc.timestamp(0, 0)"))))))
  327. ("rust-mysqlclient-sys" ; the pkg-config file is named mariadb.pc, not mysqclient.pc
  328. ,#~((add-after 'unpack 'fix-pkg-config-use
  329. (lambda _
  330. (substitute* "build.rs"
  331. ;; the mariadb.pc uses -lz without adding an appropriate -L
  332. ;; (TODO). Using the libmariadb.pc instead seems to work.
  333. (("\"mysqlclient\"") "\"libmariadb\""))))))
  334. ;; Work-around https://github.com/Alexhuszagh/rust-lexical/issues/88
  335. ;; (TODO: maybe add it by default)
  336. ("rust-lexical-util"
  337. ,#~((add-after 'unpack 'replace-cargo.toml
  338. (lambda _
  339. (rename-file "Cargo.toml.orig" "Cargo.toml")))))
  340. ;; Likewise.
  341. ("rust-lexical-parse-float"
  342. ,#~((add-after 'unpack 'replace-cargo.toml
  343. (lambda _
  344. (rename-file "Cargo.toml.orig" "Cargo.toml")))))
  345. ;; Likewise.
  346. ("rust-lexical-write-float"
  347. ,#~((add-after 'unpack 'replace-cargo.toml
  348. (lambda _
  349. (rename-file "Cargo.toml.orig" "Cargo.toml")))))
  350. ;; Likewise.
  351. ("rust-lexical-write-integer"
  352. ,#~((add-after 'unpack 'replace-cargo.toml
  353. (lambda _
  354. (rename-file "Cargo.toml.orig" "Cargo.toml")))))
  355. ("rust-libloading"
  356. ;; The tests try to put a file in the "target" directory.
  357. ,#~((add-before 'check 'make-target-directory
  358. (lambda _
  359. (mkdir "target")))))
  360. ("rust-libsqlite3-sys"
  361. ,#~((add-after 'unpack 'unbundle
  362. (lambda _
  363. ;; Does not exist in @20.1
  364. (when (directory-exists? "sqlcipher")
  365. (delete-file-recursively "sqlcipher"))
  366. (delete-file-recursively "sqlite3")))))
  367. ("rust-nitrokey-sys"
  368. ,#~((add-after 'unpack 'unbundle ;; TODO: upstream Guix
  369. (lambda* (#:key inputs #:allow-other-keys)
  370. (delete-file-recursively "libnitrokey-v3.6")
  371. ;; tell build.rs to not use its bundled copy
  372. (setenv "USE_SYSTEM_LIBNITROKEY" "1")
  373. ;; used by Makefile
  374. (setenv "LIBNITROKEY"
  375. (search-input-directory inputs "include/libnitrokey"))
  376. ;; Regenerate bindings.
  377. (delete-file "src/ffi.rs")
  378. (substitute* "Makefile"
  379. (("quilt") ":")) ; only usable from a git checkout
  380. (invoke "make" "src/ffi.rs")))
  381. ;; TODO: simplify and make for robust by making it support pkg-config.
  382. ;;
  383. ;; Ensure that dependencies will actually find libnitrokey.
  384. (add-before 'configure 'add-library-directory
  385. (lambda* (#:key inputs #:allow-other-keys)
  386. ((@@ (antioxidant) add-c-library-directory!)
  387. (dirname (search-input-file inputs "lib/libnitrokey.so")))))))
  388. ("rust-nix"
  389. ,#~((add-after 'unpack 'fix-tests-sh
  390. (lambda _
  391. (substitute* "test/test_unistd.rs"
  392. (("\"/bin/sh\"") (object->string (which "sh")))
  393. (("\"/bin/\"") (object->string (dirname (which "sh")))))))))
  394. ("rust-x11rb"
  395. ;; TODO: x11rb does link(name = "xcb") to link to the lib, but does
  396. ;; not add the corresponding -L argument (which needs pkg-config
  397. ;; or such, or changes to antioxidant.). TODO: if -l is added,
  398. ;; but not -L, bail out automaticallt. TODO: takes 5.5 minutes to compile,
  399. ;; can this be reduced?
  400. ,#~((add-after 'configure 'find-xcb
  401. (lambda* (#:key inputs #:allow-other-keys)
  402. ((@@ (antioxidant) add-c-library-directory!)
  403. (dirname (search-input-file inputs "lib/libxcb.so")))))))
  404. ("rust-mesalink" ,#~((delete 'bootstrap))) ; build.rs is sufficient
  405. ("rust-buffering-nocopy-macro"
  406. ,#~((add-after 'unpack 'new-syn-compatibility
  407. ;; TODO: upstream
  408. (lambda _
  409. (substitute* "Cargo.toml"
  410. (("\\[dependencies\\.quote\\]" line)
  411. (string-append "[dependencies.proc-macro2]\nversion=\"1\"\n"
  412. line)))
  413. (substitute* "src/lib.rs"
  414. (("export::Span, ") "")
  415. (("use proc_macro::TokenStream;")
  416. "use proc_macro::TokenStream; use proc_macro2::Span;"))))))
  417. ("rust-csv"
  418. ;; TODO: switch go git checkout to have the files
  419. ,#~((add-after 'unpack 'avoid-missing-files
  420. (lambda _
  421. (delete-file "tests/tests.rs")))))
  422. ;; Make sure the headers will be installed in a proper location.
  423. ;; TODO: make sure dependencies actually find the result (newsboat-ffi).
  424. ;; TODO: set RUST_CXX_BUILD_OUTPUT in antioxidant.scm.
  425. ("rust-cxx-build"
  426. ,#~((add-after 'unpack 'avoid-scratch
  427. ;; not sure if .clone is required
  428. (lambda _
  429. (substitute* "src/target.rs"
  430. (("fn find_target_dir\\(out_dir: &Path) -> TargetDir \\{" line)
  431. (string-append line "
  432. let mut out = out_dir.to_path_buf().clone();
  433. out.push(\".debugging\");
  434. return TargetDir::Path(out);
  435. }
  436. fn _find_target_dir_unused(out_dir: &Path) -> TargetDir {"
  437. #;"return TargetDir::Path(out_dir.clone().push(\".debugging\"));}fn _find_target_dir_unused(out_dir: &Path) -> TargetDir {")))
  438. (substitute* "src/lib.rs"
  439. (("scratch::path\\(\"cxxbridge\"\\)")
  440. "panic!(\"rust-scratch is incompatible with the antioxidant compilation model without shenanigans, please set the output directory!\")")
  441. (("paths::out_dir\\(\\)\\?")
  442. "Path::new(&env::var_os(\"RUST_CXX_BUILD_OUTPUT\").expect(\"RUST_CXX_BUILD_OUTPUT should be set\")).to_path_buf()"))))))
  443. ("rust-cxx"
  444. ,#~((add-after 'unpack 'do-not-install-headers-in-/tmp
  445. (lambda _
  446. ;; By default, this header is located in the unpacked source
  447. ;; and rust-cxx will (when used by dependencies in their build.rs)
  448. ;; try to refer to that location, in /tmp/guix-build-rust-cxx...,
  449. ;; which cannot work, so properly install the header instead.
  450. (install-file "include/cxx.h"
  451. (string-append #$output "/include/rust-cxx"))
  452. (substitute* "build.rs"
  453. (("cxx_h.to_string_lossy\\(\\)")
  454. (string-append "\"" #$output "/include/rust-cxx/cxx.h\"")))))))
  455. ("rust-backtrace-sys"
  456. ,#~((add-after 'unpack 'break-cycle
  457. (lambda _
  458. ;; only needed for Android targets,
  459. ;; by removing it we avoid depending
  460. ;; on crate-cc, breaking a cycle
  461. (delete-file "build.rs")
  462. (substitute* "Cargo.toml"
  463. (("^build =(.*)$") ""))))))
  464. ("rust-libssh2-sys"
  465. ;; Otherwise, build.rs fails to find libssh2, causing
  466. ;; a build failure.
  467. ,#~((add-after 'unpack 'find-ssh2
  468. (lambda _
  469. (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "don't use the bundled copy in the git submodule")))))
  470. ("rust-freetype-sys"
  471. ,#~((add-after 'unpack 'unbundle
  472. (lambda _ ; TODO: move to origin snippet (& upstream Guix?)
  473. (delete-file-recursively "freetype2")))))
  474. ;; TODO: in upstream Guix, replace
  475. ;; (delete-file-recursively "jemalloc")
  476. ;; by (delete-file-recursively "rep")
  477. ;; TODO: why a static library?
  478. ("rust-jemalloc-sys"
  479. ,#~((add-after 'unpack 'unbundle
  480. (lambda _
  481. (delete-file-recursively "rep")))
  482. ;; keep upstream phase
  483. (add-before 'configure 'find-jemalloc
  484. (lambda* (#:key inputs #:allow-other-keys)
  485. (setenv "JEMALLOC_OVERRIDE"
  486. (search-input-file inputs "lib/libjemalloc.so.2"))))))
  487. ;; nu-completion doesn't declare the rustyline dependency, leading to
  488. ;; build errors in antioxidant. Somehow works in Cargo though.
  489. ;; TODO: report upstream and support cross-member feature
  490. ;; selection in antioxidant-worrkspace-build-system.
  491. ;;
  492. ;; TODO: maybe compile nushell things with opt-level=s,
  493. ;; as done in the Cargo.toml?
  494. ("nushell" ,#~((add-after 'unpack 'fix-cargo
  495. (lambda _
  496. (substitute* "crates/nu-completion/Cargo.toml"
  497. (("indexmap = (.*)$" line)
  498. (string-append line "rustyline = \"9.0.0\"")))))))
  499. ("rust-shadow-rs"
  500. ,#~((add-after 'unpack 'fixup-source-date-epoch
  501. (lambda _
  502. ;; TODO: it nominally supports SOURCE_DATE_EPOCH, yet something things go wrong,
  503. ;; as the shadow.rs still contains the unnormalised time stamp ...
  504. ;; For now, do a work-around. (Not yet reported upstream, because we are using
  505. ;; and old version and maybe different chrono and time versions, so maybe
  506. ;; a bug in the Guix packaging).
  507. (substitute* '("src/lib.rs" "src/env.rs")
  508. (("BuildTime::Local\\(Local::now\\(\\)\\)\\.human_format\\(\\)")
  509. (object->string "[timestamp expunged for reproducibility]"))
  510. (("time\\.human_format\\(\\)")
  511. "\"[timestamp expunged for reproducibility]\".to_string()")
  512. (("time\\.to_rfc3339_opts\\(SecondsFormat::Secs, true)")
  513. "\"[timestamp expunged for reproducibility]\".to_string()")
  514. (("time\\.to_rfc2822\\(\\)")
  515. "\"[timestamp expunged for reproducibility]\".to_string()"))))
  516. (add-after 'unpack 'more-reproducibility
  517. ;; By default, it uses a hashmap, leading to an irreproducible ordering
  518. ;; in the shadow.rs and hence an irreproducible .rmeta in the compiled
  519. ;; crate. Upstream: <https://github.com/baoyachi/shadow-rs/issues/96>.
  520. (lambda _
  521. (substitute* "src/lib.rs" ; sort
  522. (("\\(k, v\\) in self\\.map\\.clone\\(\\)")
  523. "(k, v) in std::collections::BTreeMap::from_iter(self.map.clone().iter())")
  524. (("self\\.write_const\\(k, v\\)") "self.write_const(k, v.clone())")
  525. (("self\\.map\\.keys\\(\\)") "std::collections::BTreeSet::from_iter(self.map.keys())"))))))
  526. ;; Preserve this phase from (gnu packages crates-io)
  527. ("rust-pkg-config"
  528. ,#~((add-after 'unpack 'hardcode-pkg-config-loation
  529. (lambda* (#:key inputs #:allow-other-keys)
  530. (substitute* "src/lib.rs"
  531. (("\"pkg-config\"")
  532. (string-append "\"" (assoc-ref inputs "pkg-config")
  533. "/bin/pkg-config\"")))))))
  534. ("rust-pure-rust-locales"
  535. ,#~((add-after 'unpack 'ignore-checksum
  536. (lambda _
  537. ;; Assumes Cargo. TODO: generate src/lib.rs from source.
  538. (delete-file "tests/checksum.rs")))))
  539. ;; TODO: Upstream/update
  540. ("rust-structopt-derive"
  541. ,#~((add-after 'unpack 'use-existing
  542. (lambda _
  543. (substitute* "src/attrs.rs"
  544. (("CamelCase, KebabCase, MixedCase, ShoutySnakeCase, SnakeCase")
  545. ;; ?? CamelCase, MixedCase
  546. "ToUpperCamelCase, ToKebabCase, ToLowerCamelCase, ToShoutySnakeCase, ToSnakeCase")
  547. (("to_camel_case") "to_upper_camel_case")
  548. (("to_mixed_case") "to_lower_camel_case"))))))
  549. ("alacritty" ; TODO: patch dependencies .so file name
  550. ,#~((add-after 'unpack 'enter-directory
  551. (lambda _
  552. (chdir "alacritty")))
  553. ;; Preserve cargo-build-system phase (see terminals.scm for copyright
  554. ;; lines), adjusted for antioxidant. TODO: don't delete the install
  555. ;; phase.
  556. (add-after 'install 'install-extra
  557. ;; Upstream install script only takes care of executable.
  558. (lambda* (#:key inputs outputs #:allow-other-keys)
  559. (chdir "..")
  560. (let* ((out (assoc-ref outputs "out"))
  561. (bin (string-append out "/bin"))
  562. (share (string-append out "/share"))
  563. (icons (string-append share "/icons/hicolor/scalable/apps"))
  564. (tic (search-input-file inputs "/bin/tic"))
  565. (man (string-append share "/man/man1")))
  566. ;; Install man pages.
  567. (mkdir-p man)
  568. (copy-file "extra/alacritty.man"
  569. (string-append man "/alacritty.1"))
  570. ;; Install desktop file.
  571. (install-file "extra/linux/Alacritty.desktop"
  572. (string-append share "/applications"))
  573. ;; Install icon.
  574. (mkdir-p icons)
  575. (copy-file "extra/logo/alacritty-term.svg"
  576. (string-append icons "/Alacritty.svg"))
  577. ;; Install terminfo.
  578. (mkdir-p (string-append share "/terminfo"))
  579. ;; We don't compile alacritty-common entry because
  580. ;; it's being used only for inheritance.
  581. (invoke tic "-x" "-e" "alacritty,alacritty-direct"
  582. "-o" (string-append share "/terminfo/")
  583. "extra/alacritty.info")
  584. ;; Install completions.
  585. (install-file "extra/completions/alacritty.bash"
  586. (string-append out "/etc/bash_completion.d"))
  587. (install-file "extra/completions/_alacritty"
  588. (string-append share "/zsh/site-functions"))
  589. (install-file "extra/completions/alacritty.fish"
  590. (string-append share "/fish/vendor_completions.d")))))))
  591. ;; TODO: upstream
  592. ("rust-argh-derive"
  593. ,#~((add-after 'unpack 'new-heck-compatibility
  594. (lambda _
  595. (substitute* "src/lib.rs"
  596. (("heck::KebabCase::to_kebab_case") "heck::ToKebabCase::to_kebab_case"))))))
  597. ;; TODO: upstream
  598. ("rust-salsa-macros"
  599. ,#~((add-after 'unpack 'new-heck-compatibility
  600. (lambda _
  601. (substitute* '("src/database_storage.rs" "src/query_group.rs")
  602. (("heck::SnakeCase") "heck::ToSnakeCase")
  603. (("heck::CamelCase") "heck::ToUpperCamelCase")
  604. (("to_camel_case") "to_upper_camel_case"))))))
  605. ;; TODO: Upstream/update
  606. ("rust-cbindgen"
  607. ,#~((add-after 'unpack 'use-existing
  608. (lambda _
  609. (substitute* "src/bindgen/rename.rs"
  610. (("to_camel_case") "to_upper_camel_case")
  611. (("to_mixed_case") "to_lower_camel_case"))))
  612. ;; Let the tests find the binary.
  613. (add-after 'unpack 'find-self-for-tests
  614. (lambda _
  615. (substitute* "build.rs"
  616. (("\"cbindgen\"")
  617. (object->string (string-append #$output "/bin/cbindgen"))))))))
  618. ("rust-gdk"
  619. ,#~((replace 'check rust-tests-check/xorg)))
  620. ("rust-gtk"
  621. ,#~((replace 'check rust-tests-check/xorg)))
  622. ;; TODO: add rust-peg-macros to native-inputs for
  623. ;; cross-compilation reasons.
  624. ;;
  625. ;; There appears to be a bootstrapping cycle here:
  626. ;; IIUC, rust-peg/rust-peg-macros accepts a PEG grammar.
  627. ;; This grammar is parsed & compiled into Rust code.
  628. ;; The parser (of the grammar of the PEG grammar) is
  629. ;; generated with rust-peg/rust-peg-macros.
  630. ;;
  631. ;; The solution to the cycle appears to be:
  632. ;;
  633. ;; * peg-macros ships a pre-generated parser
  634. ;; * the generated code is sufficiently short
  635. ;; for there not to be any opportunity for
  636. ;; hiding anything malicious
  637. ;; * peg (in its bootstrap.sh) regenerates
  638. ;; the parser and check that its a fixpoint.
  639. ("rust-peg"
  640. ,#~((replace 'bootstrap
  641. (lambda* (#:key native-inputs #:allow-other-keys)
  642. (with-output-to-file "new-grammar.rs"
  643. (lambda ()
  644. (invoke "rust-peg"
  645. (search-input-file native-inputs
  646. "share/rust-peg-macros/grammar.rustpeg"))))
  647. ;; TODO: the fixpoint test fails!
  648. #;(invoke "diff" "-s" "--ignore-space-change" "new-grammar.rs"
  649. (search-input-file native-inputs
  650. "share/rust-peg-macros/grammar.rs"))
  651. (delete-file "new-grammar.rs")))))
  652. ("rust-peg-macros"
  653. ,#~((add-after 'install 'install-grammar
  654. (lambda _
  655. (install-file "grammar.rustpeg" (string-append #$output "/share/rust-peg-macros"))
  656. (install-file "grammar.rs" (string-append #$output "/share/rust-peg-macros"))))))
  657. ("rust-plotters"
  658. ,#~((add-after 'unpack 'new-dependencies-compatibility
  659. ;; TODO: upstream, snippet
  660. (lambda _
  661. (substitute* "src/element/image.rs"
  662. (("\\bto_bgra8\\b") "to_rgba8")))))) ;; TODO: does the ordering of the letters matter?
  663. ("rust-pkcs1"
  664. ,#~((add-after 'unpack 'fix-typing
  665. (lambda _
  666. ;; Already upstream: <https://github.com/RustCrypto/formats/blob/fbf4334be7717e1f393c3f7b9b4c85c584ce8395/pkcs1/src/lib.rs#L49>, but not yet in any release.
  667. (substitute* "src/lib.rs"
  668. (("ObjectIdentifier::new") "ObjectIdentifier::new_unwrap"))))))
  669. ("rust-pkcs5"
  670. ,#~((add-after 'unpack 'fix-typing
  671. (lambda _
  672. ;; Required for old version 0.3.2.
  673. (substitute* (find-files "." "\\.rs$")
  674. (("ObjectIdentifier::new") "ObjectIdentifier::new_unwrap"))))))
  675. ("rust-pkcs8"
  676. ,#~((add-after 'unpack 'fix-typing
  677. (lambda _
  678. ;; Required for old version 0.7.6.
  679. (substitute* (find-files "." "\\.rs$")
  680. (("ObjectIdentifier::new") "ObjectIdentifier::new_unwrap"))))))
  681. ("rust-markup5ever" ; for rust-markup5ever@0.9, not needed by newever versions
  682. ,#~((add-after 'unpack 'new-phf-compatibility
  683. (lambda _
  684. (substitute* "build.rs"
  685. (("phf_map\\.build\\(&mut file\\)\\.unwrap\\(\\)")
  686. "write!(&mut file, \"{}\", phf_map.build())"))))))
  687. ("rust-mio-extras"
  688. ,#~((add-after 'unpack 'mio@0.6.21-compatibility
  689. (lambda _
  690. (substitute* '("src/channel.rs" "src/timer.rs")
  691. (("::\\{Evented,") "::{event::Evented,"))))))
  692. ("rust-num-format" ;; TODO: upstream
  693. ,#~((add-after 'unpack 'rust-arrayvec@0.7-compatibility
  694. (lambda _
  695. (substitute* "src/strings.rs"
  696. (("ArrayString<\\[u8; \\$max_len\\]>")
  697. "ArrayString<$max_len>"))))))
  698. ;; TODO: change in Guix upstream.
  699. ;; TODO: adjust README.md? Make sure LICENSE-APACHE
  700. ;; is installed?
  701. ("rust-cmake"
  702. ,#~((add-after 'unpack 'absolute-cmake
  703. (lambda* (#:key inputs #:allow-other-keys)
  704. (substitute* "src/lib.rs"
  705. (("\"cmake\"") (format #f "\"~a\"" (search-input-file inputs "bin/cmake"))))))))
  706. ("rust-clang-sys"
  707. ;; TODO: are there some paths that need to be
  708. ;; absolutised?
  709. ,#~((add-after 'unpack 'set-libclang-path
  710. (lambda* (#:key inputs #:allow-other-keys)
  711. (setenv "LIBCLANG_PATH"
  712. (dirname (search-input-file inputs "lib/libclang.so")))))))
  713. ("rust-multipart"
  714. ,#~((add-after 'unpack 'remove-uncompilable-example
  715. (lambda _
  716. (delete-file "src/bin/read_file.rs")))))
  717. ("rust-cpp-demangle"
  718. ,#~((add-after 'unpack 'delete-bin
  719. (lambda _
  720. (delete-file "src/bin/afl_runner.rs")))))
  721. ("rust-email" ;; TODO: upstream
  722. ,#~((add-after 'unpack 'new-rand-compatibility
  723. (lambda _
  724. (define first? #true)
  725. (substitute* "src/message.rs"
  726. (("\\.collect\\(\\)")
  727. (if first?
  728. (begin
  729. (set! first? #false)
  730. ".map(char::from).collect()")
  731. ".collect()")))))))
  732. ("rust-parasail-sys" ; TODO: license of bundled library seems to forbid writing a Wikipedia article of whatever that calls the Battelle Memorial Institute by name without consent by Battelle. Also, the license fishes for citations. Also, it isn't cross-compiled as required.
  733. ,#~((add-after 'unpack 'fixup-installation-location
  734. (lambda _
  735. (mkdir-p (in-vicinity #$output "/lib"))
  736. (substitute* "build.rs"
  737. (("env::var\\(\"OUT_DIR\"\\).unwrap\\(\\)") ; TODO: maybe set OUT_DIR to somewhere in the store, then this wouldn't be necessary
  738. (object->string (string-append #$output "/lib")))))) ; exact location doesn't matter as long as it's in the store
  739. (add-after 'unpack 'set-shell-for-configure-script ; keep upstream Guix phase
  740. (lambda* _
  741. (setenv "SHELL" (which "sh"))
  742. (setenv "CONFIG_SHELL" (which "sh")))))) ; TODO: bundles a C library
  743. ("rust-rspotify"
  744. ,#~((add-after 'unpack 'new-rand-compatibility
  745. ;; TODO: upstream / update
  746. (lambda _
  747. (substitute* "src/util.rs"
  748. (("\\.take\\(length\\)") ".take(length).map(char::from)"))))))
  749. ("rust-rustls"
  750. ,#~((add-after 'unpack 'remove-tests
  751. ;; missing test files. Also, they likely have expiration problems anyway.
  752. (lambda _
  753. (delete-file-recursively "tests")))))
  754. ("spotify-tui" ;; TODO: upstream / update
  755. ,#~((add-after 'unpack 'new-tokio-compatibility
  756. (lambda _
  757. (substitute* "src/network.rs"
  758. (("tokio::time::delay_for") "tokio::time::sleep"))))))
  759. ("rust-tokio-sync"
  760. ,#~((add-after 'unpack 'unpreview
  761. (lambda _
  762. (substitute* "Cargo.toml"
  763. (("-preview\\]") "]"))))))
  764. ("dutree"
  765. ;; See <https://github.com/nachoparker/dutree/pull/40>
  766. ,#~((add-after 'unpack 'update-to-new-signal-hookversion
  767. (lambda _
  768. (substitute* "src/main.rs"
  769. (("signal_hook::register") "signal_hook::low_level::register"))
  770. (substitute* "src/main.rs"
  771. (("signal_hook::SIGPIPE") "signal_hook::consts::signal::SIGPIPE"))))))
  772. ("rust-tectonic-bridge-core"
  773. ,#~(;; Build a generated file from source, using the instructions
  774. ;; mentioned in the README.
  775. (add-after 'generate-cbindgen-metadata-phase 'regenerate-cbindgen-things
  776. (lambda _
  777. (delete-file "support/tectonic_bridge_core_generated.h")
  778. (invoke "cbindgen" "--output" "support/tectonic_bridge_core_generated.h")))
  779. ;; Actually install the headers somewhere where they can be found
  780. ;; by dependencies.
  781. (add-after 'unpack 'fixup-headers-locations
  782. (lambda _
  783. (substitute* "build.rs"
  784. (("main_header_src\\.display\\(\\)")
  785. (string-append "\"" #$output "/include\""))
  786. (("env::var\\(\"OUT_DIR\"\\).unwrap\\(\\)") ; TODO: maybe set OUT_DIR to somewhere in the store, then this wouldn't be necessary
  787. (string-append "\"" #$output "/include\"")))))
  788. (add-after 'install 'install-header
  789. (lambda _
  790. (install-file "support/tectonic_bridge_core_generated.h"
  791. (string-append #$output "/include"))
  792. (install-file "support/tectonic_bridge_core.h"
  793. (string-append #$output "/include"))))))
  794. ("rust-tectonic-bridge-flate"
  795. ;; required to make rust-cbindgen produce building C code.
  796. ,#~((add-after 'unpack 'fixup-headers-locations ; see rust-tectonic-bridge-core
  797. (lambda _
  798. (substitute* "build.rs"
  799. (("env::var\\(\"OUT_DIR\"\\).unwrap\\(\\)") ; TODO: maybe set OUT_DIR to somewhere in the store, then this wouldn't be necessary
  800. (string-append "\"" #$output "/include\"")))))))
  801. ("rust-tectonic-pdf-io"
  802. ;; Put headers somewhere where they can be found by dependencies.
  803. ,#~((add-after 'unpack 'fixup-headers-location
  804. (lambda _
  805. (copy-recursively "pdf_io" (in-vicinity #$output "include"))
  806. (for-each delete-file (find-files (in-vicinity #$output "include")
  807. "\\.c$"))
  808. (substitute* "build.rs"
  809. (("main_header_src\\.display\\(\\)")
  810. (object->string (in-vicinity #$output "include"))))))))
  811. ("rust-tectonic-xetex-layout"
  812. ;; Put headers somewhere where they can be found by dependencies.
  813. ;; TODO: OUT_DIR.
  814. ,#~((add-after 'unpack 'fixup-headers-location
  815. (lambda _
  816. (define destination (in-vicinity #$output "include"))
  817. (mkdir-p destination)
  818. (substitute* "build.rs"
  819. (("\\benv::var\\(\"OUT_DIR\"\\)\\.unwrap\\(\\)")
  820. (object->string destination)))))))
  821. ("rust-tectonic-engine-xetex"
  822. ,#~((add-after 'unpack 'find-fontconfig ; TODO: what causes <fontconfig/fontconfig.h> not to be found even though it is in C_INCLUDE_PATH?
  823. (lambda* (#:key inputs #:allow-other-keys)
  824. (substitute* "xetex/xetex-core.h"
  825. (("\\bfontconfig/fontconfig\\.h\\b")
  826. (search-input-file inputs "include/fontconfig/fontconfig.h"))
  827. (("<harfbuzz\\b") ; XXX: -I points to subdirectory yet parent directory is used
  828. (string-append
  829. "<"
  830. (search-input-directory inputs "include/harfbuzz"))))))))
  831. ("rust-tikv-jemalloc-ctl"
  832. ,#~((add-after 'unpack 'use-conventional-name
  833. (lambda _
  834. (substitute* "Cargo.toml"
  835. (("\\[dependencies.tikv-jemalloc-sys\\]" line)
  836. (string-append line "\npackage = \"jemalloc-sys\""))
  837. (("\\[dev-dependencies.tikv-jemallocator\\]" line)
  838. (string-append line "\npackage = \"jemallocator\"")))))))
  839. ("rust-ncurses"
  840. ,#~((add-before 'configure 'find-library-directory
  841. (lambda* (#:key inputs #:allow-other-keys)
  842. ;; Somehow the library directory is not found, curses!
  843. ;; Work-around thi by manually adding the library directory.
  844. ((@@ (antioxidant) add-c-library-directory!)
  845. (dirname (search-input-file inputs "lib/libncurses.so")))))))
  846. ("rust-tree-magic-mini"
  847. ,#~((add-after 'unpack 'use-unbundled-magic-data
  848. (lambda* (#:key inputs #:allow-other-keys)
  849. (substitute* "src/fdo_magic/builtin/runtime.rs"
  850. ;; Looks broken in Guix w.r.t. foreign distros. The $HOME/.local/share/mime/magic
  851. ;; looks ok-ish, but would be unpopulated in Guix. These substitutions are fragile,
  852. ;; please check them after an update!
  853. ;; See: <https://issues.guix.gnu.org/56173>.
  854. (("&\\[&str; 3\\]") "&[&str; 1]")
  855. (("\"/usr/share/mime/subclasses\",") "")
  856. (("\"/usr/local/share/mime/subclasses\",") "")
  857. (("\\$HOME/\\.local/share/mime/subclasses")
  858. (search-input-file inputs "share/mime/subclasses"))
  859. (("\"/usr/share/mime/magic\",") "")
  860. (("\"/usr/local/share/mime/magic\",") "")
  861. (("\\$HOME/\\.local/share/mime/magic")
  862. (search-input-file inputs "share/mime/magic"))
  863. (("\"/usr/share/mime/aliases\",") "")
  864. (("\"/usr/local/share/mime/aliases\",") "")
  865. (("\\$HOME/\\.local/share/mime/aliases")
  866. (search-input-file inputs "share/mime/aliases")))
  867. #;(error "barf"))))) ; for checking after an update with --keep-failed
  868. ("rust-tuikit"
  869. ;; TODO: upstream
  870. ,#~((add-after 'unpack 'fix-unresolved+deprecated
  871. (lambda _
  872. (substitute* "src/raw.rs"
  873. (("use nix::Error::Sys;") "")
  874. (("match err \\{") "{")
  875. (("nix::Error::from_errno\\(ENOTTY\\)") "ENOTTY")
  876. (("Sys\\((.*)") "err.into()")
  877. (("_ => (.*)$") ""))))))
  878. ("skim"
  879. ;; TODO: upstream or update, snippet
  880. ,#~((add-after 'unpack 'new-nix-compatibility
  881. (lambda _
  882. (substitute* "src/lib.rs"
  883. (("nix::Error::Sys\\(nix::error::Errno::EINVAL\\)") "nix::Error::Error::EINVAL"))))
  884. ;; Keep phases of cargo-build-system (see (gnu packages crates-io) for copyright lines)
  885. (add-after 'install 'install-extras
  886. (lambda* (#:key outputs #:allow-other-keys)
  887. (let* ((out (assoc-ref outputs "out"))
  888. (bin (string-append out "/bin"))
  889. (share (string-append out "/share"))
  890. (man (string-append out "/share/man"))
  891. (vimfiles (string-append share "/vim/vimfiles/plugin"))
  892. (bash-completion
  893. (string-append share "/bash-completions/completions"))
  894. (zsh-site (string-append share "/zsh/site-functions"))
  895. (fish-vendor
  896. (string-append share "/fish/vendor-completions.d")))
  897. ;; Binaries
  898. (for-each
  899. (lambda (binary) (install-file binary bin))
  900. (find-files "bin"))
  901. (mkdir-p share)
  902. ;; Manpages
  903. (copy-recursively "man" man)
  904. ;; Vim plugins
  905. (mkdir-p vimfiles)
  906. (copy-recursively "plugin" vimfiles)
  907. ;; Completions
  908. (mkdir-p bash-completion)
  909. (copy-file
  910. "shell/completion.bash"
  911. (string-append bash-completion "/skim"))
  912. (copy-file
  913. "shell/key-bindings.bash"
  914. (string-append bash-completion "/skim-bindings"))
  915. (mkdir-p zsh-site)
  916. (copy-file
  917. "shell/completion.zsh"
  918. (string-append zsh-site "/_skim"))
  919. (copy-file
  920. "shell/key-bindings.zsh"
  921. (string-append zsh-site "/_skim-bindings"))
  922. (mkdir-p fish-vendor)
  923. (copy-file
  924. "shell/key-bindings.fish"
  925. (string-append fish-vendor "/skim-bindings.fish")))))))
  926. ;; 'cc' and 'c++' don't exist
  927. ("rust-gcc"
  928. ,#~((add-after 'unpack 'fix-cc
  929. (lambda _
  930. (substitute* "src/lib.rs"
  931. (("\"cc\"") "\"gcc\"")
  932. (("\"c++\"") "\"g++\""))))))
  933. ("rust-hts-sys"
  934. ;; TODO: unbundle htslib <https://isues.guix.gnu.org/issue/58409>
  935. ,#~((add-after 'unpack 'work-around-bundling
  936. (lambda _
  937. (substitute* "build.rs"
  938. (("if htslib_copy\\.exists\\(\\)") "if false")
  939. (("copy_directory\\(\"htslib\", &out)\\.unwrap\\(\\);") ""))))))
  940. ("rust-os-pipe"
  941. ,#~((add-after 'unpack 'no-cargo
  942. ;; TODO would be nice to build them with debug
  943. ;; assertions. Calling cargo isn't going to work.
  944. (lambda _
  945. (substitute* "src/lib.rs"
  946. (("path_to_exe\\(\"([a-z_]+)\"\\)" _ name)
  947. (object->string
  948. (string-append #$output "/bin/" name))))))))
  949. ("circtools"
  950. ,#~((add-after 'unpack 'fixup-link-search
  951. ;; TODO: what's the rustc-flags=-L for?
  952. ;; Why not rustc-link-search?
  953. ;; What's up with separate lib/lib64 directories?
  954. (lambda _
  955. (substitute* "build.rs"
  956. (("\\bdst\\.display\\(\\)") (object->string "build/lib"))
  957. (("^.*cargo:rustc-flags=.*$") ""))))))
  958. ("rust-cc"
  959. ,#~((add-after 'unpack 'fix-cc
  960. (lambda _
  961. (substitute* "src/lib.rs"
  962. (("\"cc\"") "\"gcc\"")
  963. (("\"c++\"") "\"g++\""))))
  964. ;; TODO: switch to git checkout for access to the files.
  965. (add-after 'unpack 'remove-tests-with-missing-files
  966. (lambda _
  967. (delete-file-recursively "tests")))))
  968. ("rust-wait-timeout"
  969. ;; By default, the test expects the binaries to be in the same directory,
  970. ;; but in antioxidant they are separate. Change the tests a litttle to
  971. ;; compensate for the differences.
  972. ,#~((add-after 'unpack 'adjust-tests
  973. (lambda _
  974. (substitute* "tests/smoke.rs"
  975. (("use std::env;") "use std::path::Path;")
  976. (("env::current_exe\\(\\)\\.unwrap\\(\\)")
  977. (format #f "Path::new(~s).to_path_buf()"
  978. (string-append #$output "/bin/pop me"))))))))
  979. ;; See: <https://github.com/seanmonstar/warp/issues/996>
  980. ("rust-warp"
  981. ,#~((add-after 'unpack 'adjust-timestamp
  982. (lambda _
  983. ;; The mtime of the README.md is incorrect, causing the
  984. ;; 'precondition' test in tests/fs.rs. Adjust it to something
  985. ;; suitable for the test.
  986. (utime "README.md"
  987. ((@ (srfi srfi-19) time-second)
  988. ((@ (srfi srfi-19) date->time-utc)
  989. ((@ (srfi srfi-19) make-date) 0 0 0 0 8 11 1994 0))))))))
  990. ("rust-watchexec"
  991. ;; All src/main.rs does is throwing a compilation error telling that the
  992. ;; actual binary is moved to another crate, so don't try to build it.
  993. ,#~((delete 'build-binaries)))
  994. ;; Keep cargo-build-system phase (disabling dlopen is insufficient)
  995. ("rust-wayland-sys"
  996. ,#~((add-after 'unpack 'patch-libraries
  997. (lambda* (#:key inputs #:allow-other-keys)
  998. (let ((libwayland (dirname (search-input-file
  999. inputs "lib/libwayland-client.so"))))
  1000. (substitute* (find-files "src" "\\.rs$")
  1001. (("libwayland.*\\.so" shared-lib)
  1002. (string-append libwayland "/" shared-lib))))))))
  1003. ("rust-wl-clipboard-rs"
  1004. ;; For tests
  1005. ,#~((add-before 'check 'setup-xdg-runtime-dir
  1006. (lambda _
  1007. (mkdir ".xdg-runtime")
  1008. (setenv "XDG_RUNTIME_DIR" (in-vicinity (getcwd) ".xdg-runtime"))))))
  1009. ("rust-x11-clipboard"
  1010. ,#~((replace 'check rust-tests-check/xorg)))
  1011. ("tectonic"
  1012. ,#~((add-after 'unpack 'fixup-tectonic-test-location
  1013. (lambda _
  1014. ;; It looks for tectonic in the 'tests' directory instead of
  1015. ;; $PATH.
  1016. (substitute* "tests/executable.rs"
  1017. (("cargo_dir\\(\\)")
  1018. (format #f "Path::new(~s)" (string-append #$output "/bin"))))))
  1019. ;; Preserve phases of cargo-build-system.
  1020. ;; TODO: check if 'external-harfbuzz' is properly enabled in the harfbuzz bindings.
  1021. (add-after 'install 'install-doc
  1022. (lambda* (#:key outputs #:allow-other-keys)
  1023. (let* ((out (assoc-ref outputs "out"))
  1024. (doc (string-append out "/share/doc/" "tectonic" #;,name "-" "0.8.2" #;,version)))
  1025. (copy-recursively "docs/src" doc))))))))
  1026. (define (custom-phases name)
  1027. (define (drop-version name)
  1028. (let ((name _ (package-name->name+version name #\-)))
  1029. name))
  1030. (let ((name
  1031. (match name
  1032. ((? (cut string-prefix? "antioxidated-rust-analyzer-" <>) name)
  1033. "rust-analyzer")
  1034. ((? (cut string-prefix? "antioxidated-" <>) name)
  1035. (drop-version (string-drop name (string-length "antioxidated-"))))
  1036. ;; name+version is confused by the -alpha suffix
  1037. ((? (cut string-prefix? "rust-tokio-sync-0.2.0-alpha" <>) name)
  1038. "rust-tokio-sync")
  1039. ;; likewise
  1040. ((? (cut string-prefix? "rust-mesalink-1.1.0-cratesio" <>) name)
  1041. "rust-mesalink")
  1042. ((? (cut string-prefix? "rust-salsa-macros-0.17.0-pre.2" <>) name)
  1043. "rust-salsa-macros")
  1044. ((? (cut string-prefix? "rust-analyzer-" <>) name)
  1045. "rust-analyzer")
  1046. (_ (drop-version name)))))
  1047. (match (assoc name %custom-phases)
  1048. ((_ phases) phases)
  1049. (#false #~()))))
  1050. ;; 4.7.1 has an incompatible change, see
  1051. ;; <https://github.com/aconchillo/guile-json/issues/78#issuecomment-1166225845>.
  1052. ;; Let's see wait to see what the maintainer thinks of (partially) reverting
  1053. ;; that commit.
  1054. (define-public guile-json-4
  1055. (package
  1056. (inherit (@ (gnu packages guile) guile-json-4))
  1057. (name "guile-json")
  1058. (version "4.5.2")
  1059. (source (origin
  1060. (method url-fetch)
  1061. (uri (string-append "mirror://savannah/guile-json/guile-json-"
  1062. version ".tar.gz"))
  1063. (sha256
  1064. (base32
  1065. "0cqr0ljqmzlc2bwrapcsmcgxg147h66mcxf23824ri5i6vn4dc0s"))))))
  1066. (define* (antioxidant-build name inputs #:key
  1067. (phases #~%standard-antioxidant-phases)
  1068. (rust-dynamic-library-arguments #false)
  1069. (tests? #true)
  1070. (skipped-integration-tests
  1071. #~%default-skipped-integration-tests)
  1072. (parallel-tests? #true)
  1073. (test-options #~'()) ; G-exp evaluating to a list of CLI arguments
  1074. modules ; what to do about 'modules'
  1075. install-source? ; not used by antioxidant-build-system
  1076. system target source search-paths outputs
  1077. (rust-metadata #~'automatic)
  1078. (optimisation-level "3") ; the Cargo default. IIUC, also enables LTO.
  1079. (debuginfo-level "1") ; 1: line tables
  1080. (features #~'("default"))
  1081. (cargo-target-directory #false)
  1082. (rust-crate-type #false)
  1083. (rust-environment-variables
  1084. #~'#$(rust-environment-variables
  1085. (or target
  1086. (nix-system->gnu-triplet system)))))
  1087. (define builder
  1088. (with-extensions (list guile-json-4)
  1089. (with-imported-modules
  1090. (cons '(antioxidant)
  1091. (source-module-closure '((guix build utils)
  1092. (guix build syscalls) ; <-- can be removed once in (guix build antioxidant)
  1093. (guix build gnu-build-system)
  1094. (antioxidant))))
  1095. #~(begin
  1096. (use-modules (guix build utils) (guix build gnu-build-system)
  1097. (srfi srfi-1) (ice-9 match) (antioxidant))
  1098. (gnu-build #:name #$name
  1099. #:source #+source
  1100. #:system #+(nix-system->gnu-triplet system)
  1101. #:build #+(nix-system->gnu-triplet system)
  1102. ;; used even when building natively
  1103. #:target #$(or target
  1104. (nix-system->gnu-triplet system))
  1105. #:outputs #$(outputs->gexp outputs)
  1106. #:inputs #$(input-tuples->gexp inputs)
  1107. #:native-inputs #$(input-tuples->gexp inputs)
  1108. #:search-paths '#$(map search-path-specification->sexp
  1109. search-paths)
  1110. #:features #$features
  1111. #:optimisation-level '#$optimisation-level
  1112. #:debuginfo-level '#$debuginfo-level
  1113. #:rust-environment-variables #$rust-environment-variables
  1114. #:cargo-target-directory #$cargo-target-directory ; <-- TODO: unused, maybe remove?
  1115. #:rust-crate-type #$rust-crate-type
  1116. #:rust-metadata #$rust-metadata
  1117. #:rust-dynamic-library-arguments #$rust-dynamic-library-arguments
  1118. #:strip-binaries? #false ; TODO exported symbols are removed
  1119. #:tests? #$tests?
  1120. #:skipped-integration-tests #$skipped-integration-tests
  1121. #:parallel-tests? #$parallel-tests?
  1122. #:test-options #$test-options
  1123. #:phases (modify-phases #$phases
  1124. #$@(custom-phases name)))))))
  1125. ;; The #:graft and #:guile-for-build things are copied from
  1126. ;; gnu-build-system.
  1127. (mlet %store-monad ((guile (package->derivation (default-guile)
  1128. system #:graft? #f)))
  1129. (gexp->derivation name builder
  1130. #:system system
  1131. #:target target
  1132. #:graft? #f
  1133. #:guile-for-build guile)))
  1134. ;; TODO: would be nice to deduplicate with antioxidant-build
  1135. (define* (antioxidant-workspace-build
  1136. name inputs #:key
  1137. (phases #~(@ (antioxidant-workspaces) %antioxidant-workspaces-phases))
  1138. (member-phases
  1139. #~(@ (antioxidant-workspaces) %antioxidant-member-main-phases))
  1140. (member-extra-phases
  1141. #~(@ (antioxidant-workspaces) %antioxidant-member-extra-phases))
  1142. (make-flags #~'()) ; some workspaces also use a 'make'
  1143. (override-member-crate-type #~'())
  1144. (rust-dynamic-library-arguments #false)
  1145. (tests? #true)
  1146. (skipped-integration-tests
  1147. #~%default-skipped-integration-tests)
  1148. (parallel-tests? #true)
  1149. (test-options #~'())
  1150. modules
  1151. install-source? ; not used by antioxidant-build-system
  1152. system target source search-paths outputs
  1153. (rust-metadata #~'automatic)
  1154. (optimisation-level "3")
  1155. (debuginfo-level "1")
  1156. (features #~'("default"))
  1157. (cargo-target-directory #false)
  1158. (rust-crate-type #false)
  1159. (rust-environment-variables
  1160. #~'#$(rust-environment-variables
  1161. (or target
  1162. (nix-system->gnu-triplet system)))))
  1163. (define builder
  1164. (with-extensions (list guile-json-4
  1165. (@ (gnu packages guile-xyz) guile-pfds)) ; for (pfds hamts)
  1166. (with-imported-modules
  1167. (append '((antioxidant) (antioxidant-workspaces) (topological-sort))
  1168. (source-module-closure '((guix build utils)
  1169. (guix build syscalls)
  1170. (guix build gnu-build-system)
  1171. (antioxidant))))
  1172. #~(begin
  1173. (use-modules (guix build utils) (guix build gnu-build-system)
  1174. (srfi srfi-1) (ice-9 match) (antioxidant) (antioxidant-workspaces))
  1175. (gnu-build #:name #$name
  1176. #:source #+source
  1177. #:system #+(nix-system->gnu-triplet system)
  1178. #:build #+(nix-system->gnu-triplet system)
  1179. ;; used even when building natively
  1180. #:target #$(or target
  1181. (nix-system->gnu-triplet system))
  1182. #:outputs #$(outputs->gexp outputs)
  1183. #:inputs #$(input-tuples->gexp inputs)
  1184. #:native-inputs #$(input-tuples->gexp inputs)
  1185. #:search-paths '#$(map search-path-specification->sexp
  1186. search-paths)
  1187. #:features #$features
  1188. #:optimisation-level '#$optimisation-level
  1189. #:debuginfo-level '#$debuginfo-level
  1190. #:rust-environment-variables #$rust-environment-variables
  1191. #:cargo-target-directory #$cargo-target-directory ; <-- TODO: unused, maybe remove?
  1192. #:rust-crate-type #$rust-crate-type
  1193. #:override-member-crate-type #$override-member-crate-type
  1194. #:make-flags #$make-flags
  1195. #:rust-metadata #$rust-metadata
  1196. #:rust-dynamic-library-arguments #$rust-dynamic-library-arguments
  1197. #:strip-binaries? #false ; TODO exported symbols are removed
  1198. #:tests? #$tests?
  1199. #:skipped-integration-tests #$skipped-integration-tests
  1200. #:parallel-tests? #$parallel-tests?
  1201. #:test-options #$test-options
  1202. #:phases (modify-phases #$phases
  1203. #$@(custom-phases name))
  1204. #:member-phases #$member-phases
  1205. #:member-extra-phases #$member-extra-phases)))))
  1206. (gexp->derivation name builder #:system system #:target target #:graft? #f))
  1207. (define* (lower name #:key system source inputs native-inputs outputs target
  1208. (features #~'("default"))
  1209. (rust-metadata #~'automatic)
  1210. #:allow-other-keys
  1211. #:rest arguments)
  1212. (define private-keywords
  1213. '(#:inputs #:native-inputs #:outputs))
  1214. (bag
  1215. (name name)
  1216. (system system)
  1217. (target target)
  1218. (build-inputs `(("source" ,source)
  1219. ("rust" ,rust)
  1220. ("python" ,python)
  1221. ("python-toml" ,python-toml) ; for convert-toml->json
  1222. ;; CARGO_PKG_AUTHORS can contain non-ASCII characters,
  1223. ;; make sure 'setenv' won't fail by including glibc
  1224. ;; and glibc-utf8-locales
  1225. ,@(@ (gnu packages commencement) %final-inputs)
  1226. ,@native-inputs))
  1227. (host-inputs inputs)
  1228. (outputs outputs)
  1229. (build (if target antioxidant-cross-build antioxidant-build))
  1230. (arguments (strip-keyword-arguments private-keywords arguments))))
  1231. (define* (lower-workspace name #:key target #:allow-other-keys #:rest arguments)
  1232. (bag (inherit (apply lower name arguments))
  1233. (build (if target
  1234. antioxidant-workspace-cross-build
  1235. antioxidant-workspace-build))))
  1236. (define-public antioxidant-build-system
  1237. (build-system
  1238. (name 'antioxidant)
  1239. (description "Build software written in Rust, without cargo")
  1240. (lower lower)))
  1241. ;; TODO: untested
  1242. (define-public antioxidant-workspace-build-system
  1243. (build-system
  1244. (name 'antioxidant-workspace)
  1245. (description "Variant of antioxidant-build-system, for workspaces")
  1246. (lower lower-workspace)))
  1247. ;; Self-check
  1248. (define (missing-cargo->antioxidant-phases? name phases)
  1249. (define phases-as-sexp
  1250. (if (gexp? phases)
  1251. (gexp->approximate-sexp phases) ; close enough for our purposes
  1252. phases))
  1253. (define (unneeded-phase-entry? phase)
  1254. (match phase
  1255. ;; This phase appears to be a matter of telling rust-jemalloc-sys where
  1256. ;; to find the library, but there is already a custom phase for rust-jemalloc-sys
  1257. ;; to do that. TODO: antioxidant uses libjemalloc.so, is there a reason some
  1258. ;; cargo-build-system phases use libjemalloc_pic.a instead?
  1259. (`(add-after 'configure 'override-jemalloc . ,proc)
  1260. #true)
  1261. ;; Cargo.toml patching for more flexibility in dependency versions,
  1262. ;; not needed in antioxidant.
  1263. (('add-after
  1264. ('quote (? (cut memq <> '(unpack configure))))
  1265. ('quote (? (cut memq <> '(fix-criterion-minor-version
  1266. fix-version-requirements
  1267. fix-maildir-version
  1268. patch-cargo-toml
  1269. relax-version-requirements
  1270. relax-requirements))))
  1271. . _)
  1272. #true)
  1273. ;; If this phase is still necessary in antioxidant we would probably
  1274. ;; just get a build failure. Example: rust-libpulse-sys.
  1275. (('add-before ''check ''set-HOME _)
  1276. #true)
  1277. ;; unknown, bail out
  1278. (_ #false)))
  1279. (define %done '("alacritty"
  1280. "python-blake3" ; XXX bogus, just an entry to get ci.guix.gnu.org active for now
  1281. "b3sum"
  1282. "circtools"
  1283. "exa"
  1284. "git-absorb"
  1285. "greetd"
  1286. "librsvg"
  1287. "newsboat"
  1288. "ripgrep"
  1289. "rust-fastq"
  1290. "rust-parasail-sys"
  1291. "rust-parasailors"
  1292. "rust-petgraph" ; TODO: (for @0.4) figure out how to run tests or replace by newer version
  1293. "rust-pkg-config"
  1294. "rust-wayland-sys" ; dlopen is disabled and things are substitute*-ed
  1295. "tectonic"
  1296. ;; TODO: the following aren't actually checked yet
  1297. "rust-analyzer"
  1298. "rust-synstructure"
  1299. "tealdeer"
  1300. "i3status-rust"
  1301. "skim"
  1302. "fd"
  1303. "hyperfine" "rust-diesel" "watchexec" "sequoia-sq" "libsequoia" "rust-sequoia-autocrypt" "rust-sequoia-net" "rust-sequoia-ipc" "sequoia-sqv" "rav1e"
  1304. ;; TODO: it builds without extending C_INCLUDE_PATH,
  1305. ;; are we missing some tests?
  1306. "rust-gio-sys"))
  1307. (cond ((eq? phases-as-sexp '%standard-phases) #false) ; nothing special
  1308. ((match phases-as-sexp
  1309. (('modify-phases '%standard-phases . entries)
  1310. (every unneeded-phase-entry? entries))
  1311. (#false #false))
  1312. ;; All custom phases aren't needed on antioxidant.
  1313. #false)
  1314. ((member name %done) #false) ; something special might be going on, but it's done correctly in antioxidant as well
  1315. ;; Unrecognised, something is going on!
  1316. (#true #true)))
  1317. (define-syntax p
  1318. (syntax-rules ()
  1319. ((_ foo) (@ (gnu packages crates-io) foo))))
  1320. (define crate-uri (@ (guix build-system cargo) crate-uri))
  1321. (define* (package-with-rust-features base new-features #:key (name (package-name base)))
  1322. "Return a variant of BASE with name NAME build with the features FEATURES."
  1323. (package
  1324. (inherit base)
  1325. (name name)
  1326. (arguments
  1327. (ensure-keyword-arguments
  1328. (package-arguments base)
  1329. (list #:features new-features)))))
  1330. ;; Use an updated set of rust-futures-... crates to avoid build failures
  1331. ;; caused by uses of unstable rust things. (and because they will need to
  1332. ;; be updated anyway eventually). TODO: verify for malware?
  1333. (define rust-futures-0.3
  1334. (package
  1335. (inherit (@ (gnu packages crates-io) rust-futures-0.3))
  1336. (name "rust-futures")
  1337. (version "0.3.21")
  1338. (source
  1339. (origin
  1340. (method url-fetch)
  1341. (uri (crate-uri "futures" version))
  1342. (file-name (string-append name "-" version ".tar.gz"))
  1343. (sha256
  1344. (base32 "17id2zvn2acny759indn6yj2acfa6lhkwzaidxr2pqfiaigycgzp"))))
  1345. (arguments
  1346. `(#:cargo-inputs
  1347. (("rust-futures-core" ,rust-futures-core-0.3)
  1348. ("rust-futures-channel" ,rust-futures-channel-0.3)
  1349. ("rust-futures-io" ,rust-futures-io-0.3)
  1350. ("rust-futures-sink" ,rust-futures-sink-0.3)
  1351. ("rust-futures-executor" ,rust-futures-executor-0.3)
  1352. ("rust-futures-util" ,rust-futures-util-0.3))))))
  1353. (define rust-futures-task-0.3
  1354. (package
  1355. (inherit (@ (gnu packages crates-io) rust-futures-task-0.3))
  1356. (version "0.3.21")
  1357. (source
  1358. (origin
  1359. (method (@ (guix download) url-fetch))
  1360. (uri ((@ (guix build-system cargo) crate-uri) "futures-task" "0.3.21"))
  1361. (file-name (string-append "rust-futures-task" "-" "0.3.21" ".tar.gz"))
  1362. (sha256
  1363. (base32 "0skpiz2ljisywajv79p70yapfwhkqhb39wxy3f09v47mdfbnmijp"))))))
  1364. (define rust-futures-util-0.3
  1365. (package
  1366. (inherit (@ (gnu packages crates-io) rust-futures-util-0.3))
  1367. (version "0.3.21")
  1368. (source
  1369. (origin
  1370. (method (@ (guix download) url-fetch))
  1371. (uri ((@ (guix build-system cargo) crate-uri) "futures-util" "0.3.21"))
  1372. (file-name (string-append "rust-futures-util" "-" "0.3.21" ".tar.gz"))
  1373. (sha256
  1374. (base32 "0sh3wqi8p36csjffy0irq8nlx9shqxp7z4dsih6bknarsvaspdyq"))))
  1375. (arguments
  1376. ;; TODO: upstream includes rust-futures
  1377. `(#:cargo-inputs
  1378. (("rust-futures-core" ,rust-futures-core-0.3)
  1379. ("rust-futures-task" ,rust-futures-task-0.3)
  1380. ("rust-futures-macro" ,rust-futures-macro-0.3)
  1381. ("rust-futures-sink" ,rust-futures-sink-0.3)
  1382. ("rust-futures-io" ,rust-futures-io-0.3)
  1383. ("rust-futures-channel" ,rust-futures-channel-0.3)
  1384. ("rust-memchr" ,(p rust-memchr-2))
  1385. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))
  1386. ("rust-pin-utils" ,(p rust-pin-utils-0.1))
  1387. ("rust-slab" ,(p rust-slab-0.4)))))))
  1388. (define rust-futures-channel-0.3
  1389. (package
  1390. (inherit (@ (gnu packages crates-io) rust-futures-channel-0.3))
  1391. (version "0.3.21")
  1392. (source
  1393. (origin
  1394. (method (@ (guix download) url-fetch))
  1395. (uri ((@ (guix build-system cargo) crate-uri) "futures-channel" "0.3.21"))
  1396. (file-name (string-append "rust-futures-channel" "-" "0.3.21" ".tar.gz"))
  1397. (sha256
  1398. (base32 "0420lz2fmxa356ax1rp2sqi7b27ykfhvq4w9f1sla4hlp7j3q263"))))))
  1399. (define rust-futures-core-0.3
  1400. (package
  1401. (inherit (@ (gnu packages crates-io) rust-futures-core-0.3))
  1402. (version "0.3.21")
  1403. (source
  1404. (origin
  1405. (method (@ (guix download) url-fetch))
  1406. (uri ((@ (guix build-system cargo) crate-uri) "futures-core" "0.3.21"))
  1407. (file-name (string-append "rust-futures-core" "-" "0.3.21" ".tar.gz"))
  1408. (sha256
  1409. (base32 "1lqhc6mqklh5bmkpr77p42lqwjj8gaskk5ba2p3kl1z4nw2gs28c"))))))
  1410. (define rust-futures-sink-0.3
  1411. (package
  1412. (inherit (@ (gnu packages crates-io) rust-futures-sink-0.3))
  1413. (version "0.3.21")
  1414. (source
  1415. (origin
  1416. (method (@ (guix download) url-fetch))
  1417. (uri ((@ (guix build-system cargo) crate-uri) "futures-sink" "0.3.21"))
  1418. (file-name (string-append "rust-futures-sink" "-" "0.3.21" ".tar.gz"))
  1419. (sha256
  1420. (base32 "0s58gx5yw1a21xviw2qgc0wzk225vgn4kbzddrp141m3kw9kw5i1"))))))
  1421. (define rust-futures-io-0.3
  1422. (package
  1423. (inherit (@ (gnu packages crates-io) rust-futures-io-0.3))
  1424. (version "0.3.21")
  1425. (source
  1426. (origin
  1427. (method (@ (guix download) url-fetch))
  1428. (uri ((@ (guix build-system cargo) crate-uri) "futures-io" "0.3.21"))
  1429. (file-name (string-append "rust-futures-io" "-" "0.3.21" ".tar.gz"))
  1430. (sha256
  1431. (base32 "0swn29fysas36ikk5aw55104fi98117amvgxw9g96pjs5ab4ah7w"))))))
  1432. (define rust-futures-macro-0.3
  1433. (package
  1434. (inherit (@ (gnu packages crates-io) rust-futures-macro-0.3))
  1435. (version "0.3.21")
  1436. (source
  1437. (origin
  1438. (method (@ (guix download) url-fetch))
  1439. (uri ((@ (guix build-system cargo) crate-uri) "futures-macro" "0.3.21"))
  1440. (file-name (string-append "rust-futures-macro" "-" "0.3.21" ".tar.gz"))
  1441. (sha256
  1442. (base32 "04pmj5xfk5rdhlj69wc7w3zvdg3xardg8srig96lszrk00wf3h9k"))))))
  1443. (define rust-futures-executor-0.3
  1444. (package
  1445. (inherit (@ (gnu packages crates-io) rust-futures-executor-0.3))
  1446. (version "0.3.21")
  1447. (source
  1448. (origin
  1449. (method (@ (guix download) url-fetch))
  1450. (uri ((@ (guix build-system cargo) crate-uri) "futures-executor" "0.3.21"))
  1451. (file-name (string-append "rust-futures-executor" "-" "0.3.21" ".tar.gz"))
  1452. (sha256
  1453. (base32 "19mq96kwgf06axgdc2fbrjhqzdnxww9vw6cz8b82gqr9z86bj84l"))))))
  1454. (define-public rust-futures-intrusive
  1455. (package
  1456. (inherit (p rust-futures-intrusive-0.3)) ; 0.3 doesn't build because of a type error
  1457. (name "rust-futures-intrusive")
  1458. (version "0.4.0")
  1459. (source
  1460. (origin
  1461. (method url-fetch)
  1462. (uri (crate-uri "futures-intrusive" version))
  1463. (file-name (string-append name "-" version ".tar.gz"))
  1464. (sha256
  1465. (base32 "0gmnn86ifc2ngmwf3mpiw00kmxm8m2wxxxqnchmpraj6mj97a032"))))))
  1466. (define rust-atomic-take ; required by new rust-watchexec
  1467. (package
  1468. (name "rust-atomic-take")
  1469. (version "1.0.0")
  1470. (source (origin
  1471. (method url-fetch)
  1472. (uri (crate-uri "atomic-take" version))
  1473. (file-name (string-append name "-" version ".tar.gz"))
  1474. (sha256
  1475. (base32
  1476. "0zmn2pay3p94kcg9b8qz2kd26flzchlg1lcq685sixjznd7mxxpr"))))
  1477. (build-system (@ (guix build-system cargo) cargo-build-system))
  1478. (arguments
  1479. `(#:cargo-development-inputs (("rust-futures" ,rust-futures-0.3))))
  1480. (home-page "https://github.com/Darksonn/atomic-take")
  1481. (synopsis "Atomically take a value out of a container once.")
  1482. (description "Atomically take a value out of a container once.")
  1483. (license license:expat)))
  1484. (define rust-mio ; new rust-tokio is incompatible with rust-mio@0.8.0
  1485. (package
  1486. (inherit (p rust-mio-0.8))
  1487. (name "rust-mio")
  1488. (version "0.8.3")
  1489. (source
  1490. (origin
  1491. (method url-fetch)
  1492. (uri (crate-uri "mio" version))
  1493. (file-name (string-append name "-" version ".tar.gz"))
  1494. (sha256
  1495. (base32 "168pqd9v7llhhal1jy5l1k0k8qp0g8hsddv6w1s93n24kc6magbi"))))))
  1496. (define rust-signal-hook-mio ; @0.2.1 doesn't suppport rust-mio@0.8
  1497. (package
  1498. (inherit (p rust-signal-hook-mio-0.2))
  1499. (name "rust-signal-hook-mio")
  1500. (version "0.2.3")
  1501. (source (origin
  1502. (method url-fetch)
  1503. (uri (crate-uri "signal-hook-mio" version))
  1504. (file-name (string-append name "-" version ".tar.gz"))
  1505. (sha256
  1506. (base32
  1507. "1bwrrbd0lhwzlf63708vyzlh20693s5bg5s0ak6adjbyycajxb99"))))))
  1508. (define-public rust-sequoia-ipc ; old @0.26 doesn't build against new tokio-utils
  1509. (package
  1510. (inherit (@ (gnu packages sequoia) rust-sequoia-ipc-0.26))
  1511. (name "rust-sequoia-ipc")
  1512. (version "0.28.0")
  1513. (source (origin
  1514. (method url-fetch)
  1515. (uri (crate-uri "sequoia-ipc" version))
  1516. (file-name (string-append name "-" version ".tar.gz"))
  1517. (sha256
  1518. (base32
  1519. "0a4krhjfvz58hz5a50q9j909s52cfnz4d4ippib5i88ywvcpxmxh"))))))
  1520. (define rust-time ; rust-sequoia-sq requires new rust-time or old rust-chrono, to have the std::fmt::Display trait implemented for chrono::Duration
  1521. (package
  1522. (inherit (p rust-time-0.3))
  1523. (name "rust-time")
  1524. (version "0.3.11")
  1525. (source (origin
  1526. (method url-fetch)
  1527. (uri (crate-uri "time" version))
  1528. (file-name (string-append name "-" version ".tar.gz"))
  1529. (sha256
  1530. (base32
  1531. "05rjpgfsq6gvizn89ydwwmy0ihgfvikxcwq8bz09dw5jvi0izjbj"))))))
  1532. ;; The old tokio doesn't build against recent rust-futures
  1533. #; ; currently removed
  1534. (define rust-tokio-io-0.2
  1535. (package
  1536. (inherit (@ (gnu packages crates-io) rust-tokio-io-0.1))
  1537. (version "0.2.0-alpha.6")
  1538. (source
  1539. (origin
  1540. (method (@ (guix download) url-fetch))
  1541. (uri ((@ (guix build-system cargo) crate-uri) "tokio-io" version))
  1542. (file-name (string-append "rust-tokio-io" "-" version ".tar.gz"))
  1543. (sha256
  1544. (base32 "1i92ichh2m7i23vdr51gnf5hxngv7d1clwjan1h0dwrxakaq89qi"))))))
  1545. (define rust-tokio-codec-0.2
  1546. (package
  1547. (inherit (@ (gnu packages crates-io) rust-tokio-codec-0.1))
  1548. (version "0.2.0-alpha.6")
  1549. (source
  1550. (origin
  1551. (method (@ (guix download) url-fetch))
  1552. (uri ((@ (guix build-system cargo) crate-uri) "tokio-codec" version))
  1553. (file-name (string-append "rust-tokio-codec" "-" version ".tar.gz"))
  1554. (sha256
  1555. (base32 "0ykqx22rmw0k49y5302wshsaxjnpnwf4j4w8s92l1gc43vyj4pcz"))))))
  1556. (define rust-tokio-util-0.7
  1557. (package
  1558. (inherit (@ (gnu packages crates-io) rust-tokio-util-0.6))
  1559. (version "0.7.1")
  1560. (source
  1561. (origin
  1562. (method (@ (guix download) url-fetch))
  1563. (uri ((@ (guix build-system cargo) crate-uri) "tokio-util" version))
  1564. (file-name (string-append "rust-tokio-util" "-" version ".tar.gz"))
  1565. (sha256
  1566. (base32 "0r0p83nisf732qydg23qvmdd6gbrvyr1qvfs8hhbl7a1cyqdxpqf"))))))
  1567. (define rust-tokio-postgres ; @0.7.2 doesn't build against new rust-phf
  1568. (package
  1569. (inherit (p rust-tokio-postgres-0.7))
  1570. (name "rust-tokio-postgres")
  1571. (version "0.7.6")
  1572. (source (origin
  1573. (method url-fetch)
  1574. (uri (crate-uri "tokio-postgres" version))
  1575. (file-name (string-append name "-" version ".tar.gz"))
  1576. (sha256
  1577. (base32
  1578. "1bn8f466n1s5q674hr7yq7fybiszpa7v73yjxk4jsp9wl93qmj0r"))))))
  1579. ;; Old combinations of rust-rustls & rust-tokio-rustls fail to build
  1580. (define rust-rustls-0.20
  1581. (package
  1582. (inherit (@ (gnu packages crates-io) rust-rustls-0.20))
  1583. (name "rust-rustls")
  1584. (version "0.20.4")
  1585. (source
  1586. (origin
  1587. (method url-fetch)
  1588. (uri (crate-uri "rustls" version))
  1589. (file-name (string-append name "-" version ".tar.gz"))
  1590. (sha256
  1591. (base32 "08b941jj4kk1bfg82zrr5b2ifa4ip155g9cpqmmp116v1n6ypgsg"))))))
  1592. (define rust-rust-decimal ; @1.14.3 incompatible with new rust-arrayvec
  1593. (package
  1594. (inherit (p rust-rust-decimal-1))
  1595. (name "rust-rust-decimal")
  1596. (version "1.25.0")
  1597. (source (origin
  1598. (method url-fetch)
  1599. (uri (crate-uri "rust-decimal" version))
  1600. (file-name (string-append name "-" version ".tar.gz"))
  1601. (sha256
  1602. (base32
  1603. "0z78vwr4apw2h8c6iijv8xvvsvjq9c87ky8v36mz2cskx1cbp8rl"))))))
  1604. ;; From: https://issues.guix.gnu.org/54299 (make sure to include attribution!)
  1605. (define rust-alacritty-terminal
  1606. (package
  1607. (inherit (p rust-alacritty-terminal-0.15))
  1608. (name "rust-alacritty-terminal")
  1609. (version "0.16.1")
  1610. (source
  1611. (origin
  1612. (method url-fetch)
  1613. (uri (crate-uri "alacritty_terminal" version))
  1614. (file-name (string-append name "-" version ".tar.gz"))
  1615. (sha256
  1616. (base32 "0bvffvjmkran068p9bz0p9nrkj1k4bggd7q39mszjfafz155vyq2"))))))
  1617. (define rust-dlib
  1618. (package
  1619. (inherit (p rust-dlib-0.4)) ; new rust-smithay-client-toolkit needs new rust-dlib to build without 'dlopen'
  1620. (name "rust-dlib")
  1621. (version "0.5.0")
  1622. (source (origin
  1623. (method url-fetch)
  1624. (uri (crate-uri "dlib" version))
  1625. (file-name (string-append name "-" version ".tar.gz"))
  1626. (sha256
  1627. (base32
  1628. "1547hy7nrhkrb2i09va244c0h8mr845ccbs2d2mc414c68bpa6xc"))))))
  1629. (define rust-tokio-rustls-0.23
  1630. (package
  1631. (inherit (@ (gnu packages crates-io) rust-tokio-rustls-0.22))
  1632. (name "rust-tokio-rustls")
  1633. (version "0.23.3")
  1634. (source
  1635. (origin
  1636. (method url-fetch)
  1637. (uri (crate-uri "tokio-rustls" version))
  1638. (file-name (string-append name "-" version ".tar.gz"))
  1639. (sha256
  1640. (base32 "17iqy9a8x0d8ydl5r28w8z9akhnwp74wyjxks055b617ryhgsla1"))))))
  1641. (define rust-tokio ; old tokio doesn't build against new rust-mio
  1642. (package
  1643. (inherit (p rust-tokio-1))
  1644. (name "rust-tokio")
  1645. (version "1.18.2")
  1646. (source
  1647. (origin
  1648. (method url-fetch)
  1649. (uri (crate-uri "tokio" version))
  1650. (file-name (string-append name "-" version ".tar.gz"))
  1651. (sha256
  1652. (base32 "158klcakw40y37kgbafg9z1y12vgflh35ad6bbfxss6g4w2by0s9"))))))
  1653. ;; rust-tokio-util needs a slab with 'compact'
  1654. (define rust-slab
  1655. (package
  1656. (inherit (@ (gnu packages crates-io) rust-slab-0.4))
  1657. (name "rust-slab")
  1658. (version "0.4.6")
  1659. (source
  1660. (origin
  1661. (method url-fetch)
  1662. (uri (crate-uri "slab" version))
  1663. (file-name (string-append name "-" version ".tar.gz"))
  1664. (sha256
  1665. (base32 "0cmvcy9ppsh3dz8mi6jljx7bxyknvgpas4aid2ayxk1vjpz3qw7b"))))))
  1666. (define rust-hyper-rustls
  1667. (package
  1668. (inherit (@ (gnu packages crates-io) rust-hyper-rustls-0.22))
  1669. (name "rust-hyper-rustls")
  1670. (version "0.23.0")
  1671. (source
  1672. (origin
  1673. (method url-fetch)
  1674. (uri (crate-uri "hyper-rustls" version))
  1675. (file-name (string-append name "-" version ".tar.gz"))
  1676. (sha256
  1677. (base32 "1b2wi75qrmwfpw3pqwcg1xjndl4z0aris15296wf7i8d5v04hz6q"))))
  1678. (inputs (modify-inputs (package-inputs (p rust-hyper-rustls-0.22))
  1679. (prepend (p rust-http-0.2))))))
  1680. (define rust-http ; new rust-actix-http doesn't compile against old rust-http
  1681. (package
  1682. (inherit (p rust-http-0.2))
  1683. (name "rust-http")
  1684. (version "0.2.7")
  1685. (source
  1686. (origin
  1687. (method url-fetch)
  1688. (uri (crate-uri "http" version))
  1689. (file-name (string-append name "-" version ".tar.gz"))
  1690. (sha256
  1691. (base32 "1fxzyvspr6g8znc6i0kif0bhpih8ibhy7xc6k984j8pm19bp11pz"))))))
  1692. ;; Old versions don't support the new rustls
  1693. (define rust-boxxy
  1694. (package
  1695. (inherit (@ (gnu packages crates-io) rust-boxxy-0.11))
  1696. (name "rust-boxxy")
  1697. (version "0.12.1")
  1698. (source
  1699. (origin
  1700. (method url-fetch)
  1701. (uri (crate-uri "boxxy" version))
  1702. (file-name (string-append name "-" version ".tar.gz"))
  1703. (sha256
  1704. (base32 "1q0wpz955y3iwd35bqk3pbx2vx904fhyj75j7d6mrb7ib5fs5kxg"))))))
  1705. ;; Old versions don't support the new nom
  1706. (define rust-pktparse
  1707. (package
  1708. (inherit (@ (gnu packages crates-io) rust-pktparse-0.5))
  1709. (name "rust-pktparse")
  1710. (version "0.7.1")
  1711. (source
  1712. (origin
  1713. (method url-fetch)
  1714. (uri (crate-uri "pktparse" version))
  1715. (file-name (string-append name "-" version ".tar.gz"))
  1716. (sha256
  1717. (base32 "06sy7lwnhwmkyqfdbi4cs11z55rihipxafbdspnd5zg76pnbgbm8"))))))
  1718. ;; Old versions don't support the new nom
  1719. (define rust-pure-rust-locales
  1720. (package
  1721. (inherit (@ (gnu packages crates-io) rust-pure-rust-locales-0.5))
  1722. (name "rust-pure-rust-locales")
  1723. (version "0.5.6")
  1724. (source
  1725. (origin
  1726. (method url-fetch)
  1727. (uri (crate-uri "pure-rust-locales" version))
  1728. (file-name (string-append name "-" version ".tar.gz"))
  1729. (sha256
  1730. (base32 "1n1jqy8g7ph9lvzncc8vy5jaqq2dljryp1agcnp5pwwi9zy4jp5l"))))))
  1731. ;; Old version doesn't build
  1732. (define sniffglue
  1733. (package
  1734. (inherit (@ (gnu packages rust-apps) sniffglue))
  1735. (name "sniffglue")
  1736. (version "0.15.0")
  1737. (source
  1738. (origin
  1739. (method url-fetch)
  1740. (uri (crate-uri "sniffglue" version))
  1741. (file-name (string-append name "-" version ".tar.gz"))
  1742. (sha256
  1743. (base32 "038wcjiiay825wc8inmn62flklc1adxskg5fmjhmxqnhwmj1k5gn"))))))
  1744. ;; old rust-test-case@1 is incompatible with new rust-syn
  1745. (define rust-test-case-2
  1746. (package
  1747. (inherit (@ (gnu packages crates-io) rust-test-case-1))
  1748. (name "rust-test-case")
  1749. (version "2.0.2")
  1750. (source
  1751. (origin
  1752. (method url-fetch)
  1753. (uri (crate-uri "test-case" version))
  1754. (file-name (string-append name "-" version ".tar.gz"))
  1755. (sha256
  1756. (base32 "07xgb68pfwb9j132wr3b78kzcbfapsy4scg8lipiv5ykk6d5hi33"))))
  1757. (arguments
  1758. `(#:cargo-inputs
  1759. (("rust-cfg-if" ,(p rust-cfg-if-1))
  1760. ("rust-proc-macro-error" ,(p rust-proc-macro-error-1))
  1761. ("rust-proc-macro2" ,(p rust-proc-macro2-1))
  1762. ("rust-quote" ,(p rust-quote-1))
  1763. ("rust-syn" ,(p rust-syn-1)))
  1764. #:cargo-development-inputs
  1765. (("rust-indexmap" ,(p rust-indexmap-1))
  1766. ("rust-insta" ,(p rust-insta-1))
  1767. ("rust-itertools" ,(p rust-itertools-0.10))
  1768. ("rust-lazy-static" ,(p rust-lazy-static-1)))))))
  1769. ;; needed for rcgen
  1770. (define rust-yasna
  1771. (package
  1772. (name "rust-yasna")
  1773. (version "0.5.0")
  1774. (source
  1775. (origin
  1776. (method url-fetch)
  1777. (uri (crate-uri "yasna" version))
  1778. (file-name (string-append name "-" version ".tar.gz"))
  1779. (sha256
  1780. (base32 "0k1gk11hq4rwlppv9f50bz8bnmgr73r66idpp7rybly96si38v9l"))))
  1781. (build-system (@ (guix build-system cargo) cargo-build-system))
  1782. (arguments
  1783. `(#:cargo-inputs
  1784. (("rust-bit-vec" ,(@ (gnu packages crates-io) rust-bit-vec-0.6))
  1785. ("rust-num-bigint" ,(@ (gnu packages crates-io) rust-num-bigint-0.4))
  1786. ("rust-time" ,(@ (gnu packages crates-io) rust-time-0.3)))
  1787. #:cargo-development-inputs
  1788. (("rust-num-traits" ,(@ (gnu packages crates-io) rust-num-traits-0.2)))))
  1789. (home-page "https://github.com/qnighy/yasna.rs")
  1790. (synopsis "ASN.1 library for Rust")
  1791. (description "ASN.1 library for Rust")
  1792. (license (list license:expat license:asl2.0))))
  1793. ;; rust-tokio-openssl@0.6.3 needs a recent rust-openssl
  1794. (define rust-openssl-macros
  1795. (package
  1796. (name "rust-openssl-macros")
  1797. (version "0.1.0")
  1798. (source
  1799. (origin
  1800. (method url-fetch)
  1801. (uri (crate-uri "openssl-macros" version))
  1802. (file-name (string-append name "-" version ".tar.gz"))
  1803. (sha256
  1804. (base32 "0v3kgnzbadrf9c06q4cqmbjas53av73n5w7wwz3n0nb6257y80dm"))))
  1805. (build-system (@ (guix build-system cargo) cargo-build-system))
  1806. (arguments
  1807. `(#:cargo-inputs
  1808. (("rust-proc-macro2" ,(p rust-proc-macro2-1))
  1809. ("rust-quote" ,(p rust-quote-1))
  1810. ("rust-syn" ,(p rust-syn-1)))))
  1811. (home-page "")
  1812. (synopsis "Internal macros used by the openssl crate.")
  1813. (description "Internal macros used by the openssl crate.")
  1814. (license (list license:expat license:asl2.0))))
  1815. (define-public rust-openssl-sys
  1816. (package
  1817. (inherit (p rust-openssl-sys-0.9))
  1818. (name "rust-openssl-sys")
  1819. (version "0.9.73")
  1820. (source
  1821. (origin
  1822. (method url-fetch)
  1823. (uri (crate-uri "openssl-sys" version))
  1824. (file-name (string-append name "-" version ".tar.gz"))
  1825. (sha256
  1826. (base32 "1h0bv7cwrbbwdnpj96mb2b0p0gkajwc5g4rl3qf1ka70nfgx2pwx"))))))
  1827. (define-public rust-openssl
  1828. (package
  1829. (inherit (p rust-openssl-0.10))
  1830. (name "rust-openssl")
  1831. (version "0.10.39")
  1832. (source
  1833. (origin
  1834. (method url-fetch)
  1835. (uri (crate-uri "openssl" version))
  1836. (file-name (string-append name "-" version ".tar.gz"))
  1837. (sha256
  1838. (base32 "0hi72bwh6ipfj3cj7dlzk6n8aixiswj2fzbv5nk17n6r8rnr3wr8"))))
  1839. (inputs ; TODO: or native-inputs? Where to put macros?
  1840. (modify-inputs (package-inputs (p rust-openssl-0.10))
  1841. (prepend (p rust-once-cell-1)
  1842. rust-openssl-macros)))))
  1843. ;; not yet in Guix, but needed for updated agate
  1844. (define rust-rcgen
  1845. (package
  1846. (name "rust-rcgen")
  1847. (version "0.9.2")
  1848. (source
  1849. (origin
  1850. (method url-fetch)
  1851. (uri (crate-uri "rcgen" version))
  1852. (file-name (string-append name "-" version ".tar.gz"))
  1853. (sha256
  1854. (base32 "0ppwfl9g504x2qwk7m7mag8c3l70w9mcfha93013nlzqdlw2vynp"))))
  1855. (build-system (@ (guix build-system cargo) cargo-build-system))
  1856. (arguments
  1857. `(#:tests? #false ;; some test dependencies removed
  1858. #:cargo-inputs
  1859. (("rust-pem" ,(@ (gnu packages crates-io) rust-pem-1))
  1860. ("rust-ring" ,(@ (gnu packages crates-io) rust-ring-0.16))
  1861. ("rust-time" ,(@ (gnu packages crates-io) rust-time-0.3))
  1862. ;; TODO: 0.13
  1863. ("rust-x509-parser" ,(@ (gnu packages crates-io) rust-x509-parser-0.12))
  1864. ("rust-yasna" ,rust-yasna)
  1865. ("rust-zeroize" ,(@ (gnu packages crates-io) rust-zeroize-1)))
  1866. #:cargo-development-inputs
  1867. (#;("rust-botan" ,(@ (gnu packages crates-io) rust-botan-0.8))
  1868. ("rust-openssl" ,(@ (gnu packages crates-io) rust-openssl-0.10))
  1869. ("rust-rand" ,(@ (gnu packages crates-io) rust-rand-0.8))
  1870. ("rust-rsa" ,rust-rsa)
  1871. ("rust-webpki" ,(@ (gnu packages crates-io) rust-webpki-0.22))
  1872. ("rust-x509-parser" ,(@ (gnu packages crates-io) rust-x509-parser-0.12)))))
  1873. (home-page "https://github.com/est31/rcgen")
  1874. (synopsis "Rust X.509 certificate generator")
  1875. (description "Rust X.509 certificate generator") ;; TODO
  1876. (license (list license:expat license:asl2.0))))
  1877. ;; Old pkcs5 doesn't build
  1878. (define rust-pkcs5
  1879. (package
  1880. (inherit (@ (gnu packages crates-io) rust-pkcs5-0.3))
  1881. (name "rust-pkcs5")
  1882. (version "0.5.0-pre.1")
  1883. (source
  1884. (origin
  1885. (method url-fetch)
  1886. (uri (crate-uri "pkcs5" version))
  1887. (file-name (string-append name "-" version ".tar.gz"))
  1888. (sha256
  1889. (base32 "1n605kk594vif1rzrc09739nw6fky41mz6jpz9czs7lagq75jkvs"))))))
  1890. (define rust-pkcs8 ;; old pkcs8 doesn't build against new rust-der
  1891. (package
  1892. (inherit (p rust-pkcs8-0.7))
  1893. (name "rust-pkcs8")
  1894. (version "0.9.0-pre.1")
  1895. (source
  1896. (origin
  1897. (method url-fetch)
  1898. (uri (crate-uri "pkcs8" version))
  1899. (file-name (string-append name "-" version ".tar.gz"))
  1900. (sha256
  1901. (base32 "0257q8i3xqar8lb9lg6hvd17aykf5f3n1v3v7p7r4g1wsrncm7pk"))))))
  1902. (define-public rust-der
  1903. (package
  1904. (inherit (@ (gnu packages crates-io) rust-der-0.4))
  1905. (name "rust-der")
  1906. (version "0.6.0-pre.3")
  1907. (source
  1908. (origin
  1909. (method url-fetch)
  1910. (uri (crate-uri "der" version))
  1911. (file-name (string-append name "-" version ".tar.gz"))
  1912. (sha256
  1913. (base32 "1qag0zb2n7fj8qv7a83pmm9rqqz0zxvx5zpyzfy05a1rxxz73vdk"))))))
  1914. (define-public rust-pkcs1 ; old doesn't build against new rust-der
  1915. (package
  1916. (inherit (@ (gnu packages crates-io) rust-pkcs1-0.2))
  1917. (name "rust-pkcs1")
  1918. (version "0.3.3")
  1919. (source
  1920. (origin
  1921. (method url-fetch)
  1922. (uri (crate-uri "pkcs1" version))
  1923. (file-name (string-append name "-" version ".tar.gz"))
  1924. (sha256
  1925. (base32 "0813szfx13n4xl6l19m3lwj7pqgljqwc6ipxhr2dv0yc9k06d3x7"))))))
  1926. (define-public rust-spki ; old doesn't build against new rust-der
  1927. (package
  1928. (inherit (@ (gnu packages crates-io) rust-spki-0.4))
  1929. (name "rust-spki")
  1930. (version "0.6.0-pre.2")
  1931. (source
  1932. (origin
  1933. (method url-fetch)
  1934. (uri (crate-uri "spki" version))
  1935. (file-name (string-append name "-" version ".tar.gz"))
  1936. (sha256
  1937. (base32 "1cbdffcfp1zivxw4hiqj681api2gqxcgcqf64rq2wbvrk10jffq9"))))))
  1938. ;; Required by rust-pkcs5' cbc feature
  1939. (define rust-cbc
  1940. (package
  1941. (name "rust-cbc")
  1942. (version "0.1.2")
  1943. (source
  1944. (origin
  1945. (method url-fetch)
  1946. (uri (crate-uri "cbc" version))
  1947. (file-name (string-append name "-" version ".tar.gz"))
  1948. (sha256
  1949. (base32 "19l9y9ccv1ffg6876hshd123f2f8v7zbkc4nkckqycxf8fajmd96"))))
  1950. (build-system (@ (guix build-system cargo) cargo-build-system))
  1951. (arguments
  1952. `(#:cargo-inputs
  1953. (("rust-cipher" ,rust-cipher))
  1954. #:cargo-development-inputs
  1955. (("rust-aes" ,rust-aes)
  1956. ("rust-cipher" ,rust-cipher)
  1957. ("rust-hex-literal" ,(p rust-hex-literal-0.3)))))
  1958. (home-page "https://github.com/RustCrypto/block-modes")
  1959. (synopsis "Cipher Block Chaining (CBC) block cipher mode of operation")
  1960. (description "Cipher Block Chaining (CBC) block cipher mode of operation")
  1961. (license (list license:expat license:asl2.0))))
  1962. ;; Old vesion incompatible with new rust-hmac
  1963. (define rust-cookie
  1964. (package
  1965. (inherit (p rust-cookie-0.15))
  1966. (name "rust-cookie")
  1967. (version "0.16.0")
  1968. (source
  1969. (origin
  1970. (method url-fetch)
  1971. (uri (crate-uri "cookie" version))
  1972. (file-name (string-append name "-" version ".tar.gz"))
  1973. (sha256
  1974. (base32 "01fa6z8sqqg19ya0l9ifh8vn05l5hpxdzkbh489mpymhw5np1m4l"))))))
  1975. (define-public rust-cookie-store ; old version incompatible with new rust-time
  1976. (package
  1977. (inherit (p rust-cookie-store-0.15))
  1978. (name "rust-cookie-store")
  1979. (version "0.16.0")
  1980. (source
  1981. (origin
  1982. (method url-fetch)
  1983. (uri (crate-uri "cookie-store" version))
  1984. (file-name (string-append name "-" version ".tar.gz"))
  1985. (sha256
  1986. (base32 "0idrphkllykjmvx1vnjyihi3w76lphwbj6k0vqzpiib4lqvgsfzq"))))))
  1987. (define rust-partial-io
  1988. (package
  1989. (inherit (p rust-partial-io-0.3)) ; @0.3.1 requires old rust-futures
  1990. (name "rust-partial-io")
  1991. (version "0.5.0")
  1992. (source
  1993. (origin
  1994. (method url-fetch)
  1995. (uri (crate-uri "partial-io" version))
  1996. (file-name (string-append name "-" version ".tar.gz"))
  1997. (sha256
  1998. (base32 "17q39vnwas6f4l5wiiqzlxh8la21rzpiy010mb95d9f0bj5ik056"))))
  1999. (inputs
  2000. (modify-inputs (package-inputs (p rust-partial-io-0.3))
  2001. (prepend (p rust-tokio-1)
  2002. (p rust-rand-0.8)
  2003. (p rust-pin-project-1))))))
  2004. ;; Old agate doesn't build
  2005. (define agate
  2006. (package
  2007. (inherit (@ (gnu packages rust-apps) agate))
  2008. (name "agate")
  2009. (version "3.2.3")
  2010. (source
  2011. (origin
  2012. (method url-fetch)
  2013. (uri (crate-uri "agate" version))
  2014. (file-name (string-append name "-" version ".tar.gz"))
  2015. (sha256
  2016. (base32 "1bxar93jh80jv5xvr6rnlc6gcsvzlf673m9874jzhjp78mhdbmwx"))))
  2017. (inputs
  2018. (modify-inputs (package-inputs (@ (gnu packages rust-apps) agate))
  2019. (append rust-rcgen rust-futures-util-0.3)))))
  2020. ;; Old castor doesn't build against new rust-gtk
  2021. (define castor
  2022. (package
  2023. (inherit (@ (gnu packages web) castor))
  2024. (name "castor")
  2025. (version "0.9.0")
  2026. (source
  2027. (origin
  2028. (inherit (package-source (@ (gnu packages web) castor)))
  2029. (method git-fetch)
  2030. (uri (git-reference
  2031. (url "https://git.sr.ht/~julienxx/castor")
  2032. (commit version)))
  2033. (file-name (git-file-name name version))
  2034. (sha256
  2035. (base32 "1gda77ya2qbmjxfbw3yfr64inm8xw8243iwnfsgwwiwl35pw70n9"))
  2036. (modules '((guix build utils)))
  2037. ;; Submitted upstream at <https://lists.sr.ht/~julienxx/castor/patches/32444>
  2038. (patches (list (local-file "0001-Update-to-new-GTK-version-and-new-version-of-depende.patch")))))))
  2039. (define rust-enum-as-inner ; old version doesn't build against new rust-heck
  2040. (package
  2041. (inherit (@ (gnu packages crates-io) rust-enum-as-inner-0.3))
  2042. (name "rust-enum-as-inner")
  2043. (version "0.4.0")
  2044. (source
  2045. (origin
  2046. (method url-fetch)
  2047. (uri (crate-uri "enum-as-inner" version))
  2048. (file-name (string-append name "-" version ".tar.gz"))
  2049. (sha256
  2050. (base32 "0wwvjmy2bvqqc3pyylsmlqpkswxrzsg40xva7z27szva8j0svk91"))))))
  2051. ;; Old version doesn't have the block_buffer required by rust-sha3
  2052. (define rust-block-buffer
  2053. (package
  2054. (inherit (@ (gnu packages crates-io) rust-block-buffer-0.10))
  2055. (name "rust-block-buffer")
  2056. (version "0.10.2")
  2057. (source
  2058. (origin
  2059. (method url-fetch)
  2060. (uri (crate-uri "block-buffer" version))
  2061. (file-name (string-append name "-" version ".tar.gz"))
  2062. (sha256
  2063. (base32 "097k9xkd8gqrl03qg4fwhjvanp3ac0pq4drg8pynk9cyhi8zxxqb"))))))
  2064. ;; Doesn't build against new block-buffer
  2065. (define rust-md-5
  2066. (package
  2067. (inherit (@ (gnu packages crates-io) rust-md-5-0.9))
  2068. (name "rust-md-5")
  2069. (version "0.10.1")
  2070. (source
  2071. (origin
  2072. (method url-fetch)
  2073. (uri (crate-uri "md-5" version))
  2074. (file-name (string-append name "-" version ".tar.gz"))
  2075. (sha256
  2076. (base32 "10h5kna43cpggp9hy1hz4zb1qpixdl4anf3hdj3gfwhb3sr4d1k5"))))))
  2077. (define rust-digest
  2078. (package
  2079. (inherit (@ (gnu packages crates-io) rust-digest-0.10))
  2080. (name "rust-digest")
  2081. (version "0.10.3")
  2082. (source
  2083. (origin
  2084. (method url-fetch)
  2085. (uri (crate-uri "digest" version))
  2086. (file-name (string-append name "-" version ".tar.gz"))
  2087. (sha256
  2088. (base32 "01nmj9cci5qdm4q4wlmz104rzr68d5m823kdzd95bypslq68dyzj"))))))
  2089. (define rust-crypto-common
  2090. (package
  2091. (inherit (@ (gnu packages crates-io) rust-crypto-common-0.1))
  2092. (name "rust-crypto-common")
  2093. (version "0.1.3")
  2094. (source
  2095. (origin
  2096. (method url-fetch)
  2097. (uri (crate-uri "crypto-common" version))
  2098. (file-name (string-append name "-" version ".tar.gz"))
  2099. (sha256
  2100. (base32 "1s1wpm88qlrp079mzh3dlxm9vbqs4ch016yp9pzhcdjygfi2r5ap"))))))
  2101. ;; @0.1.1 doesn't implement std::fmt::Display on Errors, even though required
  2102. ;; by rust-pango
  2103. (define-public rust-gir-format-check
  2104. (package
  2105. (inherit (@ (gnu packages crates-gtk) rust-gir-format-check-0.1))
  2106. (name "rust-gir-format-check")
  2107. (version "0.1.3")
  2108. (source (origin
  2109. (method url-fetch)
  2110. (uri (crate-uri "gir-format-check" version))
  2111. (file-name (string-append name "-" version ".tar.gz"))
  2112. (sha256
  2113. (base32
  2114. "05n4g8yqkyzrnxbqyrkjqjxsfxdy3q78jk0ny54ffv2qm09sjp9s"))))))
  2115. (define rust-sha3
  2116. (package
  2117. (inherit (@ (gnu packages crates-io) rust-sha3-0.9))
  2118. (name "rust-sha3")
  2119. (version "0.10.1")
  2120. (source
  2121. (origin
  2122. (method url-fetch)
  2123. (uri (crate-uri "sha3" version))
  2124. (file-name (string-append name "-" version ".tar.gz"))
  2125. (sha256
  2126. (base32 "11hclx8ijnlx82dyd0bh9hi629zb3vqjfsyaqlgk1dl7dhazh6w8"))))))
  2127. ;; Old things don't build?
  2128. (define rust-scrypt
  2129. (package
  2130. (inherit (@ (gnu packages crates-io) rust-scrypt-0.8))
  2131. (name "rust-scrypt")
  2132. (version "0.10.0")
  2133. (source
  2134. (origin
  2135. (method url-fetch)
  2136. (uri (crate-uri "scrypt" version))
  2137. (file-name (string-append name "-" version ".tar.gz"))
  2138. (sha256
  2139. (base32 "0pglmppcl8mdzfxdv2x9dsjrwxhc1bm9zvxjibnlv59jnv9297lz"))))))
  2140. ;; rust-scrypt@0.8 doesn't build against rust-password-hash@0.3
  2141. (define rust-password-hash
  2142. (package
  2143. (inherit (@ (gnu packages crates-io) rust-password-hash-0.3))
  2144. (name "rust-password-hash")
  2145. (version "0.4.1")
  2146. (source
  2147. (origin
  2148. (method url-fetch)
  2149. (uri (crate-uri "password-hash" version))
  2150. (file-name (string-append name "-" version ".tar.gz"))
  2151. (sha256
  2152. (base32 "1552dd98v6yd4l5myz4g1r2hzln8dfng22638590dc4gpi5fjag0"))))))
  2153. ;; rust-pbkkdf2@0.10 doesn't build
  2154. (define rust-pbkdf2
  2155. (package
  2156. (inherit (@ (gnu packages crates-io) rust-pbkdf2-0.10))
  2157. (name "rust-pbkdf2")
  2158. (version "0.11.0")
  2159. (source
  2160. (origin
  2161. (method url-fetch)
  2162. (uri (crate-uri "pbkdf2" version))
  2163. (file-name (string-append name "-" version ".tar.gz"))
  2164. (sha256
  2165. (base32 "05q9wqjvfrs4dvw03yn3bvcs4zghz0a7ycfa53pz2k2fqhp6k843"))))))
  2166. (define rust-salsa20
  2167. (package
  2168. (inherit (@ (gnu packages crates-io) rust-salsa20-0.9))
  2169. (name "rust-salsa20")
  2170. (version "0.10.2")
  2171. (source
  2172. (origin
  2173. (method url-fetch)
  2174. (uri (crate-uri "salsa20" version))
  2175. (file-name (string-append name "-" version ".tar.gz"))
  2176. (sha256
  2177. (base32 "04w211x17xzny53f83p8f7cj7k2hi8zck282q5aajwqzydd2z8lp"))))))
  2178. (define rust-cipher;; TODO WIP
  2179. (package
  2180. (inherit (@ (gnu packages crates-io) rust-cipher-0.3))
  2181. (name "rust-cipher")
  2182. (version "0.4.3")
  2183. (source
  2184. (origin
  2185. (method url-fetch)
  2186. (uri (crate-uri "cipher" version))
  2187. (file-name (string-append name "-" version ".tar.gz"))
  2188. (sha256
  2189. (base32 "17mmmqaalirdx7bpdhrgzp1sd392zm08mjrr24cjr57pz1q351yi"))))
  2190. (inputs
  2191. (modify-inputs (package-inputs (@ (gnu packages crates-io) rust-cipher-0.3))
  2192. (append rust-crypto-common rust-inout
  2193. (@ (gnu packages crates-io) rust-zeroize-1))))))
  2194. (define-public rust-block-padding ; 0.3.2 required by rust-cipher
  2195. (package
  2196. (inherit (@ (gnu packages crates-io) rust-block-padding-0.2))
  2197. (name "rust-block-padding")
  2198. (version "0.3.2")
  2199. (source
  2200. (origin
  2201. (method url-fetch)
  2202. (uri (crate-uri "block-padding" version))
  2203. (file-name (string-append name "-" version ".tar.gz"))
  2204. (sha256
  2205. (base32 "0y5v92alqzn9ikmyqfl3a4j6va87j967ii2n3jh2h330z4nyr40a"))))
  2206. (inputs
  2207. (modify-inputs (package-inputs (@ (gnu packages crates-io) rust-block-padding-0.2))
  2208. (append (@ (gnu packages crates-io) rust-generic-array-0.14))))))
  2209. (define rust-chacha20poly1305 ; @0.9 doesn't build against rust-cipher@0.4
  2210. (package
  2211. (inherit (p rust-chacha20poly1305-0.9))
  2212. (name "rust-chacha20poly1305")
  2213. (version "0.10.0-pre")
  2214. (source
  2215. (origin
  2216. (method url-fetch)
  2217. (uri (crate-uri "chacha20poly1305" version))
  2218. (file-name (string-append name "-" version ".tar.gz"))
  2219. (sha256
  2220. (base32 "1skr6v12mlaccsxd1hjgr1bvk1hs9d412g29rymnjr76f47l6v3l"))))))
  2221. (define rust-block-modes ; 0.8.1 uses removed NewBlockCipher
  2222. (package
  2223. (inherit (@ (gnu packages crates-io) rust-block-modes-0.8))
  2224. (name "rust-block-modes")
  2225. (version "0.9.1")
  2226. (source
  2227. (origin
  2228. (method url-fetch)
  2229. (uri (crate-uri "block-modes" version))
  2230. (file-name (string-append name "-" version ".tar.gz"))
  2231. (sha256
  2232. (base32 "07pjna64v0ng30j8ss9w7rv7k7l7gsii37yxm011a1kzh6q128ly"))))))
  2233. (define rust-aes ; 0.7.1 uses removed NewBlockCipher
  2234. (package
  2235. (inherit (@ (gnu packages crates-io) rust-aes-0.7))
  2236. (name "rust-aes")
  2237. (version "0.8.1")
  2238. (source
  2239. (origin
  2240. (method url-fetch)
  2241. (uri (crate-uri "aes" version))
  2242. (file-name (string-append name "-" version ".tar.gz"))
  2243. (sha256
  2244. (base32 "1fj03mqa45nf2scxcd7mvg1xcbavrkqlmkfzwcgnx660g0si7q5z"))))))
  2245. (define rust-des ; 0.7.0 uses removed NewBlockCipher
  2246. (package
  2247. (inherit (@ (gnu packages crates-io) rust-des-0.7))
  2248. (name "rust-des")
  2249. (version "0.8.1")
  2250. (source
  2251. (origin
  2252. (method url-fetch)
  2253. (uri (crate-uri "des" version))
  2254. (file-name (string-append name "-" version ".tar.gz"))
  2255. (sha256
  2256. (base32 "07kshslxanmg0g6007scvglfhg6mli2a8qzhx4kxx4z9ik781pgz"))))))
  2257. (define rust-ctr ; 0.8.1 uses private ciphererrors:LoopError
  2258. (package
  2259. (inherit (@ (gnu packages crates-io) rust-ctr-0.8))
  2260. (name "rust-ctr")
  2261. (version "0.9.1")
  2262. (source
  2263. (origin
  2264. (method url-fetch)
  2265. (uri (crate-uri "ctr" version))
  2266. (file-name (string-append name "-" version ".tar.gz"))
  2267. (sha256
  2268. (base32 "18222kdhghd2j5vc5lm7bqy6glk5wbvzz1sydghd1xdsrwlz650d"))))))
  2269. ;; rust-cipher expects a rust-typenum that has 'static' lifetimes in some places,
  2270. ;; see <https://github.com/RustCrypto/traits/pull/937>.
  2271. (define rust-typenum
  2272. (package
  2273. (inherit (@ (gnu packages crates-io) rust-typenum-1))
  2274. (name "rust-typenum")
  2275. (version "1.15.0")
  2276. (source
  2277. (origin
  2278. (method url-fetch)
  2279. (uri (crate-uri "typenum" version))
  2280. (file-name (string-append name "-" version ".tar.gz"))
  2281. (sha256
  2282. (base32 "11yrvz1vd43gqv738yw1v75rzngjbs7iwcgzjy3cq5ywkv2imy6w"))))))
  2283. ;; Some packages require new_unwrap, which is not present in old versions
  2284. (define rust-const-oid
  2285. (package
  2286. (inherit (@ (gnu packages crates-io) rust-const-oid-0.6))
  2287. (name "rust-const-oid")
  2288. (version "0.9.0")
  2289. (source
  2290. (origin
  2291. (method url-fetch)
  2292. (uri (crate-uri "const-oid" version))
  2293. (file-name (string-append name "-" version ".tar.gz"))
  2294. (sha256
  2295. (base32 "0q8n1zsa73130hxa2w88qw36g8nprz21j52abpva3khm59a26bkj"))))))
  2296. ;; Old rust-sha1 doesn't implement CoreProxy while required by rust-pkcs5.
  2297. ;; To avoid a collision with rust-sha-1, give it a different name.
  2298. ;; TODO: renaming shuldn't be necessary anymore.
  2299. (define rust-sha1
  2300. (package
  2301. (inherit (@ (gnu packages crates-io) rust-sha1-0.6))
  2302. (name "rust-sha1")
  2303. (version "0.10.1")
  2304. (source
  2305. (origin
  2306. (method url-fetch)
  2307. (uri (crate-uri "sha1" version))
  2308. (file-name (string-append name "-" version ".tar.gz"))
  2309. (sha256
  2310. (base32 "0bw56hxajrgb3pjg0cr5xrvmx0jna39564iw2p14ama5cmzlwzy7"))))))
  2311. (define rust-rsa ;; rust-rsa@0.5 doesn't build against new rust-pkcs1
  2312. (package
  2313. (inherit (@ (gnu packages crates-io) rust-rsa-0.5))
  2314. (name "rust-rsa")
  2315. (version "0.6.1")
  2316. (source
  2317. (origin
  2318. (method url-fetch)
  2319. (uri (crate-uri "rsa" version))
  2320. (file-name (string-append name "-" version ".tar.gz"))
  2321. (sha256
  2322. (base32 "02viiiylxpk2hx5h5qrpm4lcd8ildvafbw0rn6rx44wnqia2gwjc"))))
  2323. (inputs
  2324. (modify-inputs (package-inputs (p rust-rsa-0.5))
  2325. ;; test inputs
  2326. (prepend (p rust-rand-core-0.6)
  2327. (p rust-rand-chacha-0.3)
  2328. (p rust-sha1-0.6)
  2329. (p rust-sha2-0.10)
  2330. (p rust-base64ct-1))))))
  2331. (define rust-bytestring ; rust-actix-http@3 requires into_bytes
  2332. (package
  2333. (inherit (p rust-bytestring-0.1))
  2334. (name "rust-bytestring")
  2335. (version "1.0.0")
  2336. (source
  2337. (origin
  2338. (method url-fetch)
  2339. (uri (crate-uri "bytestring" version))
  2340. (file-name (string-append name "-" version ".tar.gz"))
  2341. (sha256
  2342. (base32 "0ka9gkn2rrxms0d5s32ckpchh06qmgidbh4xw630gfcpkshnnw4h"))))))
  2343. (define-public rust-gdk ; @0.14 doesn't build
  2344. (package
  2345. (inherit (@ (gnu packages crates-gtk) rust-gdk-0.14))
  2346. (name "rust-gdk")
  2347. (version "0.15.4")
  2348. (source (origin
  2349. (method url-fetch)
  2350. (uri (crate-uri "gdk" version))
  2351. (file-name (string-append name "-" version ".tar.gz"))
  2352. (sha256
  2353. (base32
  2354. "1s59rm5xiw0azyjr5xqlicj8q219vkq1fhp9bgqy3c1aawgmrq56"))))))
  2355. (define-public rust-gtk
  2356. (package
  2357. (inherit (@ (gnu packages crates-gtk) rust-gtk-0.14))
  2358. (name "rust-gtk")
  2359. (version "0.15.5")
  2360. (source (origin
  2361. (method url-fetch)
  2362. (uri (crate-uri "gtk" version))
  2363. (file-name (string-append name "-" version ".tar.gz"))
  2364. (sha256
  2365. (base32
  2366. "1l1vqbaizppc3xfg4xrcx1i9nln928vppdfjax88nvax5m501qwj"))))))
  2367. (define-public rust-gtk-sys
  2368. (package
  2369. (inherit (@ (gnu packages crates-gtk) rust-gtk-sys-0.14))
  2370. (name "rust-gtk-sys")
  2371. (version "0.15.3")
  2372. (source (origin
  2373. (method url-fetch)
  2374. (uri (crate-uri "gtk-sys" version))
  2375. (file-name (string-append name "-" version ".tar.gz"))
  2376. (sha256
  2377. (base32
  2378. "113wp3x7xh2zjv8i5pn3mcz77yr5zq8wm8260bv4g8nbhw2jzg6m"))))))
  2379. (define rust-instant
  2380. (package
  2381. (inherit (p rust-instant-0.1))
  2382. (name "rust-instant")
  2383. (version "0.1.12")
  2384. (source
  2385. (origin
  2386. (method url-fetch)
  2387. (uri (crate-uri "instant" version))
  2388. (file-name (string-append name "-" version ".tar.gz"))
  2389. (sha256
  2390. (base32 "0b2bx5qdlwayriidhrag8vhy10kdfimfhmb3jnjmsz2h9j1bwnvs"))))
  2391. ;;TODO: add upstream Guix
  2392. (inputs (modify-inputs (package-inputs (p rust-instant-0.1))
  2393. (append (p rust-cfg-if-1))))))
  2394. (define-public rust-syscallz ; @0.15 doesn't build
  2395. (package
  2396. (inherit (p rust-syscallz-0.15))
  2397. (name "rust-syscallz")
  2398. (version "0.16.1")
  2399. (source
  2400. (origin
  2401. (method url-fetch)
  2402. (uri (crate-uri "syscallz" version))
  2403. (file-name (string-append name "-" version ".tar.gz"))
  2404. (sha256
  2405. (base32 "05ws3w0lfbcazx2ay5nkfhgbs4kb6nvk230kbvql44ykjrjm0jnr"))))))
  2406. (define-public rust-strum-macros ; needed by rust-syscallz
  2407. (package
  2408. (inherit (p rust-strum-macros-0.21))
  2409. (name "rust-strum-macros")
  2410. (version "0.24.0")
  2411. (source
  2412. (origin
  2413. (method url-fetch)
  2414. (uri (crate-uri "strum-macros" version))
  2415. (file-name (string-append name "-" version ".tar.gz"))
  2416. (sha256
  2417. (base32 "1vyh8m1skr8h4f2lnhnq1r7v3mah545bp4k1p8z4svj42ydhfy38"))))
  2418. (inputs
  2419. (modify-inputs (package-inputs (p rust-strum-macros-0.21))
  2420. (append (p rust-rustversion-1))))))
  2421. (define rust-strum ; needed by rust-syscallz
  2422. (package
  2423. (inherit (p rust-strum-0.21))
  2424. (name "rust-strum")
  2425. (version "0.24.0")
  2426. (source
  2427. (origin
  2428. (method url-fetch)
  2429. (uri (crate-uri "strum" version))
  2430. (file-name (string-append name "-" version ".tar.gz"))
  2431. (sha256
  2432. (base32 "1y77vshrhm1grlgcfmnm0nxpsv0pb5zcb97zy6rbh106nz0wysp9"))))))
  2433. (define rust-actix-derive ; old one doesn't build against new rust-syn
  2434. (package
  2435. (inherit (p rust-actix-derive-0.5))
  2436. (name "rust-actix-derive")
  2437. (version "0.6.0")
  2438. (source
  2439. (origin
  2440. (method url-fetch)
  2441. (uri (crate-uri "actix-derive" version))
  2442. (file-name (string-append name "-" version ".tar.gz"))
  2443. (sha256
  2444. (base32 "19rp2xcwqf5p4q5h6xxzb44xsfgpvvnnsis3l0dngnffw7zbhi3d"))))))
  2445. (define rust-actix-codec ; @0.3 doesn't build against new rust-bytes@1
  2446. (package
  2447. (inherit (p rust-actix-codec-0.3))
  2448. (name "rust-actix-codec")
  2449. (version "0.5.0")
  2450. (source
  2451. (origin
  2452. (method url-fetch)
  2453. (uri (crate-uri "actix-codec" version))
  2454. (file-name (string-append name "-" version ".tar.gz"))
  2455. (sha256
  2456. (base32 "1zm7nk8irjgkf08a6x632niwd9iprq43rdda4wqmgwx70ja5b9sp"))))))
  2457. (define-public rust-actix-macros ; new rust-actix-rt is incompatible with old rust-actix-macros
  2458. (package
  2459. (inherit (p rust-actix-macros-0.1))
  2460. (name "rust-actix-macros")
  2461. (version "0.2.3")
  2462. (source (origin
  2463. (method url-fetch)
  2464. (uri (crate-uri "actix-macros" version))
  2465. (file-name (string-append name "-" version ".tar.gz"))
  2466. (sha256
  2467. (base32
  2468. "1dhk2bdp6rj67j5zgi4b76hpy2xw567js0hig28n1fb9rxr62nj6"))))))
  2469. (define rust-actix-tls
  2470. (package
  2471. (inherit (p rust-actix-tls-2))
  2472. (name "rust-actix-tls")
  2473. (version "3.0.3")
  2474. (source
  2475. (origin
  2476. (method url-fetch)
  2477. (uri (crate-uri "actix-tls" version))
  2478. (file-name (string-append name "-" version ".tar.gz"))
  2479. (sha256
  2480. (base32 "15rj6gn83fzv5w2b2y0s690q80awsjhbjg40f3qcgkgpjbr0rplz"))))))
  2481. (define rust-actix-utils ; @2 doesn't build against new rust-actix-rt
  2482. (package
  2483. (inherit (p rust-actix-utils-2))
  2484. (name "rust-actix-utils")
  2485. (version "3.0.0")
  2486. (source
  2487. (origin
  2488. (method url-fetch)
  2489. (uri (crate-uri "actix-utils" version))
  2490. (file-name (string-append name "-" version ".tar.gz"))
  2491. (sha256
  2492. (base32 "155aj87z8634mfmggfixyqy3pqhpyf7g97zrzy6piz77qamcp4g4"))))))
  2493. (define rust-actix-http ; @2 has non-building dependency rust-actix-connect@2
  2494. (package
  2495. (inherit (p rust-actix-http-2))
  2496. (name "rust-actix-http")
  2497. (version "3.0.4")
  2498. (source
  2499. (origin
  2500. (method url-fetch)
  2501. (uri (crate-uri "actix-http" version))
  2502. (file-name (string-append name "-" version ".tar.gz"))
  2503. (sha256
  2504. (base32 "0ykrwybs3ssi9ifn5p2gddi4909adjxs3gk450r0sk8d3aw5r255"))))))
  2505. (define rust-actix-web ; @3 doesn't build against updated actix dependencies
  2506. (package
  2507. (inherit (p rust-actix-web-3))
  2508. (name "rust-actix-web")
  2509. (version "4.0.1")
  2510. (source
  2511. (origin
  2512. (method url-fetch)
  2513. (uri (crate-uri "actix-web" version))
  2514. (file-name (string-append name "-" version ".tar.gz"))
  2515. (sha256
  2516. (base32 "0cadlzb6syha1jwx0pghasj0qd47jkjy03dfldbdyl0xspzyprgl"))))))
  2517. (define rust-actix-web-codegen ; rust-actix-web@4 is incompatible with rust-actix-web-codegen@0.4
  2518. (package
  2519. (inherit (p rust-actix-web-codegen-0.4))
  2520. (name "rust-actix-web-codegen")
  2521. (version "4.0.0")
  2522. (source
  2523. (origin
  2524. (method url-fetch)
  2525. (uri (crate-uri "actix-web-codegen" version))
  2526. (file-name (string-append name "-" version ".tar.gz"))
  2527. (sha256
  2528. (base32 "1g4imsr56b82lp76k2krg0vzfv92x7kxg24y8qfvnjkhakgvw9bm"))))))
  2529. (define rust-actix-router
  2530. (package
  2531. (inherit (p rust-actix-router-0.2)) ; new rust-actix-web doesn't build against old @0.2
  2532. (name "rust-actix-router")
  2533. (version "0.5.0")
  2534. (source
  2535. (origin
  2536. (method url-fetch)
  2537. (uri (crate-uri "actix-router" version))
  2538. (file-name (string-append name "-" version ".tar.gz"))
  2539. (sha256
  2540. (base32 "107s475ghxl1sliqcjdji7272hi71a491k2n9bqg4661a9mq8q7b"))))))
  2541. (define rust-awc ; @2 doesn't build
  2542. ;; TODO: some build failures remain
  2543. (package
  2544. (inherit (p rust-awc-2))
  2545. (name "rust-awc")
  2546. (version "3.0.0")
  2547. (source
  2548. (origin
  2549. (method url-fetch)
  2550. (uri (crate-uri "awc" version))
  2551. (file-name (string-append name "-" version ".tar.gz"))
  2552. (sha256
  2553. (base32 "16l8zvzx522vnhvn9cgfqhrvf4z50vbrfsz8cpiwxj7kzd20rik5"))))))
  2554. (define rust-local-waker
  2555. (package
  2556. (name "rust-local-waker")
  2557. (version "0.1.3")
  2558. (source
  2559. (origin
  2560. (method url-fetch)
  2561. (uri (crate-uri "local-waker" version))
  2562. (file-name (string-append name "-" version ".tar.gz"))
  2563. (sha256
  2564. (base32 "1w9zqlh18mymvb82ya0sailiy5d3wsjamaakgl70x50i6vmpckz3"))))
  2565. (build-system (@ (guix build-system cargo) cargo-build-system))
  2566. (home-page "https://github.com/actix/actix-net.git")
  2567. (synopsis "A synchronization primitive for thread-local task wakeup")
  2568. (description
  2569. "This package provides a synchronization primitive for thread-local task wakeup")
  2570. (license (list license:expat license:asl2.0))))
  2571. ;;Not yet inGuix,requiredby rust-cipher
  2572. (define rust-inout
  2573. (package
  2574. (name "rust-inout")
  2575. (version "0.1.3")
  2576. (source
  2577. (origin
  2578. (method url-fetch)
  2579. (uri (crate-uri "inout" version))
  2580. (file-name (string-append name "-" version ".tar.gz"))
  2581. (sha256
  2582. (base32 "1xf9gf09nc7y1a261xlfqsf66yn6mb81ahlzzyyd1934sr9hbhd0"))))
  2583. (build-system (@ (guix build-system cargo) cargo-build-system))
  2584. (arguments
  2585. `(#:cargo-inputs
  2586. (("rust-block-padding" ,(@ (gnu packages crates-io) rust-block-padding-0.2)) ;; XXX 0.3
  2587. ("rust-generic-array" ,(@ (gnu packages crates-io) rust-generic-array-0.14)))))
  2588. (home-page "https://github.com/RustCrypto/utils")
  2589. (synopsis
  2590. "Custom reference types for code generic over in-place and buffer-to-buffer modes of operation.")
  2591. (description
  2592. "Custom reference types for code generic over in-place and buffer-to-buffer modes
  2593. of operation.")
  2594. (license (list license:expat license:asl2.0))))
  2595. ;; devise-core@0.2 requires unstable
  2596. (define rust-devise-core
  2597. (package
  2598. (inherit (p rust-devise-core-0.2))
  2599. (name "rust-devise-core")
  2600. (version "0.3.1")
  2601. (source
  2602. (origin
  2603. (method url-fetch)
  2604. (uri (crate-uri "devise-core" version))
  2605. (file-name (string-append name "-" version ".tar.gz"))
  2606. (sha256
  2607. (base32 "1l00qiih4z14ai0c3s16nlvw0kv4p07ygi6a0ms0knc78xpz87l4"))))
  2608. (inputs
  2609. (modify-inputs (package-inputs (p rust-devise-core-0.2))
  2610. (append rust-proc-macro2-diagnostics)))))
  2611. (define rust-devise-codegen ;; 0.2 doesn't build against new rust-quote / rust-devise-core.
  2612. (package
  2613. (inherit (p rust-devise-codegen-0.2))
  2614. (name "rust-devise-codegen")
  2615. (version "0.3.1")
  2616. (source
  2617. (origin
  2618. (method url-fetch)
  2619. (uri (crate-uri "devise-codegen" version))
  2620. (file-name (string-append name "-" version ".tar.gz"))
  2621. (sha256
  2622. (base32 "1cp7nnfwvjp6wfq11n0ffjjrwfa1wbsb58g1bz3ha6z5lvkp6g0j"))))))
  2623. (define rust-proc-macro2-diagnostics ; not yet in Guix but required by rust-devise-core
  2624. (package
  2625. (name "rust-proc-macro2-diagnostics")
  2626. (version "0.9.1")
  2627. (source
  2628. (origin
  2629. (method url-fetch)
  2630. (uri (crate-uri "proc-macro2-diagnostics" version))
  2631. (file-name (string-append name "-" version ".tar.gz"))
  2632. (sha256
  2633. (base32 "1nmazlb1dkznjds7qwms7yxhi33ajc3isji2lsgx8r3lsqk9gwjb"))))
  2634. (build-system (@ (guix build-system cargo) cargo-build-system))
  2635. (arguments
  2636. `(#:cargo-inputs
  2637. (("rust-proc-macro2" ,(p rust-proc-macro2-1))
  2638. ("rust-quote" ,(p rust-quote-1))
  2639. ("rust-syn" ,(p rust-syn-1))
  2640. ("rust-version-check" ,(p rust-version-check-0.9))
  2641. ("rust-yansi" ,(p rust-yansi-0.5)))
  2642. #:cargo-development-inputs
  2643. (("rust-trybuild" ,(p rust-trybuild-1)))))
  2644. (home-page "")
  2645. (synopsis "Diagnostics for proc-macro2.")
  2646. (description "Diagnostics for proc-macro2.")
  2647. (license (list license:expat license:asl2.0))))
  2648. (define rust-hash32-derive ; @0.1.0 doesn't build gainst new rust-quote and friends
  2649. (package
  2650. (inherit (p rust-hash32-derive-0.1))
  2651. (name "rust-hash32-derive")
  2652. (version "0.1.1")
  2653. (source
  2654. (origin
  2655. (method url-fetch)
  2656. (uri (crate-uri "hash32-derive" version))
  2657. (file-name (string-append name "-" version ".tar.gz"))
  2658. (sha256
  2659. (base32 "1zy60cdqrccd9kc8w4hvk1q584b4gjr4d48n3dff42xn6alapljr"))))))
  2660. (define rust-warp ; @0.2 doesn't build
  2661. (package
  2662. (inherit (p rust-warp-0.2))
  2663. (name "rust-warp")
  2664. (version "0.3.2")
  2665. (source
  2666. (origin
  2667. (method url-fetch)
  2668. (uri (crate-uri "warp" version))
  2669. (file-name (string-append name "-" version ".tar.gz"))
  2670. (sha256
  2671. (base32 "0zjqbg2j1fdpqq74bi80hmvyakf1f771d7vrmkqvg90lj4g4xvrw"))
  2672. (patches (list (local-file "warp-Update-tokio-rustls-to-v0.23.patch")
  2673. (local-file "warp-Update-tungstenite-to-0.17.2.patch")))
  2674. (snippet #~(begin
  2675. (delete-file "Cargo.toml")
  2676. (rename-file "Cargo.toml.orig" "Cargo.toml")))))))
  2677. (define rust-wayland-client ; for compatibility with new rust-smithay-client-toolkit
  2678. (package
  2679. (inherit (@ (gnu packages crates-graphics) rust-wayland-client-0.28))
  2680. (name "rust-wayland-client")
  2681. (version "0.29.4")
  2682. (source (origin
  2683. (method url-fetch)
  2684. (uri (crate-uri "wayland-client" version))
  2685. (file-name (string-append name "-" version ".tar.gz"))
  2686. (sha256
  2687. (base32
  2688. "13s5sj9344izk2g48yizk81kcg8jg4940gg2v6bzcmrjwxh388li"))))))
  2689. (define rust-wayland-commons
  2690. (package ; for compatibility with new rust-nix
  2691. (inherit (@ (gnu packages crates-graphics) rust-wayland-commons-0.28))
  2692. (name "rust-wayland-commons")
  2693. (version "0.29.4")
  2694. (source (origin
  2695. (method url-fetch)
  2696. (uri (crate-uri "wayland-commons" version))
  2697. (file-name (string-append name "-" version ".tar.gz"))
  2698. (sha256
  2699. (base32
  2700. "0gnk4a771i3g1k4fbzx54xnganpc9j68jrx8xj839hfp83iybxll"))))))
  2701. (define rust-wayland-cursor
  2702. (package ; @ 0.28.3 doesn't build against new rust-nix
  2703. (inherit (@ (gnu packages crates-graphics) rust-wayland-cursor-0.28))
  2704. (name "rust-wayland-cursor")
  2705. (version "0.29.4")
  2706. (source (origin
  2707. (method url-fetch)
  2708. (uri (crate-uri "wayland-cursor" version))
  2709. (file-name (string-append name "-" version ".tar.gz"))
  2710. (sha256
  2711. (base32
  2712. "1gd6aswkrdz556n54pjpd4rchw7jkgcx6hnrhgy62y2y7pqmh9y5"))))))
  2713. (define rust-wayland-protocols ; new rust-winit required a new version
  2714. (package
  2715. (inherit (@ (gnu packages crates-graphics) rust-wayland-protocols-0.28))
  2716. (name "rust-wayland-protocols")
  2717. (version "0.29.4")
  2718. (source (origin
  2719. (method url-fetch)
  2720. (uri (crate-uri "wayland-protocols" version))
  2721. (file-name (string-append name "-" version ".tar.gz"))
  2722. (sha256
  2723. (base32
  2724. "0hap8vky2fwsq05c98c8xs00gb9m5kxp8kq3zr0jwh036gi7l530"))))))
  2725. (define rust-as-slice ; 0.1 uses multiple generic-array version which antioxidant doesn't support (TODO?)
  2726. (package
  2727. (name "rust-as-slice")
  2728. (version "0.2.1")
  2729. (source
  2730. (origin
  2731. (method url-fetch)
  2732. (uri (crate-uri "as-slice" version))
  2733. (file-name (string-append name "-" version ".tar.gz"))
  2734. (sha256
  2735. (base32 "05j52y1ws8kir5zjxnl48ann0if79sb56p9nm76hvma01r7nnssi"))))
  2736. (build-system (@ (guix build-system cargo) cargo-build-system))
  2737. (arguments
  2738. `(#:cargo-inputs
  2739. (("rust-stable-deref-trait" ,(p rust-stable-deref-trait-1)))))
  2740. (home-page "https://github.com/japaric/as-slice")
  2741. (synopsis "`AsSlice` and `AsMutSlice` traits")
  2742. (description "`AsSlice` and `AsMutSlice` traits")
  2743. (license (list license:expat license:asl2.0))))
  2744. (define rust-blake2 ; 0.9 doesn't build against new rust-digest.
  2745. (package
  2746. (inherit (p rust-blake2-0.9))
  2747. (name "rust-blake2")
  2748. (version "0.10.4")
  2749. (source
  2750. (origin
  2751. (method url-fetch)
  2752. (uri (crate-uri "blake2" version))
  2753. (file-name (string-append name "-" version ".tar.gz"))
  2754. (sha256
  2755. (base32 "121k5yj3c8fr826pbh0gf0b3jly2ivzrfvz3lpxyabjvw2g89kxr"))))))
  2756. (define rust-blake3-reference-impl
  2757. (package
  2758. (inherit (@ (gnu packages crypto) rust-blake3-1))
  2759. (build-system antioxidant-build-system)
  2760. (arguments '())
  2761. (name "rust-blake3-reference-impl")
  2762. (synopsis "Reference implementation of BLAKE3.")
  2763. (description "This package is the reference implementation of BLAKE3.
  2764. It is not optimised for performance. As such, users are recommended to use
  2765. @code{rust-blake3} instead.")))
  2766. (define rust-hkdf ; 0.11 doesn't build against new rust-digest
  2767. (package
  2768. (inherit (p rust-hkdf-0.11))
  2769. (name "rust-hkdf")
  2770. (version "0.12.3")
  2771. (source
  2772. (origin
  2773. (method url-fetch)
  2774. (uri (crate-uri "hkdf" version))
  2775. (file-name (string-append name "-" version ".tar.gz"))
  2776. (sha256
  2777. (base32 "0dyl16cf15hka32hv3l7dwgr3xj3brpfr27iyrbpdhlzdfgh46kr"))))))
  2778. (define rust-chacha20 ; @0.8 doesn't build against old rust-cipher
  2779. (package
  2780. (inherit (p rust-chacha20-0.8))
  2781. (name "rust-chacha20")
  2782. (version "0.9.0")
  2783. (source
  2784. (origin
  2785. (method url-fetch)
  2786. (uri (crate-uri "chacha20" version))
  2787. (file-name (string-append name "-" version ".tar.gz"))
  2788. (sha256
  2789. (base32 "021g1917r0jzpvgah76667nzk0p3p9kj7ka5zqns1rxrqp3qkz67"))))))
  2790. (define rust-aes-gcm ; @0.8 doesn't build against old rust-cipher
  2791. (package
  2792. (inherit (p rust-aes-gcm-0.8))
  2793. (name "rust-aes-gcm")
  2794. (version "0.10.0-pre")
  2795. (source
  2796. (origin
  2797. (method url-fetch)
  2798. (uri (crate-uri "aes-gcm" version))
  2799. (file-name (string-append name "-" version ".tar.gz"))
  2800. (sha256
  2801. (base32 "0krsrhji8j5smi35rdg0r31adx1nrpnb1fkpzwl5xipj7yrfh140"))))))
  2802. (define rust-enum-to-u8-slice-derive ; 0.1.0 doesn't build against new rust-syn
  2803. (package
  2804. (inherit (p rust-enum-to-u8-slice-derive-0.1))
  2805. (name "rust-enum-to-u8-slice-derive")
  2806. (version "0.2.0")
  2807. (source
  2808. (origin
  2809. (method url-fetch)
  2810. (uri (crate-uri "enum-to-u8-slice-derive" version))
  2811. (file-name (string-append name "-" version ".tar.gz"))
  2812. (sha256
  2813. (base32 "1ab19saqm5vdhz15gshpj5xj2p6j9i3708mya25vdgyrmb7y1kpc"))))
  2814. (inputs
  2815. ;; TODO: do macro inputs go in native-inputs or inputs?
  2816. (modify-inputs (package-inputs (p rust-enum-to-u8-slice-derive-0.1))
  2817. (prepend (p rust-proc-macro2-1))))))
  2818. (define rust-input-buffer
  2819. (package
  2820. (inherit (p rust-input-buffer-0.3)) ; @0.3 doesn't build against rust-bytes@1
  2821. (name "rust-input-buffer")
  2822. (version "0.5.0")
  2823. (source
  2824. (origin
  2825. (method url-fetch)
  2826. (uri (crate-uri "input-buffer" version))
  2827. (file-name (string-append name "-" version ".tar.gz"))
  2828. (sha256
  2829. (base32 "044qxqdkcq6mv07bsvm35hl7hy3rmf87lrxjyz8zaq57i0xngvmc"))))))
  2830. (define rust-system-deps ; @3 doesn't build against new rust-heck
  2831. (package
  2832. (inherit (p rust-system-deps-3))
  2833. (name "rust-system-deps")
  2834. (version "6.0.2")
  2835. (source
  2836. (origin
  2837. (method url-fetch)
  2838. (uri (crate-uri "system-deps" version))
  2839. (file-name (string-append name "-" version ".tar.gz"))
  2840. (sha256
  2841. (base32 "02g750rlhh7ynqa3p4a3qm7jrkjp3d0jlzrl29z225ch9hf5m951"))))))
  2842. (define rust-version-compare ; rust-system-deps needs new version
  2843. (package
  2844. (inherit (p rust-version-compare-0.0.11))
  2845. (name "rust-version-compare")
  2846. (version "0.1.0")
  2847. (source
  2848. (origin
  2849. (method url-fetch)
  2850. (uri (crate-uri "version-compare" version))
  2851. (file-name (string-append name "-" version ".tar.gz"))
  2852. (sha256
  2853. (base32 "0wyasmnqqngvm54x0gsxbwpxznvn747jkp0dx1nnppy1j9xj927y"))))))
  2854. (define-public rust-async-process ; @1.0.1 is not compatible with new rust-signal-hook
  2855. (package
  2856. (inherit (p rust-async-process-1))
  2857. (name "rust-async-process")
  2858. (version "1.4.0")
  2859. (source
  2860. (origin
  2861. (method url-fetch)
  2862. (uri (crate-uri "async-process" version))
  2863. (file-name (string-append name "-" version ".tar.gz"))
  2864. (sha256
  2865. (base32 "037ns7dazk1z0vdpnzh2bvrnxxzd604pzl47765cgs141bihcb6g"))))
  2866. (inputs
  2867. (modify-inputs (package-inputs (p rust-async-process-1))
  2868. (prepend (p rust-libc-0.2)))))) ; new dependency
  2869. (define-public rust-trust-dns-proto ; requires by rust-trust-dns-openssl@0.21
  2870. (package
  2871. (inherit (p rust-trust-dns-proto-0.20))
  2872. (name "rust-trust-dns-proto")
  2873. (version "0.21.2")
  2874. (source
  2875. (origin
  2876. (method url-fetch)
  2877. (uri (crate-uri "trust-dns-proto" version))
  2878. (file-name (string-append name "-" version ".tar.gz"))
  2879. (sha256
  2880. (base32 "0p95ig8dfp30ga6gz01m683zy33abbna0givpgac6xwqym0g4ccw"))))
  2881. (inputs (modify-inputs (package-inputs (p rust-trust-dns-proto-0.20))
  2882. (prepend (p rust-tinyvec-1)
  2883. (p rust-tokio-native-tls-0.3)
  2884. (p rust-native-tls-0.2)
  2885. (p rust-rustls-0.20)
  2886. (p rust-tokio-rustls-0.22)
  2887. (p rust-rustls-pemfile-0.2)
  2888. (p rust-tokio-openssl-0.6)
  2889. (p rust-http-0.2)
  2890. (p rust-h2-0.3)
  2891. (p rust-bytes-1))))))
  2892. (define-public rust-trust-dns-openssl ; @0.20 doesn't build
  2893. (package
  2894. (inherit (p rust-trust-dns-openssl-0.20))
  2895. (name "rust-trust-dns-openssl")
  2896. (version "0.21.1")
  2897. (source
  2898. (origin
  2899. (method url-fetch)
  2900. (uri (crate-uri "trust-dns-openssl" version))
  2901. (file-name (string-append name "-" version ".tar.gz"))
  2902. (sha256
  2903. (base32 "0r8z7l757lf5yvsdxkb9324f663i3kyqkjjj3g3whilby5fz36z1"))))))
  2904. (define-public rust-trust-dns-native-tls ; likewise
  2905. (package
  2906. (inherit (p rust-trust-dns-native-tls-0.20))
  2907. (name "rust-trust-dns-native-tls")
  2908. (version "0.21.1")
  2909. (source
  2910. (origin
  2911. (method url-fetch)
  2912. (uri (crate-uri "trust-dns-native-tls" version))
  2913. (file-name (string-append name "-" version ".tar.gz"))
  2914. (sha256
  2915. (base32 "18yjln9h49rj2gxy79a8pipp3wl66g7cnjqkpa7azv955mkwcw97"))))))
  2916. (define-public rust-trust-dns-rustls ; likewise
  2917. (package
  2918. (inherit (p rust-trust-dns-rustls-0.20))
  2919. (name "rust-trust-dns-rustls")
  2920. (version "0.21.1")
  2921. (source
  2922. (origin
  2923. (method url-fetch)
  2924. (uri (crate-uri "trust-dns-rustls" version))
  2925. (file-name (string-append name "-" version ".tar.gz"))
  2926. (sha256
  2927. (base32 "1vsyy6zn0jv30nfyzs4y5rl6rnb4dm0m502gawk3klm2xq4dr5jx"))))))
  2928. (define-public rust-trust-dns-https ; @0.20 incompatible with rust-trust-dns-proto@0.21
  2929. (package
  2930. (inherit (p rust-trust-dns-https-0.20))
  2931. (name "rust-trust-dns-https")
  2932. (version "0.21.1")
  2933. (source
  2934. (origin
  2935. (method url-fetch)
  2936. (uri (crate-uri "trust-dns-https" version))
  2937. (file-name (string-append name "-" version ".tar.gz"))
  2938. (sha256
  2939. (base32 "0002375rn8hlakrvi0r0d7xm4kvcykxi93hrn2hz3hlx69gq814b"))))))
  2940. (define-public rust-trust-dns-resolver ; likewise
  2941. (package
  2942. (inherit (p rust-trust-dns-resolver-0.20))
  2943. (name "rust-trust-dns-resolver")
  2944. (version "0.21.2")
  2945. (source
  2946. (origin
  2947. (method url-fetch)
  2948. (uri (crate-uri "trust-dns-resolver" version))
  2949. (file-name (string-append name "-" version ".tar.gz"))
  2950. (sha256
  2951. (base32 "0n6m9yvhaip8dml5247d6qqdzf8bcrn4rvzwr685clc4xb175fp4"))))))
  2952. (define-public rust-askama-shared ; @0.11 doesn't build against new rust-nom
  2953. (package
  2954. (inherit (p rust-askama-shared-0.11))
  2955. (name "rust-askama-shared")
  2956. (version "0.12.2")
  2957. (source
  2958. (origin
  2959. (method url-fetch)
  2960. (uri (crate-uri "askama-shared" version))
  2961. (file-name (string-append name "-" version ".tar.gz"))
  2962. (sha256
  2963. (base32 "1l4fycmw65zyvfabf672sj2pc0ilfcj0y6a0csygq1wa26a2nwmz"))))
  2964. (inputs
  2965. (modify-inputs (package-inputs (p rust-askama-shared-0.11))
  2966. (prepend (p rust-mime-0.3)
  2967. (p rust-mime-guess-2))))))
  2968. (define-public rust-askama-derive
  2969. (package
  2970. (inherit (p rust-askama-derive-0.10))
  2971. (name "rust-askama-derive")
  2972. (version "0.11.2")
  2973. (source
  2974. (origin
  2975. (method url-fetch)
  2976. (uri (crate-uri "askama-derive" version))
  2977. (file-name (string-append name "-" version ".tar.gz"))
  2978. (sha256
  2979. (base32 "0wbb5l1x1bx8x8vvz4ayw196l9y64mi3vrmxm7pn8wmlx3k8ggw7"))))))
  2980. (define-public rust-askama ; @0.10 doesn't build against updated dependencies
  2981. (package
  2982. (inherit (p rust-askama-0.10))
  2983. (name "rust-askama")
  2984. (version "0.11.1")
  2985. (source (origin
  2986. (method url-fetch)
  2987. (uri (crate-uri "askama" version))
  2988. (file-name (string-append name "-" version ".tar.gz"))
  2989. (sha256
  2990. (base32
  2991. "0f81mzccdadryzaf2dbad1araq4nadp9mssyvdvv31hj6w7z367v"))))))
  2992. (define rust-proptest-derive
  2993. (package
  2994. (inherit (p rust-proptest-derive-0.1))
  2995. (name "rust-proptest-derive")
  2996. (version "0.3.0")
  2997. (source
  2998. (origin
  2999. (method url-fetch)
  3000. (uri (crate-uri "proptest-derive" version))
  3001. (file-name (string-append name "-" version ".tar.gz"))
  3002. (sha256
  3003. (base32
  3004. "1p4x6k1zxq9lrpk46npdnzj6894mjx5bpwkwrdk63ird72an5d4h"))
  3005. (modules '((guix build utils)))
  3006. (patches (list (local-file "rust-proptest-derive-upgrade-to-stable-proc-macro-ecosyst.patch")))))))
  3007. (define-public rust-syslog ; @0.4 doesn't build against new rust-time
  3008. (package
  3009. (inherit (p rust-syslog-4))
  3010. (name "rust-syslog")
  3011. (version "6.0.1")
  3012. (source
  3013. (origin
  3014. (method url-fetch)
  3015. (uri (crate-uri "syslog" version))
  3016. (file-name (string-append name "-" version ".tar.gz"))
  3017. (sha256
  3018. (base32 "1k0snk06c3gzq8g6kkqvpbbh5zg64nkzdjc303jda2hmd364904p"))))))
  3019. (define rust-ivf ; @0.1.0 doesn't build against new rust-bitstream-io@1
  3020. (package
  3021. (inherit (p rust-ivf-0.1))
  3022. (name "rust-ivf")
  3023. (version "0.1.1")
  3024. (source
  3025. (origin
  3026. (method url-fetch)
  3027. (uri (crate-uri "ivf" version))
  3028. (file-name (string-append name "-" version ".tar.gz"))
  3029. (sha256
  3030. (base32 "1qmpqnwlcvp7xpi1f6l63icaafpsak6hv7s326snffhs6rj1rc0g"))))))
  3031. (define rust-actix ; @0.10 doesn't build
  3032. (package
  3033. (inherit (p rust-actix-0.10))
  3034. (name "rust-actix")
  3035. (version "0.13.0")
  3036. (source
  3037. (origin
  3038. (method url-fetch)
  3039. (uri (crate-uri "actix" version))
  3040. (file-name (string-append name "-" version ".tar.gz"))
  3041. (sha256
  3042. (base32 "1mdy5i7f1px5kfyv3s5li985xry9zby4zc2bpy2qac8wr950ca7p"))))))
  3043. (define rust-actix-rt ; @1.1.1 doesn't build against new rust-tokio
  3044. (package
  3045. (inherit (p rust-actix-rt-1))
  3046. (name "rust-actix-rt")
  3047. (version "2.7.0")
  3048. (source
  3049. (origin
  3050. (method url-fetch)
  3051. (uri (crate-uri "actix-rt" version))
  3052. (file-name (string-append name "-" version ".tar.gz"))
  3053. (sha256
  3054. (base32 "000hxsbaxgd8jdmnw4dnlff4xdhggprnw2lk67pmiscqa4lnr8by"))))))
  3055. (define rust-actix-server
  3056. (package
  3057. (inherit (p rust-actix-server-1)) ; @1 doesn't build against new rust-actix-rt
  3058. (name "rust-actix-server")
  3059. (version "2.1.1")
  3060. (source
  3061. (origin
  3062. (method url-fetch)
  3063. (uri (crate-uri "actix-server" version))
  3064. (file-name (string-append name "-" version ".tar.gz"))
  3065. (sha256
  3066. (base32 "096q1hj88kgzfk6zv251sn57dlswh65r8ds6pdvv18cycn74z8qd"))))))
  3067. (define rust-actix-service ; new rust-actix-service doesn't build @1
  3068. (package
  3069. (inherit (p rust-actix-service-1))
  3070. (name "rust-actix-service")
  3071. (version "2.0.2")
  3072. (source
  3073. (origin
  3074. (method url-fetch)
  3075. (uri (crate-uri "actix-service" version))
  3076. (file-name (string-append name "-" version ".tar.gz"))
  3077. (sha256
  3078. (base32 "0fipjcc5kma7j47jfrw55qm09dakgvx617jbriydrkqqz10lk29v"))))))
  3079. (define rust-avif-serialize ; @0.6 doesn't build against new rust-arrayvec
  3080. (package
  3081. (inherit (@ (gnu packages crates-graphics) rust-avif-serialize-0.6))
  3082. (name "rust-avif-serialize")
  3083. (version "0.7.6")
  3084. (source
  3085. (origin
  3086. (method url-fetch)
  3087. (uri (crate-uri "avif-serialize" version))
  3088. (file-name (string-append name "-" version ".tar.gz"))
  3089. (sha256
  3090. (base32 "1fb9ld4iq8d5q5i9nr60hsdvdpjw4zb65kagv7xp08gphycwqy0f"))))))
  3091. (define rust-btoi ; required by rust-git-actor
  3092. (package
  3093. (name "rust-btoi")
  3094. (version "0.4.2")
  3095. (source (origin
  3096. (method url-fetch)
  3097. (uri (crate-uri "btoi" version))
  3098. (file-name (string-append name "-" version ".tar.gz"))
  3099. (sha256
  3100. (base32
  3101. "04ba4j96icaan10c613s2rwpn2kdbl8728qhz2xzi0dakyd8dh4p"))))
  3102. (build-system (@ (guix build-system cargo) cargo-build-system))
  3103. (arguments
  3104. `(#:cargo-inputs (("rust-num-traits" ,(p rust-num-traits-0.2)))
  3105. #:cargo-development-inputs
  3106. (("rust-bencher" ,(p rust-bencher-0.1))
  3107. ("rust-quickcheck" ,(p rust-quickcheck-0.9)))))
  3108. (home-page "https://github.com/niklasf/rust-btoi")
  3109. (synopsis "Parse integers directly from ASCII byte slices")
  3110. (description "Parse integers directly from ASCII byte slices")
  3111. (license (list license:expat license:asl2.0))))
  3112. (define rust-h2
  3113. (package
  3114. (inherit (p rust-h2-0.3)) ; new version required by new rust-reqwest
  3115. (name "rust-h2")
  3116. (version "0.3.13")
  3117. (source (origin
  3118. (method url-fetch)
  3119. (uri (crate-uri "h2" version))
  3120. (file-name (string-append name "-" version ".tar.gz"))
  3121. (sha256
  3122. (base32
  3123. "0msasdyv0n7avs5i1csjrs0rvdsp4k5z3fwl8rd53jbzcdnjra1p"))))))
  3124. (define rust-nasm-rs ; likewise
  3125. (package
  3126. (inherit (p rust-nasm-rs-0.2))
  3127. (name "rust-nasm-rs")
  3128. (version "0.2.4")
  3129. (source
  3130. (origin
  3131. (method url-fetch)
  3132. (uri (crate-uri "nasm-rs" version))
  3133. (file-name (string-append name "-" version ".tar.gz"))
  3134. (sha256
  3135. (base32 "10zl67i9gr7qarmnnnd8538mydw0yr6jlpbsvb5kxap9mr15h2ff"))))))
  3136. (define rust-miniz-oxide ; new rust-png incompatible with old rust-miniz-oxide (probably?)
  3137. (package
  3138. (inherit (p rust-miniz-oxide-0.4))
  3139. (name "rust-miniz-oxide")
  3140. (version "0.5.1")
  3141. (source
  3142. (origin
  3143. (method url-fetch)
  3144. (uri (crate-uri "miniz-oxide" version))
  3145. (file-name (string-append name "-" version ".tar.gz"))
  3146. (sha256
  3147. (base32 "10phz3ppw4p8pz4rwniy3qkw95wiq64kbvpb0l8kjcrzpka9pcnj"))))))
  3148. ;; TODO: is this (and the %extra-inputs) still required? rust-git-tempfile isn't packaged
  3149. (define rust-dashmap ; rust-git-tempfile@2.0.1 requires new dashmap
  3150. (package
  3151. (inherit (p rust-dashmap-4))
  3152. (name "rust-dashmap")
  3153. (version "5.3.4")
  3154. (source (origin
  3155. (method url-fetch)
  3156. (uri (crate-uri "dashmap" version))
  3157. (file-name (string-append name "-" version ".tar.gz"))
  3158. (sha256
  3159. (base32
  3160. "13s4rdgb2rkavsgzjks23zb0zviz7x2g8fb4jwc2xkqwkhn9359l"))))))
  3161. (define rust-deflate ; maybe required for new rust-png
  3162. (package
  3163. (inherit (p rust-deflate-0.9))
  3164. (name "rust-deflate")
  3165. (version "1.0.0")
  3166. (source
  3167. (origin
  3168. (method url-fetch)
  3169. (uri (crate-uri "deflate" version))
  3170. (file-name (string-append name "-" version ".tar.gz"))
  3171. (sha256
  3172. (base32 "0bs319wa9wl7pn9j6jrrxg1gaqbak581rkx210cbix0qyljpwvy8"))))))
  3173. (define rust-emacs-macros
  3174. (package
  3175. (inherit (p rust-emacs-macros-0.11)) ; @0.11 doesn't build against new rust-syn
  3176. (name "rust-emacs-macros")
  3177. (version "0.17.0")
  3178. (source (origin
  3179. (method url-fetch)
  3180. (uri (crate-uri "emacs-macros" version))
  3181. (file-name (string-append name "-" version ".tar.gz"))
  3182. (sha256
  3183. (base32
  3184. "0qg1dcn5acbirq617qq2fgg9adswif2dnr292s3qnq62wzgnyrb9"))))))
  3185. (define rust-png ; old version doesn't build against certain new crates
  3186. (package
  3187. (inherit (@ (gnu packages crates-graphics) rust-png-0.16))
  3188. (name "rust-png")
  3189. (version "0.17.5")
  3190. (source
  3191. (origin
  3192. (method url-fetch)
  3193. (uri (crate-uri "png" version))
  3194. (file-name (string-append name "-" version ".tar.gz"))
  3195. (sha256
  3196. (base32 "1fp3vnaxmjdv71dcakc21k07ir5s31dlx1mrazfqddzgaynw0f6w"))))))
  3197. (define rust-lebe ; required by new rust-exr
  3198. (package
  3199. (name "rust-lebe")
  3200. (version "0.5.1")
  3201. (source
  3202. (origin
  3203. (method url-fetch)
  3204. (uri (crate-uri "lebe" version))
  3205. (file-name (string-append name "-" version ".tar.gz"))
  3206. (sha256
  3207. (base32 "1zr6g3d35h349j0dsx6722lrjws00x2d8z0sy5p9wxdhimlivzby"))))
  3208. (build-system (@ (guix build-system cargo) cargo-build-system))
  3209. (arguments
  3210. `(#:cargo-development-inputs
  3211. (("rust-bencher" ,(p rust-bencher-0.1))
  3212. ("rust-byteorder" ,(p rust-byteorder-1)))))
  3213. (home-page "https://github.com/johannesvollmer/lebe")
  3214. (synopsis
  3215. "Tiny, dead simple, high performance endianness conversions with a generic API")
  3216. (description
  3217. "Tiny, dead simple, high performance endianness conversions with a generic API")
  3218. (license '(list license:bsd-3)))) ;; FIXME: Validate
  3219. (define rust-exr ; maybe required by new rust-image
  3220. (package
  3221. (name "rust-exr")
  3222. (version "1.4.2")
  3223. (source
  3224. (origin
  3225. (method url-fetch)
  3226. (uri (crate-uri "exr" version))
  3227. (file-name (string-append name "-" version ".tar.gz"))
  3228. (sha256
  3229. (base32 "05f269cpxvnyiwvdbijilwdcmfn9zs1a7wxdpvbfarszzc30xk0l"))))
  3230. (build-system (@ (guix build-system cargo) cargo-build-system))
  3231. (arguments
  3232. `(#:cargo-inputs
  3233. (("rust-bit-field" ,(p rust-bit-field-0.10))
  3234. ("rust-deflate" ,rust-deflate)
  3235. ("rust-flume" ,(p rust-flume-0.10))
  3236. ("rust-half" ,(p rust-half-1))
  3237. ("rust-inflate" ,(p rust-inflate-0.4))
  3238. ("rust-lebe" ,rust-lebe)
  3239. ("rust-smallvec" ,(p rust-smallvec-1))
  3240. ("rust-threadpool" ,(p rust-threadpool-1)))
  3241. #:cargo-development-inputs
  3242. (("rust-bencher" ,(p rust-bencher-0.1))
  3243. ;;("rust-image" ,(p rust-image-0.23)) ;; cycle
  3244. ("rust-rand" ,(p rust-rand-0.8))
  3245. ("rust-rayon" ,(p rust-rayon-1))
  3246. ("rust-walkdir" ,(p rust-walkdir-2)))))
  3247. (home-page "https://github.com/johannesvollmer/exrs")
  3248. (synopsis "Read and write OpenEXR files without any unsafe code")
  3249. (description "Read and write OpenEXR files without any unsafe code")
  3250. (license '(list license:bsd-3))))
  3251. (define rust-jpeg-decoder ; required by new rust-tiff
  3252. (package
  3253. (inherit (@ (gnu packages crates-graphics) rust-jpeg-decoder-0.1))
  3254. (name "rust-jpeg-decoder")
  3255. (version "0.2.6")
  3256. (source
  3257. (origin
  3258. (method url-fetch)
  3259. (uri (crate-uri "jpeg-decoder" version))
  3260. (file-name (string-append name "-" version ".tar.gz"))
  3261. (sha256
  3262. (base32 "0fsv9hns5yfm900h8f02agxiazfdwn5rq43milcjhx9yyw8aly4l"))))))
  3263. (define rust-tiff ; required by new rust-image
  3264. (package
  3265. (inherit (@ (gnu packages crates-graphics) rust-tiff-0.6))
  3266. (name "rust-tiff")
  3267. (version "0.7.2")
  3268. (source
  3269. (origin
  3270. (method url-fetch)
  3271. (uri (crate-uri "tiff" version))
  3272. (file-name (string-append name "-" version ".tar.gz"))
  3273. (sha256
  3274. (base32 "11i2smxqa35a921pqs3x5xl7kf3cav3fhqd4xiqafiplhq4xmykw"))))
  3275. (arguments
  3276. `(#:cargo-inputs
  3277. (("rust-flate2" ,(p rust-flate2-1))
  3278. ("rust-jpeg-decoder" ,rust-jpeg-decoder)
  3279. ("rust-weezl" ,(p rust-weezl-0.1)))
  3280. #:cargo-development-inputs
  3281. (("rust-criterion" ,(p rust-criterion-0.3)))))))
  3282. (define rust-image ; old rust-image doesn't build
  3283. (package
  3284. (inherit (@ (gnu packages crates-graphics) rust-image-0.23))
  3285. (name "rust-image")
  3286. (version "0.24.2")
  3287. (source
  3288. (origin
  3289. (method url-fetch)
  3290. (uri (crate-uri "image" version))
  3291. (file-name (string-append name "-" version ".tar.gz"))
  3292. (sha256
  3293. (base32 "04hjf319s6hswfmy0llv3c0bfc6yidic0nij5r8f4sr5pkbxkv98"))))))
  3294. (define rust-miette ; required by new rust-watchexec
  3295. (package
  3296. (name "rust-miette")
  3297. (version "4.7.1")
  3298. (source (origin
  3299. (method url-fetch)
  3300. (uri (crate-uri "miette" version))
  3301. (file-name (string-append name "-" version ".tar.gz"))
  3302. (sha256
  3303. (base32
  3304. "1365xpl8l66lsvn6bk4mhbpxf5gciiazj4apyiaqn87r8jg3540w"))))
  3305. (build-system (@ (guix build-system cargo) cargo-build-system))
  3306. (arguments
  3307. `(#:cargo-inputs (("rust-atty" ,(p rust-atty-0.2))
  3308. ("rust-backtrace" ,(p rust-backtrace-0.3))
  3309. ("rust-miette-derive" ,rust-miette-derive)
  3310. ("rust-once-cell" ,(p rust-once-cell-1))
  3311. ;; ("rust-owo-colors" ,(p rust-owo-colors-3)) ; TODO
  3312. ;; ("rust-supports-color" ,(p rust-supports-color-1)) ; TODO
  3313. ;; ("rust-supports-hyperlinks" ,(p rust-supports-hyperlinks-1)) ; TODO
  3314. ;; ("rust-supports-unicode" ,(p rust-supports-unicode-1)) ; TODO
  3315. ("rust-terminal-size" ,(p rust-terminal-size-0.1))
  3316. ("rust-textwrap" ,(p rust-textwrap-0.12)) ; TODO: requires @0.15 in Cargo.toml
  3317. ("rust-thiserror" ,(p rust-thiserror-1))
  3318. ("rust-unicode-width" ,(p rust-unicode-width-0.1)))
  3319. #:cargo-development-inputs
  3320. (("rust-futures" ,(p rust-futures-0.3))
  3321. ("rust-indenter" ,(p rust-indenter-0.3))
  3322. ("rust-rustversion" ,(p rust-rustversion-1))
  3323. ("rust-semver" ,(p rust-semver-1))
  3324. ("rust-syn" ,(p rust-syn-1))
  3325. ("rust-trybuild" ,(p rust-trybuild-1)))))
  3326. (home-page "https://github.com/zkat/miette")
  3327. (synopsis
  3328. "Fancy diagnostic reporting library and protocol for us mere mortals who aren't compiler hackers.")
  3329. (description
  3330. "Fancy diagnostic reporting library and protocol for us mere mortals who aren't
  3331. compiler hackers.")
  3332. (license license:asl2.0)))
  3333. (define rust-miette-derive ; required by rust-miette
  3334. (package
  3335. (name "rust-miette-derive")
  3336. (version "4.7.1")
  3337. (source (origin
  3338. (method url-fetch)
  3339. (uri (crate-uri "miette-derive" version))
  3340. (file-name (string-append name "-" version ".tar.gz"))
  3341. (sha256
  3342. (base32
  3343. "0k0ph38lxzqamaabind8463j2k5qjg6jhhbcdrg1pkqvfrdw8nvb"))))
  3344. (build-system (@ (guix build-system cargo) cargo-build-system))
  3345. (arguments
  3346. `(#:cargo-inputs (("rust-proc-macro2" ,(p rust-proc-macro2-1))
  3347. ("rust-quote" ,(p rust-quote-1))
  3348. ("rust-syn" ,(p rust-syn-1)))))
  3349. (home-page "https://github.com/zkat/miette")
  3350. (synopsis "Derive macros for miette. Like `thiserror` for Diagnostics.")
  3351. (description
  3352. "Derive macros for miette. Like `thiserror` for Diagnostics.")
  3353. (license license:asl2.0)))
  3354. (define rust-pico-args
  3355. (package
  3356. (name "rust-pico-args")
  3357. (version "0.4.2")
  3358. (source
  3359. (origin
  3360. (method url-fetch)
  3361. (uri (crate-uri "pico-args" version))
  3362. (file-name (string-append name "-" version ".tar.gz"))
  3363. (sha256
  3364. (base32 "0s646i0pbcck300rqldb21m151zxp66m3mdskha063blrfbcv2yv"))))
  3365. (build-system (@ (guix build-system cargo) cargo-build-system))
  3366. (home-page "https://github.com/RazrFalcon/pico-args")
  3367. (synopsis "An ultra simple CLI arguments parser.")
  3368. (description "An ultra simple CLI arguments parser.")
  3369. (license '(list license:expat))))
  3370. (define rust-pwd
  3371. (package
  3372. (name "rust-pwd")
  3373. (version "1.3.1")
  3374. (source (origin
  3375. (method url-fetch)
  3376. (uri (crate-uri "pwd" version))
  3377. (file-name (string-append name "-" version ".tar.gz"))
  3378. (sha256
  3379. (base32
  3380. "0yxhkkkqi1ckln37vdz6gc16aykw88h02548rafi153mhl207jpr"))))
  3381. (build-system (@ (guix build-system cargo) cargo-build-system))
  3382. (arguments
  3383. `(#:cargo-inputs
  3384. (("rust-failure" ,(p rust-failure-0.1))
  3385. ("rust-libc" ,(p rust-libc-0.2)))))
  3386. (home-page "https://gitlab.com/pwoolcoc/pwd.git")
  3387. (synopsis "Safe interface to pwd.h
  3388. ")
  3389. (description "Safe interface to pwd.h")
  3390. (license 'unknown-license!)));; TODO: https://gitlab.com/pwoolcoc/pwd/-/issues/1
  3391. (define rust-lalrpop-util
  3392. (package
  3393. (inherit (p rust-lalrpop-util-0.19))
  3394. (name "rust-lalrpop-util")
  3395. (version "0.19.8")
  3396. (source
  3397. (origin
  3398. (method url-fetch)
  3399. (uri (crate-uri "lalrpop-util" version))
  3400. (file-name (string-append name "-" version ".tar.gz"))
  3401. (sha256
  3402. (base32 "1i1dbp489pjzsmxqhnsc47p37akkjbfawk2g861xkd79g34rdxxw"))))))
  3403. (define rust-lalrpop ; old lalrpop doesn't build
  3404. (package
  3405. (inherit (p rust-lalrpop-0.19))
  3406. (name "rust-lalrpop")
  3407. (version "0.19.8")
  3408. (source
  3409. (origin
  3410. (method url-fetch)
  3411. (uri (crate-uri "lalrpop" version))
  3412. (file-name (string-append name "-" version ".tar.gz"))
  3413. (sha256
  3414. (base32
  3415. "08yqsp93vijrhskarrlxb16bbbyyakzhlm34z9vg460f3cs5a15k"))))))
  3416. (define rust-local-waker ; used by rust-local-channel, which is used by rust-actix-http
  3417. (package
  3418. (name "rust-local-waker")
  3419. (version "0.1.3")
  3420. (source
  3421. (origin
  3422. (method url-fetch)
  3423. (uri (crate-uri "local-waker" version))
  3424. (file-name (string-append name "-" version ".tar.gz"))
  3425. (sha256
  3426. (base32 "1w9zqlh18mymvb82ya0sailiy5d3wsjamaakgl70x50i6vmpckz3"))))
  3427. (build-system (@ (guix build-system cargo) cargo-build-system))
  3428. (home-page "https://github.com/actix/actix-net.git")
  3429. (synopsis "A synchronization primitive for thread-local task wakeup")
  3430. (description
  3431. "This package provides a synchronization primitive for thread-local task wakeup")
  3432. (license (list license:expat license:asl2.0))))
  3433. (define rust-local-channel
  3434. (package
  3435. (name "rust-local-channel")
  3436. (version "0.1.3")
  3437. (source
  3438. (origin
  3439. (method url-fetch)
  3440. (uri (crate-uri "local-channel" version))
  3441. (file-name (string-append name "-" version ".tar.gz"))
  3442. (sha256
  3443. (base32 "177wqgadrlw6m7r6xxafkj58asgpgbpv1ww4gx258v2cx703wc3z"))))
  3444. (build-system (@ (guix build-system cargo) cargo-build-system))
  3445. (arguments
  3446. `(#:cargo-inputs
  3447. (("rust-futures-core" ,rust-futures-core-0.3)
  3448. ("rust-futures-sink" ,rust-futures-sink-0.3)
  3449. ("rust-futures-util" ,rust-futures-util-0.3)
  3450. ("rust-local-waker" ,rust-local-waker))))
  3451. (home-page "https://github.com/actix/actix-net.git")
  3452. (synopsis
  3453. "A non-threadsafe multi-producer, single-consumer, futures-aware, FIFO queue")
  3454. (description
  3455. "This package provides a non-threadsafe multi-producer, single-consumer,
  3456. futures-aware, FIFO queue")
  3457. (license (list license:expat license:asl2.0))))
  3458. (define rust-nettle-7 ; old rust-nettle doesn't build
  3459. (package
  3460. (inherit (p rust-nettle-7))
  3461. (name "rust-nettle")
  3462. (version "7.2.0")
  3463. (source
  3464. (origin
  3465. (method url-fetch)
  3466. (uri (crate-uri "nettle" version))
  3467. (file-name (string-append name "-" version ".tar.gz"))
  3468. (sha256
  3469. (base32
  3470. "0da0d5kv2w93zjy7acsxvmg969ybi05bqibfs72nj0ri16l97lgm"))))))
  3471. (define rust-nettle-sys-2 ; for new rust-nettle
  3472. (package
  3473. (inherit (p rust-nettle-sys-2))
  3474. (name "rust-nettle-sys")
  3475. (version "2.1.0")
  3476. (source
  3477. (origin
  3478. (method url-fetch)
  3479. (uri (crate-uri "nettle-sys" version))
  3480. (file-name (string-append name "-" version ".tar.gz"))
  3481. (sha256
  3482. (base32
  3483. "05rdwqzkv83wvrby2x1xwjn3gv2795cwxwycjqhs7qw3g1f6hfxi"))))
  3484. (arguments
  3485. `(#:cargo-inputs
  3486. (("rust-bindgen" ,(p rust-bindgen-0.57))
  3487. ("rust-cc" ,(p rust-cc-1))
  3488. ("rust-libc" ,(p rust-libc-0.2))
  3489. ("rust-pkg-config" ,(p rust-pkg-config-0.3))
  3490. ("rust-tempfile" ,(p rust-tempfile-3))
  3491. ("rust-vcpkg" ,(p rust-vcpkg-0.2)))))))
  3492. (define rust-num-threads ; required by new rust-time
  3493. (package
  3494. (name "rust-num-threads")
  3495. (version "0.1.6")
  3496. (outputs %rust-library-outputs)
  3497. (source (origin
  3498. (method url-fetch)
  3499. (uri (crate-uri "num_threads" version))
  3500. (file-name (string-append name "-" version ".tar.gz"))
  3501. (sha256
  3502. (base32
  3503. "0i5vmffsv6g79z869flp1sja69g1gapddjagdw1k3q9f3l2cw698"))))
  3504. (build-system antioxidant-build-system)
  3505. (arguments
  3506. (list #:parallel-tests? #false)) ; test parallelism interferes with rust-num-thread's tests
  3507. ;; rust-libc is only needed on macos, ios and freebsd
  3508. (home-page "https://github.com/jhpratt/num_threads")
  3509. (synopsis
  3510. "A minimal library that determines the number of running threads for the current process.")
  3511. (description
  3512. "This package provides a minimal library that determines the number of running
  3513. threads for the current process.")
  3514. (license (list license:expat license:asl2.0))))
  3515. (define rust-firestorm ; not yet in Guix, required by new rust-actix-router
  3516. (package
  3517. (name "rust-firestorm")
  3518. (version "0.5.1")
  3519. (source
  3520. (origin
  3521. (method url-fetch)
  3522. (uri (crate-uri "firestorm" version))
  3523. (file-name (string-append name "-" version ".tar.gz"))
  3524. (sha256
  3525. (base32 "162zjw9skavhmcfsjzsywwa6yj492i98ljx8m8m7x99djhn6qprc"))))
  3526. (build-system (@ (guix build-system cargo) cargo-build-system))
  3527. (home-page "https://github.com/That3Percent/firestorm")
  3528. (synopsis "A low overhead intrusive flamegraph profiler.")
  3529. (description
  3530. "This package provides a low overhead intrusive flamegraph profiler.")
  3531. (license license:expat)))
  3532. ;; TODO: lots of rust-git-... crates, maybe (gnu packages gitoxide)?
  3533. (define rust-hdrhistogram ; old hdrhistogram doesn't build against new rust-nom
  3534. (package
  3535. (inherit (p rust-hdrhistogram-6))
  3536. (name "rust-hdrhistogram")
  3537. (version "7.5.0")
  3538. (source (origin
  3539. (method url-fetch)
  3540. (uri (crate-uri "hdrhistogram" version))
  3541. (file-name (string-append name "-" version ".tar.gz"))
  3542. (sha256
  3543. (base32
  3544. "1h0905yk0pxgxfk4kzlfmnglm6ky1ssbrpf4ars4yb5y25q2nrri"))))))
  3545. (define rust-headers ; @0.3.3 doesn't build against new rust-time
  3546. (package
  3547. (inherit (p rust-headers-0.3))
  3548. (name "rust-headers")
  3549. (version "0.3.7")
  3550. (source
  3551. (origin
  3552. (method url-fetch)
  3553. (uri (crate-uri "headers" version))
  3554. (file-name (string-append name "-" version ".tar.gz"))
  3555. (sha256
  3556. (base32 "0pd5i8aywnmx9q7wfzn9bs0jq2fm5rmk0kdhcnmy1qcbg3jpizsc"))))))
  3557. (define rust-iso8601 ; required for compatibility with new rust-nom
  3558. (package
  3559. (inherit (p rust-iso8601-0.1))
  3560. (name "rust-iso8601")
  3561. (version "0.4.2")
  3562. (source (origin
  3563. (method url-fetch)
  3564. (uri (crate-uri "iso8601" version))
  3565. (file-name (string-append name "-" version ".tar.gz"))
  3566. (sha256
  3567. (base32
  3568. "15nfg6d4qlniw4gk7039s5y07lzgr1dp9snsw63lsxarnyz4zfg5"))))))
  3569. (define rust-jsonrpc-core ; @14.0 doesn't build against new rust-futures
  3570. (package
  3571. (inherit (p rust-jsonrpc-core-14))
  3572. (name "rust-jsonrpc-core")
  3573. (version "18.0.0")
  3574. (source (origin
  3575. (method url-fetch)
  3576. (uri (crate-uri "jsonrpc-core" version))
  3577. (file-name (string-append name "-" version ".tar.gz"))
  3578. (sha256
  3579. (base32
  3580. "1sv5m6bxyscdqg8cfzlsm8f3vks3972zc9w475l4h19dxxmggxql"))))))
  3581. (define rust-s3handler ; @.7 doesn't build against new rust-hmac
  3582. (package
  3583. (inherit (p rust-s3handler-0.7))
  3584. (name "rust-s3handler")
  3585. (version "0.8.0")
  3586. (source (origin
  3587. (method url-fetch)
  3588. (uri (crate-uri "s3handler" version))
  3589. (file-name (string-append name "-" version ".tar.gz"))
  3590. (sha256
  3591. (base32
  3592. "0142vqnkknc9ibv8wn3nc0pqhxqgngrrily7v46zzjwyc01pmg4z"))))))
  3593. (define rust-postgres-protocol ; old version doesn't build against new rust-hmac
  3594. (package
  3595. (inherit (p rust-postgres-protocol-0.6))
  3596. (name "rust-postgres-protocol")
  3597. (version "0.6.4")
  3598. (source (origin
  3599. (method url-fetch)
  3600. (uri (crate-uri "postgres-protocol" version))
  3601. (file-name (string-append name "-" version ".tar.gz"))
  3602. (sha256
  3603. (base32
  3604. "0365asqd8v2iij8sl0282rrc0ixzkixl0jr0m2day0vfjnznr347"))))))
  3605. (define rust-lettre
  3606. (package
  3607. (inherit (p rust-lettre-0.9))
  3608. (name "rust-lettre")
  3609. (version "0.10.0-rc.7")
  3610. (source (origin
  3611. (method url-fetch)
  3612. (uri (crate-uri "lettre" version))
  3613. (file-name (string-append name "-" version ".tar.gz"))
  3614. (sha256
  3615. (base32
  3616. "0i1r8mpdrwvq64blzfz8b1g0vcgw81silyyqmfkywqj1skcqfzhg"))))))
  3617. (define rust-postgres-types ; old version doesn't build against new rust-time
  3618. (package
  3619. (inherit (p rust-postgres-types-0.2))
  3620. (name "rust-postgres-types")
  3621. (version "0.2.3")
  3622. (source (origin
  3623. (method url-fetch)
  3624. (uri (crate-uri "postgres-types" version))
  3625. (file-name (string-append name "-" version ".tar.gz"))
  3626. (sha256
  3627. (base32
  3628. "129xn3q32r92ylwggrlg5l0z2w8hfx6d56z8j291cwws32vyimpb"))))))
  3629. (define rust-reqwest ; @0.11.4 fails to build and uses deprecated functions from cookie_store
  3630. (package
  3631. (inherit (p rust-reqwest-0.11))
  3632. (name "rust-reqwest")
  3633. (version "0.11.10")
  3634. (source (origin
  3635. (method url-fetch)
  3636. (uri (crate-uri "reqwest" version))
  3637. (file-name (string-append name "-" version ".tar.gz"))
  3638. (sha256
  3639. (base32
  3640. "1ss1ijakw48dgpxaj5a38pk0r3vmzhdgaj842ssfir9m9ymgg8a6"))))))
  3641. (define rust-zip ; @0.5.13 doesn't compile against new rust-time
  3642. (package
  3643. (inherit (p rust-zip-0.5))
  3644. (name "rust-zip")
  3645. (version "0.6.2")
  3646. (source (origin
  3647. (method url-fetch)
  3648. (uri (crate-uri "zip" version))
  3649. (file-name (string-append name "-" version ".tar.gz"))
  3650. (sha256
  3651. (base32
  3652. "138brxnsknbvdh7h5h4rysfpcgvspp3pa177jsscnlmvfg7mn8mz"))))))
  3653. (define rust-tungstenite ; @0.11 doesn't build
  3654. (package
  3655. (inherit (p rust-tungstenite-0.11))
  3656. (name "rust-tungstenite")
  3657. (version "0.17.2")
  3658. (source
  3659. (origin
  3660. (method url-fetch)
  3661. (uri (crate-uri "tungstenite" version))
  3662. (file-name (string-append name "-" version ".tar.gz"))
  3663. (sha256
  3664. (base32 "1x848392ihy5mh098sns0lcmb5rdwkxpmdcfya108mz783m2ssnr"))))))
  3665. (define rust-tokio-tungstenite ; @0.11 doesn't build
  3666. (package
  3667. (inherit (p rust-tokio-tungstenite-0.11))
  3668. (name "rust-tokio-tungstenite")
  3669. (version "0.17.1")
  3670. (source
  3671. (origin
  3672. (method url-fetch)
  3673. (uri (crate-uri "tokio-tungstenite" version))
  3674. (file-name (string-append name "-" version ".tar.gz"))
  3675. (sha256
  3676. (base32 "1bi1z1l8392v20mg24gryw5jrm0166wxa155z138qma958is3k86"))))))
  3677. (define rust-totp-lite ; @1.0 doesn't build against new rust-digest
  3678. (package
  3679. (inherit (p rust-totp-lite-1))
  3680. (name "rust-totp-lite")
  3681. (version "2.0.0")
  3682. (source (origin
  3683. (method url-fetch)
  3684. (uri (crate-uri "totp-lite" version))
  3685. (file-name (string-append name "-" version ".tar.gz"))
  3686. (sha256
  3687. (base32
  3688. "1yi9s6firixay11rahqshdv07ih8i27fxqqrrshfk3wwbn3rdi2w"))))))
  3689. (define rust-tree-magic-mini ; fork with updated dependencies, see <https://github.com/aahancoc/tree_magic/pull/20>
  3690. (package
  3691. (inherit (p rust-tree-magic-0.2))
  3692. (name "rust-tree-magic-mini")
  3693. (version "3.0.3")
  3694. (source (origin
  3695. (method url-fetch)
  3696. (uri (crate-uri "tree-magic-mini" version))
  3697. (file-name (string-append name "-" version ".tar.gz"))
  3698. (sha256
  3699. (base32
  3700. "0vdazv3y1iggriwx5ksin72c2ds0xjdhx1yvmd5nxkya0w3gvbci")))))) ; TODO: check license
  3701. (define rust-unicode-bom ; required by rust-git-config
  3702. (package
  3703. (name "rust-unicode-bom")
  3704. (version "1.1.4")
  3705. (source (origin
  3706. (method url-fetch)
  3707. (uri (crate-uri "unicode-bom" version))
  3708. (file-name (string-append name "-" version ".tar.gz"))
  3709. (sha256
  3710. (base32
  3711. "0cpc54ssrlrwm3x8dm7z1dgwj9r9bxjls620ra1vfxfq87snkv33"))))
  3712. (build-system (@ (guix build-system cargo) cargo-build-system))
  3713. (home-page "https://gitlab.com/philbooth/unicode-bom")
  3714. (synopsis "Unicode byte-order mark detection for files and byte arrays.")
  3715. (description
  3716. "Unicode byte-order mark detection for files and byte arrays.")
  3717. (license license:asl2.0)))
  3718. (define rust-calloop ; old version doesn't build against new rust-nix
  3719. (package
  3720. (inherit (p rust-calloop-0.6))
  3721. (name "rust-calloop")
  3722. (version "0.10.0")
  3723. (source (origin
  3724. (method url-fetch)
  3725. (uri (crate-uri "calloop" version))
  3726. (file-name (string-append name "-" version ".tar.gz"))
  3727. (sha256
  3728. (base32
  3729. "0bp0h8d8k7r05ggp7ip3y26anwaspld134mgx46s9s1z913128l4"))))
  3730. (inputs
  3731. (modify-inputs (package-inputs (p rust-calloop-0.6))
  3732. (prepend
  3733. (p rust-thiserror-1) ; TODO: where to put macros (native/non-native)?
  3734. (p rust-vec-map-0.8) rust-futures-util-0.3 rust-slotmap)))))
  3735. (define rust-command-group
  3736. (package
  3737. (name "rust-command-group")
  3738. (version "1.0.8")
  3739. (source (origin
  3740. (method url-fetch)
  3741. (uri (crate-uri "command-group" version))
  3742. (file-name (string-append name "-" version ".tar.gz"))
  3743. (sha256
  3744. (base32
  3745. "0b7d9gy9dhw4jqx5x8njzmaifgxqw0nywjry7bgmjjlv81psia7p"))))
  3746. (build-system (@ (guix build-system cargo) cargo-build-system))
  3747. (arguments
  3748. `(#:cargo-inputs (("rust-async-trait" ,(p rust-async-trait-0.1))
  3749. ("rust-nix" ,(p rust-nix-0.22))
  3750. ("rust-tokio" ,(p rust-tokio-1)))
  3751. #:cargo-development-inputs
  3752. (("rust-tokio" ,(p rust-tokio-1)))))
  3753. (home-page "https://github.com/watchexec/command-group")
  3754. (synopsis "Extension to Command to spawn in a process group")
  3755. (description "Extension to Command to spawn in a process group")
  3756. (license (list license:asl2.0 license:expat))))
  3757. (define rust-config ; @0.11 doesn't build against new rust-nom
  3758. (package
  3759. (inherit (p rust-config-0.11))
  3760. (name "rust-config")
  3761. (version "0.13.1")
  3762. (source (origin
  3763. (method url-fetch)
  3764. (uri (crate-uri "config" version))
  3765. (file-name (string-append name "-" version ".tar.gz"))
  3766. (sha256
  3767. (base32
  3768. "06xk2846zsa239h2jr34jbnz9d8hyz4d6m9v9q1bbpvf9fviga9y"))))))
  3769. (define rust-crossterm
  3770. (package
  3771. (inherit (p rust-crossterm-0.20)) ; @0.19 and @0.20 and don't build against new dependencies
  3772. (name "rust-crossterm")
  3773. (version "0.23.2")
  3774. (source (origin
  3775. (method url-fetch)
  3776. (uri (crate-uri "crossterm" version))
  3777. (file-name (string-append name "-" version ".tar.gz"))
  3778. (sha256
  3779. (base32
  3780. "05ygjddfp70961ij7cbvrrwz88r09hghdpcqbf50z4c1yyj2w452"))))))
  3781. (define rust-ctrlc ; for compatibility with new rust-nix
  3782. (package
  3783. (inherit (p rust-ctrlc-3))
  3784. (name "rust-ctrlc")
  3785. (version "3.2.2")
  3786. (source (origin
  3787. (method url-fetch)
  3788. (uri (crate-uri "ctrlc" version))
  3789. (file-name (string-append name "-" version ".tar.gz"))
  3790. (sha256
  3791. (base32
  3792. "0r88w8l4hxc64w43xlwjk5f60vg57vdahnjy3w5f0qb89slflzxk"))))))
  3793. (define rust-email ; for compatibility with new rust-base64
  3794. (package
  3795. (inherit (p rust-email-0.0.20))
  3796. (name "rust-email")
  3797. (version "0.0.21")
  3798. (source (origin
  3799. (method url-fetch)
  3800. (uri (crate-uri "email" version))
  3801. (file-name (string-append name "-" version ".tar.gz"))
  3802. (sha256
  3803. (base32
  3804. "0gkv0lgs1apmq3w13pj2qr2bxiy42hw3vgi1jsb705l3p01hadk5"))))))
  3805. (define rust-email-address ; required by new rust-lettre
  3806. (package
  3807. (name "rust-email-address")
  3808. (outputs %rust-library-outputs)
  3809. (version "0.2.1")
  3810. (source (origin
  3811. (method url-fetch)
  3812. (uri (crate-uri "email-address" version))
  3813. (file-name (string-append name "-" version ".tar.gz"))
  3814. (sha256
  3815. (base32
  3816. "13j6s1qz5x13rdc0zrmsjfdqqqdshksrwqmrwnhxyms8rg4vg146"))))
  3817. (build-system antioxidant-build-system)
  3818. (inputs (list (list (vitaminate/auto (p rust-serde-1)) "lib")))
  3819. (home-page "https://github.com/johnstonskj/rust-email_address.git")
  3820. (synopsis
  3821. "A Rust crate providing an implementation of an RFC-compliant `EmailAddress` newtype. ")
  3822. (description
  3823. "This package provides a Rust crate providing an implementation of an
  3824. RFC-compliant `EmailAddress` newtype. ")
  3825. (license license:expat)))
  3826. (define rust-email-encoding ; for compatibility with new rust-lettre
  3827. (package
  3828. (name "rust-email-encoding")
  3829. (version "0.1.2")
  3830. (source (origin
  3831. (method url-fetch)
  3832. (uri (crate-uri "email-encoding" version))
  3833. (file-name (string-append name "-" version ".tar.gz"))
  3834. (sha256
  3835. (base32
  3836. "06xljszqdicpys16jghyvr5199pqhjh3zjjl0jmmim94dnw1yzl2"))))
  3837. (build-system (@ (guix build-system cargo) cargo-build-system))
  3838. (arguments
  3839. `(#:cargo-inputs (("rust-base64" ,(p rust-base64-0.13))
  3840. ("rust-memchr" ,(p rust-memchr-2)))
  3841. #:cargo-development-inputs
  3842. (("rust-pretty-assertions" ,(p rust-pretty-assertions-0.7)))))
  3843. (home-page "")
  3844. (synopsis "Low level email encoding RFCs implementations")
  3845. (description "Low level email encoding RFCs implementations")
  3846. (license (list license:expat license:asl2.0))))
  3847. (define rust-raw-window-handle ; required by new rust-winit@0.26
  3848. (package
  3849. (inherit (@ (gnu packages crates-graphics) rust-raw-window-handle-0.3))
  3850. (name "rust-raw-window-handle")
  3851. (version "0.4.3")
  3852. (source (origin
  3853. (method url-fetch)
  3854. (uri (crate-uri "raw-window-handle" version))
  3855. (file-name (string-append name "-" version ".tar.gz"))
  3856. (sha256
  3857. (base32
  3858. "0hgvrqbr2b62zhq4ryv08h92mwis9v8f7j9pwcgxzlp7nswvw05q"))))))
  3859. ;; @4.1.0 doesn't build
  3860. (define-public rust-slog-stdlog
  3861. (package
  3862. (inherit (p rust-slog-stdlog-4))
  3863. (name "rust-slog-stdlog")
  3864. (version "4.1.1")
  3865. (source (origin
  3866. (method url-fetch)
  3867. (uri (crate-uri "slog-stdlog" version))
  3868. (file-name (string-append name "-" version ".tar.gz"))
  3869. (sha256
  3870. (base32
  3871. "0gpsf62ckblpc6a70dnhsz677c7s5cz4glpqsf8p5bmvwnnb41k7"))))))
  3872. (define rust-slotmap ; required by new rust-calloop
  3873. (package
  3874. (name "rust-slotmap")
  3875. (version "1.0.6")
  3876. (source (origin
  3877. (method url-fetch)
  3878. (uri (crate-uri "slotmap" version))
  3879. (file-name (string-append name "-" version ".tar.gz"))
  3880. (sha256
  3881. (base32
  3882. "0hhkvsc3x79c7fh97b3padjhssd19hzdyyiv291mr3qf3lk8xq71"))))
  3883. (build-system (@ (guix build-system cargo) cargo-build-system))
  3884. (arguments
  3885. `(#:cargo-inputs (("rust-serde" ,(p rust-serde-1))
  3886. ("rust-version-check" ,(p rust-version-check-0.9)))
  3887. #:cargo-development-inputs
  3888. (("rust-fxhash" ,(p rust-fxhash-0.2))
  3889. ("rust-quickcheck" ,(p rust-quickcheck-0.9))
  3890. ("rust-serde" ,(p rust-serde-1))
  3891. ("rust-serde-derive" ,(p rust-serde-derive-1))
  3892. ("rust-serde-json" ,(p rust-serde-json-1)))))
  3893. (home-page "https://github.com/orlp/slotmap")
  3894. (synopsis "Slotmap data structure")
  3895. (description "Slotmap data structure")
  3896. (license license:zlib)))
  3897. (define rust-smithay-clipboard ; @0.6.2 doesn't build against new rust-smithay-client-toolkit
  3898. (package
  3899. (inherit (@ (gnu packages crates-graphics) rust-smithay-clipboard-0.6))
  3900. (name "rust-smithay-clipboard")
  3901. (version "0.6.6")
  3902. (source (origin
  3903. (method url-fetch)
  3904. (uri (crate-uri "smithay-clipboard" version))
  3905. (file-name (string-append name "-" version ".tar.gz"))
  3906. (sha256
  3907. (base32
  3908. "1s5hyhbmnk75i0sm14wy4dy7c576a4dyi1chfwdhpbhz1a3mqd0a"))))))
  3909. (define rust-smithay-client-toolkit ; @0.12 doesn't build against new rust-calloop
  3910. (package
  3911. (inherit (@ (gnu packages crates-graphics) rust-smithay-client-toolkit-0.12))
  3912. (name "rust-smithay-client-toolkit")
  3913. (version "0.16.0")
  3914. (source (origin
  3915. (method url-fetch)
  3916. (uri (crate-uri "smithay-client-toolkit" version))
  3917. (file-name (string-append name "-" version ".tar.gz"))
  3918. (sha256
  3919. (base32
  3920. "0m7l0zhl9s3321yj8z6hf1g0w3l2ay85irgcw2r5wwfj69yw81zk"))))))
  3921. (define rust-winit ; for compatibility against new rust-smithay-client-toolkit
  3922. (package
  3923. (inherit (@ (gnu packages crates-graphics) rust-winit-0.24))
  3924. (name "rust-winit")
  3925. (version "0.26.1")
  3926. (source (origin
  3927. (method url-fetch)
  3928. (uri (crate-uri "winit" version))
  3929. (file-name (string-append name "-" version ".tar.gz"))
  3930. (sha256
  3931. (base32
  3932. "0fp7cdh7llbqmm6ga8f6bzk9785jmkbyy1w631hr9faq3n9wqhwv"))
  3933. (patches
  3934. (list (local-file "rust-winit-Update-smithay-client-toolkit.patch")))))))
  3935. (define rust-wl-clipboard-rs ; @0.4.1 incompatible with new rust-tree-magic-mini
  3936. (package
  3937. (inherit (p rust-wl-clipboard-rs-0.4))
  3938. (name "rust-wl-clipboard-rs")
  3939. (version "0.6.0")
  3940. (source (origin
  3941. (method url-fetch)
  3942. (uri (crate-uri "wl-clipboard-rs" version))
  3943. (file-name (string-append name "-" version ".tar.gz"))
  3944. (sha256
  3945. (base32
  3946. "12ydiayklrls2ys8ig2rljl86z21ixg672zhdsprnaiqpz8s6p5y"))))))
  3947. (define rust-x11rb ; required for compatibility with new rust-nix
  3948. (package
  3949. (inherit (@ (gnu packages crates-graphics) rust-x11rb-0.8))
  3950. (name "rust-x11rb")
  3951. (version "0.9.0")
  3952. (source (origin
  3953. (method url-fetch)
  3954. (uri (crate-uri "x11rb" version))
  3955. (file-name (string-append name "-" version ".tar.gz"))
  3956. (sha256
  3957. (base32
  3958. "12kdvzjfdbv9nkliq9lk6jd70f71q1qaiya24fjy4flbciavx6bf"))))))
  3959. (define rust-xml5ever
  3960. (package
  3961. (inherit (p rust-xml5ever-0.16)) ; @0.16 doesn't build against new rust-time
  3962. (name "rust-xml5ever")
  3963. (version "0.17.0")
  3964. (source (origin
  3965. (method url-fetch)
  3966. (uri (crate-uri "xml5ever" version))
  3967. (file-name (string-append name "-" version ".tar.gz"))
  3968. (sha256
  3969. (base32
  3970. "0l76v0c228c92sskiflpsy19c0bgc8q7flhlfanm32zrbb8f2d20"))))))
  3971. ;; Some of these are only used for tests, cause cycles, ???,
  3972. ;; so remove them. (TODO: some of them can probably now be removed.)
  3973. ;; TODO: write a "guix style" thing for doing this.
  3974. ;;
  3975. ;; "rust-foo": remove all dependencies named "rust-foo"
  3976. ;; ("rust-foo" -> "rust-bar"): remove the dependency "rust-bar" when used by rust-foo
  3977. ;; ("rust-foo" #:for-dependent ,p): remove the dependency "rust-foo when used by a package for which the predicate p returns 'true'
  3978. (define %removed-dependencies
  3979. ;; Unconditional dependencies
  3980. `("rust-derive-error-chain" ; doesn't build (even when updated) and unmaintained, avoid it for now
  3981. "rust-crypto-tests" ; test dependency doesn't build against new rust-digest, avoid for now
  3982. "rust-objc" "rust-objc-exception" "rust-objc-foundation" "rust-objc-id" "rust-objc-test-utils" ; requires gcc-objc, but gcc-objc doesn't seem to be used by any Rust crate, so it looks like these objc crates have never worked in the first place in Guix.
  3983. "rust-avro-rs" ; doesn't compile against new rust-digest and longer maintained, replace by apache-avro, let's see if we can avoid it ...
  3984. ("rust-quickcheck"
  3985. ;; Avoid (quickcheck env-logger humantime chrono bincode) cycle
  3986. ;; and some others (TODO: try compiling rust-quickcheck against dependencies
  3987. ;; compiled without tests to break the cycle).
  3988. #:for-dependent
  3989. ,(lambda (dependent)
  3990. (member (package-name dependent)
  3991. '("rust-env-logger" "rust-humantime" "rust-chrono" "rust-bincode" "rust-byteorder"
  3992. "rust-regex" "rust-time" "rust-itertools" "rust-indexmap"))))
  3993. "rust-pear" "rust-pear-codegen" ; current version in Guix requires non-stable
  3994. "rust-mesalink" ; doesn't build against recent rust-rustls
  3995. "rust-defmt" ; accidentally requires unstable-test?
  3996. "rust-heapsize-plugin" ; makes use of removed features
  3997. "rust-serde-hjson" ; doesn't build against new rust-serde
  3998. ("rust-mio-uds" ; doesn't build against new rust-mio, now included in new rust-mio
  3999. #:for-dependent
  4000. ,(lambda (dependent)
  4001. (not (string=? (package-name dependent) "rust-signal-hook-mio+old"))))
  4002. "rust-speculate" ; @0.1.2 doesn't build against recent rust-syn
  4003. "rust-skeptic" ; @0.13.4 doesn't build
  4004. "rust-termbox-sys" ; downloads the library it wraps at compile time, cannot have work in Guix in the first place.
  4005. "rust-boxxy" ; doesn't build and not supposed to be used ‘in production’
  4006. "rust-macrotest"
  4007. ("rust-mio-extras" ; doesn't build against new rust-mio, so avoid it where possible. Don't remove it unconditionally, because it's required by rust-notify@4 and rust-notify@4 is required by rust-watchexec
  4008. #:for-dependent
  4009. ,(lambda (dependent)
  4010. (not (or (and (string=? "rust-notify" (package-name dependent))
  4011. (string-prefix? "4." (package-version dependent)))
  4012. (string=? "rust-alacritty-terminal" (package-name dependent))
  4013. (string=? "rust-curl" (package-name dependent)))))) ; test-only
  4014. "rust-tokio-tls" ; @0.3.1 doesn't build
  4015. "rust-rust-hawktracer-sys" ; only for tracing (debugging-only), so maybe the build failure can be avoided?
  4016. "rust-ntest" "rust-ntest-test-cases" ; test-only, and @0.3.4 tries using non-exported syn::export
  4017. "rust-afl" ; TODO: move to 'native-inputs'/development-inputs
  4018. "rust-js-sys" ; TODO: guix doesn't support those targets (yet)
  4019. "rust-libfuzzer-sys"; ; bundles libfuzzer
  4020. "rust-libmimalloc-sys" "rust-mimalloc" ; bundles mimalloc, let's try to do without ...
  4021. "rust-lettre-email" ; current version doesn't build, and seems to have been merged into rust-lettre itself.
  4022. "rust-cortex-m" ; ARM targets not yet supported for Rust in Guix
  4023. ;;"rust-cc" ;; todo: build.rs, hence move to 'native-inputs'?
  4024. "rust-stdweb" "rust-web-sys" ;; web, js, wasm?
  4025. "rust-gloo-timers" ; web-only crate
  4026. "rust-bencher" ; FTB
  4027. "rust-criterion" "rust-criterion-cycles-per-byte" ;; fails to build because rust-async-log-attributes fails to build
  4028. "rust-femme" ; some dependencies fail to build
  4029. ("rust-ptree" -> "rust-config") ; only required by disabled "config" feature
  4030. ("rust-ptree" -> "rust-directories") ; likewise
  4031. "rust-futures-util-preview" ; futures-util has been updated?
  4032. "rust-iron" ; its dependency rust-hyper-native-tls fails to build
  4033. "rust-rocket" ; its dependency rust-hyper-sync-rustls fails to build
  4034. "rust-nickel" ; fails to build
  4035. "rust-kqueue-sys" "rust-kqueue" "rust-errno-dragonfly" ;; TODO: BSD not supported
  4036. "rust-pdcurses-sys" ; bundles pdcurses, maybe actually unused?, see #56031
  4037. ;; TODO: how do the three following crates even work?
  4038. "rust-rustc-std-workspace-std"
  4039. "rust-rustc-std-workspace-core"
  4040. "rust-rustc-std-workspace-alloc"
  4041. "rust-runtime" ; deprecated and doesn't build
  4042. ;; rust-structopt-derive doesn't build and upstream recommends
  4043. ;; migrating to 'clap'
  4044. #;"rust-structopt" #;"rust-structopt-derive"
  4045. "rust-compiler-builtins"
  4046. "rust-tester" ; makes use of non-existent io::set_panic
  4047. "rust-compiletest-rs" ; compilation error: "struct `TestOpts` has no field named `filter`"
  4048. "rust-cloudabi" ; doesn't seem like a supported target
  4049. "rust-winapi" "rust-winutil" "rust-winapi-wsapoll" "rust-kernel32-sys" "rust-user32-sys" "rust-winreg" "rust-wepoll-sys" "rust-wepoll-sys-stjepang" "rust-ipconfig" "rust-windows" "rust-windows-x86-64-msvc" "rust-windows-x86-64-gnu" "rust-windows-i686-msvc" "rust-windows-i686-gnu" "rust-windows-aarch64-msvc" "rust-windows-sys" "rust-windows-gen" "rust-windows-macros" "rust-python3-dll-a" "rust-winapi-x86-64-pc-windows-gnu" "rust-winapi-i686-pc-windows-gnu" ; skip Windows support for now
  4050. "rust-clipboard-win"
  4051. "rust-windows-implements" "rust-windows-tokens"
  4052. "rust-uds-windows"
  4053. "rust-mio-anonymous-pipes" ; also Windows-specific
  4054. "rust-ntapi" ; likewise
  4055. "rust-nodrop-union" ; required unstable, and deprecated
  4056. "rust-sleef-sys" ; requires unstable
  4057. "rust-packed-simd" "rust-packed-simd-2" ; requires unstable (TODO: rust-packed-simd-2?)
  4058. "rust-security-framework" "rust-cocoa" "rust-cocoa-foundation" "rust-core-foundation" "rust-core-foundation-sys" "rust-core-text" "rust-fsevent" "rust-fsevent-sys" "rust-core-video-sys" "rust-core-graphics" "rust-core-graphics-types" "rust-objc-foundation" "rust-security-framework-sys" "rust-readkey" "rust-cgl" "rust-dispatch" ; non-Linux, non-Hurd things,
  4059. "rust-ndk" "rust-ndk-glue" "rust-ndk-sys" "rust-ndk-macro" "rust-android-logger" "rust-android-glue" "rust-android-log-sys" ; Android userspace is not yet supported
  4060. "rust-redox-syscall" "rust-redox-termios" "rust-redox-users" ; Redox is not a supported target of Guix
  4061. "rust-mach" ; skip Mach (used by Hurd and others) support for now.
  4062. "rust-ws2-32-sys"
  4063. "rust-winapi-util" "rust-winapi-build"
  4064. "rust-fuchsia-zircon" "rust-fuchsia-zircon-sys" "rust-fuchsia-cprng" ; fuchsia not supported by Guix
  4065. "rust-dwrote" ; Windows-only, skip for now, cross-compilation can be implemented later
  4066. "rust-core-arch" ; doesn't build, nowadays part of Rust itself?
  4067. "rust-hermit-abi"
  4068. "rust-model" ;; doesn't build, avoid for now
  4069. "rust-scratch" ; appears to be incompatible with antioxidant's compilation model without shenanigans
  4070. "rust-tokio-core" ;; doesn't exist in recent tokios
  4071. "rust-tokio-process" ;; doesn't exist in recent tokios
  4072. "rust-tokio-executor" ;; doesn't exist in recent tokios, I think?
  4073. "rust-tokio-io" ;; doesn't exist in recent tokios, I think?
  4074. ("rust-lazy-static" -> "rust-spin") ; rust-spin is only needed in a no-std environment, also somewhat deep dependencies for basic functionality
  4075. "rust-version-sync"
  4076. ;; Remove (currently unused) dependencies, to avoid cycles.
  4077. ("rust-trybuild" -> "rust-dissimilar")
  4078. ("rust-trybuild" -> "rust-glob")
  4079. ("rust-trybuild" -> "rust-once-cell")
  4080. ("rust-trybuild" -> "rust-serde")
  4081. ("rust-trybuild" -> "rust-serde-json")
  4082. ("rust-trybuild" -> "rust-termcolor")
  4083. ("rust-trybuild" -> "rust-toml")
  4084. "rust-clang-ast-test-suite" ; empty, doesn't build
  4085. "rust-cxx-test-suite" ; likewise
  4086. "rust-clippy"
  4087. "rust-cargo" "rust-cargo-c" ; rust-cargo doesn't build even when updated to @0.62
  4088. "rust-tokio-mock-task" ; doesn't build
  4089. "rust-tokio-test"
  4090. ("rust-serde-test"
  4091. #:for-dependent
  4092. ,(lambda (dependent)
  4093. (not (member (package-name dependent)
  4094. '("rust-uuid" "rust-linked-hash-map" "rust-meval"
  4095. "rust-multimap" "rust-serde-bytes" "rust-text-size"
  4096. "rust-num-bigint-dig" "rust-hashlink"
  4097. "rust-linear-map")))))
  4098. "rust-actix-testing" ; doesn't build
  4099. "rust-actix-connect" ; doesn't build and no update available
  4100. ("rust-xml5ever" -> "rust-time") ; new version doesn't use rust-time anymore
  4101. "rust-wasm-bindgen" "rust-wasi"
  4102. "rust-wasm-bindgen-futures" ; ECMAScript-only and doesn't build
  4103. "rust-wasm-bindgen-test"
  4104. "rust-console-log" ; wasm stuff?
  4105. ("rust-x11rb" -> "libloading") ; no need for the fragile dlopen
  4106. "rust-fluid" ; expects old rust-syn or rust-quote
  4107. "rust-fluid-attributes" ; expects old rust-syn or rust-quote
  4108. ("rust-crossbeam-utils" -> "rust-loom") ; cycle
  4109. ("rust-once-cell" -> "rust-crossbeam-utils") ; test cycle
  4110. ("rust-nalgebra-macros" -> "rust-nalgebra")
  4111. ("alacritty" -> "rust-time") ; not needed anymore
  4112. ("rust-average" -> "rust-rand-distr") ; test cycle?
  4113. ("rust-cxxbridge-macro" -> "rust-cxx") ; test cycle?
  4114. ;; Maybe a test or example cycle?
  4115. ("rust-bytemuck-derive" -> "rust-bytemuck")
  4116. ("rust-nasm-rs" -> "rust-arrayvec") ; not required anymore due to package update
  4117. ("rust-diesel-derives" -> "rust-diesel")
  4118. ("rust-diesel" -> "sqlite") ; should be handled by the rust-libsqlclient3-sys dependency
  4119. ("rust-colored" -> "rust-rspec")
  4120. ;; Not a dependency anymore (except for an old version), resolve cycle.
  4121. ("rust-pkcs1"
  4122. #:for-dependent
  4123. ,(lambda (p)
  4124. (and (equal? (package-name p) "rust-pkcs8")
  4125. (not (equal? (package-version p) "0.7.6")))))
  4126. ;; Break cycle (test or something like that?)
  4127. ("rust-quote" -> "rust-rustversion")
  4128. ("rust-multipart" -> "rust-hyper") ; incompatible with hyper>0.10
  4129. ;; Break cycle.
  4130. ("rust-async-attributes" -> "rust-async-std")
  4131. ("rust-async-channel" -> "rust-blocking")
  4132. ("rust-async-io" -> "rust-async-net")
  4133. ;; Optional dependency cycle
  4134. ("rust-async-std" -> "rust-surf")
  4135. ;; Optional dependency cycle
  4136. ("rust-ravif" -> "rust-image")
  4137. ("rav1e" -> "rust-image")
  4138. ; ravif not used by default image features
  4139. ("rust-image" -> "rust-ravif")
  4140. ;; TODO: rust-rav1e and rav1e
  4141. ;; rust-futures-cpupool isn't updated anymore and doesn't
  4142. ;; build anymore?
  4143. ("rust-serde-derive" -> "rust-serde")
  4144. ("rust-actix-macros" -> "rust-actix-rt")
  4145. ;; Test cycle (rust-paw <-> rust-paw-structopt).
  4146. ("rust-paw" -> "rust-paw-structopt")
  4147. ("rust-paw" -> "rust-structopt")
  4148. ("rust-anyhow" -> "rust-thiserror")
  4149. ("rust-proc-macro-hack" -> "rust-demo-hack")
  4150. ("rust-proc-macro-hack" -> "rust-demo-hack-impl")
  4151. ("rust-nom" -> "rust-jemallocator")
  4152. ("rust-serde-bytes" -> "rust-bincode")
  4153. ("rust-failure-derive" -> "rust-failure")
  4154. ("rust-serde-bytes" -> "rust-bincode")
  4155. ("rust-serde-json" -> "rust-serde-stacker")
  4156. ("rust-erased-serde" -> "rust-serde-json")
  4157. ("rust-proc-macro2" -> "rust-quote")
  4158. ("rust-indexmap" -> "rust-itertools")
  4159. ("rust-tracing-attributes" -> "rust-tracing")
  4160. ("rust-tracing-attributes" -> "rust-async-trait")
  4161. ("rust-tracing-attributes" -> "rust-tracing-futures")
  4162. ("rust-tracing-attributes" -> "rust-tracing-subscriber") ; tests
  4163. ("rust-tracing" -> "rust-tokio")
  4164. ("rust-headers" -> "rust-time") ; dependency removed in new version
  4165. ("rust-hashbrown" -> "rust-bumpalo") ; todo: remove from #:cargo-inputs?, unused?
  4166. ("rust-fastrand" -> "rust-getrandom")
  4167. ("rust-fastrand" -> "rust-instant")
  4168. ("rust-fastrand" -> "rust-wyhash")
  4169. ;; ("rust-tokio-io" -> "rust-tokio-current-thread") ; rust-tokio-io currently removed
  4170. ;; ("rust-tokio-core" -> "rust-flate2") ; likewise
  4171. ;; ("rust-tokio-core" -> "rust-httparse")
  4172. ;; ("rust-tokio-process" -> "rust-failure") ;; otherwise cc needs to be removed from rust-cloudflare-zlib-sys ;; likewise, rust-tokio-process is currently removed
  4173. ;; ("rust-tokio" -> "rust-tokio-executor") ; similar
  4174. ;; Remove unused dependencies
  4175. ("rust-flate2" -> "rust-cloudflare-zlib-sys")
  4176. ("rust-flate2" -> "rust-miniz-sys")
  4177. ("rust-flate2" -> "rust-miniz-oxide")
  4178. ("rust-tokio" -> "rust-httparse")
  4179. ("rust-tokio" -> "rust-async-stream") ;; test
  4180. ("rust-tokio" -> "rust-nix") ;; test
  4181. ("rust-tokio" -> "rust-tokio-current-thread")
  4182. ("rust-tokio" -> "rust-tokio-fs")
  4183. ("rust-tokio" -> "rust-tokio-reactor")
  4184. ("rust-tokio" -> "rust-tokio-sync")
  4185. ("rust-tokio" -> "rust-tokio-stream")
  4186. ("rust-tokio-sync" -> "rust-loom")
  4187. ("rust-tokio" -> "rust-tokio-tcp")
  4188. ("rust-tokio" -> "rust-tokio-timer")
  4189. ("rust-tokio" -> "rust-tokio-threadpool")
  4190. ("rust-tokio" -> "rust-tokio-udp")
  4191. ("rust-tokio" -> "rust-tokio-uds")
  4192. ("rust-tokio-macros" -> "rust-tokio")
  4193. ("rust-parking-lot-core" -> "rust-backtrace")
  4194. ;; See %features
  4195. ("rust-parking-lot-core" -> "rust-petgraph")
  4196. ;; TODO: can be removed by relaxing versions in rust-signal-hook@0.1
  4197. ("rust-signal-hook-registry" -> "rust-signal-hook")
  4198. ;; TODO why benchmark?
  4199. ("rust-unicode-bidi" -> "rust-flame")
  4200. ("rust-unicode-bidi" -> "rust-flamer")
  4201. ("rust-odds" -> "rust-lazy-static")
  4202. ;; TODO
  4203. #;("rust-boxxy" -> "rust-ctrlc") ; TODO currently useless because boxxy is in %removed-dependencies, revisit when tests are supported
  4204. ("rust-flate2" -> "rust-tokio-tcp")
  4205. ("rust-flate2" -> "rust-tokio-threadpool")
  4206. ("rust-tokio" -> "rust-flate2") ;; TODO remove old tokios
  4207. ("rust-semver" -> "rust-crates-index") ;; TODO why????
  4208. ("rust-semver-parser" -> "rust-pest-generator")
  4209. ("rust-spmc" -> "rust-loom")
  4210. ;; ("rust-tokio-test" -> "rust-tokio") ; currently rust-tokio-test is removed
  4211. ;; Break dev-dependencies cycle
  4212. ("rust-regex-automata" -> "rust-bstr")
  4213. ("rust-page-size" -> "rust-spin") ; not required because no_std isn't enabled
  4214. "rust-pico-sys" ; bundles things (see: <https://issues.guix.gnu.org/56956>)
  4215. ;; TODO: quickcheck with an exception for sequoia-pg
  4216. ;; TODO: untested removals
  4217. "rust-riscv" ; maybe optional, also riscv is not yet supported by Rust in Guix
  4218. ("rust-shadow-rs" -> "rust-git2") ; optional, also unused in Guix (there's no git repo in the build environment)
  4219. "rust-x86" ; fails to build (non-stable and appropriate flags weren't set)
  4220. ;; Remove (test) dependencies to avoid a cycle. Also, tests are disabled
  4221. ;; anways for this package, so might as well simplify the dependencies.
  4222. ("rust-addr2line" -> "rust-backtrace")
  4223. ("rust-addr2line" -> "rust-clap")
  4224. ("rust-addr2line" -> "rust-findshlibs")
  4225. ("rust-addr2line" -> "rust-typed-arena")
  4226. ;; Avoid 'rust-webpki-roots' (https://issues.guix.gnu.org/55043).
  4227. ("rust-rustls-native-certs" -> "rust-webpki-roots")
  4228. ;; Tests are disabled, so might as well remove the other test dependencies.
  4229. ("rust-rustls-native-certs" -> "rust-webpki")
  4230. ("rust-rustls-native-certs" -> "rust-ring")
  4231. ("rust-rustls-native-certs" -> "rust-untrusted")
  4232. ("rust-rustls-native-certs" -> "rust-rustls")
  4233. ("rust-rustls-native-certs" -> "rust-x509-parser")
  4234. ("rust-rustls-native-certs" -> "rust-serial-test")
  4235. ;; 'nushell' uses workspaces, the separate packages are pointless
  4236. "rust-nu-cli"
  4237. "rust-nu-command"
  4238. "rust-nu-completion"
  4239. "rust-nu-data"
  4240. "rust-nu-engine"
  4241. "rust-nu-errors"
  4242. "rust-nu-parser"
  4243. "rust-nu-path"
  4244. "rust-nu-plugin"
  4245. "rust-nu-protocol"
  4246. "rust-nu-source"
  4247. "rust-nu-test-support"
  4248. "rust-nu-value-ext"
  4249. "rust-nu-plugin-binaryview"
  4250. "rust-nu-plugin-chart"
  4251. "rust-nu-plugin-from-bson"
  4252. "rust-nu-plugin-from-sqlite"
  4253. "rust-nu-plugin-inc"
  4254. "rust-nu-plugin-match"
  4255. "rust-nu-plugin-query-json"
  4256. "rust-nu-plugin-s3"
  4257. "rust-nu-plugin-selector"
  4258. "rust-nu-plugin-start"
  4259. "rust-nu-plugin-textview"
  4260. "rust-nu-plugin-to-bson"
  4261. "rust-nu-plugin-to-sqlite"
  4262. "rust-nu-plugin-tree"
  4263. "rust-nu-plugin-xpath"
  4264. ;; Some tests fail (also, a fork that's mostly identical to the non-fork??,
  4265. ;; and not up-to-date in Guix).
  4266. ;; It seems to be only used by rust-analyzer, and optional, so let's remove
  4267. ;; it for simplicity (if the new malloc is better, the jemalloc people can
  4268. ;; look into merging it upstream).
  4269. "rust-tikv-jemallocator"
  4270. "rust-tikv-jemalloc-ctl"
  4271. ;; These probably only add the non-Rust dependencies because of cargo-build-system limitations,
  4272. ;; so clean them up. (TODO: untested)
  4273. ("gtk+"
  4274. #:for-dependent
  4275. ,(lambda (p)
  4276. (not (member (package-name p) '("rust-gdk-sys" "rust-gtk-sys")))))
  4277. ("cairo"
  4278. #:for-dependent
  4279. ,(lambda (p)
  4280. (not (member (package-name p)
  4281. '("rust-cairo-sys-rs" "rust-pangocairo-sys"
  4282. "librsvg")))))
  4283. ("openssl"
  4284. #:for-dependent
  4285. ,(lambda (p)
  4286. (not (member (package-name p)
  4287. '("rust-native-tls"
  4288. "rust-openssl-sys" "rust-openssl-sys-extras"
  4289. "rust-test-cert-gen")))))
  4290. ("pkg-config"
  4291. #:for-dependent
  4292. ,(lambda (p)
  4293. (not (member (package-name p)
  4294. '("rust-pkg-config" "newsboat" "librsvg")))))
  4295. ("libgit2"
  4296. #:for-dependent
  4297. ,(lambda (p)
  4298. (not (member (package-name p)
  4299. '("rust-libgit2-sys-6" "rust-libgit2-sys")))))
  4300. ("pango"
  4301. #:for-dependent
  4302. ,(lambda (p)
  4303. (not (member (package-name p)
  4304. '("rust-pangocairo-sys" "rust-pango-sys"
  4305. "librsvg")))))
  4306. ("libpcap"
  4307. #:for-dependent
  4308. ,(lambda (p)
  4309. (not (member (package-name p)
  4310. '("rust-pcap-sys")))))
  4311. ("exa" -> "zlib")
  4312. ("fd" -> "jemalloc")
  4313. ("ripgrep" -> "pcre2")
  4314. ("git-interactive-rebase-tool" -> "zlib")
  4315. ("sniffglue" -> "libseccomp") ; TODO: check that the Rust seccomp crate properly loads libseccomp
  4316. ("tectonic" -> "fontconfig")
  4317. ("tectonic" -> "freetype")
  4318. ("tectonic" -> "graphite2")
  4319. ("tectonic" -> "harfbuzz")
  4320. ("tectonic" -> "icu4c")
  4321. ("tectonic" -> "libpng")
  4322. ("tectonic" -> "zlib")
  4323. ("tokei" -> "zlib")
  4324. ("git-absorb" -> "zlib")
  4325. ;; LIkewise
  4326. ("castor" -> "atk")
  4327. ("castor" -> "gdk-pixbuf")
  4328. ("castor" -> "libressl")
  4329. ;; Likewise.
  4330. ("rust-dbus" -> "dbus")
  4331. ("rust-cexpr" -> "clang") ; actually a dependency of rust-clang-sys
  4332. ("rust-vcpkg" ; for Windows, usually not needed elsewhere
  4333. #:for-dependent
  4334. ,(lambda (dependent)
  4335. ;; TODO: which packages require this? Maybe more exceptions are needed ...
  4336. (not (member (package-name dependent)
  4337. '("rust-tectonic-dep-support"
  4338. "rust-libsqlite3-sys")))))
  4339. ("rust-cairo-rs" -> "cairo"))) ; it's rust-cairo-sys-rs that depends on cairo, not rust-cairo-rs
  4340. (define (remove-dependency? dependent dependency)
  4341. "Should DEPENDENCY be removed from the dependencies of DEPENDENT (both are package objects)?"
  4342. (unless (package? dependent)
  4343. (error "first argument must be a package"))
  4344. (unless (package? dependency)
  4345. (error "second argument must be a package"))
  4346. (define dependent* (package-name dependent))
  4347. (define dependency* (package-name dependency))
  4348. (define remove-dependency*?
  4349. (match-lambda
  4350. ((? string? unconditional-removal) (string=? dependency* unconditional-removal))
  4351. (((? string? context) '-> (? string? conditional-removal))
  4352. (and (string=? dependent* context)
  4353. (string=? dependency* conditional-removal)))
  4354. (((? string? conditional-removal?) '#:for-dependent (? procedure? context?))
  4355. (and (string=? dependency* conditional-removal?)
  4356. (context? dependent)))
  4357. (a (pk 'a a) (error "bogus entry in %removed-dependencies"))))
  4358. (any remove-dependency*? %removed-dependencies))
  4359. (define %crate-types ; resolve multiple crate types inside the Cargo.toml.
  4360. `(("rust-hyper" ,#~"rlib")
  4361. ("rust-jsonpath-lib" ,#~"rlib")
  4362. ("librsvg" ,#~"staticlib") ; produce an .a file that can be linked into the shared library
  4363. ("rust-needletail" ,#~"rlib")
  4364. ("rust-neso" ,#~"rlib")
  4365. ("rust-sysinfo" ,#~"rlib")
  4366. ("rust-tester" ,#~"rlib")
  4367. ("parinfer-rust" ,#~"rlib"))) ; TODO: delete the compiled Rust library, only the binary needed! Also, test if it actually works.
  4368. ;; TODO: nushell requires "regex-onig", "paging" and "git" features of 'bat'.
  4369. ;; Try keeping things sorted, to avoid rebase/merge conflicts.
  4370. (define %features
  4371. `(("nushell" ,#~'("extra" ; keep same features as with cargo-build-system
  4372. ;; TODO: do the feature closure transitively over all components
  4373. ;; to avoid doing this manually.
  4374. "fetch" "post" "sys" "ps" "ctrlc"
  4375. "rustyline-support"
  4376. "term" "uuid_crate" "which" "shadow-rs" "trash-support"
  4377. "dataframe"))
  4378. ("rust-aead-4" ,#~'("default" "alloc" "dev")) ; "alloc" and "dev" required by rust-chacha20poly1305@0.9.0
  4379. ("rust-alloc-stdlib" ,#~'()) ; tests for the "unsafe" feature sometimes fail (non-deterministic). TODO: might be fixed in <https://github.com/dropbox/rust-alloc-no-stdlib/issues/12>, could perhaps be moved in new version.
  4380. ("rust-analyzer" ,#~'()) ; don't enable jemalloc feature, as its dependency isn't packaged
  4381. ("rust-arrow2" ,#~'("default" "compute" "io_csv" "io_ipc" "io_parquet" "io_json")) ; compute is required by rust-polars-core; "io_csv", "io_ipc", "io_parquet", "io_json" and by rust-polars-io
  4382. ("rust-arrow-format" ,#~'("default" "ipc")) ; "ipc" required by "ipc" feature of "rust-arrow2"
  4383. ("rust-askama-derive" ,#~'()) ; optional features require extra dependencies, let's avoid them until needed by some dependent
  4384. ;; rust-swayipcs requires 'spawn_blocking' which is only
  4385. ;; public if "unstable" is enabled.
  4386. ("rust-async-std" ,#~'("default" "unstable"))
  4387. ("rust-actix-tls" ,#~'("default" "uri")) ; rust-awc@3.0.0 requires non-default "uri" feature
  4388. ("rust-actix-http" ,#~'("default" "ws" "http2" "compress-gzip" "compress-zstd")) ; ws, http2, compress-gzip, compress-zstd: required by rust-awc
  4389. ("rust-awc" ,#~'("compress-gzip" "compress-zstd" "cookies")) ; default "compress-brotli" feature requires the "compress-brotli" feature in rust-actix-http but that doesn't build
  4390. ;; The "dox" feature requires non-stable.
  4391. ("rust-atk" ,#~'("v2_34"))
  4392. ("rust-atk-sys" ,#~'("v2_34"))
  4393. ;; Do _not_ include 'runtime', as dlopen isn't used,
  4394. ;; linking happens at compile time (and at program
  4395. ;; startup).
  4396. ("rust-bindgen" ,#~'("logging" "clap" "which-rustfmt"))
  4397. ("rust-bio" ,#~'()) ; TODO: "phylogeny" has non-compiling tests
  4398. ("rust-blake3" ,#~'("default" "rayon")) ; new b3sum requires rayon.
  4399. ("rust-block-buffer" ,#~'("default"
  4400. "block-padding")) ; required by rust-streebog@0.9.2
  4401. ("rust-bv" ,#~'("serde")) ; there are no default features. Enable "serde" required by rust-bio@0.33
  4402. ("rust-bigdecimal" ,#~'("serde")) ; "serde" required by rust-nu-protocol
  4403. ("rust-bson" ,#~'("default" "chrono-0_4")) ; chrono-0_4: required by rust-nu-plugin-from-bson@0.44.
  4404. ("rust-bstr" ,#~'("default" "serde1")) ; serde1: required by rust-git-glob
  4405. ;; the default "generic-simd" feature required rust-packed-simd
  4406. ;; which is currently uncompilable.
  4407. ("rust-bytecount" ,#~'())
  4408. ("rust-bzip2" ,#~'("futures")) ; "tokio" requires old tokio-io
  4409. ("rust-cairo-rs" ,#~'("default" "v1_16" "pdf" "png" "ps" "svg")) ; "v1_16", "pdf", "png" and "ps" are required by librsvg
  4410. ("rust-cairo-sys-rs"
  4411. ;; "dox" disables actually linking to the cairo library, which breaks the build
  4412. ;; of dependents.
  4413. ,#~'("v1_16" "xlib" "png" "pdf" "svg" "ps" "freetype" "script" "xcb" "use_glib"))
  4414. ;; "alloc" is required by some crates. serde is required by alfis.
  4415. ;; Avoid the default "oldtime" feature, it is only for compatibility,
  4416. ;; enabling it makes some dependents fail to compile.
  4417. ;; and according to ./src/chrono/debian/patches/remove-time.patch.
  4418. ;; in Debian's debcargo-conf it can be removed.
  4419. ("rust-chrono" ,#~'("clock" "std" "alloc" "serde"))
  4420. ("rust-chrono-tz" ,#~'("default" "case-insensitive")) ; doesn't build without "case-insensitive"
  4421. ;; zeroize required by rust-ctr
  4422. ("rust-cipher" ,#~'("alloc" "std" "block-padding" "rand_core" "dev" "zeroize"))
  4423. ;; Don't just support libclang 3.5, also include
  4424. ;; bindings for later versions which rust-bindgen might
  4425. ;; need. Don't include the "runtime" feature, because
  4426. ;; then libclang.so needs to be in LD_LIBRARY_PATH or such
  4427. ;; to be found. Don't include the "static" feature for
  4428. ;; the standard reasons against static linking in Guix.
  4429. ("rust-clang-sys" ,#~'("clang_10_0")) ; Guix by default does dynamic linking, not static linking, which would use the "static" feature IIUC
  4430. ("rust-command-group" ,#~'("default" "with-tokio")) ;; with-tokio required by rust-watchexec
  4431. ("rust-config" ,#~'("toml" "json" "yaml" "ini" "ron")) ; default json5 feature required pcackage not in Guix.
  4432. ;; rust-cipher requires non-default rand_core
  4433. ("rust-crypto-common" ,#~'("std" "rand_core"))
  4434. ("rust-cssparser" ,#~'()) ; don't enable the non-stable "bench" feature
  4435. ;; rust-darling's tests require 'suggestions' and 'diagnostics'
  4436. ("rust-darling-core" ,#~'("diagnostics" "suggestions"))
  4437. ("rust-dashmap" ,#~'("default"
  4438. "raw-api")) ;; required by rust-analyzer
  4439. ;; Don't accidentally enable multiple encoding features, even
  4440. ;; though rust-fmt only supports one at the time. An encoding
  4441. ;; will automatically be chosen.
  4442. ("rust-defmt" ,#~'("alloc"))
  4443. ;; rust-pkcs1 requires "pem"
  4444. ("rust-der" ,#~'("std" "alloc" "oid" "pem"))
  4445. ;; rust-x509-parser requires bigint
  4446. ("rust-der-parser" ,#~'("default" "bigint"))
  4447. ;; Keep features used with cargo-build-system.
  4448. ("rust-diesel-derives" ,#~'("default" "sqlite"))
  4449. ("rust-diesel" ,#~'("default" "sqlite")) ; other backends can be added on an as-needed basis
  4450. ;; Required by hmac. "dev" is required by rust-sha-1
  4451. ("rust-digest" ,#~'("default" "std" "mac" "dev"))
  4452. ("rust-doc-comment" ,#~'()) ; no_core requires unstable, and old_macros is detected by build.rs
  4453. ;; "always_assert" should be safe to enable and some dependents might
  4454. ;; require it. It is also required by rust-easy-cast's tests.
  4455. ("rust-easy-cast" ,#~'("default" "always_assert" "assert_digits"))
  4456. ("rust-ena" ,#~'()) ;; disable "bench", which fails for stable build
  4457. ("rust-encoding-rs" ,#~'()) ; "simd-accel" requires unstable "packed_simd"
  4458. ("rust-escargot" ,#~'()) ; TODO: test_unstable enable tests, which currently fail. rust-escargot is only used for tests though ...
  4459. ("rust-fern" ,#~'("syslog-6")) ; avoid having to include multiple versions of syslog
  4460. ("rust-firestorm" ,#~'()) ; avoid optional dependencies for probably unused profiling for now
  4461. ;; Avoid extra dependencies by using the C library that
  4462. ;; is used elsewhere anyway.
  4463. ("rust-flate2" ,#~'("zlib"))
  4464. ("rust-futures-core"
  4465. ,#~'("std" "alloc"))
  4466. ("rust-futures-channel"
  4467. ,#~'("std" "alloc" "sink")) ; sink is required by rust-warp@0.3
  4468. ;; Enable some features such that "rust-futures" actually builds.
  4469. ("rust-futures-task"
  4470. ,#~'("std" "alloc"))
  4471. ("rust-futures-util"
  4472. ,#~'("std" "alloc" "sink"
  4473. "io" "async-await"
  4474. "async-await-macro"
  4475. "channel"))
  4476. ;; The default "benchmarks" feature requires unstable.
  4477. ("rust-galil-seiferas" ,#~'())
  4478. ("rust-gdk-pixbuf" ,#~'("v2_40")) ; "dox" requires non-stable
  4479. ("rust-gdk-pixbuf-sys" ,#~'("v2_40")) ; likewise (for dox)
  4480. ("rust-gdk-sys" ,#~'("v3_24")) ; likewise (for dox) (look in the .pc for the version)
  4481. ("rust-gdk" ,#~'("v3_24")) ; likewise (for dox) (look in the .pc for the version)
  4482. ;; Required by rust-rand-core.
  4483. ("rust-getrandom" ,#~'("std"))
  4484. ("rust-gio" ,#~'("v2_66")) ; likewise
  4485. ("rust-gio-sys" ,#~'("v2_66")) ; likewise
  4486. ;; serde1 failure requires undeclared ‘Glob’ dependency
  4487. ("rust-globset" ,#~'())
  4488. ;; The "dox" feature requires non-stable.
  4489. ("rust-glib" ,#~'("log" "log_macros" "v2_68")) ; likewise
  4490. ("rust-glib-sys" ,#~'("v2_68"))
  4491. ("rust-glutin" ,#~'("default" "serde")) ; required by alacritty
  4492. ("rust-gobject-sys" ,#~'("v2_68")) ; likewise
  4493. ("rust-gtk" ,#~'("v3_24_9")) ; likewise (for dox)
  4494. ("rust-gtk-sys" ,#~'("v3_24_11")) ; likewise (for dox)
  4495. ("rust-integer-encoding" ,#~'("futures_async")) ; the features are mutually exclusive, so enable only the futures_async feature required by rust-parquet-format-async-temp.
  4496. ("rust-itoa" ,#~'("std")) ; build the back-ported 'fmt' and 'write' functions
  4497. ;; Tell the package we have a recent PulseAudio and not
  4498. ;; just the default version 8 it assumes. This gives
  4499. ;; dependents access to more structures.
  4500. ("rust-libpulse-binding" ,#~'("pa_v14"))
  4501. ("rust-libpulse-sys" ,#~'("pa_v14"))
  4502. ("rust-libsqlite3-sys" ,#~'("min_sqlite_version_3_7_16")) ; bind more functions than by default (required by rust-diesel)
  4503. ;; Avoid "use-intrisics", which requires unstable.
  4504. ("rust-half" ,#~'("alloc" "serialize" "std"))
  4505. ;; TODO: move into Guix proper?
  4506. ("rust-hashbrown" ,#~'("default" "raw")) ; default "ahash" is required by rust-lru@0.7
  4507. ("rust-hyper" ,#~'("full"))
  4508. ;; Build the dictionaries from source, as per Guix policy, and because
  4509. ;; otherwise the compiled dictionaries are replaced by empty files,
  4510. ;; leading to test failures.
  4511. ;;
  4512. ;; TODO: cannot choose multiple normalization forms, is this important?
  4513. ("rust-hyphenation" ,#~'("build_dictionaries" "embed_all"))
  4514. ("rust-im-rc" ,#~'()) ; "pool" feature doesn't build and "debug" probably makess things less efficient
  4515. ;; Require rust-cipher.
  4516. ("rust-inout" ,#~'("std" "block-padding"))
  4517. ;; "pattern" and "benchmarks" require non-stable (rust-jetscii@0.5)
  4518. ("rust-jetscii" ,#~'())
  4519. ;; Avoid removed feature(custom_derive)
  4520. ("rust-language-tags" ,#~'())
  4521. ("rust-lazycell" ,#~'()) ;; avoid nightly things
  4522. ("rust-lazy-static" ,#~'()) ; don't enable "spin_no_std", that way we don't have to depend on 'rust-spin' and it's only needed in no-std environments
  4523. ("rust-lexical-util" ,#~'("default" "parse-integers" "write-integers" "floats")) ;; enable features required by various rust-lexical-... crates
  4524. ;; extra-traits is required by rust-nix
  4525. ("rust-libc" ,#~'("std" "extra_traits"))
  4526. ("rust-libnghttp2-sys" ,#~'()) ; don't enable the "vendored" feature
  4527. ("rust-lock-api" ,#~'("default" "nightly")) ; "nightly" is required by rust-yansi
  4528. ;; Required by rust-env-logger.
  4529. ;; kv_unstable is required by rust-kv-log-macro.
  4530. ;; "serde" is required by rust-alacritty
  4531. ("rust-log" ,#~'("std" "kv_unstable" "serde")) ;
  4532. ("rust-lzma-sys" ,#~'()) ; don't enable "static" (TODO: add it to the list in antioxidant?)
  4533. ;; Required by rust-tokio
  4534. ("rust-mio"
  4535. ,(lambda (original-package)
  4536. ;; set of available features depends on the version
  4537. (if (string-prefix? "0.6." (package-version original-package))
  4538. #~'("default")
  4539. #~'("net" "os-ext"))))
  4540. ("rust-multipart"
  4541. ;; default "iron" feature requires rust-iron which currently fails to build.
  4542. ;; Likewise for "nickel".
  4543. ;; The "hyper" feature is incompatible with rust-hyper>0.11
  4544. ,#~'("client" "mock" "server" "tiny_http"))
  4545. ("rust-nalgebra" ,#~'("default" "rand" ; rust-statrs@0.13 required "rand"
  4546. "compare" "debug" "macro")) ; required by tests
  4547. ("rust-native-tls" ,#~'()) ; only features are for bundling and unsupported targets
  4548. ;; The non-default feature "alloc" is required by rust-pure-rust-locales.
  4549. ("rust-nom"
  4550. ,#~'("std" "lexical" "alloc"))
  4551. ("rust-notify" ,#~'()) ; "manual_tests" requires extra set-up, "timing_tests" sounds fragile
  4552. ;; rust-rsa requires "prime" and "zeroize"
  4553. ("rust-num-bigint-dig" ,#~'("default" "prime" "zeroize"))
  4554. ("rust-num-bigint" ,#~'("default" "serde")) ; "serde" is required by rust-nu-protocol
  4555. ("rust-num-rational" ,#~'("default" "serde")) ; 'serde' is required by rust-mp4@0.9.2
  4556. ;; rust-x509-parser required 'crypto' and 'x509'
  4557. ("rust-oid-registry" ,#~'("default" "crypto" "x509"))
  4558. ("rust-once-cell" ,#~'("default" "race")) ; "race" is required by rust-git-tempfile@2.0.1
  4559. ("rust-openssl-sys" ,#~'()) ;; avoid the 'vendored' feature
  4560. ("rust-os-str-bytes" ,#~'("raw"))
  4561. ("rust-pango" ,#~'("v1_46")) ; "dox" feature requires non-stable
  4562. ("rust-pango-sys" ,#~'("v1_46")) ; likewise
  4563. ("rust-pathfinder-simd" ,#~'()) ; enabling "pf-no-simd" causes the discrepancy in test::test_f32x4_basic_ops to enlarge
  4564. ;; The 'backtrace' and 'petgraph' dependency has been removed.
  4565. ;; (including petgraph causes a cycle between rust-ahash and rust-hashbrown,
  4566. ;; but it's ‘only’ required for deadlock detection).
  4567. ;;
  4568. ;; 'nightly' is required by rust-yansi's tests.
  4569. ("rust-parking-lot-core" ,#~'("nightly"))
  4570. ;; "quickcheck" features requires removed crate "quickcheck"
  4571. ("rust-partial-io" ,#~'("futures03" "tokio1"))
  4572. ("rust-polars-core" ,#~'("default" "dtype-time" "dtype-date" "dtype-datetime" ; "dtype-time", "dtype-datetime" and "dtype-date" are required by rust-polars-io's csv support
  4573. "dtype-u8" ; required for tests
  4574. "dtype-i16" ; required for rust-polars-lazy's tests
  4575. "performant" ; requested by rust-nu-protocol via rust-polars, and the downside (panic in case of incorrect usage) seems mild
  4576. "cum_agg" ; indirectly required by rust-nu-command's tests
  4577. "pivot" "downsample" "is_in" "rolling_window" "random" ; required by rust-nu-command
  4578. "object" "checked_arithmetic" ; indirectly required by rust-nu-protocol
  4579. "serde" "strings" ; required by rust-nu-protocol
  4580. "lazy" "private" "zip_with" ; required by rust-polars-lazy
  4581. "list" "rank" "round_series" "csv-file")) ; required for rust-polars-lazy's tests
  4582. ("rust-polars-lazy" ,#~'("default"
  4583. "csv-file" "rolling_window" "round_series" "rank")); required for tests
  4584. ("rust-phf-shared" ,#~'("default" "uncased")) ; uncased required by rust-phf's uncased feature
  4585. ("rust-phf" ,#~'("default" "macros" "uncased")) ; "macros" is required by rust-cssparser@0.28, "uncased" is required by a dependency of "tokei"
  4586. ("rust-pkcs8" ,#~'("default"
  4587. "pkcs1")) ; required by rbw
  4588. ;; Required by 'sniffglue'
  4589. ("rust-pktparse" ,#~'("serde"))
  4590. ("rust-plotters-svg" ,#~'()) ; "debug" feature causes a build failure
  4591. ("rust-postgres-types" ,#~'("derive" "with-time-0_3" "with-uuid-0_8" "geo-types-0_7")) ; not all dependencies of all features have been packaged yet.
  4592. ("rust-proc-macro2"
  4593. ;; span-locations is required by rust-cxx-gen@0.7.49
  4594. ,#~'("default" "span-locations"))
  4595. ("rust-ptree"
  4596. ,#~'("petgraph" "ansi" "value")) ; default "config" feature doesn't build
  4597. ("rust-pyo3"
  4598. ;; 'extension-module' and 'multiple-pymethods' are required by
  4599. ;; python-blake3
  4600. ,#~'("default" "extension-module" "multiple-pymethods"))
  4601. ("rust-pyo3-build-config"
  4602. ;; 'resolve-config' is required by rust-pyo3-ffi
  4603. ,#~'("default" "resolve-config"))
  4604. ;; "small_rng" is required by rust-phf-generator.
  4605. ("rust-rand" ,#~'("default" "small_rng"))
  4606. ("rust-raw-window-handle" ,#~'()) ; don't enable nightly "nightly-docs"
  4607. ("rust-reqwest" ,#~'("default" "blocking" "cookies" "json")) ; tealdeer@1.4.1 requires "blocking" to build, drill requires cookies, rbw requires json
  4608. ;; The 'inline-asm' feature requires non-stable
  4609. ("rust-riscv" ,#~'())
  4610. ("rust-rusqlite" ,#~'()) ; some features are only for bundling or require extra configure flags(?) for sqlite. For now, don't enable anything.
  4611. ;; Some features required rust-rand when using the getrandom feature,
  4612. ;; serde for rust-rand-isaac@0.3.0 ... (now building with all features)
  4613. ;; ("rust-rand-core" #~'("std" "getrandom"))
  4614. ("rust-rust-hawktracer-normal-macro" ,#~'()) ; for now, don't enable the profiling feature which requires a currently non-building package rust-hawktracer-sys (which also bundles things!)
  4615. ("rust-rust-hawktracer-proc-macro" ,#~'()) ; likewise!
  4616. ("rust-rust-hawktracer" ,#~'()) ; likewise, profiling has some overhead, also some tests fail
  4617. ;; asm! syntax not supported anymore, and "capture"
  4618. ;; requires non-existent io::set_panic
  4619. ("rust-rustc-test" ,#~'())
  4620. ;; rust-cargo-metadata requires the serialisation
  4621. ;; / deserialisation traits.
  4622. ("rust-semver" ,#~'("default" "serde"))
  4623. ;; 'derive' is needed by rust-ron
  4624. ("rust-serde" ,#~'("std" "alloc" "derive"
  4625. "rc")) ; rc: required by rust-nu-protocol
  4626. ("rust-servo-fontconfig-sys" ,#~'("force_system_lib")) ; be extra sure the bundled copy isn't used
  4627. ("rust-shadow-rs" ,#~'()) ; no need for the 'git2' feature in Guix, which brings in lots of dependents
  4628. ;; Avoid "digest_trait" which requires old rust-digest@0.9.0
  4629. ("rust-sha1collisiondetection" ,#~'("std" "structopt"))
  4630. ("rust-similar" ,#~'("default" "text" "inline"))
  4631. ("rust-sqlite3-sys" ,#~'()) ; "linkage" indirectly does bundling
  4632. ("rust-text-size" ,#~'("serde")) ; Has no default features. Enable "serde", which is required by rust-rowan@1.15.2
  4633. ("rust-tonic" ,#~'("default" "compression")) ; "compression": required for tests
  4634. ("rust-derive-builder" ,#~'()) ; for now don't build the non-building test features
  4635. ("rust-safe-arch" ,#~'("bytemuck")) ; there are no default features. Enable "bytemuck", requires by rust-wide@0.6.5
  4636. ("rust-scroll" ,#~'("default" "derive")) ; "derive" is expected by rust-sourcemap
  4637. ("rust-selectors" ,#~'()) ; "bench" feature requires non-stable
  4638. ("rust-serde-json" ,#~'("default"
  4639. "preserve_order" ; presumably comes with a small time or space cost, but it seems safe and potentially unsafe to disable, depending on the dependent
  4640. "float_roundtrip" ; seems safe, albiet with & 2× performance cost according to the documentation. We don't know which dependents need it and which ones don't, so just enable it to be safe.
  4641. "arbitrary_precision" ; seems safe (at worst a compile error in a dependent?), and we don't know which dependents need it and which ones don't.
  4642. "unbounded_depth")) ; add a method disable_recursion_limit that is used by rust-cargo-metadata
  4643. ;; "nested-values" is required by the "nested-values" feature of rust-slog-term
  4644. ("rust-slog" ,#~'("default" "nested-values"))
  4645. ("rust-smallvec" ,#~'("serde" "write")) ; "serde", "serde": required by rust-git-object
  4646. ;; Default serde1_lib requires unpackaged rust-serde1-lib
  4647. ("rust-sval" ,#~'("alloc" "arbitrary-depth" "derive" "fmt" "std"))
  4648. ;; "paw" required by sniffglue
  4649. ("rust-structopt" ,#~'("default" "paw"))
  4650. ;; TODO: use default features from Cargo.toml
  4651. ;; rust-serde-bytes requires the 'parsing' feature.
  4652. ;; visit is required by rust-synstructure.
  4653. ;; visit-mut is used by rust-tracing-attributes.
  4654. ("rust-syn"
  4655. ,#~'("derive" "parsing" "printing"
  4656. "clone-impls"
  4657. "proc-macro" "full"
  4658. "visit" "visit-mut"
  4659. "fold" ; used by rust-diesel-derives
  4660. ;; Used by rust-strum-macros
  4661. "extra-traits"))
  4662. ("rust-libssh2-sys" ,#~'()) ;; Setting zlib-ng-compat will make build.rs complain because apparently it could (on other systems) indirectly cause both a bundled and a non-bundled libssl to be loaded. But we don't do bundling in Guix. Anyway, in antioxidant, setting zlib-ng-compat only changes error reporting in build.rs, no runtime behaviour changes. (In Cargo, it would cause a variant of the zlib library to be used)
  4663. ("rust-libgit2-sys" ,#~'("ssh" "https")) ; don't enable vendoring
  4664. ("rust-lsp-types" ,#~'("default" "proposed")) ; "proposed" is required by kak-lsp
  4665. ("rust-page-size" ,#~'()) ; no_std feature required removed feature
  4666. ("rust-smithay-client-toolkit" ,#~'("calloop")) ; don't enable the "dlopen" feature because directly linking works fine and is less fragile.
  4667. ("rust-snafu-derive" ,#~'()) ; unstable-backtraces-impl-std requires unstable
  4668. ("rust-tower" ,#~'("default"
  4669. ;; features used by rust-tonic
  4670. "balance" "buffer" "discover" "limit" "load" "make" "timeout" "util"))
  4671. ("rust-tinyvec" ,#~'("alloc"))
  4672. ("rust-tiny-keccak"
  4673. ;; By default nothing is build, which seems rather useless.
  4674. ;; Let's enable everything.
  4675. ,#~'("cshake" "fips202" "k12" "keccak" "kmac" "parallel_hash" "sha3" "shake" "sp800" "tuple_hash"))
  4676. ;; rust-cookie requires the non-default "parsing" and "macros" feature. Might as well enable
  4677. ;; "formatting" as well.
  4678. ("rust-time" ,#~'("default" "macros" "formatting" "parsing" "local-offset"))
  4679. ;; By default zero features are enabled, which is rather
  4680. ;; minimalistic and often not sufficient.
  4681. ("rust-tokio" ,#~'("full"))
  4682. ("rust-tokio-util" ,#~'("full" "codec"))
  4683. ;; early-data is required by rust-trust-dns-proto
  4684. ("rust-tokio-rustls" ,#~'("default" "early-data"))
  4685. ("rust-tracing-subscriber"
  4686. ,#~'("default" "env-filter")) ; env-filter is required by rust-chalk-solve@0.75
  4687. ("rust-tree-magic-mini" ,#~'()) ; Don't enable "with-gpl-data". We don't mind GPL in Guix, but enabling this feature causes rust-tree-magic-mini to look for a bundling crate, which will not be packaged in Guix. Instead, disable that feature and adjust the ‘runtime’ code to look at the data with a baked-in reference to freedesktop's magic data.
  4688. ;; dns-over-openssl is required by rust-trust-dns-openssl.
  4689. ;; dns-over-native-tls is required by rust-trust-dns-native-tls.
  4690. ;; dns-over-rustls is required by rust-trust-dns-rustls.
  4691. ;; dns-over-https is required by rust-trust-dns-https.
  4692. ("rust-trust-dns-proto"
  4693. ,#~'("default" "dns-over-openssl" "dns-over-native-tls" "dns-over-rustls"
  4694. "dns-over-https"))
  4695. ("rust-trybuild" ,#~'("antioxidant"))
  4696. ("rust-tui" ,#~'("default" "crossterm")) ; required by rust-nu-plugin-chart
  4697. ;; For now avoid optional dependencies
  4698. ("rust-typenum" ,#~'())
  4699. ("rust-url" ,#~'("default" "serde")) ; serde is required by rust-lsp-types@0.80
  4700. ("rust-uuid" ,#~'("default" "serde" "v4")) ; v4,serde required by alfis
  4701. ("rust-value-bag" ,#~'("std"))
  4702. ("rust-v-frame" ,#~'("serialize")) ; wasm doesn't build, tracing seems unnecessary
  4703. ("rust-wayland-protocols" ,#~'("client" "server" "unstable_protocols" "staging_protocols")) ; unstable-protocols is required by (TODO: forgot which one). staging_protocols is required by rust_winit. TODO: bundles wayland protocol things.
  4704. ("rust-wayland-sys" ,#~'("client" "cursor" "egl" "server")) ; don't enable the dlopen feature, dlopen(...) is somewhat fragile and RUNPATH works just fine
  4705. ("rust-wayland-client" ,#~'("use_system_lib")) ; don't use the dlopen feature, which is fragile and unneeded in Guix. system_lib is required by rust-wayland-egl.
  4706. ("rust-winit" ,#~'("x11" "wayland" "serde")) ; don't enable the default wayland-dlopen feature, because it's not necessary and fragile in Guix. "serde" is required by alacritty
  4707. ("rust-xcb" ,#~'("thread" "xfixes")) ; not all features build, for now only enable features required by rust-x11-clipboard.
  4708. ("rust-xz2" ,#~'()) ; "tokio" requires removed 'rust-tokio-io'.
  4709. ("rust-x11" ,#~'("dpms" "xcursor" "xf86vmode" "xft" "xinerama" "xinput" "xlib" "xlib_xcb" "xmu" "xrandr" "xrecord" "xrender" "xss" "xt" "xtest" "xtst")) ; disable the "dox" feature, which causes build.rs to not actually look for the x11 library. TODO: glx requires gl.pc, maybe some dependent requires that ...
  4710. ("rust-x11rb" ,#~'("allow-unsafe-code" "cursor" "image" "resource_manager" "all-extensions")) ; disable libloading/dlopen, which is fragile and unnecessary
  4711. ;; rust-rcgen requires "time". While at it, enable other
  4712. ;; features as well.
  4713. ("rust-yasna" ,#~'("default" "time" "bit-vec" "bigint" "std"))
  4714. ;; rust-num-bigint-dig's zeroize feature requires the "derive"
  4715. ;; feature of rust-zeroize
  4716. ("rust-zeroize" ,#~'("default" "derive"))
  4717. ("rust-zstd-safe" ,#~'("default" "std")) ; "std" is required by rust-zstd-s
  4718. ("rust-zstd-sys" ,#~'("default" "pkg-config" "bindgen"))
  4719. ("rust-zip" ,#~'("bzip2" "deflate" "time" "zstd")))) ; avoid default "aes-crypto" feature, which requiers an ol
  4720. (define %replacements
  4721. `(("bat" ,(@ (gnu packages rust-apps) bat)) ; try going for a single version, for simplicity
  4722. ("rust-approx" ,(p rust-approx-0.5)) ; resolve version conflict
  4723. ("rust-alacritty-terminal" ,rust-alacritty-terminal) ; resolve build failure
  4724. ("rust-assert-cmd" ,(p rust-assert-cmd-2)) ; @1 doesn't build
  4725. ("rust-atk-sys" ,(@ (gnu packages crates-gtk) rust-atk-sys-0.14)) ; @0.10 doesn't build
  4726. ("rust-aho-corasick" ,(p rust-aho-corasick-0.7)) ; avoid version conflict
  4727. ("rust-average" ,(p rust-average-0.13)) ; avoid complication due to multiple versions
  4728. ("rust-blake3" ,(@ (gnu packages crypto) rust-blake3-1)) ; @0.3.8 doesn't build against new crypto libraries
  4729. ("rust-bio" ,(p rust-bio-0.33)) ; avoid non-building rust-bio@0.32
  4730. ("rust-bitflags" ,(p rust-bitflags-1)) ; reduce number of versions in Guix (TODO: check with ci.guix.gnu.org if this causes problems)
  4731. ("rust-buffering" ,(p rust-buffering-0.4)) ; @0.3 doesn't build
  4732. ("rust-buffering-nocopy-macro" ,(p rust-buffering-nocopy-macro-0.2)) ; @0.1 doesn't build
  4733. ("rust-calloop" ,rust-calloop)
  4734. ("rust-cairo-rs" ,(@ (gnu packages crates-gtk) rust-cairo-rs-0.14)) ; @0.8.1 doesn't build
  4735. ("rust-cargo-metadata" ,(p rust-cargo-metadata-0.14)) ; reduce the number of versions in use
  4736. ("rust-cbindgen" ,(package-with-extra-patches
  4737. rust-cbindgen-0.19
  4738. ;; Replace Cargo-specific assumptions by antioxidant-specific
  4739. ;; assumptions (we cannot run "cargo metadata"!).
  4740. ;;
  4741. ;; rust-cbindgen tries to run "cargo metadata" to generate a JSON
  4742. ;; file with some information on the package and its dependencies,
  4743. ;; but fails, resulting in an unclear error message.
  4744. ;;
  4745. ;; As antioxidant isn't cargo, we have to replace this logic by
  4746. ;; some other logic, generating the metadata ourselves. TODO:
  4747. ;; actually implement that generate-cbindgen-metadata phase.
  4748. (list (local-file "rust-cbindgen-0.19-antioxidant-compatibility.patch"))))
  4749. ("rust-dashmap" ,(p rust-dashmap-4)) ; @3 doesn't build
  4750. ("rust-chrono-tz" ,(p rust-chrono-tz-0.6)) ; avoid old versions (with old timezone data!) (TODO: unbundle, TZDIR)
  4751. ("rust-comfy-table" ,(p rust-comfy-table-4)) ; @1 doesn't build against new dependencies
  4752. ("rust-config" ,rust-config)
  4753. ("rust-crossterm" ,rust-crossterm) ; @0.19 doesn't build against new rust-signal-hook
  4754. ("rust-ctrlc" ,rust-ctrlc)
  4755. ("rust-darling-core" ,(p rust-darling-core-0.13)) ; @0.9 incompatible with new rust-syn
  4756. ("rust-derive-builder" ,(p rust-derive-builder-0.10) ; @0.7.2 has failing dependencies
  4757. #:for-dependent
  4758. ,(lambda (dependent)
  4759. (not (member (package-name dependent) '("skim"))))) ; needs @0.9
  4760. ("rust-derive-builder" ,(p rust-derive-builder-0.9)
  4761. #:for-dependent
  4762. ,(lambda (dependent)
  4763. (member (package-name dependent) '("skim")))) ; needs @0.9
  4764. ("rust-dirs" ,(p rust-dirs-3)) ; avoid version conflict in tectonic
  4765. ("rust-emacs-macros" ,rust-emacs-macros)
  4766. ("rust-email" ,rust-email)
  4767. ("rust-gio" ,(@ (gnu packages crates-gtk) rust-gio-0.15)) ; @0.8.1 doesn't build
  4768. ("rust-gio-sys" ,(@ (gnu packages crates-gtk) rust-gio-sys-0.15)) ; @0.10 doesn't build
  4769. ("rust-gir-format-check" ,rust-gir-format-check)
  4770. ("rust-dlib" ,rust-dlib) ; old rust-dlib and new rust-smithay-client-toolkit are incompatible
  4771. ("rust-getrandom" ,(p rust-getrandom-0.2)) ; avoid multiple versions
  4772. ("rust-gtk" ,rust-gtk) ; @0.14 doesn't build
  4773. ("rust-gtk-sys" ,rust-gtk-sys) ; required by rust-gtk@0.15
  4774. ("rust-hdrhistogram" ,rust-hdrhistogram)
  4775. ("rust-hex-literal" ,(p rust-hex-literal-0.3)) ; old @0.2 does not support multi-line literals, which are required by rust-chacha20@0.9
  4776. ("rust-hmac-sha1" ,(package-with-extra-patches
  4777. (p rust-hmac-sha1-0.1)
  4778. (list (local-file "rust-hmac-sha1-update-dependencies.patch")))) ; compatibility with new dependencies
  4779. ("rust-hostname" ,(p rust-hostname-0.3)) ; rust-lettre requires new version
  4780. ("rust-html5ever" ,(p rust-html5ever-0.25)) ; @0.24 doesn't build
  4781. ("rust-h2" ,rust-h2)
  4782. ("rust-rand-core" ,(p rust-rand-core-0.6)) ; avoid multiple versions
  4783. ("rust-blake2" ,rust-blake2
  4784. #:for-dependent
  4785. ,(lambda (p)
  4786. (not (equal? (list (package-name p) (package-version p))
  4787. '("rust-blakeout" "0.3.0")))))
  4788. ("rust-actix" ,rust-actix)
  4789. ("rust-actix-codec" ,rust-actix-codec)
  4790. ("rust-actix-http" ,rust-actix-http)
  4791. ("rust-actix-macros" ,rust-actix-macros)
  4792. ("rust-actix-utils" ,rust-actix-utils)
  4793. ("rust-actix-router" ,rust-actix-router)
  4794. ("rust-actix-service" ,rust-actix-service)
  4795. ("rust-awc" ,rust-awc)
  4796. ("rust-chacha20poly1305" ,rust-chacha20poly1305
  4797. #:for-dependent
  4798. ,(lambda (p)
  4799. ;; Tests fail against new chacha20poly1305
  4800. (not (equal? (package-name p) "alfis"))))
  4801. ("rust-lettre" ,rust-lettre)
  4802. ;; Prefer new versions of rust-libsqlite.
  4803. ("rust-libsqlite3-sys" ,(p rust-libsqlite3-sys-0.23) ; custom phase assumes != @0.20
  4804. #:for-dependent
  4805. ;; Current version of rust-diesel is incompatible with rust-libsqlite2-sys≥0.21
  4806. ,(lambda (dependent)
  4807. (not (member (package-name dependent) '("rust-diesel")))))
  4808. ("rust-libgit2-sys" ,(p rust-libgit2-sys-0.12)) ; old version doesn't build.
  4809. ("rust-markup5ever" ,(p rust-markup5ever-0.9)) ; @0.9 doesn't build against new rust-phf-... without patches, but we still need it because monolith doesn't support the new rust-markup5ever@0.10 yet
  4810. ("rust-meval" ,(package-with-extra-patches
  4811. (package
  4812. (inherit (p rust-meval-0.2))
  4813. ;; Update to latest git such that the patch applies.
  4814. (source
  4815. (origin
  4816. (method git-fetch)
  4817. (uri
  4818. (git-reference
  4819. (url "https://github.com/rekka/meval-rs")
  4820. (commit "ac9586fb19e1d6fb505425dbbc9598f372122130")))
  4821. (sha256 "18554xrhdl0lyga408l01yjhilh69qxkjyyss6mlpxypdwy6cf7w"))))
  4822. (list (local-file "rust-meval-update-dependencies.patch"))))
  4823. ("rust-miniz-oxide" ,(p rust-miniz-oxide-0.4) ; avoid multiple versions
  4824. #:for-dependent
  4825. ,(lambda (dependent)
  4826. (not (equal? (list (package-name dependent) (package-version dependent))
  4827. '("rust-png" "0.16.8"))))) ; doesn't build rust-miniz-oxide@0.4
  4828. ("rust-newtype-derive" ; TODO: can be merged in upstream Guix
  4829. ,(package-with-extra-patches (p rust-newtype-derive-0.1)
  4830. (list (local-file "rust-newtype-derive-Update-dependencies.patch"))))
  4831. ("rust-num-bigint" ,(p rust-num-bigint-0.4)) ; avoid multiple versions
  4832. ("rust-num" ,(p rust-num-0.4)) ; avoid multiple versions (TODO: let the CI test if it doesn't cause build failures)
  4833. ("rust-num-complex" ,(p rust-num-complex-0.4)) ; avoid multiple versions (TODO: let the CI test if it doesn't cause build failures)
  4834. ("rust-petgraph" ,(p rust-petgraph-0.6)) ; @0.5 doesn't build
  4835. ("rust-pin-project-internal" ,(p rust-pin-project-internal-1)) ; @0.4 doesn't build
  4836. ("rust-pin-project" ,(p rust-pin-project-1)) ; @0.4 doesn't build
  4837. ("rust-polars-core"
  4838. ,(package-with-extra-patches
  4839. (p rust-polars-core-0.17)
  4840. (list (local-file "rust-polars-core-Update-rand.patch"))))
  4841. ("rust-predicates" ,(p rust-predicates-2) ; avoid multiple versions
  4842. #:for-dependent
  4843. ,(lambda (p)
  4844. (not (equal? (package-name p) "tealdeer")))) ; needs old version for tests to compile
  4845. ("rust-pretty-assertions" ,(p rust-pretty-assertions-1)) ; @0.6 fails its tests
  4846. ("rust-pyo3" ,(p rust-pyo3-0.16)) ; avoid multiple versions
  4847. ("rust-arrayvec" ,(p rust-arrayvec-0.7) ; avoid multiple versions
  4848. #:for-dependent
  4849. ,(lambda (dependent)
  4850. (not (member (package-name dependent)
  4851. '("rust-vte" "rust-csv-core")))))
  4852. ("rust-arrayvec" ,(package-with-rust-features (p rust-arrayvec-0.5)
  4853. #~'("default"))
  4854. #:for-dependent
  4855. ,(lambda (dependent)
  4856. (member (package-name dependent) '("rust-vte" "rust-csv-core")))) ; still requires old rust-arrayvec
  4857. ("rust-bitstream-io" ,(p rust-bitstream-io-1)) ; avoid multiple versions
  4858. ("rust-bytestring" ,rust-bytestring)
  4859. ("rust-avif-serialize" ,rust-avif-serialize)
  4860. ("rust-nasm-rs" ,rust-nasm-rs)
  4861. ("rust-notify" ,(p rust-notify-5) ; use new version where possible, and the old where still required
  4862. #:for-dependent
  4863. ,(lambda (dependent)
  4864. (not (member (package-name dependent) '("rust-watchexec" "alacritty")))))
  4865. ("rust-notify" ,(p rust-notify-4)
  4866. #:for-dependent
  4867. ,(lambda (dependent)
  4868. (member (package-name dependent) '("rust-watchexec" "alacritty"))))
  4869. ("rust-num-rational" ,(p rust-num-rational-0.4)) ; @0.1 doesn't build when "serde" is enabled
  4870. ("rust-ivf" ,rust-ivf)
  4871. ("rust-idna" ,(p rust-idna-0.2)) ; avoid multiple versions
  4872. ("rust-safe-arch" ,(p rust-safe-arch-0.6)) ; the tests of rust-safe-arch@0.5 fail to compile
  4873. ("rust-seahash" ,(p rust-seahash-4)) ; try reducing the number of versions we have to package in Guix (TODO: check with ci.guix.gnu.org)
  4874. ("rust-sequoia-ipc" ,rust-sequoia-ipc)
  4875. ("rust-siphasher" ,(p rust-siphasher-0.3)) ; avoid multiple versions
  4876. ("rust-slog-stdlog" ,rust-slog-stdlog) ; @4.1.0 doesn't build
  4877. ("rust-sprs" ,(p rust-sprs-0.11)) ; resolve version conflict
  4878. ("rust-statrs" ,(p rust-statrs-0.14)) ; @0.13 doesn't build
  4879. ("rust-syslog" ,rust-syslog)
  4880. ("rust-clap-derive"
  4881. ;; Just switching to the latest clap-derive doesn't work, as it has
  4882. ;; renamed a few things, causing the build of zoxide to break.
  4883. ,(package-with-extra-patches
  4884. (p rust-clap-derive-3)
  4885. (list (local-file "rust-clap-derive-update-dependencies.patch"))))
  4886. ("rust-askama-shared" ,rust-askama-shared)
  4887. ("rust-askama-derive" ,rust-askama-derive)
  4888. ("rust-askama" ,rust-askama)
  4889. ("rust-zstd" ,(p rust-zstd-0.9)) ; @0.6 doesn't build a dependency failing to build
  4890. ("rust-rand-distr" ,(p rust-rand-distr-0.4)) ; avoid complications due to multiple versions
  4891. ("rust-reqwest" ,rust-reqwest) ; @0.10 has
  4892. ("rust-s3handler" ,rust-s3handler)
  4893. ("rust-cookie-store" ,rust-cookie-store) ; fix failing build by updating
  4894. ("rust-cookie-store-15" ,rust-cookie-store)
  4895. ("rust-signal-hook-mio"
  4896. ,(package-with-rust-features rust-signal-hook-mio
  4897. #~'("support-v0_8")
  4898. #:name "rust-signal-hook-mio")
  4899. #:for-dependent
  4900. ,(lambda (dependent)
  4901. (not (member (package-name dependent) '("rust-alacritty-terminal")))))
  4902. ("rust-signal-hook-mio"
  4903. ,(package-with-rust-features rust-signal-hook-mio
  4904. #~'("support-v0_6")
  4905. #:name "rust-signal-hook-mio+old")
  4906. #:for-dependent ; rust-alacritty-terminal needs the old rust-mio for now
  4907. ,(lambda (dependent)
  4908. (member (package-name dependent) '("rust-alacritty-terminal"))))
  4909. ("rust-structopt" ,(p rust-structopt-0.3))
  4910. ("rust-structopt-derive" ,(p rust-structopt-derive-0.4)) ; @0.2.18 doesn't build
  4911. ("rust-tectonic-bridge-core" ,(p rust-tectonic-bridge-core-0.3)) ; to keep custom phases simple, only use a single version
  4912. ("rust-tectonic-status-base" ,(p rust-tectonic-status-base-0.2)) ; resolve version conflict
  4913. ("rust-tectonic-errors" ,(p rust-tectonic-errors-0.2)) ; resolve version conflict
  4914. ("rust-tectonic-io-base" ,(p rust-tectonic-io-base-0.4)) ; resolve version conflict
  4915. ("rust-test-generator"
  4916. ;; for compatibility with new rust-quote, rust-syn and rust-proc-macro2
  4917. ,(package-with-extra-patches
  4918. (p rust-test-generator-0.3)
  4919. (list (local-file "rust-test-generator-Update-dependencies.patch"))))
  4920. ("rust-totp-lite" ,rust-totp-lite)
  4921. ("rust-tree-magic" ,rust-tree-magic-mini) ; for compatibility with new rust-nom
  4922. ("rust-trust-dns-proto" ,rust-trust-dns-proto)
  4923. ("rust-trust-dns-openssl" ,rust-trust-dns-openssl)
  4924. ("rust-trust-dns-native-tls" ,rust-trust-dns-native-tls)
  4925. ("rust-trust-dns-rustls" ,rust-trust-dns-rustls)
  4926. ("rust-trust-dns-https" ,rust-trust-dns-https)
  4927. ("rust-trust-dns-resolver" ,rust-trust-dns-resolver)
  4928. ("rust-trybuild"
  4929. ,(package-with-extra-patches (p rust-trybuild-1)
  4930. (list (local-file "rust-trybuild-antioxidant-stubs.patch"))))
  4931. ("rust-tungstenite" ,rust-tungstenite)
  4932. ("rust-pulse" ,(package-with-extra-patches
  4933. (p rust-pulse-0.5)
  4934. ;; For compatibility with new rust-time
  4935. (list (local-file "0001-use-std-time-bump-to-0.5.4.patch"))))
  4936. ("rust-partial-io" ,rust-partial-io)
  4937. ("rust-postgres-protocol" ,rust-postgres-protocol)
  4938. ("rust-postgres-types" ,rust-postgres-types)
  4939. ("rust-regex" ,(p rust-regex-1)) ; old version doesn't build against new rust-aho-corasick
  4940. ("rust-regex-syntax" ,(p rust-regex-syntax-0.6)) ; multiple version
  4941. ;; swayhide requires non-async to build
  4942. ("rust-swayipc" ,(package-with-rust-features (p rust-swayipc-2)
  4943. #~'()
  4944. #:name "rust-swayipc+sync")
  4945. #:for-dependent
  4946. ,(lambda (dependent)
  4947. (string=? "swayhide" (package-name dependent))))
  4948. ;; Use the newest version of rust-mio where possible,
  4949. ;; except for packages that still require an old rust-mio
  4950. ;; and where updating the package is difficult for now.
  4951. ("rust-mio" ,rust-mio
  4952. #:for-dependent
  4953. ,(lambda (dependent)
  4954. (not (or (string=? (package-name dependent) "rust-mio-extras")
  4955. (string=? (package-name dependent) "rust-mio-uds")
  4956. (string=? (package-name dependent) "rust-alacritty-terminal")
  4957. (string=? (package-name dependent) "rust-signal-hook-mio+old")
  4958. (string=? (package-name dependent) "rust-curl") ; test-only
  4959. (and (string=? (package-name dependent) "rust-notify")
  4960. (string-prefix? "4." (package-version dependent)))))))
  4961. ("rust-mio" ,(package-with-rust-features (p rust-mio-0.6)
  4962. #~'("default")) ; not used, see %features
  4963. #:for-dependent
  4964. ,(lambda (dependent)
  4965. (or (string=? (package-name dependent) "rust-mio-extras")
  4966. (string=? (package-name dependent) "rust-mio-uds") ; requires old rust-mio
  4967. (string=? (package-name dependent) "rust-alacritty-terminal")
  4968. (string=? (package-name dependent) "rust-signal-hook-mio+old")
  4969. (and (string=? (package-name dependent) "rust-notify")
  4970. (string-prefix? "4." (package-version dependent))))))
  4971. ("rust-signal-hook-mio" ,rust-signal-hook-mio)
  4972. ("rust-smol" ,(p rust-smol-1)) ; @0.1 or its dependencies don't build
  4973. ("rust-actix-rt" ,rust-actix-rt)
  4974. ("rust-actix-tls" ,rust-actix-tls)
  4975. ("rust-async-process" ,rust-async-process) ; @1.0.1 doesn't build against new rust-signal-hookx
  4976. ("rust-blocking" ,(p rust-blocking-1)) ; @0.4 doesn't build
  4977. ("rust-inotify" ,(p rust-inotify-0.9)) ; @0.8 doesn't build
  4978. ("rust-futures-intrusive" ,rust-futures-intrusive)
  4979. ("rust-multipart" ,(p rust-multipart-0.18)) ; @0.17 doesn't build
  4980. ("rust-memoffset" ,(p rust-memoffset-0.6)) ; @0.5 doesn't build
  4981. ("rust-signal-hook" ,(p rust-signal-hook-0.3)) ; @0.1 doesn't build
  4982. ("rust-semver" ,(package-with-extra-patches
  4983. (p rust-semver-1)
  4984. (list (local-file "rust-semver-Add-increment-foo-again.patch"))))
  4985. ("rust-rustc-version" ,(p rust-rustc-version-0.4)) ; @0.2.3 doesn't build against rust-semver@1
  4986. ("rust-dotenv" ,(p rust-dotenv-0.15)) ; @0.10 doesn't build
  4987. ("rust-quickcheck-macros" ,(p rust-quickcheck-macros-1)) ; 0.9 doesn't build against rust-syn@1
  4988. ("rust-quick-xml" ,(p rust-quick-xml-0.22) ; resolve version conflict
  4989. #:for-dependent
  4990. ,(lambda (dependent)
  4991. (not (member (package-name dependent) '("rust-calamine")))))
  4992. ("rust-quick-xml"
  4993. ,(package-with-rust-features (p rust-quick-xml-0.22)
  4994. #~'("default" "encoding") ; calamine required the "encoding" feature and tectonic required the absence.
  4995. #:name "rust-quick-xml+encoding")
  4996. #:for-dependent
  4997. ,(lambda (dependent)
  4998. (member (package-name dependent) '("rust-calamine"))))
  4999. ("rust-glib-sys" ,(@ (gnu packages crates-gtk) rust-glib-sys-0.15)) ; @0.10 doesn't build, and presumably a new rust-glib-sys is required by the new rust-glib
  5000. ("rust-glib" ,(@ (gnu packages crates-gtk) rust-glib-0.15)) ; @0.9 doesn't build, and the new librsvg required a new rust-glib
  5001. ("rust-glib-macros" ,(@ (gnu packages crates-gtk) rust-glib-macros-0.15)) ; required by new rust-glib
  5002. ("rust-gobject-sys" ,(@ (gnu packages crates-gtk) rust-gobject-sys-0.15)) ; @0.10 doesn't build; @0.15 is required by rust-glib
  5003. ("rust-gdk-pixbuf" ,(@ (gnu packages crates-gtk) rust-gdk-pixbuf-0.14)) ; @0.8 doesn't build
  5004. ("rust-gdk-pixbuf-sys" ,(@ (gnu packages crates-gtk) rust-gdk-pixbuf-sys-0.14)) ; @0.10 doesn't build
  5005. ("rust-gdk-sys" ,(@ (gnu packages crates-gtk) rust-gdk-sys-0.14)) ; no need for old versions
  5006. ("rust-gdk" ,rust-gdk) ; @0.14 doesn't build
  5007. ("rust-cairo-sys-rs" ,(@ (gnu packages crates-gtk) rust-cairo-sys-rs-0.14)) ; avoid version conflicts
  5008. ("rust-system-deps" ,rust-system-deps)
  5009. ("rust-version-compare" ,rust-version-compare)
  5010. ("rust-input-buffer" ,rust-input-buffer)
  5011. ("rust-iso8601" ,rust-iso8601)
  5012. ("rust-enum-to-u8-slice-derive" ,rust-enum-to-u8-slice-derive)
  5013. ("rust-cookie" ,rust-cookie)
  5014. ("rust-aead" ,(p rust-aead-0.4)) ; resolve ‘found two different crates with name `aead`’ errors
  5015. ("rust-aead-4" ,(p rust-aead-0.4)) ; likewise
  5016. ("rust-actix-threadpool" ,(p rust-actix-threadpool-0.3)) ; old rust-actix-threadpool requires old rust-futures
  5017. ("rust-aes-gcm" ,rust-aes-gcm)
  5018. ("rust-chacha20" ,rust-chacha20
  5019. #:for-dependent
  5020. ,(lambda (p)
  5021. (not (equal? (list (package-name p) (package-version p))
  5022. '("rust-chacha20poly1305" "0.9.0")))))
  5023. ("rust-unicase" ,(p rust-unicase-2)) ; @1 doesn't build because of removed features
  5024. ("rust-url" ,(p rust-url-2)) ; @1 doesn't build
  5025. ("rust-hkdf" ,rust-hkdf
  5026. #:for-dependent
  5027. ,(lambda (p)
  5028. ;; Doesn't compile against new rust-hkdf
  5029. (not (string=? (package-name p) "rbw"))))
  5030. ("rust-as-slice" ,rust-as-slice)
  5031. ("rust-jetscii" ,(p rust-jetscii-0.5)) ; use recent version of jetscii that actually builds
  5032. ("rust-hash32-derive" ,rust-hash32-derive)
  5033. ("rust-hash32" ,(p rust-hash32-0.2)) ; @0.1 doesn't build
  5034. ("rust-derive-more" ,(p rust-derive-more-0.99)) ; avoid non-building @0.15
  5035. ("rust-devise-core" ,rust-devise-core)
  5036. ("rust-devise-codegen" ,rust-devise-codegen)
  5037. ("rust-openssl" ,rust-openssl)
  5038. ("rust-openssl-sys" ,rust-openssl-sys)
  5039. ;; The old rust-tokio-openssl@0.4 doesn't build
  5040. ("rust-tokio-openssl" ,(p rust-tokio-openssl-0.6))
  5041. ("rust-tokio-native-tls" ,(p rust-tokio-native-tls-0.3)) ; @0.1 doesn't build
  5042. ("rust-tokio" ,rust-tokio) ; rust-tokio@1 in Guix doesn't build against new rust-mio
  5043. ("rust-tokio-postgres" ,rust-tokio-postgres) ; @0.7.2 doesn't build against new rust-phf
  5044. ("rust-tokio-tungstenite" ,rust-tokio-tungstenite) ; @0.11 doesn't build
  5045. ("rust-bindgen"
  5046. ;; In the old version 'runtime' cannot be
  5047. ;; disabled.
  5048. ,(p rust-bindgen-0.59))
  5049. ("rust-headers" ,rust-headers)
  5050. ("rust-heck" ,(p rust-heck-0.4)) ; 0.3 too old for rust-strum-macros@0.24
  5051. ("rust-pango" ,(@ (gnu packages crates-gtk) rust-pango-0.15)) ; @0.8 doesn't build
  5052. ("rust-pango-sys" ,(@ (gnu packages crates-gtk) rust-pango-sys-0.15)) ; likewise
  5053. ("rust-pangocairo" ,(@ (gnu packages crates-gtk) rust-pangocairo-0.15))
  5054. ("rust-peg" ,(p rust-peg-0.6)) ; 0.5 misses dependency information
  5055. ("rust-actix-web-codegen" ,rust-actix-web-codegen)
  5056. ("rust-actix-web" ,rust-actix-web) ; @0.3 doesn't build
  5057. ;; rust-atcix-derive@0.4.0,0.5.0 don't build against new
  5058. ;; rust-syn@1.0.82 (Literal has been renamed to Lit)
  5059. ("rust-actix-derive" ,rust-actix-derive)
  5060. ("rust-actix-server" ,rust-actix-server)
  5061. ("rust-typenum" ,rust-typenum)
  5062. ("rust-serial-test" ,(p rust-serial-test-0.6)) ; version of rust-serial-test and rust-serial-test-derive need to match for bat@0.20
  5063. ("rust-serial-test-derive" ,(p rust-serial-test-derive-0.6)) ; @0.1 doesn't build
  5064. ("rust-syscallz" ,rust-syscallz)
  5065. ("rust-strum" ,rust-strum)
  5066. ("rust-strum-macros" ,rust-strum-macros)
  5067. ("rust-actix" ,rust-actix) ; @0.10 doesn't build
  5068. ("rust-backtrace" ,(p rust-backtrace-0.3)) ; old backtrace doesn't build with the new rust-object
  5069. ("rust-gimli" ,(p rust-gimli-0.26))
  5070. ;; rust-pkcs5@0.5.0-pre.1 requires new_unwrap
  5071. ("rust-const-oid" ,rust-const-oid)
  5072. ("rust-aes" ,rust-aes
  5073. #:for-dependent
  5074. ,(lambda (p)
  5075. (not (member (list (package-name p)
  5076. (package-version p))
  5077. '(("rbw" "1.4.1")
  5078. ("rust-block-modes" "0.8.1")
  5079. ("rust-pkcs5" "0.3.2"))))))
  5080. ("rust-des" ,rust-des
  5081. #:for-dependent
  5082. ;; Doesn't build againt new rust-des.
  5083. ,(lambda (p)
  5084. (not (member (list (package-name p)
  5085. (package-version p))
  5086. '(("rust-pkcs5" "0.3.2"))))))
  5087. ("rust-pkcs8" ,rust-pkcs8
  5088. #:for-dependent
  5089. ;; Dependents don't compile against old rust-rsa if
  5090. ;; old rust-rsa isn't compiled against rust-pkcs8.
  5091. ,(lambda (p)
  5092. (not (equal? (list (package-name p) (package-version p))
  5093. '("rust-rsa" "0.5.0")))))
  5094. ("rust-pkcs5" ,rust-pkcs5
  5095. #:for-dependent
  5096. ,(lambda (p)
  5097. ;; Doesn't compile against new rust-pkcs5.
  5098. (not (member (list (package-name p) (package-version p))
  5099. '(("rust-pkcs8" "0.7.6"))))))
  5100. ("rust-pkcs1" ,rust-pkcs1
  5101. #:for-dependent
  5102. ;; Doesn't compile against new rust-pkcs1.
  5103. ,(lambda (p)
  5104. (not (member (list (package-name p) (package-version p))
  5105. '(("rust-rsa" "0.5.0")
  5106. ("rust-pkcs8" "0.7.6"))))))
  5107. ("rust-spki" ,rust-spki
  5108. ;; Doesn't compile against new rust-spki.
  5109. #:for-dependent
  5110. ,(lambda (p)
  5111. (not (member (list (package-name p) (package-version p))
  5112. '(("rust-pkcs5" "0.3.2")
  5113. ("rust-pkcs8" "0.7.6"))))))
  5114. ("rust-der" ,rust-der
  5115. #:for-dependent
  5116. ,(lambda (p)
  5117. ;; Doesn't compile against new rust-der.
  5118. (not (member (list (package-name p) (package-version p))
  5119. '(("rust-pkcs1" "0.2.4")
  5120. ("rust-pkcs5" "0.3.2")
  5121. ("rust-pkcs8" "0.7.6")
  5122. ("rust-spki" "0.4.1"))))))
  5123. ("rust-sha-1" ,(p rust-sha-1-0.10)
  5124. ;; Doesn't compile against new rust-sha-1.
  5125. #:for-dependent
  5126. ,(lambda (p)
  5127. (not (member (list (package-name p) (package-version p))
  5128. '(("rbw" "1.4.1")
  5129. ("rust-pkcs5" "0.3.2"))))))
  5130. ("rust-sha2" ,(p rust-sha2-0.10)
  5131. #:for-dependent
  5132. ;; Doesn't compile against new rust-sha2.
  5133. ,(lambda (p)
  5134. (not (member (list (package-name p) (package-version p))
  5135. '(("rbw" "1.4.1")
  5136. ("libsequoia" "0.22.0")
  5137. ("rust-curve25519-dalek" "3.2.0")
  5138. ("rust-ed25519-dalek" "1.0.1")
  5139. ("rust-pkcs5" "0.3.2")
  5140. ("rust-pbkdf2" "0.9.0"))))))
  5141. ("rust-string-cache-codegen" ,(p rust-string-cache-codegen-0.5)) ; @0.4 doesn't build against new rust-phf-... crates.
  5142. ("rust-string-cache" ,(p rust-string-cache-0.8)) ; old version doesn't build against new rust-string-cache-codegen
  5143. ("rust-time" ; resolve version conflict
  5144. ,rust-time
  5145. #:for-dependent
  5146. ;; rust-lopdf is incompatible with the new rust-time
  5147. ,(lambda (dependent)
  5148. (not (member (package-name dependent) '("rust-lopdf")))))
  5149. ("rust-instant" ; 0.1.4 doesn't build against rust-time@0.3
  5150. ,rust-instant)
  5151. ;; 0.3 requires unstable
  5152. ("rust-hex" ,(p rust-hex-0.4))
  5153. ("rust-sha3" ,rust-sha3)
  5154. ("rust-h2" ,(p rust-h2-0.3)) ; @0.2 doesn't build
  5155. ("rust-scrypt" ,rust-scrypt)
  5156. ("rust-password-hash" ,rust-password-hash
  5157. #:for-dependent
  5158. ;; Doesn't compile against new rust-password-hash.
  5159. ,(lambda (dependent)
  5160. (not (member (list (package-name dependent) (package-version dependent))
  5161. '(("rust-pbkdf2" "0.9.0"))))))
  5162. ("rust-phf" ,(p rust-phf-0.10)) ; a dependency of @0.7 fails to build against new rust-syn
  5163. ("rust-phf-shared" ,(p rust-phf-shared-0.10)) ; avoid multiple conflicting versions
  5164. ("rust-phf-generator" ,(p rust-phf-generator-0.10)) ; avoid multiple conflicting versions
  5165. ("rust-phf-codegen" ,(p rust-phf-codegen-0.10)) ; avoid build failure in dependency
  5166. ("rust-block-modes" ,rust-block-modes
  5167. #:for-dependent
  5168. ,(lambda (p)
  5169. ;; Doesn't compile against new rust-block-modes.
  5170. (not (or (string=? (package-name p) "rbw")
  5171. (equal? (list (package-name p) (package-version p))
  5172. '("rust-pkcs5" "0.3.2"))))))
  5173. ("rust-ctr" ,rust-ctr)
  5174. ("rust-salsa20" ,rust-salsa20)
  5175. ("rust-cipher" ,rust-cipher
  5176. #:for-dependent
  5177. ,(lambda (p)
  5178. ;; Incompatible with new rust-cipher.
  5179. (not (member (list (package-name p) (package-version p))
  5180. '(("rust-block-modes" "0.8.1")
  5181. ("rust-chacha20" "0.8.1")
  5182. ("rust-chacha20poly1305" "0.9.0")
  5183. ("rust-aes" "0.7.5")
  5184. ("rust-des" "0.7.0"))))))
  5185. ("rust-block-padding" ,rust-block-padding
  5186. #:for-dependent
  5187. ,(lambda (p)
  5188. ;; Incompatible with new rust-cipher.
  5189. (not (member (list (package-name p) (package-version p))
  5190. '(("rbw" "1.4.1")
  5191. ("rust-block-modes" "0.8.1")
  5192. ("rust-block-buffer" "0.9.0")
  5193. ("rust-block-buffer" "0.7.3"))))))
  5194. ("rust-streebog" ,(p rust-streebog-0.10)
  5195. #:for-dependent
  5196. ,(lambda (p)
  5197. ;; Incompatible with new rust-pbkdf2.
  5198. (not (equal? (list (package-name p) (package-version p))
  5199. '("rust-pbkdf2" "0.9.0")))))
  5200. ("rust-pbkdf2" ,rust-pbkdf2
  5201. #:for-dependent
  5202. ,(lambda (p)
  5203. ;; Incompatible with new rust-pbkdf2.
  5204. (not (or (equal? (package-name p) "rbw")
  5205. (equal? (list (package-name p) (package-version p))
  5206. '("rust-pkcs5" "0.3.2"))))))
  5207. ("rust-hmac" ,(p rust-hmac-0.12)
  5208. #:for-dependent
  5209. ,(lambda (p)
  5210. (not (or (equal? (package-name p) "rbw")
  5211. (member (list (package-name p) (package-version p))
  5212. '(("rust-hkdf" "0.11.0")
  5213. ("rust-pkcs5" "0.3.2")
  5214. ("rust-pbkdf2" "0.9.0")))))))
  5215. ; ("rust-boxxy" ,rust-boxxy) ; TODO: currently useless because in %removed-dependencies, revisit when tests are supported
  5216. ("rust-block-buffer" ,rust-block-buffer
  5217. #:for-dependent
  5218. ;; Incompatible with new rust-block-buffer.
  5219. ,(lambda (p)
  5220. (not (member (list (package-name p) (package-version p))
  5221. '(("rust-sha-1" "0.9.8")
  5222. ("rust-sha2" "0.9.5")
  5223. ("rust-sha2" "0.8.2")
  5224. ("rust-streebog" "0.9.2"))))))
  5225. ("rust-enum-as-inner" ,rust-enum-as-inner)
  5226. ("rust-md-5" ,rust-md-5)
  5227. ; TODO version conflict -- AUTOMATE?
  5228. ("rust-syn" ,(p rust-syn-1))
  5229. ("rust-object" ,(p rust-object-0.29))
  5230. ("rust-addr2line" ,(p rust-addr2line-0.17))
  5231. ("rust-generic-array" ,(p rust-generic-array-0.14))
  5232. ("rust-digest" ,rust-digest
  5233. #:for-dependent
  5234. ;; Incompatible with new rust-digest.
  5235. ,(lambda (p)
  5236. (not (member (list (package-name p) (package-version p))
  5237. '(("rust-blake2" "0.9.2")
  5238. ("rust-blakeout" "0.3.0")
  5239. ("rust-curve25519-dalek" "3.2.0") ; required by rust-ed25519-dalek
  5240. ("rust-hkdf" "0.11.0")
  5241. ("rust-hmac" "0.11.0")
  5242. ("rust-pkcs5" "0.3.2")
  5243. ("rust-rsa" "0.5.0") ; required by rbw
  5244. ("rust-sha-1" "0.9.8")
  5245. ("rust-sha1" "0.10.1")
  5246. ("rust-sha2" "0.9.5")
  5247. ("rust-sha2" "0.8.2")
  5248. ("rust-streebog" "0.9.2"))))))
  5249. ("rust-crypto-common" ,rust-crypto-common)
  5250. ("rust-rustyline" ,(p rust-rustyline-9))
  5251. ("rust-base64" ,(p rust-base64-0.13))
  5252. ("rust-test-case" ,rust-test-case-2)
  5253. ("rust-slab" ,rust-slab)
  5254. ("rust-socket2" ,(p rust-socket2-0.4))
  5255. ("rust-insta" ,(p rust-insta-1))
  5256. ("rust-nom" ; avoid version conflicts
  5257. ,(p rust-nom-7)
  5258. #:for-dependent
  5259. ,(lambda (p)
  5260. (not (member (package-name p) '("rust-terminfo" "rust-ansi-parser"))))) ; needs old rust-nom@5 (or older, in case of rust-ansi-parser) and no update available
  5261. ("rust-nom" ,(p rust-nom-5)
  5262. #:for-dependent
  5263. ,(lambda (p)
  5264. (member (package-name p) '("rust-terminfo")))) ; needs old rust-nom@5 and no update available
  5265. ("rust-ndarray" ,(p rust-ndarray-0.15)) ; old versions don't build
  5266. ;; rust-pktparse@0.5 doesn't build against nom@7
  5267. ("rust-pktparse" ,rust-pktparse)
  5268. ("rust-rusticata-macros" ; old version doesn't build against nom@7
  5269. ,(p rust-rusticata-macros-4))
  5270. ("rust-pure-rust-locales" ; old version doesn't build against nom@7
  5271. ,rust-pure-rust-locales)
  5272. ("rust-itoa" ,(p rust-itoa-1))
  5273. ("rust-sct" ,(p rust-sct-0.7))
  5274. ("rust-quote" ,(p rust-quote-1))
  5275. ("rust-lexical-core" ,(p rust-lexical-core-0.8)) ; @0.7 doesn't build
  5276. ;; 0.3.0 fails to build against new rust-serde
  5277. ("rust-linked-hash-map"
  5278. ,(p rust-linked-hash-map-0.5))
  5279. ("rust-rust-decimal" ,rust-rust-decimal) ; old rust-decimal incompatible with new rust-arrayvec
  5280. ("rust-rustls-native-certs"
  5281. ;; Old versio incompatible with new rustls
  5282. ,(p rust-rustls-native-certs-0.6))
  5283. ("rust-ron"
  5284. ,(p rust-ron-0.6)) ; old versions don't build
  5285. ("rust-serde"
  5286. ,(p rust-serde-1)) ; old versions don't build
  5287. ("rust-sha1" ,rust-sha1
  5288. #:for-dependent
  5289. ;; Doesn't compile against new rust-sha1.
  5290. ,(lambda (p)
  5291. (not (member (list (package-name p) (package-version p))
  5292. '(("rust-pbkdf2" "0.9.0"))))))
  5293. ("rust-rsa" ,rust-rsa
  5294. ;; rbw doesn't compile againt new rust-rsa.
  5295. #:for-dependent
  5296. ,(lambda (p)
  5297. (not (equal? (package-name p) "rbw"))))
  5298. ("rust-hashbrown" ,(p rust-hashbrown-0.11))
  5299. ("rust-scopeguard" ,(p rust-scopeguard-1))
  5300. ("rust-webpki" ,(p rust-webpki-0.22))
  5301. ;; Old versions don't build (because rust-tokio-io disappeared)
  5302. ("rust-hyper-rustls" ,rust-hyper-rustls)
  5303. ("rust-hyper-tls" ,(p rust-hyper-tls-0.5)) ; @0.4 fails to build, @0.5 succeeds
  5304. ("rust-rustls"
  5305. ;; Remove old (not-building) and potentially unsecure versions
  5306. ;; Also, rust-tokio-rustls requires a newer rust-rustls.
  5307. ,rust-rustls-0.20)
  5308. ("rust-tokio-rustls" ;0.10.3 doesn't build
  5309. ,rust-tokio-rustls-0.23)
  5310. ("rust-warp" ,rust-warp)
  5311. ;; TODO: respect SSL_CERT_DIR instead of hardcoding trusting
  5312. ;; whoever Mozilla trusts.
  5313. ;; TODO: build from source
  5314. ;; TODO: remove certificates with restrictions
  5315. ("rust-webpki-roots"
  5316. ;; 0.17.0 doesn't build
  5317. ,(p rust-webpki-roots-0.22))
  5318. ("rust-nix" ,(p rust-nix-0.23))
  5319. ("rust-autocfg" ,(p rust-autocfg-1))
  5320. ("rust-bytes" ,(p rust-bytes-1))
  5321. ;; ("rust-tokio-io" ,rust-tokio-io-0.2) ; tokio-io currently removed
  5322. ; ("rust-tokio-codec" ,rust-tokio-io-0.2) ; looks like an error in retrospect
  5323. ("rust-tokio-util" ,rust-tokio-util-0.7)
  5324. ("rust-tokio" ,(p rust-tokio-1.8))
  5325. ("rust-futures" ,rust-futures-0.3)
  5326. ("rust-futures-channel" ,rust-futures-channel-0.3)
  5327. ("rust-futures-core" ,rust-futures-core-0.3)
  5328. ("rust-futures-executor" ,rust-futures-executor-0.3)
  5329. ("rust-futures-io" ,rust-futures-io-0.3)
  5330. ("rust-futures-sink" ,rust-futures-sink-0.3)
  5331. ("rust-futures-task" ,rust-futures-task-0.3)
  5332. ("rust-futures-util" ,rust-futures-util-0.3)
  5333. ("rust-git2" ,(p rust-git2-0.13)) ; @0.9.1 doesn't build
  5334. ("rust-http" ; 0.1 doesn't build and @0.2.1 doesn't have a const HeaderValue from_static
  5335. ,rust-http)
  5336. ;; rust-http-body@0.1.0's dependency rust-tokio-buf doesn't
  5337. ;; build anymore. (TODO remove from Guix)
  5338. ("rust-http-body" ,(p rust-http-body-0.4))
  5339. ("rust-crossbeam-channel"
  5340. ;; avoid old version that don't build
  5341. ,(p rust-crossbeam-channel-0.5))
  5342. ("rust-crossbeam-utils" ; avoid errors by multiple versions of the same crate
  5343. ,(p rust-crossbeam-utils-0.8))
  5344. ;; Likewise.
  5345. ("rust-hyper"
  5346. ,(p rust-hyper-0.14))
  5347. ("rust-nb"
  5348. ;; Avoid E0519, caused by multiple versions of the same crate
  5349. ;; being used. TODO: bump version in 'sniffglue'
  5350. ,(p rust-nb-1))
  5351. ("rust-num-traits" ,(p rust-num-traits-0.2))
  5352. ("rust-cfg-if" ,(p rust-cfg-if-1))
  5353. ("rust-env-logger" ; old versions don't build
  5354. ,(p rust-env-logger-0.9))
  5355. ("rust-lazy-static"
  5356. ,(p rust-lazy-static-1))
  5357. ("rust-rand"
  5358. ,(p rust-rand-0.8) ; tests of some dependencies of rust-rand@0.6 fail, so no need to try adding test-only exceptions for some dependents
  5359. #:for-dependent
  5360. ,(lambda (p)
  5361. ;; Tests fail against new rust-rand
  5362. (not (equal? (package-name p) "rust-ecies-ed25519"))))
  5363. ("rust-lock-api" ; 0.3, 0.2, 0.1
  5364. ,(p rust-lock-api-0.4))
  5365. ("rust-sysctl" ; 0.1 does not compile (type errors)
  5366. ,(p rust-sysctl-0.4))
  5367. ;; The (now deprecated) rust-tempdir doesn't build
  5368. ;; against current rust-rand, use the new rust-tempfile
  5369. ;; instead as upstream recommends.
  5370. ("rust-tempdir"
  5371. ,(p rust-tempfile-3))
  5372. ("rust-version-check"
  5373. ,(p rust-version-check-0.9) ; rust-email@0.0.21 needs a new rust-version-check
  5374. #:for-dependent
  5375. ,(lambda (dependent)
  5376. ;; old rust-nom needs an old rust-version-check
  5377. (not (and (string=? (package-name dependent) "rust-nom")
  5378. (string=? (package-version dependent) "4.2.3")))))
  5379. ("rust-bare-metal"
  5380. ,(p rust-bare-metal-1))
  5381. ;; The old parking-lot doesn't build against
  5382. ;; the new lock api.
  5383. ("rust-parking-lot"
  5384. ;; TODO: inherit?
  5385. ,(p rust-parking-lot-0.11))
  5386. ("rust-proptest" ,(p rust-proptest-1)) ; avoid old non-building version
  5387. ("rust-proptest-derive" ,rust-proptest-derive)
  5388. ("rust-arc-swap" ,(p rust-arc-swap-1))
  5389. ("rust-gif" ,(p rust-gif-0.11)) ;; @0.11.2 - crates-graphics @0.11.3 doesn't build ATM
  5390. ("rust-miniz-oxide" ,rust-miniz-oxide ; TODO: there are two replacements for this, which one actually had effect?
  5391. #:for-dependent
  5392. ,(lambda (dependent)
  5393. (not (equal? (list (package-name dependent) (package-version dependent))
  5394. '("rust-png" "0.16.8")))))
  5395. ("rust-deflate" ,rust-deflate)
  5396. ("rust-gl-generator" ,(@ (gnu packages crates-graphics) rust-gl-generator-0.14)) ; resolve version conflict
  5397. ("rust-png" ,rust-png
  5398. #:for-dependent
  5399. ,(lambda (dependent)
  5400. (not (string=? (package-name dependent) "alacritty")))) ; still needs old rust-png ...
  5401. ("rust-tiff" ,rust-tiff)
  5402. ("rust-jpeg-decoder" ,rust-jpeg-decoder)
  5403. ("rust-image" ,rust-image)
  5404. ("rust-jsonrpc-core" ,rust-jsonrpc-core)
  5405. ("rust-language-tags" ,(p rust-language-tags-0.3)) ; new version required by new rust-language-tags
  5406. ("rust-lebe" ,rust-lebe)
  5407. ("rust-exr" ,rust-exr)
  5408. ("rust-lalrpop" ,rust-lalrpop)
  5409. ("rust-lalrpop-util" ,rust-lalrpop-util)
  5410. ("rust-nalgebra" ,(p rust-nalgebra-0.29)) ; replace by building version
  5411. ("rust-nettle-sys" ,rust-nettle-sys-2)
  5412. ("rust-nettle" ,rust-nettle-7)
  5413. ;; 0.4.30 fails to build.
  5414. ("rust-proc-macro2" ,(p rust-proc-macro2-1))
  5415. ("rust-quickcheck" ,(p rust-quickcheck-1)) ; old versions of rust-quickcheck don't build against new rust-rand
  5416. ("rust-raw-window-handle" ,rust-raw-window-handle)
  5417. ("rust-rayon" ,(p rust-rayon-1))
  5418. ("rust-rustc-test"
  5419. ,(package-with-extra-patches
  5420. (p rust-rustc-test-0.3)
  5421. (list (local-file "rust-rustc-test-Update-for-new-time.patch"))))
  5422. ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit)
  5423. ("rust-smithay-clipboard" ,rust-smithay-clipboard)
  5424. ("rust-tinyvec" ,(p rust-tinyvec-1)) ; avoid version conflict
  5425. ("rust-log" ,(p rust-log-0.4))
  5426. ("rust-uuid" ,(p rust-uuid-0.8)) ; @0.5.1 doesn't build
  5427. ("rust-watchexec"
  5428. ,(package-with-extra-patches
  5429. (p rust-watchexec-1)
  5430. (list (local-file "rust-watchexec-nix-compatibility.patch")))) ; for compatibiliy with new rust-nix
  5431. ("rust-wayland-commons" ,rust-wayland-commons) ; for compatibility with new rust-nix
  5432. ("rust-wayland-client" ,rust-wayland-client) ; for Debug traits required by new rust-smithay-client-toolkit
  5433. ("rust-wayland-cursor" ,rust-wayland-cursor) ; ditto
  5434. ("rust-wayland-protocols" ,rust-wayland-protocols) ; ditto
  5435. ("rust-wayland-server" ,(@ (gnu packages crates-graphics) rust-wayland-server-0.29)) ; avoid multiple versions
  5436. ;; TODO: keep phase intact if needed
  5437. ("rust-wayland-sys" ,(@ (gnu packages crates-graphics) rust-wayland-sys-0.29)) ; avoid multiple versions
  5438. ("rust-winit" ,rust-winit) ; for compatibility against new dependencies
  5439. ("rust-wl-clipboard-rs" ,rust-wl-clipboard-rs)
  5440. ("rust-x11rb" ,rust-x11rb)
  5441. ("rust-xml5ever" ,rust-xml5ever)
  5442. ("rust-xml-rs" ,(p rust-xml-rs-0.8)) ; @0.7 has test failures
  5443. ("rust-zip" ,rust-zip)))
  5444. ;; TODO: add these (upstream) or teach "guix style" to add them.
  5445. ;; Keep it sorted to find things in it easily!
  5446. (define %extra-inputs
  5447. `(("alacritty" ; forgot the reason for adding the dependency
  5448. (("rust-structopt" ,(p rust-structopt-0.3))))
  5449. ("castor" ;; TODO: add them in upstream Guix
  5450. (("rust-gio" ,(@ (gnu packages crates-gtk) rust-gio-0.14))
  5451. ("rust-glib" ,(@ (gnu packages crates-gtk) rust-glib-0.14))
  5452. ("rust-gdk-pixbuf" ,(@ (gnu packages crates-gtk) rust-gdk-pixbuf-0.14))
  5453. ("rust-pango-sys" ,(@ (gnu packages crates-gtk) rust-pango-sys-0.14))
  5454. ("rust-pango" ,(@ (gnu packages crates-gtk) rust-pango-0.14))
  5455. ("rust-lazy-static" ,(p rust-lazy-static-1))
  5456. ("rust-serde" ,(p rust-serde-1))
  5457. ("rust-serde-derive" ,(p rust-serde-derive-1))
  5458. ("rust-toml" ,(p rust-toml-0.5))
  5459. ("rust-tempfile" ,(p rust-tempfile-3))
  5460. ("rust-openssl" ,(p rust-openssl-0.10))
  5461. ("rust-regex" ,(p rust-regex-1))
  5462. ("rust-textwrap" ,(p rust-textwrap-0.12))))
  5463. ("circtools" ; missing input (TODO: actually a native-input)
  5464. (("rust-cc" ,(p rust-cc-1))
  5465. ("rust-cmake" ,(p rust-cmake-0.1))))
  5466. ("librsvg" ; missing input
  5467. (("autoconf" ,(@ (gnu packages autotools) autoconf)) ; TODO: really a native-input
  5468. ("automake" ,(@ (gnu packages autotools) automake)) ; TODO: really a native-input
  5469. ("libtool" ,(@ (gnu packages autotools) libtool)) ; TODO: really a native-input
  5470. ("rust-system-deps" ,rust-system-deps)))
  5471. ;; TODO: rust-sequoia-... are workspace members, remove.
  5472. ("libsequoia" ; add required inputs for members (some of them are optional though)
  5473. (("rust-assert-cmd" ,(p rust-assert-cmd-2))
  5474. ("rust-base64" ,(p rust-base64-0.13))
  5475. ("rust-bzip2" ,(p rust-bzip2-0.4))
  5476. ("rust-capnp-rpc" ,(p rust-capnp-rpc-0.13))
  5477. ("rust-chrono" ,(p rust-chrono-0.4))
  5478. ("rust-clap" ,(p rust-clap-2))
  5479. ("rust-dirs" ,(p rust-dirs-3))
  5480. ("rust-dyn-clone" ,(p rust-dyn-clone-1))
  5481. ("rust-flate2" ,(p rust-flate2-1))
  5482. ("rust-fs2" ,(p rust-fs2-0.4))
  5483. ("rust-futures" ,(p rust-futures-0.3))
  5484. ("rust-futures-util" ,(p rust-futures-util-0.3))
  5485. ("rust-http" ,(p rust-http-0.2))
  5486. ("rust-hyper" ,(p rust-hyper-0.14))
  5487. ("rust-hyper-tls" ,(p rust-hyper-tls-0.5))
  5488. ("rust-idna" ,(p rust-idna-0.2))
  5489. ("rust-itertools" ,(p rust-itertools-0.10))
  5490. ("rust-lalrop" ,(p rust-lalrpop-0.19))
  5491. ("rust-lalrop" ,(p rust-lalrpop-util-0.19))
  5492. ("rust-nettle" ,(p rust-nettle-7))
  5493. ("rust-percent-encoding" ,(p rust-percent-encoding-2))
  5494. ("rust-predicates " ,(p rust-predicates-2))
  5495. ("rust-rand" ,(p rust-rand-0.8))
  5496. ("rust-regex" ,(p rust-regex-1))
  5497. ("rust-regex-syntax" ,(p rust-regex-syntax-0.6))
  5498. ("rust-rpassword" ,(p rust-rpassword-5))
  5499. ("rust-sha1collisiondetection" ,(p rust-sha1collisiondetection-0.2))
  5500. ("rust-syn" ,(p rust-syn-1))
  5501. ("rust-tempfile" ,(p rust-tempfile-3))
  5502. ("rust-term-size" ,(p rust-term-size-1))
  5503. ("rust-tokio-util" ,(p rust-tokio-util-0.3))
  5504. ("rust-thiserror" ,(p rust-thiserror-1))
  5505. ("rust-url" ,(p rust-url-2))
  5506. ("rust-xxhash-rust" ,(p rust-xxhash-rust-0.8))
  5507. ("rust-zbase32" ,(p rust-zbase32-0.1))))
  5508. ("nushell"
  5509. (("bat" ,(@ (gnu packages rust-apps) bat))
  5510. ("rust-atty" ,(p rust-atty-0.2))
  5511. ("rust-base64" ,(p rust-base64-0.13))
  5512. ("rust-bigdecimal" ,(p rust-bigdecimal-0.3))
  5513. ("rust-bytes" ,(p rust-bytes-1))
  5514. ("rust-bson" ,(p rust-bson-2))
  5515. ("rust-byte-unit" ,(p rust-byte-unit-4))
  5516. ("rust-calamine" ,(p rust-calamine-0.18))
  5517. ("rust-chrono" ,(p rust-chrono-0.4))
  5518. ("rust-chrono-humanize" ,(p rust-chrono-humanize-0.2))
  5519. ("rust-chrono-tz" ,(p rust-chrono-tz-0.6))
  5520. ("rust-codespan-reporting" ,(p rust-codespan-reporting-0.11))
  5521. ("rust-common-path" ,(p rust-common-path-1))
  5522. ("rust-crossterm" ,(p rust-crossterm-0.20))
  5523. ("rust-csv" ,(p rust-csv-1))
  5524. ("rust-digest" ,(p rust-digest-0.10))
  5525. ("rust-doc-comment" ,(p rust-doc-comment-0.3)) ; for tests
  5526. ("rust-derive-new" ,(p rust-derive-new-0.5))
  5527. ("rust-directories-next" ,(p rust-directories-next-2))
  5528. ("rust-dirs-next" ,(p rust-dirs-next-2))
  5529. ("rust-dtparse" ,(p rust-dtparse-1))
  5530. ("rust-dunce" ,(p rust-dunce-1))
  5531. ("rust-eml-parser" ,(p rust-eml-parser-0.1))
  5532. ("rust-encoding-rs" ,(p rust-encoding-rs-0.8))
  5533. ("rust-filesize" ,(p rust-filesize-0.2))
  5534. ("rust-fs-extra" ,(p rust-fs-extra-1))
  5535. ("rust-getset" ,(p rust-getset-0.1))
  5536. ("rust-gjson" ,(p rust-gjson-0.8))
  5537. ("rust-glob" ,(p rust-glob-0.3))
  5538. ("rust-heapless" ,(p rust-heapless-0.7)) ; for tests
  5539. ("rust-heck" ,(p rust-heck-0.4))
  5540. ("rust-hex" ,(p rust-hex-0.4))
  5541. ("rust-htmlescape" ,(p rust-htmlescape-0.3))
  5542. ("rust-ical" ,(@ (gnu packages crates-graphics) rust-ical-0.7))
  5543. ("rust-image" ,(@ (gnu packages crates-graphics) rust-image-0.23))
  5544. ("rust-is-executable" ,(p rust-is-executable-1))
  5545. ("rust-indexmap" ,(p rust-indexmap-1))
  5546. ("rust-insta" ,(p rust-insta-1))
  5547. ("rust-lazy-static" ,(p rust-lazy-static-1))
  5548. ("rust-linked-hash-map" ,(p rust-linked-hash-map-0.5))
  5549. ("rust-log" ,(p rust-log-0.4))
  5550. ("rust-md-5" ,(p rust-md-5-0.9))
  5551. ("rust-meval" ,(p rust-meval-0.2))
  5552. ("rust-mime" ,(p rust-mime-0.3))
  5553. ("rust-neso" ,(p rust-neso-0.5))
  5554. ("rust-num-bigint" ,(p rust-num-bigint-0.4))
  5555. ("rust-num-format" ,(p rust-num-format-0.4))
  5556. ("rust-num-integer" ,(p rust-num-integer-0.1))
  5557. ("rust-num-traits" ,(p rust-num-traits-0.2))
  5558. ("rust-overload" ,(p rust-overload-0.1))
  5559. ("rust-parking-lot" ,(p rust-parking-lot-0.11))
  5560. ("rust-polars" ,(p rust-polars-0.17))
  5561. ("rust-ptree" ,(p rust-ptree-0.4))
  5562. ("rust-pretty" ,(p rust-pretty-0.5)) ; Cargo.toml asks for @0.5 and @0.11 doesn't build
  5563. ("rust-pretty-env-logger" ,(p rust-pretty-env-logger-0.4))
  5564. ("rust-quick-xml" ,(p rust-quick-xml-0.22))
  5565. ("rust-rand" ,(p rust-rand-0.8))
  5566. ("rust-rawkey" ,(p rust-rawkey-0.1))
  5567. ("rust-rayon" ,(p rust-rayon-1))
  5568. ("rust-regex" ,(p rust-regex-1)) ; for tests
  5569. ("rust-reqwest" ,(p rust-reqwest-0.11))
  5570. ("rust-roxmltree" ,(p rust-roxmltree-0.14))
  5571. ("rust-rusqlite" ,(p rust-rusqlite-0.26))
  5572. ("rust-rust-embed" ,(p rust-rust-embed-5))
  5573. ("rust-rustyline" ,(p rust-rustyline-9))
  5574. ("rust-scraper" ,(p rust-scraper-0.12))
  5575. ("rust-semver" ,(p rust-semver-1))
  5576. ("rust-serde" ,(p rust-serde-1))
  5577. ("rust-serde-bytes" ,(p rust-serde-bytes-0.11))
  5578. ("rust-serde-ini" ,(p rust-serde-ini-0.2))
  5579. ("rust-serde-json" ,(p rust-serde-json-1))
  5580. ("rust-serde-urlencoded" ,(p rust-serde-urlencoded-0.7))
  5581. ("rust-serde-yaml" ,(p rust-serde-yaml-0.8))
  5582. ("rust-shadow-rs" ,(p rust-shadow-rs-0.8))
  5583. ("rust-sha2" ,(p rust-sha2-0.10))
  5584. ("rust-smart-default" ,(p rust-smart-default-0.6))
  5585. ("rust-strip-ansi-escapes" ,(p rust-strip-ansi-escapes-0.1))
  5586. ("rust-sxd-document" ,(p rust-sxd-document-0.3))
  5587. ("rust-sxd-xpath" ,(p rust-sxd-xpath-0.4))
  5588. ("rust-sysinfo" ,(p rust-sysinfo-0.23))
  5589. ("rust-sys-locale" ,(p rust-sys-locale-0.1))
  5590. ("rust-s3handler" ,(p rust-s3handler-0.7))
  5591. ("rust-term" ,(p rust-term-0.7))
  5592. ("rust-termcolor" ,(p rust-termcolor-1))
  5593. ("rust-term-size" ,(p rust-term-size-1))
  5594. ("rust-tempfile" ,(p rust-tempfile-3))
  5595. ("rust-thiserror" ,(p rust-thiserror-1))
  5596. ("rust-titlecase" ,(p rust-titlecase-1))
  5597. ("rust-tokio" ,(p rust-tokio-1))
  5598. ("rust-toml" ,(p rust-toml-0.5))
  5599. ("rust-trash" ,(p rust-trash-2))
  5600. ("rust-tui" ,(p rust-tui-0.16))
  5601. ("rust-umask" ,(p rust-umask-1))
  5602. ("rust-unicode-segmentation" ,(p rust-unicode-segmentation-1))
  5603. ("rust-unicode-width" ,(p rust-unicode-width-0.1))
  5604. ("rust-url" ,(p rust-url-2))
  5605. ("rust-users" ,(p rust-users-0.11))
  5606. ("rust-uuid" ,(p rust-uuid-0.8))
  5607. ("rust-webbrowser" ,(p rust-webbrowser-0.5))
  5608. ("rust-which" ,(p rust-which-4))
  5609. ("rust-zip" ,(p rust-zip-0.5))))
  5610. ("rust-actix" ; new inputs of new version
  5611. (("rust-futures-core" ,rust-futures-core-0.3)
  5612. ("rust-futures-sink" ,rust-futures-sink-0.3)
  5613. ("rust-futures-task" ,rust-futures-task-0.3)
  5614. ("rust-futures-util" ,rust-futures-util-0.3)
  5615. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))))
  5616. ("rust-actix-codec" ; new inputs of new version
  5617. (("rust-memchr" ,(p rust-memchr-2))
  5618. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))))
  5619. ("rust-actix-http"
  5620. (("rust-ahash" ,(p rust-ahash-0.7))
  5621. ("rust-zstd" ,(p rust-zstd-0.9))
  5622. ("rust-bytestring" ,(p rust-bytestring-0.1))
  5623. ("rust-local-channel" ,rust-local-channel) ; for ws feature
  5624. ("rust-futures-core" ,rust-futures-core-0.3) ; for ws feature
  5625. ("rust-httpdate" ,(p rust-httpdate-1))
  5626. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))
  5627. ("rust-smallvec" ,(p rust-smallvec-1))))
  5628. ("rust-actix-router" ; likewise
  5629. (("rust-firestorm" ,rust-firestorm)))
  5630. ("rust-actix-rt" ;new dependencies for new version
  5631. (("rust-futures-core" ,(p rust-futures-core-0.3))))
  5632. ("rust-actix-server" ;new dependencies for new version
  5633. (("rust-mio" ,rust-mio)
  5634. ("rust-tokio" ,rust-tokio)
  5635. ("rust-futures-core" ,rust-futures-core-0.3)
  5636. ("rust-futures-util" ,rust-futures-util-0.3)
  5637. ("rust-tracing" ,(p rust-tracing-0.1))))
  5638. ("rust-actix-service" ;likewise
  5639. (("rust-futures-core" ,rust-futures-core-0.3)
  5640. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))
  5641. ("rust-paste" ,(p rust-paste-1))))
  5642. ("rust-actix-tls" ;likewise
  5643. (("rust-futures-core" ,rust-futures-core-0.3)
  5644. ("rust-http" ,rust-http) ; for "uri" feature
  5645. ("rust-actix-rt" ,rust-actix-rt)
  5646. ("rust-log" ,(p rust-log-0.4))
  5647. ("rust-tokio-util" ,(p rust-tokio-util-0.3))))
  5648. ("rust-actix-utils" ;new dependencies for new version
  5649. (("rust-local-waker" ,rust-local-waker)
  5650. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))))
  5651. ("rust-actix-web" ;likewise (TODO doesn't build yet)
  5652. (("rust-actix-router" ,(p rust-actix-router-0.2))
  5653. ("rust-bytestring" ,(p rust-bytestring-0.1))
  5654. ("rust-smallvec" ,(p rust-smallvec-1))
  5655. ("rust-actix-web-codegen" ,rust-actix-web-codegen)
  5656. ("rust-cfg-if" ,(p rust-cfg-if-1))
  5657. ("rust-itoa" ,(p rust-itoa-1))
  5658. ("rust-language-tags" ,(p rust-language-tags-0.2))
  5659. ("rust-once-cell" ,(p rust-once-cell-1))
  5660. ("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))
  5661. ("rust-cookie" ,(p rust-cookie-0.15))
  5662. ("rust-ahash" ,(p rust-ahash-0.7))))
  5663. ("rust-actix-web-codegen" ; likewise
  5664. (("rust-actix-router" ,(p rust-actix-router-0.2))))
  5665. ("rust-aes"
  5666. (("rust-hex-literal" ,(p rust-hex-literal-0.3)))) ; for tests
  5667. ("rust-alacritty-config-derive" ; for tests
  5668. (("rust-log" ,(p rust-log-0.4))
  5669. ("rust-serde" ,(p rust-serde-1))
  5670. ("rust-serde" ,(p rust-serde-yaml-0.8))))
  5671. ("rust-alacritty-terminal"
  5672. (("rust-signal-hook-mio" ,(p rust-signal-hook-mio-0.2)) ; new dep for new version
  5673. ("rust-serde-json" ,(p rust-serde-json-1)))) ; for test
  5674. ("rust-analyzer" ; missing inputs
  5675. (("rust-hashbrown" ,(p rust-hashbrown-0.12))
  5676. ("rust-semver" ,(p rust-semver-1))
  5677. ("rust-tracing-log" ,(p rust-tracing-log-0.1))))
  5678. ("rust-aom-sys"
  5679. (("rust-system-deps" ,(p rust-system-deps-3)))) ; missing input (TODO: native-input)
  5680. ("rust-arboard"
  5681. (("xvfb-run" ,(@ (gnu packages xorg) xvfb-run)) ; for tests
  5682. ("rust-log" ,(p rust-log-0.4))
  5683. ("rust-once-cell" ,(p rust-once-cell-1))
  5684. ("rust-parking-lot" ,(p rust-parking-lot-0.11))))
  5685. ("rust-arrow2" ; test input
  5686. (("rust-doc-comment" ,(p rust-doc-comment-0.3))
  5687. ("rust-flate2" ,(p rust-flate2-1))
  5688. ("rust-proptest" ,(p rust-proptest-1))))
  5689. ("rust-async-lock" ; for tests
  5690. (("rust-async-channel" ,(p rust-async-channel-1))
  5691. ("rust-fastrand" ,(p rust-fastrand-1))
  5692. ("rust-futures-lite" ,(p rust-futures-lite-1))))
  5693. ("rust-async-std" ; for tests
  5694. (("rust-futures" ,(p rust-futures-0.3))
  5695. ("rust-rand" ,(p rust-rand-0.8))
  5696. ("rust-rand-xorshift" ,(p rust-rand-xorshift-0.3))
  5697. ("rust-tempfile" ,(p rust-tempfile-3))))
  5698. ("rust-async-trait" ; for tests
  5699. (("rust-futures" ,(p rust-futures-0.3))))
  5700. ("rust-awc" ; new dependencies for new version
  5701. (("rust-pin-project-lite" ,(p rust-pin-project-lite-0.2))
  5702. ("rust-actix-tls" ,rust-actix-tls)
  5703. ("rust-actix-utils" ,rust-actix-utils)
  5704. ("rust-ahash" ,(p rust-ahash-0.7))
  5705. ("rust-cookie" ,(p rust-cookie-0.15))
  5706. ("rust-futures-util" ,rust-futures-util-0.3)
  5707. ("rust-h2" ,(p rust-h2-0.3))
  5708. ("rust-itoa" ,(p rust-itoa-1))
  5709. ("rust-http" ,(p rust-http-0.2))
  5710. ("rust-tokio" ,rust-tokio)))
  5711. ("rust-bigdecimal"
  5712. (("rust-serde-json" ,(p rust-serde-json-1)))) ; for tests
  5713. ("rust-blake3"
  5714. (("rust-blake3-reference-impl" ,rust-blake3-reference-impl))) ; missing test input
  5715. ;; possibly only required by new version
  5716. #;("rust-boxxy" (("rust-anyhow" ,(@ (gnu packages crates-io) rust-anyhow-1)))) ; TODO: currently useless because in %removed-dependencies, revisit when tests are supported
  5717. ("rust-buffering"
  5718. (("rust-byteorder" ,(p rust-byteorder-1)))) ; for tests
  5719. ("rust-buffering-nocopy-macro" ; for new phase
  5720. (("rust-proc-macro2" ,(p rust-proc-macro2-1))))
  5721. ("rust-cairo-sys-rs"
  5722. (("cairo" ,(@ (gnu packages gtk) cairo)))) ; missing input
  5723. ("rust-cexpr" ; for tests
  5724. (("rust-clang-sys" ,(p rust-clang-sys-1))))
  5725. ("rust-chrono-tz" ; missing input
  5726. (("rust-uncased" ,(p rust-uncased-0.9))))
  5727. ("rust-clang-sys"
  5728. ;; TODO needs more work for
  5729. ,(list (list "clang" (@ (gnu packages llvm) clang-13))))
  5730. ("rust-clircle" ; for tests
  5731. (("rust-nix" ,(p rust-nix-0.23))
  5732. ("rust-tempfile" ,(p rust-tempfile-3))))
  5733. ("rust-cmake"
  5734. ,(list (list "cmake" (@ (gnu packages cmake) cmake-minimal))))
  5735. ("rust-comfy-table" ; for tests
  5736. (("rust-pretty-assertions" ,(p rust-pretty-assertions-1))
  5737. ("rust-proptest" ,(p rust-proptest-1))))
  5738. ("rust-common-path"
  5739. (("rust-rand" ,(p rust-rand-0.8)))) ; test input
  5740. ("rust-config" ; new inputs for new verison
  5741. (("rust-async-trait" ,(p rust-async-trait-0.1))
  5742. ("rust-ron" ,(p rust-ron-0.6))
  5743. ("rust-pathdiff" ,(p rust-pathdiff-0.2))))
  5744. ("rust-const-oid"
  5745. (("rust-hex-literal" ,(p rust-hex-literal-0.3)))) ; for tests
  5746. ("rust-convert-case" ; for tests
  5747. (("rust-strum" ,(p rust-strum-0.21))
  5748. ("rust-strum-macros" ,(p rust-strum-macros-0.21))))
  5749. ("rust-crossbeam-utils" ; for tests
  5750. (("rust-rand" ,(p rust-rand-0.8))
  5751. ("rust-rustversion" ,(p rust-rustversion-1))))
  5752. ("rust-crypto-bigint" ; for tests
  5753. (("rust-hex-literal" ,(p rust-hex-literal-0.3))
  5754. ("rust-num-bigint" ,(p rust-num-bigint-0.4))
  5755. ("rust-num-traits" ,(p rust-num-traits-0.2))
  5756. ("rust-proptest",(p rust-proptest-1))
  5757. ("rust-rand-chacha" ,(p rust-rand-chacha-0.3))))
  5758. ("rust-ctr"
  5759. (#;("rust-aes" ,(p rust-aes-0.7)) ; cycle
  5760. ("rust-hex-literal" ,(p rust-hex-literal-0.3))))
  5761. ("rust-dashmap" ; new inputs forn new version
  5762. (("rust-hashbrown" ,(p rust-hashbrown-0.11))
  5763. ("rust-parking-lot-core" ,(p rust-parking-lot-core-0.8))
  5764. ("rust-lock-api" ,(p rust-lock-api-0.4))))
  5765. ;; for "pem" feature
  5766. ("rust-der"
  5767. (("rust-pem-rfc7468" ,(@ (gnu packages crates-io) rust-pem-rfc7468-0.2))
  5768. ("rust-proptest" ,(p rust-proptest-1)) ; for tests
  5769. ("rust-hex-literal" ,(p rust-hex-literal-0.3)))) ; for tests
  5770. ("rust-derive-builder" ; for tests
  5771. (("rust-pretty-assertions" ,(p rust-pretty-assertions-1))
  5772. ("rust-rustversion" ,(p rust-rustversion-1))
  5773. ("rust-trybuild" ,(p rust-trybuild-1))))
  5774. ("rust-derive-builder-core"
  5775. (("rust-pretty-assertions" ,(p rust-pretty-assertions-1)))) ; for tests
  5776. ("rust-ed25519-dalek" ; for tests
  5777. (("rust-hex" ,(p rust-hex-0.4))))
  5778. ("rust-emacs-macros"
  5779. (("rust-proc-macro2" ,(p rust-proc-macro2-1)))) ; new input for new version
  5780. ("rust-embed-resource"
  5781. (("rust-cc" ,(p rust-cc-1)))) ;; TODO: native-input
  5782. ("rust-empfindung" ; for tests
  5783. (("rust-rand" ,(p rust-rand-0.8))
  5784. ("rust-rand-xoshiro" ,(p rust-rand-xoshiro-0.6))))
  5785. ("rust-enquote" ; missing input
  5786. (("rust-thiserror" ,(p rust-thiserror-1))))
  5787. ("rust-executors" ; missing test inputs
  5788. (("rust-env-logger" ,(p rust-env-logger-0.9))
  5789. ("rust-futures" ,(p rust-futures-0.3))))
  5790. ("rust-eyre" ; missing test inputs
  5791. (("rust-rustversion" ,(p rust-rustversion-1))
  5792. ("rust-thiserror" ,(p rust-thiserror-1))
  5793. ("rust-trybuild" ,(p rust-trybuild-1))))
  5794. ("rust-fancy-regex" ; test inputs
  5795. (("rust-matches" ,(p rust-matches-0.1))
  5796. ("rust-quickcheck" ,(p rust-quickcheck-1))))
  5797. ("rust-fd-lock" ; test inputs
  5798. (("rust-tempfile" ,(p rust-tempfile-3))))
  5799. ;; No need to avoid Rust dependencies.
  5800. ("rust-flate2"
  5801. ,(list (list "zlib" (@ (gnu packages compression) zlib))))
  5802. ("rust-freetype-sys"
  5803. (("freetype" ,(@ (gnu packages fontutils) freetype))))
  5804. ;; TODO: is this sufficient?
  5805. ("rust-futures-core-preview"
  5806. (("rust-futures-core" ,rust-futures-core-0.3)))
  5807. ("rust-futures-intrusive" ; for tests
  5808. (("rust-futures" ,rust-futures-0.3)
  5809. ("rust-futures-test" ,(p rust-futures-test-0.3))
  5810. ("rust-pin-utils" ,(p rust-pin-utils-0.1))))
  5811. ("rust-gag" ; for tests
  5812. (("rust-lazy-static" ,(p rust-lazy-static-1))))
  5813. ("rust-galil-seiferas"
  5814. (("rust-matches" ,(p rust-matches-0.1)))) ; for tests
  5815. ("rust-gdk" ; for tests
  5816. (("xvfb-run" ,(@ (gnu packages xorg) xvfb-run))))
  5817. ("rust-ghost" ; for tests
  5818. (("rust-rustversion" ,(p rust-rustversion-1))
  5819. ("rust-trybuild" ,(p rust-trybuild-1))))
  5820. ("rust-gif" ; for tests
  5821. (("rust-glob" ,(p rust-glob-0.3))))
  5822. ("rust-giml"
  5823. (("rust-test-assembler" ,(p rust-test-assembler-0.1)))) ; for tests
  5824. ("rust-gio"
  5825. (("rust-futures-util" ,(p rust-futures-util-0.3)) ; for tests
  5826. ("glib:bin" ,(@ (gnu packages glib) glib) "bin"))) ; for tests
  5827. ("rust-git2"
  5828. (("rust-tempfile" ,(p rust-tempfile-3)))) ; for tests
  5829. ("rust-glib"
  5830. (("rust-futures-core" ,(p rust-futures-core-0.3)) ; for tests
  5831. ("rust-futures-util" ,(p rust-futures-util-0.3)) ; for tests
  5832. ("rust-tempfile" ,(p rust-tempfile-3)) ; for tests
  5833. ("rust-thiserror" ,(p rust-thiserror-1)))) ; for new version
  5834. ("rust-gtk"
  5835. (("xvfb-run" ,(@ (gnu packages xorg) xvfb-run)))) ; for tests
  5836. ("rust-h2"
  5837. ;; for tests
  5838. (("rust-env-logger" ,(p rust-env-logger-0.9))
  5839. ("rust-hex" ,(p rust-hex-0.4))
  5840. ("rust-serde-json" ,(p rust-serde-json-1))
  5841. ("rust-quickcheck" ,(p rust-quickcheck-1))
  5842. ("rust-rand" ,(p rust-rand-0.8))))
  5843. ("rust-hash-hasher"
  5844. (("rust-rand" ,(p rust-rand-0.8)))) ; for tests
  5845. ("rust-hashlink" ; for tests
  5846. (("rust-fxhash" ,(p rust-fxhash-0.2))))
  5847. ("rust-hdrhistogram"
  5848. (("rust-rand" ,(p rust-rand-0.8)))) ; for tests
  5849. ("rust-headers"
  5850. (("rust-httpdate" ,(p rust-httpdate-1)))) ; new dependency
  5851. ("rust-hex"
  5852. (("rust-pretty-assertions" ,(p rust-pretty-assertions-1)))) ; for tests
  5853. ("rust-hkdf" ; for tests
  5854. (("rust-hex-literal" ,(p rust-hex-literal-0.3))))
  5855. ("rust-hmac" ; for tests
  5856. (("rust-sha-1" ,(p rust-sha-1-0.10))
  5857. ("rust-sha2" ,(p rust-sha2-0.10))
  5858. ("rust-streebog" ,(p rust-streebog-0.10))
  5859. ("rust-md-5" ,(p rust-md-5-0.9))))
  5860. ("rust-hmac-sha1"
  5861. (("rust-hex" ,(p rust-hex-0.4)))) ; for tests
  5862. ("rust-http-body" ; at least for 0.4
  5863. (("rust-pin-project-lite" ,(@ (gnu packages crates-io) rust-pin-project-lite-0.2))
  5864. ("rust-tokio" ,(p rust-tokio-1)))) ; for tests
  5865. ("rust-image" (("rust-exr" ,rust-exr)
  5866. ("rust-quickcheck" ,(p rust-quickcheck-1)))) ; for tests
  5867. ("rust-indoc" ; for tests
  5868. (("rust-rustversion" ,(p rust-rustversion-1))
  5869. ("rust-trybuild" ,(p rust-trybuild-1))))
  5870. ("rust-is-executable"
  5871. (("rust-diff" ,(p rust-diff-0.1)))) ; for tests
  5872. ("rust-jsonpath-lib"
  5873. (("rust-env-logger" ,(p rust-env-logger-0.9)))) ; for tests
  5874. ("rust-jsonrpc-core" ; new inputs for new version
  5875. (("rust-futures-executor" ,rust-futures-executor-0.3)
  5876. ("rust-futures-util" ,rust-futures-util-0.3)))
  5877. ("rust-lalrpop" (("rust-tiny-keccak" ,(p rust-tiny-keccak-2))
  5878. ("rust-pico-args" ,rust-pico-args)))
  5879. ("rust-lettre"
  5880. (("rust-socket2" ,(p rust-socket2-0.4))
  5881. ("rust-fastrand" ,(p rust-fastrand-1))
  5882. ("rust-email-address" ,rust-email-address)
  5883. ("rust-email-encoding" ,rust-email-encoding)
  5884. ("rust-idna" ,(p rust-idna-0.2))
  5885. ("rust-mime" ,(p rust-mime-0.3))
  5886. ("rust-httpdate" ,(p rust-httpdate-1))
  5887. ("rust-pretty-assertions" ,(p rust-pretty-assertions-1)) ; for tests
  5888. ("rust-quoted-printable" ,(p rust-quoted-printable-0.4))))
  5889. ("rust-lexical-parse-float" ; for tests
  5890. (("rust-proptest" ,(p rust-proptest-1))
  5891. ("rust-quickcheck" ,(p rust-quickcheck-1))))
  5892. ("rust-lexical-parse-integer" ; for tests
  5893. (("rust-proptest" ,(p rust-proptest-1))))
  5894. ("rust-lexical-util" ; for tests
  5895. (("rust-proptest" ,(p rust-proptest-1))
  5896. ("rust-quickcheck" ,(p rust-quickcheck-1))))
  5897. ("rust-lexical-write-float" ; for tests
  5898. (("rust-proptest" ,(p rust-proptest-1))
  5899. ("rust-quickcheck" ,(p rust-quickcheck-1))))
  5900. ("rust-lexical-write-integer" ; for tests
  5901. (("rust-proptest" ,(p rust-proptest-1))
  5902. ("rust-quickcheck" ,(p rust-quickcheck-1))))
  5903. ("rust-libsqlite3-sys" (("sqlite" ,(@ (gnu packages sqlite) sqlite)))) ; missing dependencies (the old versions of rust-libsqlite3-sys acurately add this dependency!),see #56032
  5904. ("rust-lz4" ; for tests
  5905. (("rust-docmatic" ,(p rust-docmatic-0.1))
  5906. ("rust-rand" ,(p rust-rand-0.8))))
  5907. ("rust-matrixmultiply" (("rust-itertools" ,(p rust-itertools-0.10)))) ; for tests
  5908. ("rust-merge" (("rust-trybuild" ,(p rust-trybuild-1)))) ; for tests
  5909. ("rust-merge-derive" (("rust-syn" ,(p rust-syn-1)) ; missing inputs
  5910. ("rust-quote" ,(p rust-quote-1))
  5911. ("rust-proc-macro2" ,(p rust-proc-macro2-1))
  5912. ("rust-proc-macro-error" ,(p rust-proc-macro-error-1))))
  5913. ("rust-meval" (("rust-serde-json" ,(p rust-serde-json-1)) ; for tests
  5914. ("rust-serde-test" ,(p rust-serde-test-1)))) ; for tests
  5915. ("rust-multiversion" (("rust-rustversion" ,(p rust-rustversion-1)))) ; for tests
  5916. ;; contains pkg-config files
  5917. ("rust-mysqlclient-sys" (("mariadb:dev" ,(@ (gnu packages databases) mariadb) "dev")))
  5918. ("rust-napi-sys" ; TODO: node-lts is newer than node
  5919. (("node" ,(@ (gnu packages node) node-lts))))
  5920. ("rust-ncurses" (("ncurses" ,(@ (gnu packages ncurses) ncurses)))) ; missing input
  5921. ("rust-nitrokey"
  5922. (("rust-nitrokey-test" ,(p rust-nitrokey-test-0.5))
  5923. ("rust-nitrokey-test-state" ,(p rust-nitrokey-test-state-0.1))))
  5924. ("rust-nitrokey-sys" (("libnitrokey" ,(@ (gnu packages security-token) libnitrokey))
  5925. ("rust-bindgen" ,(p rust-bindgen-0.59)) ; TODO: actually a native-input
  5926. ("rust-cc" ,(p rust-cc-1)))) ; TODO: actually a native-input
  5927. ("rust-nitrokey-test" ; for tests
  5928. (("rust-quote" ,(p rust-quote-1))
  5929. ("rust-syn" ,(p rust-syn-1))))
  5930. ("rust-nix" ; for tests
  5931. (("rust-assert-impl" ,(p rust-assert-impl-0.1)) ; required by tests (TODO: maybe native-inputs)
  5932. ("rust-caps" ,(p rust-caps-0.5))
  5933. ("rust-lazy-static" ,(p rust-lazy-static-1))
  5934. ("rust-parking-lot" ,(p rust-parking-lot-0.11))
  5935. ("rust-rand" ,(p rust-rand-0.8))
  5936. ("rust-semver" ,(p rust-semver-1))
  5937. ("rust-tempfile" ,(p rust-tempfile-3))))
  5938. ("rust-partial-io"
  5939. ;; for tests
  5940. (("rust-itertools" ,(p rust-itertools-0.10))))
  5941. ("rust-pkcs1"
  5942. (("rust-hex-literal" ,(p rust-hex-literal-0.3)) ; for tests
  5943. ;; for "pem" and "alloc" feature
  5944. ("rust-pkcs8" ,(@ (gnu packages crates-io) rust-pkcs8-0.7))))
  5945. ;; for "cbc" feature
  5946. ("rust-pkcs5"
  5947. (("rust-cbc" ,rust-cbc)
  5948. ("rust-hex-literal" ,(p rust-hex-literal-0.3)) ; for tests
  5949. ("rust-sha1" ,rust-sha1))) ; missing dep (for pbes2)
  5950. ("rust-pkcs8"
  5951. (("rust-hex-literal" ,(p rust-hex-literal-0.3)))) ; for tests
  5952. ("rust-plist"
  5953. (("rust-serde-derive" ,(p rust-serde-derive-1)))) ; for tests
  5954. ("rust-prost" ; for tests
  5955. (("rust-proptest" ,(p rust-proptest-1))))
  5956. ("rust-publicsuffix" ; for tests
  5957. (("rust-lazy-static" ,(p rust-lazy-static-1))
  5958. ("rust-rspec" ,(p rust-rspec-1))))
  5959. ("rust-pyo3-macros" ; missing inputs
  5960. (("rust-proc-macro2" ,(p rust-proc-macro2-1))))
  5961. ("rust-raw-window-handle" ; new input for new dependency
  5962. (("rust-cty" ,(p rust-cty-0.2))))
  5963. ("rust-reqwest" ; new inputs for new version
  5964. (("rust-h2" ,rust-h2)))
  5965. ("rust-rmp" ; for tests
  5966. (("rust-quickcheck" ,(p rust-quickcheck-1))))
  5967. ("rust-rmp-serde" ; for tests
  5968. (("rust-serde-bytes" ,(p rust-serde-bytes-0.11))
  5969. ("rust-serde-derive" ,(p rust-serde-derive-1))))
  5970. ("rust-ron"
  5971. (("rust-serde-bytes" ,(p rust-serde-bytes-0.11))))
  5972. ("rust-roxmltree" ; for tests
  5973. (("rust-pretty-assertions" ,(p rust-pretty-assertions-1))))
  5974. ("rust-rspotify" (("rust-tokio" ,rust-tokio))) ; for tests
  5975. ("rust-rusqlite"
  5976. (("rust-tempfile" ,(p rust-tempfile-3)))) ; for tests
  5977. ("rust-rust-htslib" ; missing input
  5978. (("rust-tempfile" ,(p rust-tempfile-3))))
  5979. ("rust-rustyline" ; for tests
  5980. (("rust-assert-matches" ,(p rust-assert-matches-1))
  5981. ("rust-tempfile" ,(p rust-tempfile-3))))
  5982. ("rust-s3handler" ; new dependency for new version
  5983. (("rust-thiserror" ,(p rust-thiserror-1))))
  5984. ("rust-send-wrapper" ; missing inputs
  5985. (("rust-futures-core" ,rust-futures-core-0.3)
  5986. ("rust-futures-executor" ,rust-futures-executor-0.3)
  5987. ("rust-futures-util" ,rust-futures-util-0.3)))
  5988. ("rust-sequoia-net" ; missing test inputs
  5989. (("rust-rand" ,(p rust-rand-0.8))
  5990. ("rust-tokio" ,(p rust-tokio-1))))
  5991. ("rust-serde-ini" ; for tests
  5992. (("rust-serde-derive" ,(p rust-serde-derive-1))))
  5993. ("rust-serde-repr" ; for tests
  5994. (("rust-serde" ,(p rust-serde-1))
  5995. ("rust-serde-json" ,(p rust-serde-json-1))
  5996. ("rust-rustversion" ,(p rust-rustversion-1))
  5997. ("rust-trybuild" ,(p rust-trybuild-1))))
  5998. ("rust-serde-urlencoded" ; for tests
  5999. (("rust-serde-derive" ,(p rust-serde-derive-1))))
  6000. ("rust-servo-fontconfig-sys"
  6001. (("fontconfig" ,(@ (gnu packages fontutils) fontconfig))))
  6002. ("rust-sha-1" (("rust-hex-literal" ,(p rust-hex-literal-0.3)))) ; for tests
  6003. ("rust-sha1" (("rust-digest" ,rust-digest)
  6004. ("rust-cfg-if" ,(p rust-cfg-if-1)) ;missing dep
  6005. ("rust-cpufeatures" ,(p rust-cpufeatures-0.2))
  6006. ("rust-hex-literal" ,(p rust-hex-literal-0.3)))) ; for tests
  6007. ("rust-sha1collisiondetection" ; for tests
  6008. (("rust-hex-literal" ,(p rust-hex-literal-0.3))))
  6009. ("rust-shared-child"
  6010. (("python-minimal" ,(@ (gnu packages python) python-minimal-wrapper)))) ; for tests
  6011. ("rust-signal-hook" ; for tests
  6012. (("rust-serial-test" ,(p rust-serial-test-0.6))))
  6013. ("rust-signal-hook-mio" ; for tests
  6014. (("rust-serial-test" ,(p rust-serial-test-0.6))))
  6015. ("rust-signal-hook-mio+old" ; for tests
  6016. (("rust-serial-test" ,(p rust-serial-test-0.6))))
  6017. ("rust-siphasher"
  6018. (("rust-serde-json" ,(p rust-serde-json-1)))) ; for tests
  6019. ("rust-smithay-client-toolkit" ; new inputs for new version
  6020. (("rust-pkg-config" ,(p rust-pkg-config-0.3)) ; TODO: actually a native-input
  6021. ("libxkbcommon" ,(@ (gnu packages xdisorg) libxkbcommon))))
  6022. ("rust-spki" (("rust-hex-literal" ,(p rust-hex-literal-0.3)) ; for tests
  6023. ;; for "sha1" and "sha2" features
  6024. ("rust-sha1" ,rust-sha1)
  6025. ("rust-base64ct" ,(p rust-base64ct-1)) ; missing dep
  6026. ("rust-sha2" ,(@ (gnu packages crates-io) rust-sha2-0.10))))
  6027. ("rust-sprs" (("rust-num-derive" ,(p rust-num-derive-0.3))
  6028. ("rust-tempfile" ,(p rust-tempfile-3)))) ; for tests
  6029. ("rust-sqlite" (("rust-temporary" ,(p rust-temporary-0.6)))) ; for tests
  6030. ("rust-sqlite3-src" (("sqlite" ,(@ (gnu packages sqlite) sqlite))))
  6031. ("rust-sqlite3-sys" (("rust-temporary" ,(p rust-temporary-0.6)))) ; for tests
  6032. ("rust-strength-reduce" ; for tests
  6033. (("rust-num-bigint" ,(p rust-num-bigint-0.4))
  6034. ("rust-proptest" ,(p rust-proptest-1))
  6035. ("rust-rand" ,(p rust-rand-0.8))))
  6036. ("rust-structopt" ; for paw feature
  6037. (("rust-paw" ,(p rust-paw-1))
  6038. ("rust-rustversion" ,(p rust-rustversion-1)) ; for tests
  6039. ("rust-trybuild" ,(p rust-trybuild-1)))) ; for tests
  6040. ("rust-swayipc"
  6041. (("rust-futures-core" ,rust-futures-core-0.3)
  6042. ("rust-failure" ,(p rust-failure-0.1))))
  6043. ("rust-swayipc+sync"
  6044. (("rust-futures-core" ,rust-futures-core-0.3)
  6045. ("rust-failure" ,(p rust-failure-0.1))))
  6046. ("rust-syscallz" ; for tests
  6047. (("rust-libc" ,(p rust-libc-0.2))))
  6048. ("rust-sysinfo" ; for tests (TODO: maybe native-inputs)
  6049. (("rust-tempfile" ,(p rust-tempfile-3))))
  6050. ("rust-syslog"
  6051. (("rust-hostname" ,(p rust-hostname-0.3)))) ; new dependency of new version of rust-syslog
  6052. ("rust-tectonic-bridge-core"
  6053. ;; TODO: native-input
  6054. ;; Required in rust-tectonic-bridge-core@0.3 for extra 'regenerate-cbindgen-things'
  6055. ;; phase.
  6056. (("rust-cbindgen" ,rust-cbindgen-0.19)))
  6057. ("rust-tectonic-bridge-freetype2"
  6058. (("freetype" ,(@ (gnu packages fontutils) freetype))))
  6059. ("rust-tectonic-bridge-graphite2"
  6060. (("graphite2" ,(@ (gnu packages fontutils) graphite2))))
  6061. ("rust-tectonic-bridge-harfbuzz"
  6062. (("freetype" ,(@ (gnu packages fontutils) freetype))
  6063. ("harfbuzz" ,(@ (gnu packages gtk) harfbuzz))))
  6064. ("rust-tectonic-bridge-icu"
  6065. (("icu4c" ,(@ (gnu packages icu4c) icu4c))))
  6066. ("rust-tectonic-engine-xetex" ; missing input (TODO: maybe detect (upstream) in rust-tectonic-xetex-layout to add to the list?)
  6067. (("fontconfig" ,(@ (gnu packages fontutils) fontconfig))
  6068. ("harfbuzz" ,(@ (gnu packages gtk) harfbuzz))))
  6069. ("rust-tectonic-xetex-layout" ; missing input
  6070. (("fontconfig" ,(@ (gnu packages fontutils) fontconfig))
  6071. ("harfbuzz" ,(@ (gnu packages gtk) harfbuzz)))) ; missing input, .pc points to a subdirectory while it shouldn't or #include <harfbuzz/hb.h> needs to be replaced by #include <harfbuzz/hb.h>
  6072. ("rust-tera" ; for tests
  6073. (("rust-pest-derive" ,(p rust-pest-derive-2))
  6074. ("rust-serde-derive" ,(p rust-serde-derive-1))
  6075. ("rust-tempfile" ,(p rust-tempfile-3))))
  6076. ("rust-test-cert-gen"
  6077. (("openssl" ,(@ (gnu packages tls) openssl-3.0))))
  6078. ("rust-thread-tree"
  6079. (("rust-once-cell" ,(p rust-once-cell-1)))) ; for tests
  6080. ("rust-time" ; new inputs for new version
  6081. (("rust-num-threads" ,rust-num-threads)))
  6082. ("rust-tokio" ; new dependency for new version
  6083. (("rust-socket2" ,(p rust-socket2-0.4))))
  6084. ("rust-tokio-native-tls" ; for tests
  6085. (("rust-cfg-if" ,(p rust-cfg-if-1))
  6086. ("rust-env-logger" ,(p rust-env-logger-0.9))
  6087. ("rust-futures" ,(p rust-futures-0.3))
  6088. ("rust-lazy-static" ,(p rust-lazy-static-1))
  6089. ("rust-tempfile" ,(p rust-tempfile-3))))
  6090. ("rust-tokio-rustls"
  6091. ;; TODO: check that there are no time bombs embedded
  6092. (("rust-futures-util" ,(p rust-futures-util-0.3)) ; test input
  6093. ("rust-rustls-pemfile" ,(p rust-rustls-pemfile-0.2))))
  6094. ("rust-tokio-socks" ; for tests
  6095. (("rust-once-cell" ,(p rust-once-cell-1))
  6096. ("rust-proptest" ,(p rust-proptest-1))
  6097. ("rust-futures-executor" ,rust-futures-executor-0.3)))
  6098. ("rust-tokio-sync"
  6099. ;; TODO: remove 'preview' dependencies?
  6100. (("rust-futures-core" ,rust-futures-core-0.3)
  6101. ("rust-futures-sink" ,rust-futures-sink-0.3)
  6102. ("rust-futures-util" ,rust-futures-util-0.3)))
  6103. ("rust-tokio-util"
  6104. (("rust-futures" ,rust-futures-0.3) ; for tests
  6105. ("rust-tracing" ,(p rust-tracing-0.1)) ; missing dependency
  6106. ("rust-tokio-stream" ,(p rust-tokio-stream-0.1)))) ; for tests
  6107. ("rust-tonic" ; for tests
  6108. (("rust-quickcheck" ,(p rust-quickcheck-1))
  6109. ("rust-quickcheck-macros" ,(p rust-quickcheck-macros-1))
  6110. ("rust-static-assertions" ,(p rust-static-assertions-1))))
  6111. ("rust-trash" ; test inputs
  6112. (("rust-once-cell" ,(p rust-once-cell-1))
  6113. ("rust-env-logger" ,(p rust-env-logger-0.9))))
  6114. ("rust-tree-magic-mini" ; new inputs for new version
  6115. (("rust-bytecount" ,(p rust-bytecount-0.6))
  6116. ("rust-once-cell" ,(p rust-once-cell-1))
  6117. ("shared-mime-info" ,(@ (gnu packages gnome) shared-mime-info))))
  6118. ("rust-trust-dns-resolver"
  6119. ;; For tests.
  6120. (("rust-futures-executor" ,rust-futures-executor-0.3)
  6121. ("rust-env-logger" ,(p rust-env-logger-0.9))))
  6122. ("rust-tungstenite"
  6123. (("rust-thiserror" ,(p rust-thiserror-1))))
  6124. ("rust-uuid"
  6125. (("rust-serde-derive" ,(p rust-serde-derive-1)) ; for tests
  6126. ("rust-serde-test" ,(p rust-serde-test-1)))) ; for tests
  6127. ("rust-vergen"
  6128. (("rust-lazy-static" ,(p rust-lazy-static-1)) ; for tests
  6129. ("rust-regex" ,(p rust-regex-1))))
  6130. ("rust-warp" ; new dependencies for new version
  6131. (("rust-futures-channel" ,(p rust-futures-channel-0.3))
  6132. ("rust-futures-util" ,(p rust-futures-util-0.3))
  6133. ("rust-tokio-util" ,rust-tokio-util-0.7)
  6134. ("rust-rustls-pemfile" ,(p rust-rustls-pemfile-0.2))
  6135. ("rust-percent-encoding" ,(p rust-percent-encoding-2))
  6136. ("rust-pretty-env-logger" ,(p rust-pretty-env-logger-0.4)) ; for tests
  6137. ("rust-serde-derive" ,(p rust-serde-derive-1)) ; for tests
  6138. ("rust-tracing-log" ,(p rust-tracing-log-0.1)) ; for tests
  6139. ("rust-tracing-subscriber" ,(p rust-tracing-subscriber-0.3)))) ; for tests
  6140. ("rust-wayland-cursor" ; new dependencies for new version
  6141. (("rust-xcursor" ,(p rust-xcursor-0.3))
  6142. ("rust-wayland-client" ,(@ (gnu packages crates-graphics) rust-wayland-client-0.28))))
  6143. ("rust-wl-clipboard-rs" ; for tests
  6144. (("rust-wayland-server" ,(@ (gnu packages crates-graphics) rust-wayland-server-0.29))))
  6145. ("rust-x11" ; missing inputs
  6146. (("libx11" ,(@ (gnu packages xorg) libx11))
  6147. ("libxcursor" ,(@ (gnu packages xorg) libxcursor))
  6148. ("libxext" ,(@ (gnu packages xorg) libxext))
  6149. ("libxft" ,(@ (gnu packages xorg) libxft))
  6150. ("libxi" ,(@ (gnu packages xorg) libxi))
  6151. ("libxinerama" ,(@ (gnu packages xorg) libxinerama))
  6152. ("libxmu" ,(@ (gnu packages xorg) libxmu))
  6153. ("libxrandr" ,(@ (gnu packages xorg) libxrandr))
  6154. ("libxscrnsaver" ,(@ (gnu packages xorg) libxscrnsaver))
  6155. ("libxt" ,(@ (gnu packages xorg) libxt))
  6156. ("libxtst" ,(@ (gnu packages xorg) libxtst))
  6157. ("libxxf86vm" ,(@ (gnu packages xorg) libxxf86vm))))
  6158. ("rust-x11-clipboard" ; for tests
  6159. (("xvfb-run" ,(@ (gnu packages xorg) xvfb-run))))
  6160. ("rust-x11rb" ; missing inputs
  6161. (("libxcb" ,(@ (gnu packages xorg) libxcb))))
  6162. ("rust-yansi"
  6163. (("rust-parking-lot" ,(p rust-parking-lot-0.11)))) ; test input
  6164. ("rust-zip" ; new inputs for new version
  6165. (("rust-zstd" ,(p rust-zstd-0.9))))
  6166. ("rust-zstd-sys"
  6167. (("zstd:lib" ,(@ (gnu packages compression) zstd) "lib")))
  6168. ("sniffglue" (("rust-bstr" ,(@ (gnu packages crates-io) rust-bstr-0.2))))))
  6169. (define %no-parallel-tests?
  6170. '("rust-trash")) ; otherwise tests::os_limited::restore_twins fails non-deterministically
  6171. (define %test-options
  6172. '(("alfis"
  6173. ;; Keep cargo-build-system test options
  6174. "--exact"
  6175. "--skip=dns::client::tests::test_tcp_client"
  6176. "--skip=dns::client::tests::test_udp_client")
  6177. ("nushell"
  6178. ;; nu-completion
  6179. ;; TODO: investigate
  6180. "--skip=variable::tests::structure"
  6181. ;; nu-engine
  6182. ;; TODO: missing tests files or looks in wrong location
  6183. "--skip=filesystem::utils::tests::prepares_and_decorates_filesystem_source_files"
  6184. ;; TODO: tries looking in /tmp/target/release
  6185. "--skip=evaluate"
  6186. ;; nu-command
  6187. ;; TODO: tries looking in /tmp/target/release
  6188. "--skip=commands::core_commands::if_::tests::if_doesnt_leak_on_error"
  6189. ;; TODO: correct configuration path
  6190. "--skip=commands::env::with_env::tests::examples_work_as_expected"
  6191. "--skip=commands::tests::examples_work_as_expected"
  6192. ;; nu-json
  6193. ;; TODO: looks in non-existent /tmp/tests/assets/nu_json
  6194. "--skip=test_hjson"
  6195. ;; nu-parser
  6196. ;; TODO: tries looking in /tmp/target/release for binaries
  6197. ;; -- maybe patch test code to look in the right location?
  6198. ;; TODO: check if nushell plugins work
  6199. "--skip=parse::def::tests::err_wrong_dash_count"
  6200. "--skip=parse::def::tests::err_wrong_dash_count2"
  6201. "--skip=parse::def::tests::err_wrong_type"
  6202. ;; nu-serde
  6203. "--skip=test::it_serializes_return_value_list"
  6204. "--skip=test::it_works_with_single_integers"
  6205. "--skip=test::it_works_with_lists_of_values"
  6206. "--skip=test::it_works_with_complex_structs"
  6207. ;; nu-test-support
  6208. ;; TODO: missing tests files or looks in wrong location
  6209. "--skip=playground::tests")
  6210. ("rust-alacritty-terminal"
  6211. "--exact"
  6212. ;; TODO: report upstream (after checking that dependencies are up-to-date)
  6213. "--skip=sgr"
  6214. "--skip=vim_simple_edit"
  6215. "--skip=vim_large_window_scroll"
  6216. "--skip=vim_24bitcolors_bce")
  6217. ("rust-analyzer"
  6218. ;; Keep entry from cargo-buid-system, see (gnu packages rust-apps)
  6219. ;; for copyright lines.
  6220. "--skip=tests::test_version_check" ;it need rustc's version
  6221. ;; FIXME: Guix's rust does not install source in
  6222. ;; %out/lib/rustlib/src/rust so "can't load standard library from
  6223. ;; sysroot"
  6224. "--skip=tests::test_loading_rust_analyzer"
  6225. ;; Failed to run rustfmt from toolchain 'stable'. Please run `rustup
  6226. ;; component add rustfmt --toolchain stable` to install it
  6227. "--skip=tests::sourcegen::sourcegen_assists_docs" ;need rustfmt
  6228. "--skip=tests::sourcegen_ast::sourcegen_ast" ;same
  6229. "--skip=tidy::cargo_files_are_tidy" ;not needed
  6230. "--skip=tidy::check_licenses" ;it runs cargo metadata
  6231. "--skip=tidy::check_merge_commits" ;it runs git rev-list
  6232. "--skip=tidy::check_code_formatting" ;need rustfmt as cargo fmt
  6233. "--skip=tidy::generate_grammar" ;same
  6234. "--skip=tidy::generate_assists_tests") ;same
  6235. ("rust-arrow2"
  6236. "--exact"
  6237. ;; These tests assume that debug assertions are enabled.
  6238. "--skip=compute::arithmetics::basic::add::test_add_panic"
  6239. "--skip=compute::arithmetics::basic::mul::test_mul_panic"
  6240. "--skip=compute::arithmetics::basic::sub::test_sub_panic"
  6241. ;; TODO: missing test files
  6242. "--skip=io::parquet::read::schema::metadata::tests::test_basic")
  6243. ("rust-async-std"
  6244. "--exact"
  6245. ;; Going by how io_timeout_timedout is skipped upstream
  6246. ;; for every non-x86-64 architecture, and it has a comment
  6247. ;; 'stdin tests fail when running through cross', it appears
  6248. ;; that this test makes incorrect assumptions about the build
  6249. ;; environment.
  6250. "--skip=io_timeout_timedout")
  6251. ("rust-assert-cli"
  6252. "--exact"
  6253. ;; assumes "printenv" (TODO: add it to the environment)
  6254. "--skip=assert::test::take_vec"
  6255. "--skip=assert::test::take_string_i32"
  6256. "--skip=assert::test::take_slice"
  6257. "--skip=assert::test::take_slice_of_strs"
  6258. "--skip=assert::test::take_slice_of_strings"
  6259. "--skip=assert::test::in_place_mod3"
  6260. ;; Assumes it is run in a terminal (TODO: wrap the test runner with "screen" or such)
  6261. "--skip=diff::tests::multiline_diff"
  6262. "--skip=diff::tests::basic_diff"
  6263. "--skip=diff::tests::added_first_line_diff"
  6264. "--skip=assert::test::empty_env"
  6265. ;; Assumes Cargo
  6266. "--skip=main_binary"
  6267. "--skip=cargo_binary")
  6268. ("rust-atk-sys"
  6269. "--exact"
  6270. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6271. "--skip=cross_validate_layout_with_c"
  6272. "--skip=cross_validate_constants_with_c")
  6273. ("rust-clap-conf"
  6274. "--exact"
  6275. ;; TODO: looks in the wrong place, correct location (maybe with substitute*)
  6276. "--skip=tests::try_holder")
  6277. ("rust-console-error-panic-hook"
  6278. "--exact"
  6279. ;; Depends on Cargo, and the test does not seem useful for Guix.
  6280. "--skip=cargo_readme_up_to_date")
  6281. ("rust-daemonize"
  6282. "--exact"
  6283. ;; the 'nobody' group does not exist in the build environment
  6284. "--skip=ffi::tests::test_get_gid_by_name")
  6285. ("rust-derive-builder-core"
  6286. "--exact"
  6287. ;; The error message is slightly different from what was expected,
  6288. ;; maybe report upstream if persists after update.
  6289. "--skip=block::test::block_invalid_token_trees")
  6290. ("rust-ed25519-dalek"
  6291. "--exact"
  6292. ;; missing test files
  6293. "--skip=vectors::against_reference_implementation")
  6294. ("rust-eml-parser"
  6295. ;; Fixed in new version: <https://github.com/aeshirey/EmlParser/commit/c7695f36aa3889eb775a8ad6745ed48ab4672cdd>,
  6296. ;; remove on package update!
  6297. "--exact"
  6298. "--skip=parser::tests::basic_test")
  6299. ("rust-error-chain"
  6300. "--exact"
  6301. ;; This test requires examples to be built, and antioxidant does not
  6302. ;; support examples yet.
  6303. "--skip=has_backtrace_depending_on_env")
  6304. ("rust-exr"
  6305. "--exact"
  6306. ;; missing test fils
  6307. "--skip=compression::b44::test::border_on_multiview"
  6308. "--skip=image::validate_results::test_value_result::test_error")
  6309. ("rust-failure"
  6310. "--exact"
  6311. ;; Test failure seems harmless (the failing test did not expect
  6312. ;; two trailing newlines to be added to the error message) and
  6313. ;; upstream has been 'archived' so reporting upstream is not
  6314. ;; possible anymore.
  6315. "--skip=error::test::methods_seem_to_work")
  6316. ("rust-flume"
  6317. "--exact"
  6318. ;; Test hang might be due to incompatible versions of test dependencies
  6319. ;; (rust-crossbeam-channel and rust-crssbeam-utils)
  6320. "--skip=select_general")
  6321. ("rust-font-kit"
  6322. "--exact"
  6323. ;; TODO: missing file
  6324. "--skip=loaders::freetype::test::get_pcf_postscript_name")
  6325. ("rust-fslock"
  6326. "--exact"
  6327. ;; TODO: compiling examples is not yet supported by antioxidant
  6328. "--skip=test::other_process_but_curr_reads"
  6329. "--skip=test::other_process"
  6330. "--skip=test::other_process_pid")
  6331. ("rust-futures-intrusive"
  6332. "--exact"
  6333. ;; Assumes debug assertions.
  6334. "--skip=if_std::mpmc_channel_tests::try_send_unbuffered_panics"
  6335. "--skip=local_mpmc_channel_tests::try_send_unbuffered_panics")
  6336. ("rust-gethostname"
  6337. "--exact"
  6338. ;; Tries running "hostname", which does not exist in the build environment.
  6339. "--skip=tests::gethostname_matches_system_hostname")
  6340. ("rust-git2"
  6341. "--exact"
  6342. ;; These tests fail. TODO: report them if still present
  6343. ;; after updating to latest.
  6344. "--skip=build::tests::smoke2"
  6345. "--skip=remote::tests::push"
  6346. "--skip=remote::tests::transfer_cb"
  6347. "--skip=submodule::tests::clone_submodule"
  6348. "--skip=index::tests::add_then_read"
  6349. "--skip=worktree::tests::smoke_add_from_branch"
  6350. "--skip=worktree::tests::smoke_add_locked"
  6351. "--skip=worktree::tests::smoke_add_no_ref")
  6352. ("rust-gtk-sys"
  6353. "--exact"
  6354. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6355. "--skip=cross_validate_layout_with_c"
  6356. "--skip=cross_validate_constants_with_c")
  6357. ("rust-hamcrest2"
  6358. "--exact"
  6359. ;; Only exists in Cargo, not antioxidant
  6360. "--skip=path_exists::a_dir_exists")
  6361. ("rust-h2"
  6362. ;; missing test files (TODO: maybe use git checkout?)
  6363. "--skip=hpack::test::fixture")
  6364. ("rust-ansi-term"
  6365. "--exact"
  6366. "--skip=debug::test::long_and_detailed") ; fails because the new rust-serde-json outputs things a little different from what rust-ansi-term is used to, seems harmless
  6367. ("rust-arrayref"
  6368. "--exact"
  6369. ;; reported upstream: https://github.com/droundy/arrayref/issues/22
  6370. "--skip=test::check_array_mut_ref_7"
  6371. "--skip=test::check_array_ref_5"
  6372. "--skip=test::check_array_ref_out_of_bounds_5"
  6373. "--skip=test::check_array_mut_ref_out_of_bounds_32")
  6374. ("rust-backtrace"
  6375. "--exact"
  6376. ;; Cause of failure is unknown, issue is tracked upstream at
  6377. ;; <https://github.com/rust-lang/backtrace-rs/issues/484>.
  6378. "--skip=smoke_test_frames"
  6379. ;; TODO: missing test file "libdylib_dep.so"
  6380. "--skip=doit")
  6381. ("rust-bigdecimal"
  6382. "--exact"
  6383. ;; To be investigated ... (dependencies seem correct?)
  6384. "--skip=bigdecimal_serde::test_serde_deserialize_int"
  6385. "--skip=bigdecimal_serde::test_serde_deserialize_f64")
  6386. ("rust-bytes"
  6387. "--exact"
  6388. ;; TODO: report upstream if still present after updating
  6389. "--skip=sanity_check_odd_allocator")
  6390. ("rust-calloop"
  6391. "--exact"
  6392. "--skip=loop_logic::tests::insert_source_no_interest") ; known test failure, reported at <https://github.com/Smithay/calloop/issues/96>
  6393. ("rust-environment" ; "printenv" does not exist in the build environment
  6394. "--exact"
  6395. "--skip=test::empty_env"
  6396. "--skip=test::in_place_mod3"
  6397. "--skip=test::take_vec")
  6398. ("rust-gdk-sys"
  6399. "--exact"
  6400. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6401. "--skip=cross_validate_layout_with_c"
  6402. "--skip=cross_validate_constants_with_c")
  6403. ("rust-gdk-pixbuf-sys"
  6404. "--exact"
  6405. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6406. "--skip=cross_validate_layout_with_c"
  6407. "--skip=cross_validate_constants_with_c")
  6408. ("rust-gif"
  6409. "--exact"
  6410. "--skip=reader::test::test_simple_indexed" ; TODO: missing file
  6411. "--skip=round_trip") ; TODO: missing file
  6412. ("rust-gio-sys"
  6413. "--exact"
  6414. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6415. "--skip=cross_validate_layout_with_c"
  6416. "--skip=cross_validate_constants_with_c")
  6417. ("rust-glib-sys"
  6418. "--exact"
  6419. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6420. "--skip=cross_validate_layout_with_c"
  6421. "--skip=cross_validate_constants_with_c")
  6422. ("rust-gobject-sys"
  6423. "--exact"
  6424. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6425. "--skip=cross_validate_layout_with_c"
  6426. "--skip=cross_validate_constants_with_c")
  6427. ("rust-glob"
  6428. "--exact"
  6429. "--skip=test::test_iteration_errors") ; /root does not exist in the build environment
  6430. ("rust-image"
  6431. "--exact"
  6432. ;; missing files, TODO: consider switching to git checkout
  6433. "--skip=codecs::bmp::decoder::test::read_rect"
  6434. "--skip=codecs::openexr::test::compare_cropped"
  6435. "--skip=codecs::openexr::test::compare_rgba_rgb"
  6436. "--skip=codecs::openexr::test::compare_exr_hdr"
  6437. "--skip=codecs::png::tests::ensure_no_decoder_off_by_one"
  6438. "--skip=codecs::png::tests::underlying_error"
  6439. "--skip=dynimage::test::image_dimensions"
  6440. "--skip=dynimage::test::open_16bpc_png"
  6441. "--skip=imageops::sample::tests::resize_transparent_image")
  6442. ("rust-is-executable"
  6443. "--exact"
  6444. ;; required cargo
  6445. "--skip=unix::cargo_readme_up_to_date")
  6446. ("rust-jsonrpc-core"
  6447. "--exact"
  6448. ;; TODO: update rust-jsonrpc-core to newest, try to reproduce,
  6449. ;; investigate and report upstream.
  6450. "--skip=io::tests::test_async_io_handler"
  6451. "--skip=io::tests::test_io_handler_1dot0"
  6452. "--skip=io::tests::test_io_handler"
  6453. "--skip=io::tests::test_method_alias"
  6454. "--skip=io::tests::test_method_not_found"
  6455. "--skip=types::id::tests::id_deserialization"
  6456. "--skip=types::request::tests::call_deserialize"
  6457. "--skip=types::request::tests::request_deserialize_batch"
  6458. "--skip=types::request::tests::request_invalid_returns_id"
  6459. "--skip=types::response::batch_response_deserialize"
  6460. "--skip=types::response::failure_output_deserialize"
  6461. "--skip=types::response::single_response_deserialize"
  6462. "--skip=types::response::success_output_deserialize")
  6463. ("rust-lexical-parse-float"
  6464. "--exact"
  6465. ;; Seems similar to <https://github.com/AltSysrq/proptest/issues/258>
  6466. "--skip=f32_roundtrip_debug_proptest"
  6467. "--skip=f32_roundtrip_display_proptest"
  6468. "--skip=f32_roundtrip_scientific_proptest"
  6469. "--skip=f64_roundtrip_debug_proptest"
  6470. "--skip=f64_roundtrip_display_proptest"
  6471. "--skip=f64_roundtrip_scientific_proptest")
  6472. ("rust-lexical-write-float"
  6473. "--exact"
  6474. ;; Seems similar to <https://github.com/AltSysrq/proptest/issues/258>
  6475. "--skip=f32_proptest"
  6476. "--skip=f64_proptest")
  6477. ("rust-lopdf"
  6478. "--exact"
  6479. ;; TODO: missing file or incorrect location
  6480. "--skip=parser_aux::load_and_save")
  6481. ("rust-lsp-server"
  6482. "--exact"
  6483. ;; TODO: investigate
  6484. "--skip=msg::tests::shutdown_with_explicit_null"
  6485. "--skip=msg::tests::shutdown_with_no_params")
  6486. ("rust-lsp-types"
  6487. "--exact"
  6488. ;; TODO: investigate failures if still present after update
  6489. "--skip=tests::formatting_options" ; 0.80
  6490. "--skip=formatting::tests::formatting_options" ; 0.91
  6491. "--skip=tests::number_or_string")
  6492. ("rust-nasm-rs"
  6493. "--exact"
  6494. ;; Doesn't expect being compiled with DWARF debugging information.
  6495. "--skip=test_build")
  6496. ("rust-ndarray"
  6497. "--exact"
  6498. ;; overflow, possibly caused by incompatible rust-quickcheck -- remove
  6499. ;; once updated to the new rust-ndarray which expects rust-quickcheck@1
  6500. "--skip=dimension::test::arith_seq_intersect_correct"
  6501. "--skip=dimension::test::extended_gcd_correct_gcd"
  6502. "--skip=dimension::test::extended_gcd_solves_eq"
  6503. "--skip=dimension::test::solve_linear_diophantine_eq_correct_solution"
  6504. "--skip=dimension::test::solve_linear_diophantine_eq_solution_existence")
  6505. ("rust-nix"
  6506. "--exact"
  6507. ;; Sounds fragile (w.r.t. reproducibility)
  6508. "--skip=features::os::test_parsing_kernel_version"
  6509. ;; Could plausibly be a quirk of the build environment.
  6510. "--skip=sys::test_signal::test_killpg_none")
  6511. ("rust-meval"
  6512. "--exact"
  6513. ;; Reported upstream: <https://github.com/rekka/meval-rs/pull/27#issuecomment-1205663387>
  6514. "--skip=tokenizer::tests::it_works"
  6515. "--skip=tokenizer::tests::test_lexpr"
  6516. "--skip=tokenizer::tests::test_number")
  6517. ("rust-native-tls"
  6518. "--exact" ; these tests try accessing the network
  6519. "--skip=test::alpn_google_invalid"
  6520. "--skip=test::connect_bad_hostname_ignored"
  6521. "--skip=test::connect_google"
  6522. "--skip=test::alpn_google_none"
  6523. "--skip=test::connect_no_root_certs"
  6524. "--skip=test::connect_bad_hostname"
  6525. "--skip=test::alpn_google_h2"
  6526. ;; Might be fixed in newest version (TODO: update, report if still present)
  6527. "--skip=test::server_tls11_only")
  6528. ("rust-object"
  6529. ;; TODO: missing test files
  6530. "--exact"
  6531. "--skip=read::coff::coff_extended_relocations")
  6532. ("rust-once-cell"
  6533. "--exact"
  6534. ;; requires examples, which cannot currently be compiled with antioxidant
  6535. "--skip=sync::reentrant_init")
  6536. ("rust-pancurses"
  6537. "--exact"
  6538. ;; Assumes it is is run in a terminal.
  6539. "--skip=unix::tests::test_ungetch")
  6540. ("rust-pango-sys"
  6541. "--exact"
  6542. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6543. "--skip=cross_validate_layout_with_c"
  6544. "--skip=cross_validate_constants_with_c")
  6545. ("rust-pathfinder-simd"
  6546. "--exact"
  6547. ;; Slightly off, at least on an AMD x86_64, might be different on Intel.
  6548. ;; TODO: report if still present in updated version.
  6549. "--skip=test::test_f32x4_basic_ops")
  6550. ("rust-pcre2"
  6551. "--exact"
  6552. ;; Sometimes OOMs
  6553. "--skip=max_jit_stack_size_does_something")
  6554. ("rust-reqwest"
  6555. "--exact"
  6556. ;; Contacts the network (http://google.com and an IP)
  6557. "--skip=connect_timeout"
  6558. "--skip=test_allowed_methods"
  6559. "--skip=test_allowed_methods_blocking")
  6560. ("rust-rpassword"
  6561. "--exact"
  6562. ;; antioxidant doesn't support examples yet
  6563. "--skip=piped_password")
  6564. ("rust-polars-io"
  6565. "--exact"
  6566. ;; missing test files
  6567. "--skip=csv::test::test_read_csv_file"
  6568. "--skip=csv::test::test_projection"
  6569. "--skip=csv_core::utils::test::test_get_file_chunks"
  6570. "--skip=tests::test_filter")
  6571. ("rust-polars-lazy"
  6572. "--exact"
  6573. ;; TODO: investigate cause
  6574. "--skip=test::test_exclude_regex"
  6575. ;; likewise
  6576. "--skip=test::test_categorical_addition"
  6577. ;; Requires disabled 'cum_agg' feature
  6578. "--skip=test::test_cumsum_agg_as_key"
  6579. ;; TODO: missing test files
  6580. "--skip=test::test_lazy_agg_scan"
  6581. ;; likewise
  6582. "--skip=test::test_lazy_query_3"
  6583. "--skip=test::test_lazy_partition_agg"
  6584. ;; TODO: no error message
  6585. "--skip=test::test_groupby_cumsum")
  6586. ("rust-proptest"
  6587. "--exact"
  6588. ;; Appears to be known issues upstream:
  6589. ;; <https://github.com/AltSysrq/proptest/issues/268#issuecomment-1198438266>.
  6590. "--skip=num::test::contract_sanity::f32::range_from"
  6591. "--skip=num::test::contract_sanity::f32::range_to_inclusive"
  6592. "--skip=num::test::contract_sanity::f64::range_from"
  6593. "--skip=num::test::contract_sanity::f64::range_to_inclusive")
  6594. ("rust-proptest-derive"
  6595. "--exact"
  6596. ;; Appears to be known issues upstream:
  6597. ;; <https://github.com/AltSysrq/proptest/issues/268#issuecomment-1198438266>.
  6598. "--skip=interp::test::reject_lit_i128_overflow"
  6599. "--skip=interp::test::reject_lit_i64_overflow"
  6600. "--skip=interp::test::reject_lit_i32_overflow"
  6601. "--skip=interp::test::reject_lit_i16_overflow"
  6602. "--skip=interp::test::reject_lit_i8_overflow"
  6603. "--skip=interp::test::reject_lit_u64_overflow"
  6604. "--skip=interp::test::reject_lit_u32_overflow"
  6605. "--skip=interp::test::reject_lit_u16_overflow"
  6606. "--skip=interp::test::reject_lit_u8_overflow")
  6607. ("rust-rmp"
  6608. "--exact"
  6609. ;; could be caused by different rust-quickcheck version
  6610. "--skip=func::mirror::mirror_f32"
  6611. "--skip=func::mirror::mirror_f64")
  6612. ("rust-rowan"
  6613. "--exact"
  6614. ;; Cannot find 'rustfmt', doesn't seem important for Guix.
  6615. "--skip=check_code_formatting")
  6616. ("rust-rust-decimal"
  6617. "--exact"
  6618. ;; TODO: report bug
  6619. "--skip=serde::test::deserialize_valid_decimal")
  6620. ("rust-soup-sys"
  6621. "--exact"
  6622. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6623. "--skip=cross_validate_layout_with_c"
  6624. "--skip=cross_validate_constants_with_c")
  6625. ("rust-sprs"
  6626. ;; missing test files
  6627. "--skip=io::test")
  6628. ("rust-structopt"
  6629. "--exact"
  6630. ;; TODO: report upstream
  6631. "--skip=flatten_twice")
  6632. ("rust-sxd-xpath"
  6633. "--exact"
  6634. ;; test failure is reported upstream:
  6635. ;; <https://github.com/shepmaster/sxd-xpath/pull/140>
  6636. "--skip=test::string_of_negative_zero_is_zero")
  6637. ("rust-rustls"
  6638. "--skip=msgs::message_test::test_read_fuzz_corpus" ; some test files are missing
  6639. ;; It doesn't find some issuers, probably just
  6640. ;; <https://github.com/rustls/rustls/pull/896> which would be fixed in later versions.
  6641. ;; Additionally, the certificate tests are time bombs in that they expire:
  6642. ;; <https://github.com/rustls/rustls/pull/71>, so disable them.
  6643. "--skip=verifybench::test_")
  6644. ("rust-sourcemap" ; missing files (TODO: use git checkout)
  6645. "--skip=ram_bundle")
  6646. ("rust-shadow-rs"
  6647. "--exact"
  6648. ;; These tests assume a git checkout.
  6649. "--skip=git::tests::test_current_branch"
  6650. "--skip=git::tests::test_git")
  6651. ("rust-streaming-decompression"
  6652. "--exact"
  6653. "--skip=tests::test_basics_uncompressed") ; <https://github.com/jorgecarleitao/parquet2/issues/164>
  6654. ("rust-sysinfo"
  6655. "--exact"
  6656. "--skip=test_process_time" ; https://github.com/GuillaumeGomez/sysinfo/issues/859
  6657. "--skip=test::check_uid_gid" ; there's no root in the build environment
  6658. "--skip=test::check_system_info") ; there's no /etc/os-release or /etc/lsb-release (TODO: maybe we could patch SystemExt.name to just return Guix?).
  6659. ("rust-tera"
  6660. "--exact"
  6661. ;; TODO: investigate test failures
  6662. "--skip=renderer::tests::basic::render_variable_block_ident"
  6663. "--skip=renderer::tests::basic::render_variable_block_lit_expr"
  6664. "--skip=tera::tests::can_load_from_glob"
  6665. "--skip=tera::tests::can_load_from_glob_with_patterns"
  6666. "--skip=tera::tests::full_reload_with_glob"
  6667. "--skip=tera::tests::full_reload_with_glob_after_extending"
  6668. "--skip=tera::tests::test_can_only_parse_templates")
  6669. ("rust-tiff"
  6670. "--exact"
  6671. "--skip=encoder::compression::deflate::tests::test_deflate" ; <https://github.com/image-rs/image-tiff/issues/169>
  6672. "--skip=test_big_tiff") ; missing test files
  6673. ("rust-thread-priority"
  6674. "--exact"
  6675. ;; requires root, and let's not commit to always having the deadline scheduler
  6676. "--skip=unix::tests::set_deadline_policy")
  6677. ("rust-trash"
  6678. "--exact"
  6679. ;; TODO: report upstream if still present after update
  6680. "--skip=tests::os_limited::restore"
  6681. "--skip=tests::os_limited::restore_collision")
  6682. ("rust-trust-dns-resolver"
  6683. "--exact"
  6684. ;; /etc/resolv.conf does not exist in the build environment
  6685. "--skip=system_conf::unix::tests::test_read_resolv_conf"
  6686. ;; Likewise.
  6687. "--skip=hosts::tests::test_read_hosts_conf"
  6688. ;; network tests -- these are timebombs for when Google or Cloudflare disappear
  6689. "--skip=async_resolver::tests::test_lookup_cloudflare"
  6690. "--skip=async_resolver::tests::test_idna"
  6691. "--skip=async_resolver::tests::test_lookup_google"
  6692. "--skip=async_resolver::tests::test_ndots"
  6693. "--skip=async_resolver::tests::test_large_ndots"
  6694. "--skip=async_resolver::tests::test_search_list"
  6695. "--skip=async_resolver::tests::test_domain_search"
  6696. "--skip=async_resolver::tests::test_fqdn"
  6697. "--skip=async_resolver::tests::test_lookup_quad9"
  6698. "--skip=name_server::name_server::tests::test_name_server"
  6699. "--skip=name_server::name_server_pool::tests::test_multi_use_conns"
  6700. "--skip=resolver::tests::test_lookup")
  6701. ("rust-tuikit"
  6702. "--exact"
  6703. ;; appears to assume a terminal (TODO: try running under 'screen')
  6704. "--skip=raw::test::test_into_raw_mode")
  6705. ("rust-ureq"
  6706. "--exact"
  6707. ;; network access, and will fail when Amazon / Google disappears
  6708. "--skip=tls_client_certificate"
  6709. "--skip=test::range::read_range_rustls"
  6710. "--skip=tests::connect_https_google_rustls"
  6711. "--skip=tests::connect_http_google")
  6712. ("rust-watchexec"
  6713. "--exact"
  6714. ;; TODO: investigate test failures
  6715. "--skip=gitignore::tests::test_leading_double_wildcard"
  6716. "--skip=gitignore::tests::test_leading_slash"
  6717. "--skip=gitignore::tests::test_handles_whitelisting"
  6718. "--skip=gitignore::tests::test_matches_exact"
  6719. "--skip=gitignore::tests::test_matches_simple_wildcard"
  6720. "--skip=gitignore::tests::test_matches_subdir_exact"
  6721. "--skip=gitignore::tests::test_sandwiched_double_wildcard"
  6722. "--skip=gitignore::tests::test_wildcard_with_dir"
  6723. "--skip=ignore::tests::test_leading_double_wildcard"
  6724. "--skip=ignore::tests::test_handles_whitelisting"
  6725. "--skip=ignore::tests::test_leading_slash"
  6726. "--skip=ignore::tests::test_matches_exact"
  6727. "--skip=ignore::tests::test_matches_simple_wildcard"
  6728. "--skip=ignore::tests::test_matches_subdir_exact"
  6729. "--skip=ignore::tests::test_sandwiched_double_wildcard"
  6730. "--skip=ignore::tests::test_wildcard_with_dir"
  6731. "--skip=notification_filter::tests::test_filename"
  6732. "--skip=notification_filter::tests::test_multiple_ignores"
  6733. "--skip=notification_filter::tests::test_ignores_take_precedence"
  6734. "--skip=notification_filter::tests::test_recursive_directory_ignore")
  6735. ("rust-webkit2gtk-sys"
  6736. "--exact"
  6737. ;; Upstream: <https://github.com/gtk-rs/gtk-rs-core/issues/64>
  6738. "--skip=cross_validate_layout_with_c"
  6739. "--skip=cross_validate_constants_with_c")
  6740. ("rust-wl-clipboard-rs"
  6741. "--exact"
  6742. ;; TODO: investigate
  6743. "--skip=tests::copy::copy_multi_test"
  6744. "--skip=tests::copy::copy_large"
  6745. "--skip=tests::copy::copy_test")
  6746. ("rust-x11rb"
  6747. "--exact"
  6748. ;; TODO might be fixed in new version.
  6749. "--skip=test::home_resolution"
  6750. "--skip=test::include_loop"
  6751. "--skip=test::relative_include")
  6752. ("rust-xflags-macros"
  6753. "--exact"
  6754. ;; TODO: missing file
  6755. "--skip=emit::tests::gen_it")
  6756. ("rust-xshell"
  6757. "--exact"
  6758. "--skip=env::test_env_clear" ; TODO: ./mock-bin is missing (switch to git checkout?)
  6759. "--skip=env::test_env"
  6760. "--skip=formatting" ; assumes cargo
  6761. "--skip=exit_status" ; assumes a lack of backtrace information
  6762. "--skip=read_stderr" ; required git (TODO: add git)
  6763. "--skip=fixed_cost_compile_times" ; assumes "cbench"
  6764. "--skip=test_compile_failures" ; assumes cargo
  6765. "--skip=versions_match" ; assumes a git checkout instead of a crates.io tarball
  6766. "--skip=test_pushd" ; likewise
  6767. "--skip=output_with_ignore" ; XXX: echoboth.rs is not compiled
  6768. "--skip=test_read_with_ignore" ; XXX: echoboth.rs is not compiled
  6769. "--skip=test_pushd_lock"))) ; cbench is missing from tarball (switch to git checkout)
  6770. (define (test-options name version)
  6771. (cond ((and (string=? name "rust-nom")
  6772. (string=? (version-major version) "4"))
  6773. ;; TODO modify and update ansi-parser to avoid buggy rust-nom
  6774. '("--exact"
  6775. "--skip=ci::guix::gnu::org" ; XXX work-around transient ci.guix.gnu.org failure.
  6776. "--skip=multi::tests::count_fixed"
  6777. "--skip=multi::tests::count_fixed_no_type"
  6778. "--skip=overflow_incomplete_count_fixed"))
  6779. ((and (string=? name "rust-notify")
  6780. (string=? (version-major version) "4"))
  6781. '("--exact"
  6782. ;; Test failures, TODO: is it also present in version 5?
  6783. "--skip=watch_recursive_move"
  6784. "--skip=watch_recursive_move_in"
  6785. "--skip=create_directory_watch_subdirectories"))
  6786. (#t
  6787. (or (assoc-ref %test-options name) '()))))
  6788. ;; Packages for which tests are disabled.
  6789. ;; The second part of the pair is a 'reason' for disabling them.
  6790. ;;
  6791. ;; * removed-dependency
  6792. ;; * fails (not proper because defeats the point of tests but will do for now).
  6793. ;; * build-environment: tests assume things about the build environment that are false
  6794. ;; (e.g., rust-atty assumes stdin/out/err is a tty)
  6795. ;; * missing-files: some files used by tests are missing from the source code
  6796. ;; (fix is probably to switch to VC like done for PyPi)
  6797. ;; * version: tests do not compile against the versions of dependencies
  6798. ;; * keep: In cargo-build-system, tests were disabled, and the exact same reason
  6799. ;; holds in antioxidant as well (so keep the old comment)
  6800. ;;
  6801. ;; (the reason symbol can be used by 'guix style' to automatically add a comment
  6802. ;; to #:tests? #false)
  6803. (define %disable-tests
  6804. '(("mudskipper" . keep)
  6805. ("python-blake3" . other) ; the crate having the same name as one if its dependents confuses antioxidant
  6806. ("rust-actix-server" . version) ; rust-actix-rt
  6807. ("rust-actix-service" . other) ; used crates are missing from dev-dependencies (TODO report upstream, maybe switch to git checkout)
  6808. ("rust-actix-utils" . other) ; likewise
  6809. ("rust-actix-http" . version) ; rust-actix-rt
  6810. ("rust-actix-web" . version) ; rust-actix-rt
  6811. ("rust-addr2line" . keep)
  6812. ("rust-adler32" . version) ; rust-rand
  6813. ("rust-ahash" . removed-dependency) ; rust-hex
  6814. ("rust-alga" . version) ; test failures might be due to incompatible rust-quickcheck version
  6815. ("rust-anyhow" . removed-dependency) ; rust-thiserror (cycle)
  6816. ("rust-arboard" . fails) ; TODO: maybe a window manager is needed
  6817. ("rust-ascii-canvas" . missing-files) ; test_util
  6818. ("rust-async-attributes" . removed-dependency) ; rust-async-std (cycle)
  6819. ("rust-atty" . build-environment) ; assumes fd 0/1/2 are ttys
  6820. ("rust-awc" . removed-dependency) ; rust-actix-web, cycle
  6821. ("rust-base32" . version) ; rust-quickcheck
  6822. ("rust-base64" . version) ; rust-rand
  6823. ("rust-bincode" . removed-dependency) ; quickcheck
  6824. ("rust-bitpacking" . version) ; rust-rand
  6825. ("rust-brotli2" . version) ; rust-rand
  6826. ("rust-bson" . missing-files) ; mod tests, it is intentionally removed (TODO switch to git checkout)
  6827. ("rust-bv" . version) ; likely rust-quickcheck, because of overflow and other version
  6828. ("rust-bytemuck-derive" . removed-dependency) ; rust-bytemuck (cycle)
  6829. ("rust-byteorder" . removed-dependency) ; quickcheck
  6830. ("rust-bytestring" . other) ; siphasher is not declared in dev-dependencies (fixed in new version)
  6831. ("rust-bzip2" . other) ; tests require the "quickcheck" feature of rust-partial-io, but that adds rust-quickcheck to the closure of rust-partial-io -- is this acceptable?
  6832. ("rust-capnp" . version) ; rust-quickcheck
  6833. ("rust-capnp-futures" . version) ; rust-quickcheck
  6834. ("rust-cargo-metadata" . build-environment) ; uses Cargo
  6835. ("rust-cast" . version) ; quickcheck (TODO: actually only for rust-cast@0.2, try replacing rust-cast)
  6836. ("rust-clang-ast" . missing-dependency) ; 'rust-clang-ast-test-suite'
  6837. ("rust-coitrees" . version) ; rust-rand
  6838. ("rust-cookie-factory" . missing-files) ; tests/http.rs
  6839. ("rust-cordic" . fails) ; fixed in new version, see <https://github.com/sebcrozet/cordic/pull/2/files>
  6840. ("rust-chalk-solve" . removed-dependency) ; TODO: chalk_integration is unpackaged
  6841. ("rust-chrono" . removed-dependency) ; quickcheck
  6842. ("rust-chrono-tz" . version) ; rust-time
  6843. ("rust-crossbeam-channel" . version) ; rust-rand
  6844. ("rust-crossbeam-deque" . version) ; rust-rand
  6845. ("rust-cssparser" . missing-files) ; src/css-parsing-tests
  6846. ("rust-codespan-reporting" . missing-files)
  6847. ("rust-colored" . removed-dependency) ; rust-rspec (cycle)
  6848. ("rust-ctrlc" . other) ; no tests
  6849. ("rust-dbus" . keep)
  6850. ("rust-needletail" . keep)
  6851. ("rust-new-debug-unreachable" . other) ; assumes a debug build.
  6852. ("rust-nitrokey-test" . removed-dependency) ; rust-nitrokey (cycle)
  6853. ("rust-decimal" . fails) ; possibly fixed in new version: <https://github.com/alkis/decimal/pull/64/>
  6854. ("rust-deflate" . other) ; something about Rust 2018 and use statements having changed?
  6855. ("rust-diesel-derives" . removed-dependency) ; rust-diesel (cycle)
  6856. ("rust-diff" . removed-dependency) ; rust-speculate
  6857. ("rust-dogged" . version) ; rust-rand
  6858. ("rust-duct" . removed-dependency) ; rust-tempdir
  6859. ("rust-env-logger" . removed-dependency) ; quickcheck
  6860. ("rust-erased-serde" . removed-dependency) ; rust-serde-json
  6861. ("rust-escargot" . missing-files)
  6862. ("rust-failure-derive" . removed-dependency) ; rust-failure (cycle)
  6863. ("rust-flate2" . version) ; rust-rand
  6864. ("rust-float-ord" . version) ; rust-rand (gen_iter is removed)
  6865. ("rust-futf" . version) ; str_char unknown feature in current Rust version
  6866. ;; Running the tests required enabling the io-compat feature, which
  6867. ;; requires adding rust-futures to the inputs of rust-futures-utils,
  6868. ;; which forms a cycle.
  6869. ("rust-futures" . other)
  6870. ("rust-futures-channel" . removed-dependency) ; rust-futures (cycle)
  6871. ("rust-futures-executor" . removed-dependency) ; rust-futures (cycle)
  6872. ("rust-fs2" . removed-dependency) ; rust-tempdir, TODO: next version might use rust-tempfile <https://github.com/danburkert/fs2-rs/pull/43>
  6873. ("rust-fst" . version) ; rust-quickcheck
  6874. ("rust-getopts" . fails) ; https://github.com/rust-lang/getopts/issues/113
  6875. ("rust-git-version" . build-environment) ; its only test assumes a git checkout
  6876. ("rust-git-version-macro" . build-environment) ; its only test assumes a git checkout
  6877. ("rust-glib-macros" . removed-dependency) ; rust-glib (test cycle)
  6878. ("rust-glob" . removed-dependency) ; rust-tempdir
  6879. ("rust-globwalk" . removed-dependency) ; rust-tempdir
  6880. ("rust-half" . version) ; quickcheck
  6881. ("rust-hashbrown" . version) ; rust-rand?
  6882. ("rust-hdrhistogram" . missing-dependency) ; rust-ieee754
  6883. ("rust-heapless" . version) ; rust-scoped-threadpool?
  6884. ("rust-http" . version) ; rust-quickcheck
  6885. ("rust-humantime" . removed-dependency) ; quickcheck
  6886. ("rust-hyper" . removed-dependency) ; rust-tokio-test
  6887. ;; Assumes network access. Also, test_read_timeout is fragile, even if there was network
  6888. ;; access it might fail in the future with improvements in networking.
  6889. ("rust-hyper-timeout" . build-environment) ; assumes network access. Also, test_read_timeout is fragi
  6890. ("rust-idna" . removed-dependency) ; TODO add missing test inputs
  6891. ("rust-indexmap" . removed-dependency) ; quickcheck
  6892. ("rust-inotify" . version ) ; rust-rand
  6893. ("rust-inout" . other) ; no tests to compile
  6894. ("rust-insta" . removed-dependency) ; rust-similar-asserts (cycle)
  6895. ("rust-instant" . removed-dependency) ; required removed wasm_bindgen_test
  6896. ("rust-jemallocator" . removed-dependeny) ; rust-jemalloc-ctl (cycle)
  6897. ("rust-jobserver" . removed-dependency) ; rust-tokio-core
  6898. ("rust-jpeg-decoder" . missing-files) ; in tests/...
  6899. ("rust-ring" . missing-files) ; ed25519_verify_tests.txt
  6900. ("rust-rlp" . missing-dependency) ; primitive-types
  6901. ("rust-rustc-test" . fails) ; benchmark-related code fails to compile
  6902. ("rust-rustls-native-certs" . removed-dependency) ; rust-webkit-roots, and incompatible rust-serial-test
  6903. ("rust-salsa20" . version) ; rust-cipher
  6904. ("rust-scroll-derive" . removed-dependency) ; rust-scroll (cycle)
  6905. ("rust-sequoia-openpgp" . version) ; rust-quickcheck
  6906. ("rust-serde-derive" . version) ; current version of rust-syn does not have syn::Type::__TestExhaustive
  6907. ("rust-serde-path-to-error" . fails) ; double import of 'Deserialize' (TODO: report when Internet is better)
  6908. ("rust-serde-yaml" . fails) ; double definition in tests/test_value.rs, might be resolved after updating
  6909. ("rust-similar" . removed-dependency) ; rust-insta (cycle)
  6910. ("rust-swayipc" . removed-dependency) ; tests seem to require the removed rust-async-attributes
  6911. ("rust-swayipc+sync" . keep) ; sync::tests::connect
  6912. ;; Running tests required many additional (indirect) dependencies,
  6913. ;; e.g. it required 'reqwest' which brings in a HTTPS client library.
  6914. ("rust-syn" . removed-dependency)
  6915. ("rust-tar" . removed-dependency) ; rust-tempdir
  6916. ("rust-tobj" . missing-files) ; ../obj/cornell_box.obj
  6917. ("rust-tokio-native-tls" . other) ; tries network access or appears to have potential certificate expiration problemsx
  6918. ("rust-tokio-postgres" . keep)
  6919. ("rust-itertools" . removed-dependency) ; quickcheck
  6920. ("rust-libm" . fails) ; reported at <https://github.com/rust-lang/libm/issues/234>
  6921. ("rust-libradicl" . keep)
  6922. ("rust-line-wrap" . version) ; rust-rand
  6923. ("rust-local-channel" . other) ; rust-tokio is missing from inputs (TODO report upstream)
  6924. ("rust-log" . removed-dependency) ; rust-serde-test
  6925. ("rust-matrixcompare" . fails) ; TODO: test failures might be due to different version of quickcheck, maybe try updating upstream to new quickcheck
  6926. ("rust-memchr" . removed-dependency ) ; quickcheck
  6927. ("rust-memmap" . removed-dependency) ; rust-tempdir
  6928. ("rust-memmap2" . removed-dependency) ; rust-tempdir
  6929. ("rust-merlin" . removed-dependency) ; rust-strobe-rs is not packaged
  6930. ("rust-metadeps" . missing-files)
  6931. ("rust-nalgebra-macros" . removed-dependency) ; rust-nalgebra
  6932. ("rust-neso" . missing-files)
  6933. ("rust-no-panic" . build-environment) ; assumes a cargo build environment
  6934. ("rust-once-cell" . removed-dpendency) ; rust-crossbeam-utils
  6935. ("rust-oorandom" . removed-dependency) ; rust-rand-pcg is not packaged
  6936. ("rust-ordermap" . version) ; rust-rand
  6937. ("rust-paste" . missing-dependency) ; rust-paste-test-suite
  6938. ("rust-path-abs" . removed-dependency) ; rust-tempdir
  6939. ("rust-paw" . fails) ; test input is not declared in Cargo.toml, unreportable as upstream is read-only
  6940. ("rust-petgraph" . version) ; rust-rand
  6941. ("rust-plotters-bitmap" . removed-dependency) ; rust-plotters, to avoid cycle
  6942. ("rust-plotters-svg" . removed-dependency) ; rust-plotters, to avoid cycle
  6943. ("rust-pin-project-lite" . removed-dependency) ; rust-macrotest
  6944. ("rust-png" . missing-files)
  6945. ("rust-postgres" . keep)
  6946. ("rust-proc-macro-error" . keep)
  6947. ("rust-ptree" . removed-dependency ) ; rust-serde-any is not packaged
  6948. ("rust-pyo3" . keep)
  6949. ("rust-quantiles" . version) ; way too large memory allocations, looks similarish to other quickcheck-related failures, maybe just because of the different quickcheck version. TODO: package (building) old quickcheck versions
  6950. ("rust-quickersort" . version) ; tests require old rust-rand
  6951. ("rust-quote" . removed-dependency) ; rust-quote / rust-rustversion cycle
  6952. ("rust-radix-fmt" . removed-dependency) ; rust-fluid
  6953. ("rust-radix-trie" . version) ; rust-rand
  6954. ("rust-rand" . removed-dependency) ; rand-pcg
  6955. ("rust-reduce" . fails) ; compilation error -- upstream is 'archived' so reporting upstream is not possible anymore
  6956. ("rust-region" . removed-dependency) ; rust-mmap-fixed is not packaged
  6957. ("rust-regex" . removed-dependency) ; quickcheck
  6958. ("rust-remove-dir-all" . missing-files) ; README
  6959. ("rust-rgb" . fails) ; unclear, some kind of type error?
  6960. ("rust-rstest" . removed-dependency) ; rust-rstest-reuse is not packaged
  6961. ("rust-rustc-serialize" . fails) ; fails to compile
  6962. ("rust-serde-value" . fails) ; TODO: duplicate imports
  6963. ("rust-serde-fmt" . removed-dependency) ; rust-serde-derive
  6964. ("rust-socks" . keep)
  6965. ("rust-sval" . removed-dependency) ; quickcheck
  6966. ("rust-sxd-document" . fails) ; TODO: borrow errors in test, maybe solved by updating Rust?
  6967. ("rust-syntect" . missing-files) ; ../testdata/...
  6968. ("rust-sys-info" . build-environment) ; linux_os_release looks for non-existent /etc/os-release. Also, some tests like cpu_speed try parsing /proc/cpuinfo and looks expects BogoMIPS, even though Linux wants to remove it <https://lwn.net/Articles/628531/>. Let's not stop Linux from doing that.
  6969. ("rust-system-deps" . version) ; rust-pkg-config
  6970. ("rust-terminal-size" . build-environment) ; /dev/stderr is not a tty
  6971. ("rust-tokio-openssl" . other) ; test::server is a time bomb (certificate expiration) and test::google assumes network access (and a time bomb if Google disappears)
  6972. ("rust-tokio-rustls" . other) ; some tests fail due to expired certificates, let's disable all the tests for now -- tests can be re-enabled once the time bombs are removed
  6973. ("rust-termion" . keep)
  6974. ("rust-time" . missing-files) ; the tests module, and quickcheck
  6975. ("rust-tokio" . removed-dependency) ; rust-tokio<->rust-tokio-test cycle
  6976. ("rust-tower" . other) ; TODO rust-tokio-test is not declared in Cargo.toml
  6977. ("rust-tracing" . missing-dependency) ; rust-tracing-mock
  6978. ("rust-tracing-attributes" . removed-dependency)
  6979. ("rust-tracing-futures" . missing-files) ; mod support
  6980. ("rust-tracing-subscriber" . version) ; rust-tracing needs to be updated to support ::entered
  6981. ("rust-trackable-derive" . removed-dependency) ; rust-trackable (test cycle)
  6982. ("rust-trust-dns-proto" . removed-dependency) ; tests depend on webpki_roots, which will be eventually be removed because of <https://issues.guix.gnu.org/55043>
  6983. ("rust-unicode-ident" . keep)
  6984. ("rust-unic-segment" . missing-dependency) ; rust-unic-ucd-common
  6985. ("rust-url" . fails) ; uses non-existent 'append_key_only' function, might be fixed in new version
  6986. ("rust-vcpkg" . missing-dependency) ; rust-tempdir
  6987. ("rust-xattr" . fails) ; might be fixed in new version
  6988. ("rust-xflags-macros" . removed-dependency) ; rust-xflags
  6989. ("rust-xxhash" . missing-dependency) ; rust-xxhash-c-sys
  6990. ("rust-xxhash-rust" . missing-dependency) ; rust-xxhash-c-sys
  6991. ("rust-xz2" . version) ; rust-rand
  6992. ("rust-want" . removed-dependency) ; rust-tokio-executor
  6993. ("rust-wasmparser" . missing-files) ; ../../tests/local/naming.wasm
  6994. ("rust-webbrowser" . removed-dependency) ; requires various web browsers, seems too much
  6995. ("rust-weezl" . missing-files) ; benches/binary-8-msb.lzw
  6996. ("rust-winres" . fails) ; only for compiling to Windows, which isn't supported yet
  6997. ("rust-which" . removed-dependency) ; rust-tempdir
  6998. ("rust-zstd" . missing-files) ; assets/example.txt.zst
  6999. ;; uses rust-escargot, which assumes Cargo
  7000. ("tealdeer" . build-environment)
  7001. ("watchexec" . build-environment))) ; its test dependency 'rust-insta' assumes Cargo
  7002. (define (find-replacement dependent dependency)
  7003. (define test-replacement
  7004. (match-lambda
  7005. ((key new) (and (equal? key (package-name dependency)) new))
  7006. ((key new #:for-dependent dependent-match?)
  7007. (and (equal? key (package-name dependency))
  7008. (dependent-match? dependent)
  7009. new))
  7010. (stuff (pk 'oops stuff)
  7011. (error "bogus entry in %replacments"))))
  7012. (any test-replacement %replacements))
  7013. (define (looks-like-library? name)
  7014. (or (string=? name "log") ; wrong label in rust-progressing-3
  7015. (string=? name "bat") ; used as library by nushell
  7016. (and (string-prefix? "rust-" name)
  7017. (not (member name '("rust-analyzer" "rust-cargo-c"))))))
  7018. (define (outputs-for-package-name name)
  7019. (cond ((string=? name "librsvg") ; preserve old outputs
  7020. '("out" "doc" "debug"))
  7021. ((string=? name "python-blake3") '("out")) ; likewise
  7022. ;; If it looks like just a library, separate libs, binaries, etc,
  7023. ;; because usually binaries aren't needed. (closure size considerations)
  7024. ((looks-like-library? name)
  7025. %rust-library-outputs)
  7026. (#true ;; If it looks like a leaf package, separate "out" and "lib",
  7027. ;; because things are sort-of statically linked.
  7028. '("out" "lib"))))
  7029. (define (append-filter-map f list)
  7030. (concatenate (filter-map f list)))
  7031. ;; todo: ‘stub‘ rust-rustc-version to reduce deps?
  7032. ;; grrr rust-backtrace
  7033. (define (vitaminate/auto* pack)
  7034. (if (eq? (package-build-system pack) (@ (guix build-system cargo) cargo-build-system))
  7035. (apply
  7036. (lambda* (#:key (cargo-development-inputs '()) (cargo-inputs '())
  7037. (phases '%standard-phases)
  7038. ;; TODO: cargo test flags
  7039. skip-build? cargo-test-flags tests?
  7040. cargo-build-flags ; TODO: investigate later
  7041. vendor-dir ; not needed in antioxidant
  7042. modules ; TODO: handle #:modules
  7043. install-source? ; not used by antioxidant-build-system
  7044. (features #~'("default")))
  7045. ;; If the cargo-build-system package sets some phases, make sure
  7046. ;; that they have been vetted as unnecessary in Guix or that they
  7047. ;; have been converted for antioxidant.
  7048. (when (missing-cargo->antioxidant-phases? (package-name pack) phases)
  7049. (error "phases?" pack))
  7050. (define fix-input
  7051. (match-lambda
  7052. ((label dependency . maybe-output)
  7053. (and (not (remove-dependency? pack dependency))
  7054. (let ((vitaminated-input
  7055. (vitaminate/auto
  7056. ;; Resolve version conflicts, choose newer versions,
  7057. ;; etc.
  7058. (or (find-replacement pack dependency) dependency))))
  7059. ;; These are actually test inputs! (TODO guix)
  7060. ;; (TODO: this isn't build from source)
  7061. ;;(not (equal? (package-name pack) "rust-pure-rust-locales"))
  7062. #;(pk 'p pack dependency)
  7063. (cond ((not (memq (package-build-system vitaminated-input)
  7064. (list antioxidant-build-system
  7065. antioxidant-workspace-build-system)))
  7066. (list (cons* label vitaminated-input maybe-output)))
  7067. ;; For cbindgen and bindgen, sometimes the binary,
  7068. ;; sometimes the lib is needed. Add both.
  7069. ((member label '("rust-cbindgen" "rust-bindgen"))
  7070. (list (list label vitaminated-input "lib")
  7071. (list label vitaminated-input "out")))
  7072. ((string=? label "rust-peg-macros")
  7073. ;; The 'rust-peg' binary is needed, at least when used
  7074. ;; by "rust-peg". The -lib is required too.
  7075. (list (list label vitaminated-input "lib")
  7076. (list label vitaminated-input "out")))
  7077. ;; TODO: in some cases, "out" is needed!
  7078. ;; For library crates, we usually just need the lib output.
  7079. ((looks-like-library? label)
  7080. ;; For some packages, we don't have separate outputs
  7081. ;; (e.g. if they don't have tests, binaries, etc.).
  7082. ;; In that case, just do the default output.
  7083. (let ((output (if (member "lib" (package-outputs vitaminated-input))
  7084. "lib"
  7085. "out")))
  7086. (list (list label vitaminated-input output))))
  7087. (#true (list (cons* label vitaminated-input maybe-output)))))))))
  7088. ;; Detect cycles early by unthunking
  7089. (define i
  7090. (append-filter-map
  7091. fix-input
  7092. (append (if (equal? (list (package-name pack)
  7093. (package-version pack))
  7094. '("rust-block-modes" "0.8.1"))
  7095. (list (list "rust-aes" (p rust-aes-0.7)))
  7096. '())
  7097. (if (equal? (list (package-name pack)
  7098. (package-version pack))
  7099. '("rust-rand-chacha" "0.2.2"))
  7100. (list (list "rust-ppv-lite86" (p rust-ppv-lite86-0.2)))
  7101. '())
  7102. (match (assoc-ref %extra-inputs (package-name pack))
  7103. ((association-list) association-list)
  7104. (#false '())) ; no extra inputs
  7105. cargo-inputs
  7106. (package-inputs pack))))
  7107. (define n-i (append-filter-map
  7108. fix-input
  7109. (append cargo-development-inputs
  7110. ;; TODO: move zlib of rust-libz-sys-1 from
  7111. ;; native-inputs to inputs.
  7112. (package-native-inputs pack)
  7113. (match (package-name pack)
  7114. ("rust-backtrace"
  7115. `(("rust-cc" ,(p rust-cc-1)))) ; missing dep
  7116. (_ '())))))
  7117. (define p-i
  7118. (append
  7119. ;; Clang needs to be propagated such that when used by users of
  7120. ;; rust-bindgen, rust-bindgen finds clang's own headers.
  7121. ;; Example: rust-zstd-sys.
  7122. (if (string=? "rust-bindgen" (package-name pack))
  7123. `(("clang" ,(@ (gnu packages llvm) clang-13)))
  7124. '())
  7125. (append-filter-map
  7126. fix-input (package-propagated-inputs pack))))
  7127. (package
  7128. (inherit pack)
  7129. (build-system antioxidant-build-system)
  7130. (outputs (outputs-for-package-name (package-name pack)))
  7131. (source
  7132. (match (package-name pack)
  7133. ;; Work-around transient network failures
  7134. #;("rust-cc"
  7135. (origin
  7136. (inherit (package-source pack))
  7137. (snippet #~(begin (pk 'ok)))))
  7138. ("rust-jsonpath-lib"
  7139. ;; To avoid missing test files. It has been verified the content
  7140. ;; is the same as the crates.io tarball (except for Cargo.toml /
  7141. ;; Cargo.toml.orig differences).
  7142. (origin
  7143. (method git-fetch)
  7144. (uri (git-reference
  7145. (url "https://github.com/freestrings/jsonpath")
  7146. (commit "v0.3.0")))
  7147. (file-name (git-file-name "rust-jsonpath-lib" "0.3.0"))
  7148. (sha256 "1pq0nhg1jsv0qj1yrk90gp2km670w8y417cz1ahvmnd13dl4yx35")))
  7149. ("rust-libnghttp2-sys"
  7150. (origin
  7151. (inherit (package-source pack))
  7152. ;; original unbundling code doesn't work for antioxidant
  7153. ;; (the library directory -L is not recorded, only -l was).
  7154. (patches (list (local-file "rust-libnghttp2-unbundle.patch")))
  7155. (snippet #~(begin
  7156. (delete-file-recursively "nghttp2")
  7157. (rename-file "Cargo.toml.orig" "Cargo.toml")))))
  7158. ("rust-sqlite3-src"
  7159. ;; Unbundle sqlite3
  7160. (origin
  7161. (inherit (package-source pack))
  7162. (modules '((guix build utils)))
  7163. (snippet #~(delete-file-recursively "source"))))
  7164. ("rust-zstd-sys"
  7165. ;; Unbundle zstd and remove generated bindings.
  7166. (origin
  7167. (inherit (package-source pack))
  7168. (modules '((guix build utils)))
  7169. (snippet
  7170. #~(begin
  7171. (delete-file-recursively "zstd")
  7172. ;; Note: despite it's name, "zstd.h" is not part of zlib
  7173. ;; and hence does not need to be removed.
  7174. (for-each delete-file
  7175. '("src/bindings.rs"
  7176. "src/bindings_experimental.rs"
  7177. "src/bindings_std.rs"
  7178. "src/bindings_std_experimental.rs"))))))
  7179. ("rust-itoa"
  7180. (origin
  7181. (inherit (package-source pack))
  7182. ;; TODO: for compatibility with rust-http
  7183. (patches (list (local-file "rust-itoa-Reintroduce-fmt.patch")))))
  7184. (_ (package-source pack))))
  7185. (arguments (list #:rust-crate-type
  7186. (match (assoc (package-name pack) %crate-types)
  7187. ((_ value) value)
  7188. (#false #~#false)) ; use Cargo.toml
  7189. #:tests?
  7190. (and (not (assoc-ref %disable-tests (package-name pack)))
  7191. ;; Tests don't compile against new dependencies.
  7192. (not (equal? (list (package-name pack)
  7193. (package-version pack))
  7194. '("rust-hkdf" "0.11.0")))
  7195. (not (equal? (list (package-name pack)
  7196. (package-version pack))
  7197. '("rust-hmac" "0.11.0")))
  7198. (not (equal? (list (package-name pack)
  7199. (package-version pack))
  7200. '("rust-der" "0.4.5")))
  7201. (not (equal? (list (package-name pack)
  7202. (package-version pack))
  7203. '("rust-pbkdf2" "0.9.0")))
  7204. (not (equal? (list (package-name pack)
  7205. (package-version pack))
  7206. '("rust-rsa" "0.5.0"))))
  7207. #:skipped-integration-tests
  7208. (match (package-name pack)
  7209. ("bat" #~'("snapshot_tests")) ; TODO: can't find some file (maybe sample.rs?)
  7210. ("fd" #~'("tests")) ; required removed 'rust-tempdir'
  7211. ("nushell" #~'("main")) ; TODO can't find its test cases
  7212. ("rust-actix-codec" #~'("test_framed_sink")) ; removed rust-tokio-test
  7213. ("rust-actix-derive" #~'("test_macro")) ; removed 'rust-actix' (cycle)
  7214. ("rust-actix-macros" #~'("trybuild")) ; TODO: the crates.io tarball doesn't mention rust-trybuild in Cargo.toml or Cargo.toml.orig, but the Git repository does -- maybe a crates.io or Cargo bug?
  7215. ("rust-actix-tls" #~'("test_connect" "test_resolvers")) ; TODO: actix-server is not declared in Cargo.toml (maybe it the tests need to be changed from actix_server to actix_service?)
  7216. ("rust-actix-web-codegen" #~'("test_macro" "trybuild")) ; TODO: dev-dependencies are missing from Cargo.toml
  7217. ("rust-async-stream" #~'("stream")) ; removed 'rust-tokio-test'
  7218. ("rust-async-task" #~'("basic" "cancel" "join" "panic" "ready" "waker_panic")) ; requires 'rust-smol', which would make a cycle
  7219. ("rust-crossbeam-queue" #~'("array_queue" "seg_queue")) ; incompatible "rust-rand"
  7220. ("rust-ctr" #~'("mod")) ; requires 'rust-aes' which cannot directly be added, due to a cycle
  7221. ("rust-cxx" #~'("test")) ; required removed rust-cxx-test-suite
  7222. ("rust-exitfailure" #~'("test")) ; examples are not yet compiled in antioxidant
  7223. ("rust-exr" #~'("across_compression" "fuzz" "roundtrip")) ; TODO missing test files
  7224. ("rust-galil-seiferas" #~'("quick")) ; requires unpackaged "rust-macro-attr"
  7225. ("rust-fern" #~'("file_logging")) ; rust-tempdir is removed
  7226. ("rust-flume" #~'("array" "list" "zero" ; incompatible 'rust-rand'
  7227. "async" "stream")) ; requires 'rust-async-std', which cannot directly be added due to a cycle
  7228. ("rust-font-kit" #~'("tests")) ; various missing files
  7229. ("rust-gif" #~'("decode" "roundtrip" "crashtest")) ; TODO missing test files
  7230. ("rust-htmlescape" #~'("test")) ; incompatible rust-rand
  7231. ("rust-hyper-rustls"
  7232. ;; These tests:
  7233. ;; * appear to be time bombs, as they use
  7234. ;; pre-generated certificates, which will
  7235. ;; eventually expire.
  7236. ;; * use examples, which are not supported yet
  7237. ;; by antioxidant.
  7238. #~'("tests"))
  7239. ("rust-lettre" #~'("transport_smtp" "transport_smtp_pool"))
  7240. ("rust-lsp-types" #~'("lsif")) ; TODO might be fixed in newer versions
  7241. ("rust-mio" #~'("test")) ; requires removed 'rust-tempdir'
  7242. ("rust-mio-uds" #~'("echo" "smoke")) ; requires removed 'rust-tempdir'
  7243. ("rust-nom-derive" #~'("debug")) ; incompatible rust-nom
  7244. ("rust-notmuch" #~'("tests")) ; requires removed rust-lettre-email
  7245. ("rust-proptest-derive" #~'("compiletest")) ; removed 'rust-compiletest-rs'
  7246. ("rust-rcgen" #~'("botan")) ; rust-botan is not packaged yet
  7247. ("rust-reqwest" #~'("badssl" "proxy")) ; network access
  7248. ("ripgrep" #~'("integration")) ; TODO make the tests find their own files
  7249. ("rust-rmp-serde" #~'("round")) ; unpackaged test input rust-rmpv
  7250. ("rust-daemonize" #~'("tests")) ; uses removed 'rust-tempdir' (should be fixed in next version, see https://github.com/knsd/daemonize/pull/42)
  7251. ("rust-rspotify" #~'("test_with_credential")) ; network access
  7252. ("rust-rust-decimal"
  7253. #~(cons "decimal_tests" ; missing test files
  7254. %default-skipped-integration-tests))
  7255. ("rust-s3handler" #~'("v2" "v4")) ; rust-test-with is unpackaged
  7256. ("rust-seahash" #~'("quickchecks")) ; dependency 'rust-quickcheck' is removed because of a cycle
  7257. ("rust-sysinfo" #~'("network")) ; no network in the build environment
  7258. ("rust-test-case" #~'("acceptance")) ; requires "cargo"
  7259. ("rust-tiff" #~'("decode_images" "encode_images" "fuzz_tests")) ; missing test files
  7260. ("rust-tls-parser" #~'("tls_dh" ; ‘cannot find macro `pair`’, possibly an incompatible version
  7261. "tls_extensions")) ; missing files
  7262. ;; These tests require some set-up, see tests/integration_tests.sh
  7263. ("rust-tokio-socks"
  7264. #~'("no_auth" "long_username_password_auth" "username_auth"))
  7265. ("rust-tokio-stream" ; removed test input rust-tokio-test
  7266. #~'("stream" "stream_chain" "stream_collect"
  7267. "stream_iter" "stream_merge" "stream_pending"
  7268. "stream_stream_map"))
  7269. ("rust-tokio-sync"
  7270. #~'("atomic_waker" "barrier" "fuzz_atomic_waker" "mpsc" "mutex" "oneshot" "semaphore" "watch" ; requires removed 'rust-tokio-test'
  7271. "fuzz_atomic_waker" "fuzz_list" "fuzz_mpsc" "fuzz_oneshot"
  7272. "fuzz_semaphore")) ; requires "loom", but upstream commented that dependency out in Cargo.toml.orig.
  7273. ("rust-tokio-util"
  7274. ;; requires removed test input 'tust-tokio-test'
  7275. #~'("framed" "framed_read" "framed_stream" "framed_write"
  7276. "length_delimited" "mpsc" "poll_semaphore"
  7277. "sync_cancellation_token" "time_delay_queue"))
  7278. ("rust-zbase32" #~'("fuzz" ; incompatible rust-quickcheck
  7279. "pyzbase32")) ; rust-cpython is not packaged in Guix
  7280. ("tectonic" #~'("cached_itarbundle")) ; 'Future' is undefined in src/rt.rs, seems to be fixed in upstream master branch
  7281. (_ #~%default-skipped-integration-tests))
  7282. #:rust-dynamic-library-arguments
  7283. (if (equal? (package-name pack) "python-blake3")
  7284. #~'("-C" "link-args=-rdynamic")
  7285. #false)
  7286. ;; TODO: what's the keyword for cargo-build-system?
  7287. ;; Maybe the old values can be copied.
  7288. #:test-options
  7289. #~'#$(test-options (package-name pack)
  7290. (package-version pack))
  7291. #:parallel-tests?
  7292. (not (member (package-name pack) %no-parallel-tests?))
  7293. #:features
  7294. (match (assoc (package-name pack) %features)
  7295. ((_ value)
  7296. (match value
  7297. ((? procedure? procedure) (procedure pack))
  7298. ((? gexp? value) value)))
  7299. (#false (match features
  7300. ((? gexp? f) f)
  7301. (('quote l)
  7302. ;; TODO: escapes, less ad-hoc
  7303. #~'#$l))))))
  7304. (inputs i)
  7305. (native-inputs n-i)
  7306. (propagated-inputs p-i)
  7307. (search-paths
  7308. (append
  7309. (match (package-name pack)
  7310. ;; Make sure that PKG_CONFIG_PATH is available to build.rs.
  7311. ;; rust-system-deps uses rust-pkg-config, so it needs the
  7312. ;; search paths too -- needed for compiling rust-glib-sys@0.14.0.
  7313. ;; TODO: upstream Guix
  7314. ((or "rust-pkg-config"
  7315. "rust-system-deps"
  7316. "rust-tectonic-dep-support")
  7317. (package-search-paths (@ (gnu packages pkg-config) pkg-config)))
  7318. (_ '()))
  7319. (package-search-paths pack)))
  7320. (native-search-paths
  7321. (append
  7322. (match (package-name pack)
  7323. ;; Make sure that PKG_CONFIG_PATH is available to build.rs.
  7324. ((or "rust-pkg-config"
  7325. "rust-system-deps"
  7326. "rust-tectonic-dep-support")
  7327. (package-native-search-paths (@ (gnu packages pkg-config) pkg-config)))
  7328. (_ '()))
  7329. (package-native-search-paths pack)))))
  7330. (package-arguments pack))
  7331. pack))
  7332. (define vitamination-stack ; only for cycle detection
  7333. (make-parameter '()))
  7334. (define vitaminate/auto
  7335. ((@ (guix memoization) mlambda) (pack)
  7336. (when (member pack (vitamination-stack))
  7337. (call-with-values
  7338. (lambda ()
  7339. (break (lambda (x) (eq? x pack)) (vitamination-stack)))
  7340. (lambda (cycle before)
  7341. (pk 'cyclic-vitamines)
  7342. (pk #:begin (reverse (map package-name before)))
  7343. (pk #:cycle (reverse (cons '... (map package-name (cons pack cycle)))))))
  7344. (pk "oops, a cycle?")
  7345. (throw 'antioxidant-cycle)) ; caught in antioxidant-ci.scm
  7346. (parameterize ((vitamination-stack (cons pack (vitamination-stack))))
  7347. (vitaminate/auto* pack))))
  7348. ;; Self-checks
  7349. (define (check-removed-extra-inputs)
  7350. "Verify that %extra-inputs is not in contradiction with
  7351. %removed-dependencies"
  7352. ;; List packages in %removed-dependencies which have an entry in
  7353. ;; %extra-inputs defined (useless, unless it's a leaf package)
  7354. (define (check-removed-dependency entry)
  7355. (match entry
  7356. ((? string? name)
  7357. (when (assoc name %extra-inputs)
  7358. (pk name "in %removed-dependencies and %extra-inputs (probably useless)")
  7359. (throw 'oops)))
  7360. (((? string? left) '-> (? string? right))
  7361. (when (member right %removed-dependencies)
  7362. (pk right "(a -> b) entry in %removed-dependencies and b in %removed-dependencies (redundant)")
  7363. (throw 'oops))
  7364. (when (member left %removed-dependencies)
  7365. (pk left "(a -> b) entry in %removed-dependencies and a in %removed-dependencies (useless)")
  7366. (throw 'oops)))
  7367. (((? string? dependency-name) #:for-dependent context?)
  7368. (when (member dependency-name %removed-dependencies)
  7369. (pk dependency-name "a #:for-dependent context? entry in %removed-dependencies and a in %removed-dependencies (redundant")
  7370. (throw 'oops)))
  7371. (a (pk 'a a)
  7372. (error "bogus entry in %removed-dependencies"))))
  7373. ;; list names listed as an extra-input for some package and also in
  7374. ;; %removed-dependencies (confusing, because they would have to be both
  7375. ;; added and removed).
  7376. (define check-extra-input
  7377. (match-lambda
  7378. (((? string? name) (? list? dependencies))
  7379. (let ((check-dependency
  7380. (match-lambda ((dependency-name _ . rest)
  7381. (when (member dependency-name %removed-dependencies)
  7382. (pk "extra-input " dependency-name " of " name "in %removed-dependencies (contradictory)")
  7383. (throw 'oops))
  7384. (when (member (list name '-> dependency-name) %removed-dependencies)
  7385. (pk name "->" dependency-name "both in %removed-dependencies and %extra-inputs (contradictory)")
  7386. (throw 'oops))))))
  7387. (for-each check-dependency dependencies)))))
  7388. (for-each check-removed-dependency %removed-dependencies)
  7389. (for-each check-extra-input %extra-inputs))
  7390. (check-removed-extra-inputs)
  7391. ;; Check that %extra-inputs is sorted
  7392. (fold (lambda (entry1 entry2 _)
  7393. ;;(pk entry1 entry2)
  7394. (define x (car entry1))
  7395. (define y (car entry2))
  7396. (when (string=? x y)
  7397. (pk x y)
  7398. (error "%extra-inputs contains a duplicate"))
  7399. (unless (string<? x y)
  7400. (pk x y)
  7401. (error "%extra-inputs is not sorted"))
  7402. _)
  7403. 'unused
  7404. %extra-inputs (cdr %extra-inputs))
  7405. ;; Somewhat impure, but should work well enough for ci.guix.gnu.org
  7406. ;; and local development. Do it before antioxidating anything else,
  7407. ;; to avoid risks of the original librsvg being used elsewhere.
  7408. (let ((new (vitaminate/auto (@ (gnu packages gnome) librsvg))))
  7409. (set! (@ (gnu packages gnome) librsvg) new))
  7410. (use-modules (gnu packages))
  7411. ;; Likewise. TODO: python bindings
  7412. (let ((new (package
  7413. (inherit (vitaminate/auto (@ (gnu packages sequoia) libsequoia)))
  7414. ;; Update to avoid non-building rust-tokio-util@0.3 dependency.
  7415. (source (origin
  7416. (method git-fetch)
  7417. (uri (git-reference
  7418. (url "https://gitlab.com/sequoia-pgp/sequoia.git")
  7419. (commit (string-append "openpgp/v" "1.8.0"))))
  7420. (sha256
  7421. (base32 "1s5yam6prqwrzk0fqyan7gpwlclbini2bmnl1zjnjsdxi8b9cmnr"))
  7422. (file-name (git-file-name "sequoia" "1.8.0"))
  7423. (patches (search-patches #;"libsequoia-remove-store.patch" ; doesn't apply, TODO still needed?
  7424. #;"libsequoia-fix-ffi-Makefile.patch"))))
  7425. (build-system antioxidant-workspace-build-system)
  7426. ;; TODO: build the "rlib" for tests.
  7427. (arguments (list #:cargo-target-directory "../target" ; expected by sq/Makefile for shell completions
  7428. #:override-member-crate-type
  7429. #~'(("openpgp-ffi" . "cdylib"))
  7430. #:rust-dynamic-library-arguments
  7431. ;; TODO: needed?
  7432. #~'("-C" "link-args=-rdynamic"))))))
  7433. (set! (@ (gnu packages sequoia) libsequoia) new))
  7434. ;; todo: cycle between rust-demo-hack and rust-demo-hack-impl
  7435. ;; Make some functioning packages available to "guix install ANTIOXIDATED-FOO"
  7436. ;; when using channels.
  7437. (define (public-test-package base)
  7438. (package
  7439. (inherit base)
  7440. (name (string-append "antioxidated-" (package-name base))))) ; don't shadow the cargo package to avoid ambiguity
  7441. (define-public antioxidated-rust-bindgen
  7442. (public-test-package (vitaminate/auto (p rust-bindgen-0.59)))) ; fragile w.r.t. changes to code for linking to C libraries, avoid breaking it
  7443. (define-public antioxidated-agate
  7444. (public-test-package (vitaminate/auto agate)))
  7445. (define-public antioxidated-alfis
  7446. (public-test-package (vitaminate/auto alfis)))
  7447. (define-public antioxidated-castor
  7448. (public-test-package (vitaminate/auto castor)))
  7449. (define-public antioxidated-diffr
  7450. (public-test-package (vitaminate/auto (@ (gnu packages rust-apps) diffr))))
  7451. (define-public antioxidated-drill
  7452. (package
  7453. (inherit (public-test-package (vitaminate/auto drill)))
  7454. (source
  7455. (origin
  7456. (inherit (package-source drill))
  7457. (patches (list (local-file "drill-update-dependencies.patch")))
  7458. (snippet #~(rename-file "Cargo.toml.orig" "Cargo.toml"))))))
  7459. (define-public antioxidated-dutree
  7460. (public-test-package (vitaminate/auto dutree)))
  7461. (define-public antioxidated-git-absorb
  7462. (public-test-package (vitaminate/auto git-absorb)))
  7463. (define-public antioxidated-hex
  7464. (public-test-package (vitaminate/auto hex)))
  7465. (define-public antioxidated-hexyl
  7466. (public-test-package (vitaminate/auto (@ (gnu packages rust-apps) hexyl))))
  7467. (define-public antioxidated-ripgrep
  7468. (public-test-package (vitaminate/auto ripgrep)))
  7469. (define-public antioxidated-rtss
  7470. (public-test-package (vitaminate/auto rtss)))
  7471. (define-public antioxidated-sniffglue
  7472. (public-test-package (vitaminate/auto sniffglue)))
  7473. (define-public antioxidated-swayhide
  7474. (public-test-package (vitaminate/auto swayhide)))
  7475. (define-public antioxidated-tealdeer
  7476. (public-test-package (vitaminate/auto tealdeer)))
  7477. ;; TODO: maybe create a symlink forest of the generated
  7478. ;; headers by default (in 'target', where the Makefile
  7479. ;; expects it?)
  7480. (define-public antioxidated-newsboat
  7481. (package
  7482. (inherit
  7483. (public-test-package
  7484. (vitaminate/auto (@ (gnu packages syndication) newsboat))))
  7485. (build-system antioxidant-workspace-build-system)
  7486. (arguments
  7487. ;; TODO: fails with ‘Error opening terminal: unknown’
  7488. ;; TODO: "make install-doc", and check ...
  7489. (list #:tests? #false
  7490. #:make-flags #~(list (string-append "prefix=" #$output)
  7491. (string-append "CARGO=echo 'do not use cargo for:'"))
  7492. #:override-member-crate-type
  7493. ;; TODO: non-static, for grafts. Also huge (77.4 MiB)!
  7494. ;; Is there a mechanism for static libraries that _doesn't_
  7495. ;; include copies of the dependencies?
  7496. #~'(("rust/libnewsboat-ffi" . "staticlib"))
  7497. #:phases
  7498. #~(modify-phases %antioxidant-workspaces-phases
  7499. (add-after 'unpack 'replace-cargo
  7500. (lambda _ ; TODO: finish
  7501. (substitute* "config.sh"
  7502. (("fail \"cargo\"") ":"))
  7503. (mkdir-p (string-append #$output "/lib/newsboat-ffi-things"))
  7504. (setenv "RUST_CXX_BUILD_OUTPUT"
  7505. (string-append #$output "/lib/newsboat-ffi-things"))))
  7506. (add-after 'build-workspace-members 'prepare-installation
  7507. (lambda* (#:key outputs inputs #:allow-other-keys)
  7508. (invoke "ls" "-R" #$output)
  7509. (invoke "ls" "-R" #$output:lib)
  7510. (substitute* "Makefile"
  7511. (("\\$\\(relative_cargo_target_dir\\)/cxxbridge")
  7512. (search-input-directory outputs "lib/newsboat-ffi-things/cxxbridge/include"))
  7513. (("\\$\\(CARGO_TARGET_DIR\\)/\\$\\(BUILD_TYPE\\)/libnewsboat.a")
  7514. (search-input-file outputs "lib/guixcrate/libnewsboat.a"))
  7515. (("-L\\$\\(CARGO_TARGET_DIR\\)/\\$\\(BUILD_TYPE\\)")
  7516. (let ((crates (find-directly-available-crates (append outputs inputs)))
  7517. (required (list (make-crate-mapping "libnewsboat-ffi" "libnewsboat-ffi"))))
  7518. (string-append "-L"
  7519. (dirname (search-input-file outputs "lib/guixcrate/libnewsboat.a"))
  7520. " "
  7521. (string-join (linker-arguments/non-rustc crates required)))))))))))))
  7522. (define-public antioxidated-greetd
  7523. (public-test-package
  7524. (package
  7525. (inherit
  7526. (vitaminate/auto (@ (gnu packages admin) greetd)))
  7527. (source
  7528. (origin
  7529. (inherit (package-source (@ (gnu packages admin) greetd)))
  7530. (modules '((guix build utils)))
  7531. (snippet
  7532. ;; For compatibility with new rust-nix (TODO: upstream)
  7533. #~(substitute* (find-files "." "\\.rs$")
  7534. (("\\bnix::Error::Sys\\(nix::errno::Errno::([A-Z]+)\\)" _ error)
  7535. (string-append "nix::errno::Errno::" error))))))
  7536. (build-system antioxidant-workspace-build-system)
  7537. (arguments
  7538. (list #:phases
  7539. ;; Keep old phases, adjusted for antioxidant-build-system.
  7540. #~(modify-phases %antioxidant-workspaces-phases
  7541. (delete 'configure)
  7542. (add-after 'build-workspace-members 'build-man-pages
  7543. (lambda* (#:key inputs #:allow-other-keys)
  7544. (define (scdoc-cmd doc lvl)
  7545. (system (string-append "scdoc < "
  7546. doc "-" lvl ".scd > "
  7547. doc "." lvl)))
  7548. (with-directory-excursion "man"
  7549. (scdoc-cmd "greetd" "1")
  7550. (scdoc-cmd "greetd" "5")
  7551. (scdoc-cmd "greetd-ipc" "7")
  7552. (scdoc-cmd "agreety" "1"))))
  7553. (replace 'install
  7554. (lambda* (#:key outputs #:allow-other-keys)
  7555. (let* ((out (assoc-ref outputs "out"))
  7556. (bin (string-append out "/bin"))
  7557. (sbin (string-append out "/sbin"))
  7558. (share (string-append out "/share"))
  7559. (man (string-append share "/man"))
  7560. (man1 (string-append man "/man1"))
  7561. (man5 (string-append man "/man5"))
  7562. (man7 (string-append man "/man7")))
  7563. (with-directory-excursion "man"
  7564. (install-file "greetd.1" man1)
  7565. (install-file "greetd.5" man5)
  7566. (install-file "greetd-ipc.7" man7)
  7567. (install-file "agreety.1" man1)))))))))))
  7568. ;; Make a shared library and link to it
  7569. (define-public test-lib
  7570. (package
  7571. (source (local-file "shared-lib" #:recursive? #true))
  7572. (name "test-sharedlib")
  7573. (version "0.0")
  7574. (build-system antioxidant-build-system)
  7575. (home-page #f)
  7576. (synopsis "Basic example of C-style shared libraries implemented in Rust")
  7577. (arguments
  7578. (list #:rust-dynamic-library-arguments
  7579. #~'("-C" "link-args=-rdynamic")
  7580. #:phases
  7581. #~(modify-phases %standard-antioxidant-phases
  7582. (replace 'build-binaries
  7583. (lambda _
  7584. (mkdir-p (string-append #$output "/bin"))
  7585. (invoke "gcc" "-L" (string-append #$output "/lib")
  7586. "-lsharedlib"
  7587. "example.c"
  7588. "-o" (string-append #$output "/bin/test")))))))
  7589. ;; /gnu/store/[...]/bin/test || echo $? ---> 42
  7590. (description #f)
  7591. (license #f)))
  7592. ;; Update from <https://issues.guix.gnu.org/54299#53>.
  7593. ;;
  7594. ;; Note: the copyright info on the top is incomplete, this
  7595. ;; copies some code from the package definition, will be solved
  7596. ;; once antioxidant is merged into Guix.
  7597. ;;
  7598. ;; TODO: keep the phase that adds all the nice man pages etc.
  7599. (define-public antioxidated-alacritty
  7600. (public-test-package
  7601. (vitaminate/auto
  7602. (package
  7603. (inherit (@ (gnu packages terminals) alacritty))
  7604. (name "alacritty")
  7605. (version "0.10.1")
  7606. (source
  7607. (origin
  7608. ;; XXX: The crate at "crates.io" has limited contents. In particular,
  7609. ;; it does not contain "extra" directory with completions, icon, etc.
  7610. (method git-fetch)
  7611. (uri (git-reference
  7612. (url "https://github.com/jwilm/alacritty")
  7613. (commit (string-append "v" version))))
  7614. (file-name (git-file-name name version))
  7615. (sha256
  7616. (base32 "1s38gyx0ifcf1vcr6n8gzbk7rg1apxrz7js8cp8x5k1s0m3abys3"))))))))
  7617. (define-public antioxidated-b3sum ; new version required for compatibility with new rust-blake3. Not updated to @1.3.1, because that requires updating non-trivial dependencies.
  7618. (public-test-package
  7619. (vitaminate/auto
  7620. (package
  7621. (inherit (@ (gnu packages crypto) b3sum))
  7622. (name "b3sum")
  7623. (version "1.0.0")
  7624. (source (origin
  7625. (method url-fetch)
  7626. (uri (crate-uri "b3sum" version))
  7627. (file-name (string-append name "-" version ".tar.gz"))
  7628. (sha256
  7629. (base32
  7630. "1rq0yqqzrxwqi2c90pzl4v9g6a2gcbvirp8knbgyq38jb0cshvfr"))))))))
  7631. (define-public antioxidated-nushell
  7632. (package
  7633. (inherit (public-test-package (vitaminate/auto (@ (gnu packages shells) nushell))))
  7634. (build-system antioxidant-workspace-build-system)))
  7635. (define-public antioxidated-rust-analyzer
  7636. (package
  7637. (inherit (public-test-package (vitaminate/auto (@ (gnu packages rust-apps) rust-analyzer))))
  7638. (build-system antioxidant-workspace-build-system)))
  7639. ;; For local development
  7640. (list antioxidated-rust-bindgen
  7641. antioxidated-agate
  7642. antioxidated-castor
  7643. antioxidated-dutree
  7644. antioxidated-diffr
  7645. antioxidated-git-absorb
  7646. antioxidated-hex
  7647. antioxidated-hexyl
  7648. antioxidated-ripgrep
  7649. antioxidated-rtss
  7650. antioxidated-sniffglue
  7651. antioxidated-swayhide
  7652. antioxidated-tealdeer
  7653. test-lib)