web.scm 323 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
  3. ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
  4. ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
  5. ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
  6. ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
  7. ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com>
  8. ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
  9. ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
  10. ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
  11. ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
  12. ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
  13. ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
  14. ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
  15. ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
  16. ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
  17. ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
  18. ;;; Copyright © 2016, 2017, 2018, 2019, 2021 Arun Isaac <arunisaac@systemreboot.net>
  19. ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  20. ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
  21. ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
  22. ;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
  23. ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
  24. ;;; Copyright © 2017 Petter <petter@mykolab.ch>
  25. ;;; Copyright © 2017, 2021 Pierre Langlois <pierre.langlois@gmx.com>
  26. ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
  27. ;;; Copyright © 2017, 2019, 2020 Christopher Baines <mail@cbaines.net>
  28. ;;; Copyright © 2018, 2019 Julien Lepiller <julien@lepiller.eu>
  29. ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
  30. ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
  31. ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
  32. ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
  33. ;;; Copyright © 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
  34. ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
  35. ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
  36. ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
  37. ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
  38. ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
  39. ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
  40. ;;; Copyright © 2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de>
  41. ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
  42. ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
  43. ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  44. ;;; Copyright © 2018, 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
  45. ;;; Copyright © 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
  46. ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
  47. ;;; Copyright © 2020, 2021 Ryan Prior <rprior@protonmail.com>
  48. ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
  49. ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  50. ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
  51. ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
  52. ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
  53. ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
  54. ;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>
  55. ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
  56. ;;;
  57. ;;; This file is part of GNU Guix.
  58. ;;;
  59. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  60. ;;; under the terms of the GNU General Public License as published by
  61. ;;; the Free Software Foundation; either version 3 of the License, or (at
  62. ;;; your option) any later version.
  63. ;;;
  64. ;;; GNU Guix is distributed in the hope that it will be useful, but
  65. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  66. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  67. ;;; GNU General Public License for more details.
  68. ;;;
  69. ;;; You should have received a copy of the GNU General Public License
  70. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  71. (define-module (gnu packages web)
  72. #:use-module (ice-9 match)
  73. #:use-module ((guix licenses) #:prefix license:)
  74. #:use-module (guix packages)
  75. #:use-module (guix download)
  76. #:use-module (guix gexp)
  77. #:use-module (guix cvs-download)
  78. #:use-module (guix hg-download)
  79. #:use-module (guix git-download)
  80. #:use-module (guix utils)
  81. #:use-module (guix build-system ant)
  82. #:use-module (guix build-system cargo)
  83. #:use-module (guix build-system cmake)
  84. #:use-module (guix build-system copy)
  85. #:use-module (guix build-system glib-or-gtk)
  86. #:use-module (guix build-system gnu)
  87. #:use-module (guix build-system go)
  88. #:use-module (guix build-system meson)
  89. #:use-module (guix build-system perl)
  90. #:use-module (guix build-system python)
  91. #:use-module (guix build-system qt)
  92. #:use-module (guix build-system scons)
  93. #:use-module (guix build-system trivial)
  94. #:use-module (gnu packages)
  95. #:use-module (gnu packages admin)
  96. #:use-module (gnu packages adns)
  97. #:use-module (gnu packages apr)
  98. #:use-module (gnu packages autotools)
  99. #:use-module (gnu packages base)
  100. #:use-module (gnu packages bash)
  101. #:use-module (gnu packages bison)
  102. #:use-module (gnu packages bittorrent)
  103. #:use-module (gnu packages boost)
  104. #:use-module (gnu packages check)
  105. #:use-module (gnu packages compression)
  106. #:use-module (gnu packages crates-gtk)
  107. #:use-module (gnu packages crates-io)
  108. #:use-module (gnu packages curl)
  109. #:use-module (gnu packages cyrus-sasl)
  110. #:use-module (gnu packages databases)
  111. #:use-module (gnu packages docbook)
  112. #:use-module (gnu packages documentation)
  113. #:use-module (gnu packages emacs)
  114. #:use-module (gnu packages emacs-xyz)
  115. #:use-module (gnu packages flex)
  116. #:use-module (gnu packages fontutils)
  117. #:use-module (gnu packages freedesktop)
  118. #:use-module (gnu packages gcc)
  119. #:use-module (gnu packages gd)
  120. #:use-module (gnu packages gettext)
  121. #:use-module (gnu packages glib)
  122. #:use-module (gnu packages gnome)
  123. #:use-module (gnu packages gnu-doc)
  124. #:use-module (gnu packages gnunet)
  125. #:use-module (gnu packages gnupg)
  126. #:use-module (gnu packages golang)
  127. #:use-module (gnu packages gperf)
  128. #:use-module (gnu packages graphviz)
  129. #:use-module (gnu packages gtk)
  130. #:use-module (gnu packages guile)
  131. #:use-module (gnu packages guile-xyz)
  132. #:use-module (gnu packages hurd)
  133. #:use-module (gnu packages icu4c)
  134. #:use-module (gnu packages image)
  135. #:use-module (gnu packages java)
  136. #:use-module (gnu packages jemalloc)
  137. #:use-module (gnu packages imagemagick)
  138. #:use-module (gnu packages kde)
  139. #:use-module (gnu packages kerberos)
  140. #:use-module (gnu packages libevent)
  141. #:use-module (gnu packages libidn)
  142. #:use-module (gnu packages libunistring)
  143. #:use-module (gnu packages libunwind)
  144. #:use-module (gnu packages linux)
  145. #:use-module (gnu packages lisp-xyz)
  146. #:use-module (gnu packages lsof)
  147. #:use-module (gnu packages lua)
  148. #:use-module (gnu packages mail)
  149. #:use-module (gnu packages man)
  150. #:use-module (gnu packages markup)
  151. #:use-module (gnu packages ncurses)
  152. #:use-module (gnu packages networking)
  153. #:use-module (gnu packages nss)
  154. #:use-module (gnu packages openldap)
  155. #:use-module (gnu packages openstack)
  156. #:use-module (gnu packages package-management)
  157. #:use-module (gnu packages pcre)
  158. #:use-module (gnu packages perl)
  159. #:use-module (gnu packages perl-check)
  160. #:use-module (gnu packages python)
  161. #:use-module (gnu packages python-crypto)
  162. #:use-module (gnu packages python-web)
  163. #:use-module (gnu packages python-xyz)
  164. #:use-module (gnu packages pkg-config)
  165. #:use-module (gnu packages qt)
  166. #:use-module (gnu packages re2c)
  167. #:use-module (gnu packages readline)
  168. #:use-module (gnu packages search)
  169. #:use-module (gnu packages serialization)
  170. #:use-module (gnu packages sphinx)
  171. #:use-module (gnu packages texinfo)
  172. #:use-module (gnu packages textutils)
  173. #:use-module (gnu packages tls)
  174. #:use-module (gnu packages valgrind)
  175. #:use-module (gnu packages version-control)
  176. #:use-module (gnu packages vim)
  177. #:use-module (gnu packages xml)
  178. #:use-module ((srfi srfi-1) #:select (delete-duplicates)))
  179. (define-public qhttp
  180. (package
  181. (name "qhttp")
  182. (version "3.1")
  183. (source
  184. (origin
  185. (method git-fetch)
  186. (uri
  187. (git-reference
  188. (url "https://github.com/azadkuh/qhttp")
  189. (commit (string-append "version-" version))))
  190. (file-name (git-file-name name version))
  191. (sha256
  192. (base32 "0cx23g4y4k4v9p5ph6h7gfhp8sfy1gcdv1g6bl44hppar1y0zfdq"))))
  193. (build-system gnu-build-system)
  194. (arguments
  195. `(#:tests? #f ; no target
  196. #:imported-modules
  197. ((guix build copy-build-system)
  198. ,@%gnu-build-system-modules)
  199. #:modules
  200. (((guix build copy-build-system) #:prefix copy:)
  201. (guix build gnu-build-system)
  202. (guix build utils))
  203. #:phases
  204. (modify-phases %standard-phases
  205. (add-after 'unpack 'patch-source
  206. (lambda* (#:key outputs #:allow-other-keys)
  207. (substitute* "commondir.pri"
  208. (("\\$\\$PRJDIR/xbin")
  209. (string-append (assoc-ref outputs "out") "/lib"))
  210. (("-L")
  211. "-lhttp_parser -L")
  212. (("\\$\\$PRJDIR/3rdparty")
  213. ""))
  214. (substitute* "src/src.pro"
  215. (("SOURCES \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.c")
  216. "")
  217. (("HEADERS \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.h")
  218. ""))
  219. (substitute* '("src/private/qhttpbase.hpp" "src/qhttpabstracts.cpp")
  220. (("http-parser/http_parser.h")
  221. "http_parser.h"))
  222. #t))
  223. (replace 'configure
  224. (lambda _ (invoke "qmake")))
  225. (replace 'install
  226. (lambda args
  227. (apply (assoc-ref copy:%standard-phases 'install)
  228. #:install-plan
  229. '(("src" "include"
  230. #:include-regexp ("\\.hpp$")))
  231. args)))
  232. (add-after 'install 'remove-examples
  233. (lambda* (#:key outputs #:allow-other-keys)
  234. (with-directory-excursion
  235. (string-append (assoc-ref outputs "out") "/lib")
  236. (for-each delete-file
  237. (list
  238. "basic-server"
  239. "helloworld"
  240. "postcollector")))
  241. #t)))))
  242. (inputs
  243. `(("http-parser" ,http-parser)
  244. ("qtbase" ,qtbase-5)))
  245. (home-page "https://github.com/azadkuh/qhttp/")
  246. (synopsis "Qt-based HTTP Library")
  247. (description
  248. "Qhttp is a light-weight and asynchronous HTTP library
  249. (both server & client) in Qt5 and C++14.")
  250. (license license:expat)))
  251. (define-public httpd
  252. (package
  253. (name "httpd")
  254. (version "2.4.51")
  255. (source (origin
  256. (method url-fetch)
  257. (uri (string-append "mirror://apache/httpd/httpd-"
  258. version ".tar.bz2"))
  259. (sha256
  260. (base32
  261. "1x1qp10pfh33x1b56liwsjl0jamjm5lkk7j3lj87c1ygzs0ivq10"))))
  262. (build-system gnu-build-system)
  263. (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
  264. (inputs `(("apr" ,apr)
  265. ("apr-util" ,apr-util)
  266. ("openssl" ,openssl)
  267. ("perl" ,perl))) ; needed to run bin/apxs
  268. (arguments
  269. `(#:test-target "test"
  270. #:configure-flags (list "--enable-rewrite"
  271. "--enable-userdir"
  272. "--enable-vhost-alias"
  273. "--enable-ssl"
  274. "--enable-mime-magic"
  275. (string-append "--sysconfdir="
  276. (assoc-ref %outputs "out")
  277. "/etc/httpd"))))
  278. (synopsis "Featureful HTTP server")
  279. (description
  280. "The Apache HTTP Server Project is a collaborative software development
  281. effort aimed at creating a robust, commercial-grade, featureful, and
  282. freely-available source code implementation of an HTTP (Web) server. The
  283. project is jointly managed by a group of volunteers located around the world,
  284. using the Internet and the Web to communicate, plan, and develop the server
  285. and its related documentation.")
  286. (license license:asl2.0)
  287. (home-page "https://httpd.apache.org/")))
  288. (define-public mod-wsgi
  289. (package
  290. (name "mod-wsgi")
  291. (version "4.7.1")
  292. (source (origin
  293. (method git-fetch)
  294. (uri (git-reference
  295. (url "https://github.com/GrahamDumpleton/mod_wsgi")
  296. (commit version)))
  297. (file-name (git-file-name name version))
  298. (sha256
  299. (base32
  300. "1savh6h3qds20mwn1nqasmqzcp57pdhfc9v4b4k78d6q28y0r17s"))))
  301. (build-system gnu-build-system)
  302. (arguments
  303. '(#:tests? #f ; TODO: can't figure out if there are tests
  304. #:make-flags (list
  305. (string-append "DESTDIR="
  306. (assoc-ref %outputs "out"))
  307. "LIBEXECDIR=/modules")))
  308. (inputs
  309. `(("httpd" ,httpd)
  310. ("python" ,python-wrapper)))
  311. (synopsis "Apache HTTPD module for Python WSGI applications")
  312. (description
  313. "The mod_wsgi module for the Apache HTTPD Server adds support for running
  314. applications that support the Python @acronym{WSGI, Web Server Gateway
  315. Interface} specification.")
  316. (license license:asl2.0)
  317. (home-page "https://modwsgi.readthedocs.io/")))
  318. (define-public monolith
  319. (package
  320. (name "monolith")
  321. (version "2.6.1")
  322. (source
  323. (origin
  324. (method git-fetch)
  325. (uri (git-reference
  326. (url "https://github.com/Y2Z/monolith.git")
  327. (commit (string-append "v" version))))
  328. (file-name (git-file-name name version))
  329. (sha256
  330. (base32 "1pj4wnsw5a4ys79sqw68ib6zimaqlkplb89x6yncg949a6hj8516"))))
  331. (build-system cargo-build-system)
  332. (arguments
  333. `(#:cargo-inputs
  334. (("rust-atty" ,rust-atty-0.2)
  335. ("rust-base64" ,rust-base64-0.13)
  336. ("rust-chrono" ,rust-chrono-0.4)
  337. ("rust-clap" ,rust-clap-2)
  338. ("rust-cssparser" ,rust-cssparser-0.28)
  339. ("rust-encoding-rs" ,rust-encoding-rs-0.8)
  340. ("rust-html5ever" ,rust-html5ever-0.24)
  341. ("rust-regex" ,rust-regex-1)
  342. ("rust-reqwest" ,rust-reqwest-0.11)
  343. ("rust-sha2" ,rust-sha2-0.9)
  344. ("rust-url" ,rust-url-2))
  345. #:cargo-development-inputs
  346. (("rust-assert-cmd" ,rust-assert-cmd-1))))
  347. (native-inputs
  348. `(("pkg-config" ,pkg-config)))
  349. (inputs
  350. `(("openssl" ,openssl)))
  351. (home-page "https://github.com/Y2Z/monolith")
  352. (synopsis "Command line tool for saving web pages as a single HTML file")
  353. (description
  354. "Monolith bundles any web page into a single HTML file.
  355. Unlike conventional ``Save page as…'', Monolith not only saves the target
  356. document, it embeds CSS, image, and JavaScript assets all at once, producing
  357. a single HTML5 document.
  358. If compared to saving websites with @samp{wget -mpk}, Monolith embeds
  359. all assets as data URLs and therefore displays the saved page exactly
  360. the same, being completely separated from the Internet.")
  361. (license license:unlicense)))
  362. (define-public nginx
  363. (package
  364. (name "nginx")
  365. ;; Track the ‘mainline’ branch. Upstream considers it more reliable than
  366. ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
  367. ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
  368. ;; Please update the nginx-documentation package together with this one!
  369. (version "1.21.3")
  370. (source (origin
  371. (method url-fetch)
  372. (uri (string-append "https://nginx.org/download/nginx-"
  373. version ".tar.gz"))
  374. (sha256
  375. (base32
  376. "0nhps7igdqcpcy1r8677ar807rfclpylmz3y858a678m1np4lxql"))))
  377. (build-system gnu-build-system)
  378. (inputs `(("libxml2" ,libxml2)
  379. ("libxslt" ,libxslt)
  380. ("openssl" ,openssl)
  381. ("pcre" ,pcre)
  382. ("zlib" ,zlib)))
  383. (arguments
  384. `(#:tests? #f ; no test target
  385. #:phases
  386. (modify-phases %standard-phases
  387. (add-before 'configure 'patch-/bin/sh
  388. (lambda _
  389. (substitute* "auto/feature"
  390. (("/bin/sh") (which "sh")))
  391. #t))
  392. (replace 'configure
  393. ;; The configure script is hand-written, not from GNU autotools.
  394. (lambda* (#:key configure-flags inputs outputs #:allow-other-keys)
  395. (let ((flags
  396. (append (list (string-append "--prefix=" (assoc-ref outputs "out"))
  397. "--with-http_ssl_module"
  398. "--with-http_v2_module"
  399. "--with-http_xslt_module"
  400. "--with-http_gzip_static_module"
  401. "--with-http_gunzip_module"
  402. "--with-http_addition_module"
  403. "--with-http_sub_module"
  404. "--with-pcre-jit"
  405. "--with-debug"
  406. "--with-stream"
  407. ;; Even when not cross-building, we pass the
  408. ;; --crossbuild option to avoid customizing for the
  409. ;; kernel version on the build machine.
  410. ,(let ((system "Linux") ; uname -s
  411. (release "3.2.0") ; uname -r
  412. ;; uname -m
  413. (machine (match (or (%current-target-system)
  414. (%current-system))
  415. ("x86_64-linux" "x86_64")
  416. ("i686-linux" "i686")
  417. ("mips64el-linux" "mips64")
  418. ;; Prevent errors when querying
  419. ;; this package on unsupported
  420. ;; platforms, e.g. when running
  421. ;; "guix package --search="
  422. (_ "UNSUPPORTED"))))
  423. (string-append "--crossbuild="
  424. system ":" release ":" machine)))
  425. configure-flags)))
  426. (setenv "CC" ,(cc-for-target))
  427. ;; Fix ./configure test for ‘#include <libxml/parser.h>’.
  428. (setenv "CFLAGS" ; CPPFLAGS is not respected
  429. (string-append "-I" (assoc-ref inputs "libxml2")
  430. "/include/libxml2"))
  431. (format #t "configure flags: ~s~%" flags)
  432. (apply invoke "./configure" flags)
  433. #t)))
  434. (add-after 'install 'install-man-page
  435. (lambda* (#:key outputs #:allow-other-keys)
  436. (let* ((out (assoc-ref outputs "out"))
  437. (man (string-append out "/share/man")))
  438. (install-file "objs/nginx.8" (string-append man "/man8"))
  439. #t)))
  440. (add-after 'install 'fix-root-dirs
  441. (lambda* (#:key outputs #:allow-other-keys)
  442. ;; 'make install' puts things in strange places, so we need to
  443. ;; clean it up ourselves.
  444. (let* ((out (assoc-ref outputs "out"))
  445. (share (string-append out "/share/nginx")))
  446. ;; This directory is empty, so get rid of it.
  447. (rmdir (string-append out "/logs"))
  448. ;; Example configuration and HTML files belong in
  449. ;; /share.
  450. (mkdir-p share)
  451. (rename-file (string-append out "/conf")
  452. (string-append share "/conf"))
  453. (rename-file (string-append out "/html")
  454. (string-append share "/html"))
  455. #t))))))
  456. (home-page "https://nginx.org")
  457. (synopsis "HTTP and reverse proxy server")
  458. (description
  459. "Nginx (\"engine X\") is a high-performance web and reverse proxy server
  460. created by Igor Sysoev. It can be used both as a stand-alone web server
  461. and as a proxy to reduce the load on back-end HTTP or mail servers.")
  462. ;; Almost all of nginx is distributed under the bsd-2 license.
  463. ;; The exceptions are:
  464. ;; * The 'nginx-http-push' module is covered by the expat license.
  465. ;; * The 'nginx-development-kit' module is mostly covered by bsd-3,
  466. ;; except for two source files which are bsd-4 licensed.
  467. (license (list license:bsd-2 license:expat license:bsd-3 license:bsd-4))))
  468. (define-public nginx-documentation
  469. ;; This documentation should be relevant for the current nginx package.
  470. (let ((version "1.21.3")
  471. (revision 2769)
  472. (changeset "16f6fa718be2"))
  473. (package
  474. (name "nginx-documentation")
  475. (version (simple-format #f "~A-~A-~A" version revision changeset))
  476. (source
  477. (origin (method hg-fetch)
  478. (uri (hg-reference
  479. (url "http://hg.nginx.org/nginx.org")
  480. (changeset changeset)))
  481. (file-name (string-append name "-" version))
  482. (sha256
  483. (base32
  484. "1rjq5xqzx843yk9nblz8lq14r4kmlrahap7m0lkvx5mky80vqp79"))))
  485. (build-system gnu-build-system)
  486. (arguments
  487. '(#:tests? #f ; no test suite
  488. #:phases
  489. (modify-phases %standard-phases
  490. (delete 'configure) ; no configure script
  491. (replace 'build
  492. (lambda* (#:key outputs #:allow-other-keys)
  493. (let ((output (assoc-ref outputs "out")))
  494. (substitute* "umasked.sh"
  495. ((" /bin/sh") (string-append " " (which "sh"))))
  496. ;; The documentation includes a banner, which makes sense on
  497. ;; the NGinx website, but doesn't make much sense when
  498. ;; viewing locally. Therefore, modify the CSS to remove the
  499. ;; banner.
  500. (substitute* "xslt/style.xslt"
  501. (("#banner \\{ background: black;")
  502. "#banner { display: none;"))
  503. (invoke "make")
  504. #t)))
  505. (replace 'install
  506. (lambda* (#:key outputs #:allow-other-keys)
  507. (let ((output (assoc-ref outputs "out")))
  508. (mkdir-p output)
  509. (copy-recursively "libxslt" output)
  510. #t))))))
  511. (native-inputs
  512. `(("libxml2" ,libxml2)
  513. ("libxslt" ,libxslt)
  514. ("nginx-xslscript" ,nginx-xslscript)))
  515. (home-page "https://nginx.org")
  516. (synopsis "Documentation for the nginx web server")
  517. (description
  518. "This package provides HTML documentation for the nginx web server.")
  519. (license license:bsd-2))))
  520. (define-public nginx-accept-language-module
  521. ;; Upstream has never made a release; use current commit instead.
  522. (let ((commit "2f69842f83dac77f7d98b41a2b31b13b87aeaba7")
  523. (revision "1"))
  524. (package
  525. (name "nginx-accept-language-module")
  526. (version (git-version "0.0.0" ;upstream has no version number
  527. revision commit))
  528. (source
  529. (origin
  530. (method git-fetch)
  531. (uri (git-reference
  532. (url "https://github.com/giom/nginx_accept_language_module")
  533. (commit commit)))
  534. (file-name (git-file-name name version))
  535. (sha256
  536. (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw"))))
  537. (build-system gnu-build-system)
  538. (inputs `(("openssl" ,openssl)
  539. ("pcre" ,pcre)
  540. ("nginx-sources" ,(package-source nginx))
  541. ("zlib" ,zlib)))
  542. (arguments
  543. `(#:tests? #f ; no test target
  544. #:make-flags (list "modules")
  545. #:modules ((guix build utils)
  546. (guix build gnu-build-system)
  547. (ice-9 popen)
  548. (ice-9 regex)
  549. (ice-9 textual-ports))
  550. #:phases
  551. (modify-phases %standard-phases
  552. (add-after 'unpack 'unpack-nginx-sources
  553. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  554. (begin
  555. ;; The nginx source code is part of the module’s source.
  556. (format #t "decompressing nginx source code~%")
  557. (let ((tar (assoc-ref inputs "tar"))
  558. (nginx-srcs (assoc-ref inputs "nginx-sources")))
  559. (invoke (string-append tar "/bin/tar")
  560. "xvf" nginx-srcs "--strip-components=1"))
  561. #t)))
  562. (add-after 'unpack 'convert-to-dynamic-module
  563. (lambda _
  564. (begin
  565. (with-atomic-file-replacement "config"
  566. (lambda (in out)
  567. ;; cf. https://www.nginx.com/resources/wiki/extending/new_config/
  568. (format out "ngx_module_type=HTTP~%")
  569. (format out "ngx_module_name=\
  570. ngx_http_accept_language_module~%")
  571. (let* ((str (get-string-all in))
  572. (rx (make-regexp
  573. "NGX_ADDON_SRCS=\"\\$NGX_ADDON_SRCS (.*)\""))
  574. (m (regexp-exec rx str))
  575. (srcs (match:substring m 1)))
  576. (format out (string-append "ngx_module_srcs=\""
  577. srcs "\"~%")))
  578. (format out ". auto/module~%")
  579. (format out "ngx_addon_name=$ngx_module_name~%"))))))
  580. (add-before 'configure 'patch-/bin/sh
  581. (lambda _
  582. (substitute* "auto/feature"
  583. (("/bin/sh") (which "sh")))
  584. #t))
  585. (replace 'configure
  586. ;; This phase is largely copied from the nginx package.
  587. (lambda* (#:key outputs #:allow-other-keys)
  588. (let ((flags
  589. (list ;; A copy of nginx’ flags follows, otherwise we
  590. ;; get a binary compatibility error. FIXME: Code
  591. ;; duplication is bad.
  592. (string-append "--prefix=" (assoc-ref outputs "out"))
  593. "--with-http_ssl_module"
  594. "--with-http_v2_module"
  595. "--with-pcre-jit"
  596. "--with-debug"
  597. ;; Even when not cross-building, we pass the
  598. ;; --crossbuild option to avoid customizing for the
  599. ;; kernel version on the build machine.
  600. ,(let ((system "Linux") ; uname -s
  601. (release "3.2.0") ; uname -r
  602. ;; uname -m
  603. (machine (match (or (%current-target-system)
  604. (%current-system))
  605. ("x86_64-linux" "x86_64")
  606. ("i686-linux" "i686")
  607. ("mips64el-linux" "mips64")
  608. ;; Prevent errors when querying
  609. ;; this package on unsupported
  610. ;; platforms, e.g. when running
  611. ;; "guix package --search="
  612. (_ "UNSUPPORTED"))))
  613. (string-append "--crossbuild="
  614. system ":" release ":" machine))
  615. ;; The following are the args decribed on
  616. ;; <https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus>.
  617. ;; Enabling --with-compat here and in the nginx package
  618. ;; would ensure binary compatibility even when using
  619. ;; different configure options from the main nginx
  620. ;; package. This is not needed for Guix.
  621. ;; "--with-compat"
  622. "--add-dynamic-module=.")))
  623. (setenv "CC" "gcc")
  624. (format #t "environment variable `CC' set to `gcc'~%")
  625. (format #t "configure flags: ~s~%" flags)
  626. (apply invoke "./configure" flags)
  627. #t)))
  628. (replace 'install
  629. (lambda* (#:key outputs #:allow-other-keys)
  630. (let* ((out (assoc-ref outputs "out"))
  631. (modules-dir (string-append out "/etc/nginx/modules"))
  632. (doc-dir (string-append
  633. out "/share/doc/nginx-accept-language-module")))
  634. (mkdir-p modules-dir)
  635. (copy-file "objs/ngx_http_accept_language_module.so"
  636. (string-append
  637. modules-dir "/ngx_http_accept_language_module.so"))
  638. (mkdir-p doc-dir)
  639. (copy-file "README.textile"
  640. (string-append doc-dir "/README.textile"))
  641. #t))))))
  642. (home-page
  643. "https://www.nginx.com/resources/wiki/modules/accept_language/")
  644. (synopsis "Nginx module for parsing the Accept-Language HTTP header")
  645. (description
  646. "This nginx module parses the Accept-Language field in HTTP headers and
  647. chooses the most suitable locale for the user from the list of locales
  648. supported at your website.")
  649. (license (delete-duplicates
  650. (cons license:bsd-2 ;license of nginx-accept-language-module
  651. ;; The module’s code is linked statically with nginx,
  652. ;; therefore nginx’ other licenses may also apply to its
  653. ;; binary:
  654. (package-license nginx)))))))
  655. (define nginx-xslscript
  656. (let ((revision 11)
  657. (changeset "01dc9ba12e1b"))
  658. (package
  659. (name "nginx-xslscript")
  660. (version
  661. (simple-format #f "2014-03-31-~A-~A" revision changeset))
  662. (source (origin
  663. (method hg-fetch)
  664. (uri (hg-reference
  665. (url "http://hg.nginx.org/xslscript")
  666. (changeset changeset)))
  667. (file-name (string-append name "-" version))
  668. (sha256
  669. (base32
  670. "0am8zvdx3jmiwkg5q07qjaw5r26r4i2v5i4yr8a1k0jgib6ii08g"))))
  671. (build-system gnu-build-system)
  672. (arguments
  673. '(#:tests? #f ; No test suite
  674. #:phases
  675. (modify-phases %standard-phases
  676. (delete 'configure)
  677. (delete 'build)
  678. (replace 'install
  679. (lambda* (#:key outputs #:allow-other-keys)
  680. (let ((out-bin (string-append
  681. (assoc-ref outputs "out")
  682. "/bin")))
  683. (mkdir-p out-bin)
  684. (copy-file "xslscript.pl"
  685. (string-append
  686. out-bin
  687. "/xslscript.pl"))
  688. #t))))))
  689. (home-page "http://hg.nginx.org/xslscript")
  690. (synopsis "XSLScript with NGinx specific modifications")
  691. (description
  692. "XSLScript is a terse notation for writing complex XSLT stylesheets.
  693. This is modified version, specifically intended for use with the NGinx
  694. documentation.")
  695. (license license:bsd-2))))
  696. (define nginx-socket-cloexec
  697. (package
  698. (inherit nginx)
  699. (name "nginx-socket-cloexec") ;required for lua-resty-shell
  700. (source
  701. (origin
  702. (inherit (package-source nginx))
  703. (patches (append (search-patches "nginx-socket-cloexec.patch")
  704. (origin-patches (package-source nginx))))))))
  705. (define-public nginx-lua-module
  706. (package
  707. (inherit nginx)
  708. (name "nginx-lua-module")
  709. (version "0.10.16")
  710. (source
  711. (origin
  712. (method git-fetch)
  713. (uri (git-reference
  714. (url "https://github.com/openresty/lua-nginx-module")
  715. (commit (string-append "v" version))))
  716. (file-name (git-file-name "lua-nginx-module" version))
  717. (sha256
  718. (base32 "0nwcbqm1visg1dkxav7qa16w0d0n8cgqn4881xiqn88xfkxj0dyg"))))
  719. (build-system gnu-build-system)
  720. (inputs
  721. `(("nginx-sources" ,(package-source nginx-socket-cloexec))
  722. ("luajit" ,luajit)
  723. ,@(package-inputs nginx)))
  724. (arguments
  725. (substitute-keyword-arguments
  726. `(#:configure-flags '("--add-dynamic-module=.")
  727. #:make-flags '("modules")
  728. #:modules ((guix build utils)
  729. (guix build gnu-build-system)
  730. (ice-9 popen)
  731. (ice-9 regex)
  732. (ice-9 textual-ports))
  733. ,@(package-arguments nginx))
  734. ((#:phases phases)
  735. `(modify-phases ,phases
  736. (add-after 'unpack 'unpack-nginx-sources
  737. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  738. (begin
  739. ;; The nginx source code is part of the module’s source.
  740. (format #t "decompressing nginx source code~%")
  741. (let ((tar (assoc-ref inputs "tar"))
  742. (nginx-srcs (assoc-ref inputs "nginx-sources")))
  743. (invoke (string-append tar "/bin/tar")
  744. "xvf" nginx-srcs "--strip-components=1"))
  745. #t)))
  746. (add-before 'configure 'set-luajit-env
  747. (lambda* (#:key inputs #:allow-other-keys)
  748. (let ((luajit (assoc-ref inputs "luajit")))
  749. (setenv "LUAJIT_LIB"
  750. (string-append luajit "/lib"))
  751. (setenv "LUAJIT_INC"
  752. (string-append luajit "/include/luajit-2.1"))
  753. #t)))
  754. (replace 'install
  755. (lambda* (#:key outputs #:allow-other-keys)
  756. (let ((modules-dir (string-append (assoc-ref outputs "out")
  757. "/etc/nginx/modules")))
  758. (install-file "objs/ngx_http_lua_module.so" modules-dir)
  759. #t)))
  760. (delete 'fix-root-dirs)
  761. (delete 'install-man-page)))))
  762. (synopsis "NGINX module for Lua programming language support")
  763. (description "This NGINX module provides a scripting support with Lua
  764. programming language.")))
  765. (define-public nginx-rtmp-module
  766. (package
  767. (inherit nginx)
  768. (name "nginx-rtmp-module")
  769. (version "1.2.2")
  770. (source
  771. (origin
  772. (method git-fetch)
  773. (uri (git-reference
  774. (url "https://github.com/arut/nginx-rtmp-module")
  775. (commit (string-append "v" version))))
  776. (file-name (git-file-name name version))
  777. (sha256
  778. (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))
  779. (build-system gnu-build-system)
  780. (inputs
  781. `(("nginx-sources" ,(package-source nginx))
  782. ,@(package-inputs nginx)))
  783. (arguments
  784. (substitute-keyword-arguments
  785. `(#:configure-flags '("--add-dynamic-module=.")
  786. #:make-flags '("modules")
  787. #:modules ((guix build utils)
  788. (guix build gnu-build-system))
  789. ,@(package-arguments nginx))
  790. ((#:phases phases)
  791. `(modify-phases ,phases
  792. (add-after 'unpack 'unpack-nginx-sources
  793. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  794. (begin
  795. ;; The nginx source code is part of the module’s source.
  796. (format #t "decompressing nginx source code~%")
  797. (invoke "tar" "xvf" (assoc-ref inputs "nginx-sources")
  798. ;; This packages's LICENSE file would be
  799. ;; overwritten with the one from nginx when
  800. ;; unpacking the nginx source, so rename the nginx
  801. ;; one when unpacking.
  802. "--transform=s,/LICENSE$,/LICENSE.nginx,"
  803. "--strip-components=1")
  804. #t)))
  805. (replace 'install
  806. (lambda* (#:key outputs #:allow-other-keys)
  807. (let ((modules-dir (string-append (assoc-ref outputs "out")
  808. "/etc/nginx/modules")))
  809. (install-file "objs/ngx_rtmp_module.so" modules-dir)
  810. #t)))
  811. (delete 'fix-root-dirs)
  812. (delete 'install-man-page)))))
  813. (home-page "https://github.com/arut/nginx-rtmp-module")
  814. (synopsis "NGINX module for audio and video streaming with RTMP")
  815. (description "This NGINX module provides streaming with the @acronym{RTMP,
  816. Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},
  817. and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept
  818. incoming RTMP streams for recording or redistribution. It also supports
  819. on-demand streaming from a file on disk and pulling from an upstream RTMP
  820. stream. Remote control of the module is possible over HTTP.")
  821. (license license:bsd-2)))
  822. (define-public lighttpd
  823. (package
  824. (name "lighttpd")
  825. (version "1.4.59")
  826. (source (origin
  827. (method url-fetch)
  828. (uri (string-append "https://download.lighttpd.net/lighttpd/"
  829. "releases-" (version-major+minor version) ".x/"
  830. "lighttpd-" version ".tar.xz"))
  831. (sha256
  832. (base32
  833. "1mc421yrbnq3k6yrc708svp0fgcamrn5a0p2nvnhivysffr3v5gv"))))
  834. (build-system gnu-build-system)
  835. (arguments
  836. `(#:configure-flags
  837. (list "--with-krb5"
  838. "--with-ldap"
  839. "--with-libev"
  840. "--with-libunwind"
  841. "--with-openssl"
  842. "--with-pam"
  843. "--with-sasl")
  844. #:phases
  845. (modify-phases %standard-phases
  846. (add-after 'unpack 'embed-/bin/sh-reference
  847. (lambda _
  848. (substitute* "src/mod_ssi.c"
  849. (("/bin/sh") (which "sh")))
  850. #t))
  851. (add-after 'unpack 'fix-tests
  852. (lambda _
  853. (setenv "SHELL" (which "sh"))
  854. ;; gethostbyaddr fails
  855. (substitute* "tests/LightyTest.pm"
  856. (("\\{HOSTNAME\\} = \\$name;")
  857. "{HOSTNAME} = \"127.0.0.1\";"))
  858. #t)))))
  859. (inputs
  860. `(("cyrus-sasl" ,cyrus-sasl)
  861. ("libev" ,libev)
  862. ("libunwind" ,libunwind)
  863. ("linux-pam" ,linux-pam)
  864. ("mit-krb5" ,mit-krb5)
  865. ("openldap" ,openldap)
  866. ("openssl" ,openssl)
  867. ("pcre" ,pcre)
  868. ("pcre:bin" ,pcre "bin")
  869. ("zlib" ,zlib)))
  870. (native-inputs
  871. `(("perl" ,perl) ; for tests
  872. ("pkg-config" ,pkg-config)
  873. ("which" ,which)))
  874. (home-page "https://www.lighttpd.net/")
  875. (synopsis "Lightweight HTTP and reverse proxy server")
  876. (description
  877. "Lighttpd is a secure, fast, compliant, and very flexible web-server that
  878. has been optimized for high-performance environments. It has a very low
  879. memory footprint compared to other webservers. Its features include FastCGI,
  880. CGI, authentication, output compression, URL rewriting and many more.")
  881. (license license:bsd-3)))
  882. (define-public fcgi
  883. (package
  884. (name "fcgi")
  885. (version "2.4.2")
  886. (source
  887. (origin
  888. (method git-fetch)
  889. ;; Upstream has disappeared.
  890. (uri (git-reference
  891. (url "https://github.com/FastCGI-Archives/fcgi2")
  892. (commit version)))
  893. (file-name (git-file-name name version))
  894. (sha256
  895. (base32 "1jhz6jfwv5kawa8kajvg18nfwc1b30f38zc0lggszd1vcmrwqkz1"))))
  896. (build-system gnu-build-system)
  897. ;; Parallel building is not supported.
  898. (arguments `(#:parallel-build? #f))
  899. (native-inputs
  900. `(("autoconf" ,autoconf)
  901. ("automake" ,automake)
  902. ("libtool" ,libtool)))
  903. ;; This is an archived fork of the original home page, www.fastcgi.com.
  904. (home-page "https://fastcgi-archives.github.io/")
  905. (synopsis "Language-independent, high-performant extension to CGI")
  906. (description "FastCGI is a language-independent, scalable extension to CGI
  907. that provides high performance without the limitations of server specific
  908. APIs.")
  909. ;; This package is released under the Open Market License, a variant of
  910. ;; the Expat license, incompatible with the GPL.
  911. (license (license:non-copyleft "file://LICENSE.TERMS"))))
  912. (define-public fcgiwrap
  913. (package
  914. (name "fcgiwrap")
  915. (version "1.1.0")
  916. (source
  917. (origin
  918. (method git-fetch)
  919. (uri (git-reference
  920. (url "https://github.com/gnosek/fcgiwrap")
  921. (commit version)))
  922. (file-name (git-file-name name version))
  923. (sha256
  924. (base32 "1ryw66h9aazi83amk8l7ha8k5g0c7qvk5g6jv376a1ws9xk2qw6f"))))
  925. (build-system gnu-build-system)
  926. (arguments
  927. `(#:tests? #f ; no tests included
  928. #:make-flags (list "CC=gcc")
  929. #:phases
  930. (modify-phases %standard-phases
  931. (add-after 'unpack 'fix-CFLAGS
  932. ;; Remove broken options unconditionally added to CFLAGS.
  933. (lambda _
  934. (substitute* "configure.ac"
  935. ((" -Werror") ""))
  936. #t)))))
  937. (native-inputs
  938. `(("autoconf" ,autoconf)
  939. ("automake" ,automake)
  940. ("pkg-config" ,pkg-config)))
  941. (inputs
  942. `(("fcgi" ,fcgi)))
  943. (home-page "https://nginx.localdomain.pl/wiki/FcgiWrap")
  944. (synopsis "Simple server for running CGI applications over FastCGI")
  945. (description "Fcgiwrap is a simple server for running CGI applications
  946. over FastCGI. It hopes to provide clean CGI support to Nginx (and other web
  947. servers that may need it).")
  948. (license license:expat)))
  949. (define-public starman
  950. (package
  951. (name "starman")
  952. (version "0.4015")
  953. (source
  954. (origin
  955. (method url-fetch)
  956. (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
  957. "Starman-" version ".tar.gz"))
  958. (sha256
  959. (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h"))))
  960. (build-system perl-build-system)
  961. (native-inputs
  962. `(("perl-libwww" ,perl-libwww)
  963. ("perl-module-build-tiny" ,perl-module-build-tiny)
  964. ("perl-test-requires" ,perl-test-requires)))
  965. (propagated-inputs
  966. `(("perl-data-dump" ,perl-data-dump)
  967. ("perl-http-date" ,perl-http-date)
  968. ("perl-http-message" ,perl-http-message)
  969. ("perl-http-parser-xs" ,perl-http-parser-xs)
  970. ("perl-net-server" ,perl-net-server)
  971. ("perl-plack" ,perl-plack)
  972. ("perl-test-tcp" ,perl-test-tcp)))
  973. (home-page "https://metacpan.org/release/Starman")
  974. (synopsis "PSGI/Plack web server")
  975. (description "Starman is a PSGI perl web server that has unique features
  976. such as high performance, preforking, signal support, superdaemon awareness,
  977. and UNIX socket support.")
  978. (license license:perl-license)))
  979. (define-public icedtea-web
  980. (package
  981. (name "icedtea-web")
  982. (version "1.6.2")
  983. (source (origin
  984. (method url-fetch)
  985. (uri (string-append
  986. "http://icedtea.wildebeest.org/download/source/"
  987. name "-" version ".tar.gz"))
  988. (sha256
  989. (base32
  990. "004kwrngyxxlrlzby4vzxjr0xcyngcdc9dfgnvi61ffnjr006ryf"))))
  991. (build-system gnu-build-system)
  992. (arguments
  993. `(#:configure-flags
  994. (list "--disable-plugin" ;NPAPI plugins are obsolete nowadays.
  995. (string-append "BIN_BASH="
  996. (search-input-file %build-inputs "/bin/bash"))
  997. (string-append "--with-jdk-home=" (assoc-ref %build-inputs "jdk")))))
  998. (outputs '("out" "doc"))
  999. (native-inputs
  1000. `(("pkg-config" ,pkg-config)
  1001. ("zip" ,zip)))
  1002. (inputs
  1003. `(("gtk+" ,gtk+)
  1004. ("jdk" ,icedtea "jdk")))
  1005. (home-page "http://icedtea.classpath.org/wiki/IcedTea-Web")
  1006. (synopsis "Java Web Start")
  1007. (description
  1008. "IcedTea-Web is an implementation of the @dfn{Java Network Launching
  1009. Protocol}, also known as Java Web Start. This package provides tools and
  1010. libraries for working with JNLP applets.")
  1011. ;; The program is mainly GPL2+, with some individual files under LGPL2.1+
  1012. ;; or dual licenses.
  1013. (license license:gpl2+)))
  1014. (define-public jansson
  1015. (package
  1016. (name "jansson")
  1017. (version "2.13.1")
  1018. (source (origin
  1019. (method url-fetch)
  1020. (uri
  1021. (string-append "http://www.digip.org/jansson/releases/jansson-"
  1022. version ".tar.bz2"))
  1023. (sha256
  1024. (base32
  1025. "1g8h18vh8gyxlwfmvdivdp1siad26ywj5zr4j4avgdyjg7wa147f"))))
  1026. (build-system gnu-build-system)
  1027. (arguments
  1028. `(#:configure-flags '("--disable-static")))
  1029. (home-page "http://www.digip.org/jansson/")
  1030. (synopsis "JSON C library")
  1031. (description
  1032. "Jansson is a C library for encoding, decoding and manipulating JSON
  1033. data.")
  1034. (license license:expat)))
  1035. (define-public json-c
  1036. (package
  1037. (name "json-c")
  1038. (version "0.14")
  1039. (source (origin
  1040. (method url-fetch)
  1041. (uri (string-append
  1042. "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
  1043. version ".tar.gz"))
  1044. (sha256
  1045. (base32
  1046. "0w381krr99q5a2rypx4g437fa7gzgl82i64sgnrs6g5jr44dwxxk"))
  1047. (patches (search-patches "json-c-CVE-2020-12762.patch"))))
  1048. (build-system cmake-build-system)
  1049. (home-page "https://github.com/json-c/json-c/wiki")
  1050. (synopsis "JSON implementation in C")
  1051. (description
  1052. "JSON-C implements a reference counting object model that allows you to
  1053. easily construct JSON objects in C, output them as JSON-formatted strings and
  1054. parse JSON-formatted strings back into the C representation of JSON objects.
  1055. It aims to conform to RFC 7159.")
  1056. (license license:x11)))
  1057. ;; TODO: Remove these old versions when all dependents have been updated.
  1058. (define-public json-c-0.13
  1059. (package
  1060. (inherit json-c)
  1061. (version "0.13.1")
  1062. (source (origin
  1063. (method url-fetch)
  1064. (uri (string-append
  1065. "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
  1066. version ".tar.gz"))
  1067. (sha256
  1068. (base32 "0ws8dz9nk8q2c0gbf66kg2r6mrkl7kamd3gpdv9zsyrz9n6n0zmq"))
  1069. (patches (search-patches "json-c-0.13-CVE-2020-12762.patch"))
  1070. (modules '((guix build utils)))
  1071. (snippet
  1072. '(begin
  1073. ;; Somehow 'config.h.in' is older than
  1074. ;; 'aclocal.m4', which would trigger a rule to
  1075. ;; run 'autoheader'.
  1076. (set-file-time "config.h.in"
  1077. (stat "aclocal.m4"))
  1078. #t))))
  1079. (build-system gnu-build-system)))
  1080. (define-public json-c-0.12
  1081. (package
  1082. (inherit json-c-0.13)
  1083. (version "0.12.1")
  1084. (source (origin
  1085. (method url-fetch)
  1086. (uri (string-append
  1087. "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
  1088. version ".tar.gz"))
  1089. (sha256
  1090. (base32 "08qibrq29a5v7g23wi5icy6l4fbfw90h9ccps6vq0bcklx8n84ra"))
  1091. (patches (search-patches "json-c-0.12-CVE-2020-12762.patch"))
  1092. (modules '((guix build utils)))
  1093. (snippet
  1094. '(begin
  1095. ;; Somehow 'config.h.in' is older than
  1096. ;; 'aclocal.m4', which would trigger a rule to
  1097. ;; run 'autoheader'.
  1098. (set-file-time "config.h.in"
  1099. (stat "aclocal.m4"))
  1100. ;; Don't try to build with -Werror.
  1101. (substitute* (find-files "." "Makefile\\.in")
  1102. (("-Werror") ""))
  1103. #t))))))
  1104. (define-public json-parser
  1105. (package
  1106. (name "json-parser")
  1107. (version "1.1.0")
  1108. (source (origin
  1109. ;; do not use auto-generated tarballs
  1110. (method git-fetch)
  1111. (uri (git-reference
  1112. (url "https://github.com/udp/json-parser")
  1113. (commit (string-append "v" version))))
  1114. (file-name (git-file-name name version))
  1115. (sha256
  1116. (base32
  1117. "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf"))))
  1118. ;; FIXME: we should build the python bindings in a separate package
  1119. (build-system gnu-build-system)
  1120. ;; the tests are written for the python bindings which are not built here
  1121. (arguments '(#:tests? #f))
  1122. (home-page "https://github.com/udp/json-parser")
  1123. (synopsis "JSON parser written in ANSI C")
  1124. (description "This package provides a very low footprint JSON parser
  1125. written in portable ANSI C.
  1126. @itemize
  1127. @item BSD licensed with no dependencies (i.e. just drop the C file into your
  1128. project)
  1129. @item Never recurses or allocates more memory than it needs
  1130. @item Very simple API with operator sugar for C++
  1131. @end itemize")
  1132. (license license:bsd-2)))
  1133. (define-public qjson
  1134. (package
  1135. (name "qjson")
  1136. (version "0.9.0")
  1137. (source (origin
  1138. (method git-fetch)
  1139. (uri (git-reference
  1140. (url "https://github.com/flavio/qjson")
  1141. (commit version)))
  1142. (file-name (git-file-name name version))
  1143. (sha256
  1144. (base32
  1145. "1f4wnxzx0qdmxzc7hqk28m0sva7z9p9xmxm6aifvjlp0ha6pmfxs"))))
  1146. (build-system cmake-build-system)
  1147. (arguments
  1148. ;; The tests require a running X server.
  1149. `(#:configure-flags '("-DQJSON_BUILD_TESTS=ON"
  1150. "-DCMAKE_CXX_FLAGS=-std=gnu++11 -fPIC")
  1151. #:phases
  1152. (modify-phases %standard-phases
  1153. (add-after 'unpack 'disable-broken-test
  1154. (lambda _
  1155. ;; FIXME: One test fails. See
  1156. ;; https://github.com/flavio/qjson/issues/105
  1157. (substitute* "tests/scanner/testscanner.cpp"
  1158. (("QTest::newRow\\(\"too large exponential\"\\)" line)
  1159. (string-append "//" line)))
  1160. #t))
  1161. (add-before 'check 'render-offscreen
  1162. (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") #t)))))
  1163. (inputs
  1164. `(("qtbase" ,qtbase-5)))
  1165. (home-page "http://qjson.sourceforge.net")
  1166. (synopsis "Library that maps JSON data to QVariant objects")
  1167. (description "QJson is a Qt-based library that maps JSON data to
  1168. @code{QVariant} objects. JSON arrays will be mapped to @code{QVariantList}
  1169. instances, while JSON's objects will be mapped to @code{QVariantMap}.")
  1170. ;; Only version 2.1 of the license
  1171. (license license:lgpl2.1)))
  1172. (define-public qoauth
  1173. (package
  1174. (name "qoauth")
  1175. (version "2.0.0")
  1176. (source (origin
  1177. (method git-fetch)
  1178. (uri (git-reference
  1179. (url "https://github.com/ayoy/qoauth")
  1180. (commit (string-append "v" version))))
  1181. (file-name (git-file-name name version))
  1182. (sha256
  1183. (base32
  1184. "1b2jdqs526ac635yb2whm049spcsk7almnnr6r5b4yqhq922anw3"))))
  1185. (build-system gnu-build-system)
  1186. (inputs
  1187. `(("qca" ,qca)
  1188. ("qtbase" ,qtbase-5)))
  1189. (arguments
  1190. '(#:tests? #f ;FIXME: some tests are failing
  1191. #:phases
  1192. (modify-phases %standard-phases
  1193. (add-after 'unpack 'patch-code
  1194. (lambda _
  1195. (make-file-writable "src/qoauth.pc")
  1196. (substitute* "src/src.pro"
  1197. (("/lib64") "/lib"))
  1198. #t))
  1199. (add-after 'unpack 'adjust-mkspecs-directory
  1200. (lambda* (#:key outputs #:allow-other-keys)
  1201. (substitute* "src/src.pro"
  1202. ;; Do not attempt to install the .prf file into qtbase
  1203. ;; "lib/qt5/mkspecs/features", ref <https://bugs.gnu.org/45031>.
  1204. (("\\$\\$\\[QMAKE_MKSPECS\\]")
  1205. (string-append (assoc-ref outputs "out") "/lib/qt5/mkspecs")))
  1206. #t))
  1207. (replace 'configure
  1208. (lambda* (#:key inputs #:allow-other-keys)
  1209. (let ((qca (assoc-ref inputs "qca")))
  1210. (invoke
  1211. "qmake"
  1212. (string-append "PREFIX=" (assoc-ref %outputs "out"))
  1213. (string-append "QMAKE_INCDIR+=" qca "/include/Qca-qt5/QtCrypto")
  1214. (string-append "LIBS+=-L" qca "/lib")
  1215. (string-append "LIBS+=-lqca-qt5"))))))))
  1216. (home-page "https://github.com/ayoy/qoauth")
  1217. (synopsis "Qt-based C++ library for OAuth authorization scheme")
  1218. (description "QOAuth is an attempt to support interaction with
  1219. OAuth-powered network services in a Qt way, i.e. simply, clearly and
  1220. efficiently. It gives the application developer no more than 4 methods.")
  1221. (license license:lgpl2.1+)))
  1222. (define-public krona-tools
  1223. (package
  1224. (name "krona-tools")
  1225. (version "2.8")
  1226. (source (origin
  1227. (method url-fetch)
  1228. (uri (string-append
  1229. "https://github.com/marbl/Krona/releases/download/v"
  1230. version "/KronaTools-" version ".tar"))
  1231. (sha256
  1232. (base32
  1233. "1h698wddb3hii68mnkby7s1x81vbhd4z1sf4ivm1lsi2nqlc1vsn"))))
  1234. (build-system perl-build-system)
  1235. (arguments
  1236. `(#:phases
  1237. (modify-phases %standard-phases
  1238. ;; There is no configure or build steps.
  1239. (delete 'configure)
  1240. (delete 'build)
  1241. ;; Install script "install.pl" expects the build directory to remain
  1242. ;; after installation, creating symlinks etc., so re-implement it
  1243. ;; here.
  1244. (replace 'install
  1245. (lambda* (#:key outputs #:allow-other-keys)
  1246. (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
  1247. (perl (string-append (assoc-ref outputs "out")
  1248. "/lib/perl5/site_perl/krona-tools/lib"))
  1249. (share (string-append (assoc-ref outputs "out")
  1250. "/share/krona-tools")))
  1251. (mkdir-p bin)
  1252. (for-each
  1253. (lambda (script)
  1254. (let ((executable (string-append "scripts/" script ".pl")))
  1255. ;; Prefix executables with 'kt' as install script does.
  1256. (copy-file executable (string-append bin "/kt" script))))
  1257. '("ClassifyBLAST"
  1258. "GetContigMagnitudes"
  1259. "GetLCA"
  1260. "GetTaxIDFromAcc"
  1261. "GetTaxInfo"
  1262. "ImportBLAST"
  1263. "ImportDiskUsage"
  1264. "ImportEC"
  1265. "ImportFCP"
  1266. "ImportGalaxy"
  1267. "ImportKrona"
  1268. "ImportMETAREP-BLAST"
  1269. "ImportMETAREP-EC"
  1270. "ImportMGRAST"
  1271. "ImportPhymmBL"
  1272. "ImportRDP"
  1273. "ImportRDPComparison"
  1274. "ImportTaxonomy"
  1275. "ImportText"
  1276. "ImportXML"))
  1277. (for-each
  1278. (lambda (directory)
  1279. (copy-recursively directory
  1280. (string-append perl "/../" directory)))
  1281. (list "data" "img" "taxonomy" "src"))
  1282. (install-file "lib/KronaTools.pm" perl)
  1283. ;; Install downloaders
  1284. (substitute* "updateAccessions.sh"
  1285. (("ktPath=.*") (string-append "ktPath=" share "\n")))
  1286. (substitute* "updateTaxonomy.sh"
  1287. (("ktPath=.*") (string-append "ktPath=" share "\n"))
  1288. (("command -v curl")
  1289. (string-append "command -v " (which "curl")))
  1290. (("curl -s")
  1291. (string-append (which "curl") " -s"))
  1292. (("curl\\$timestring")
  1293. (string-append (which "curl") "$timestring"))
  1294. (("perl -M")
  1295. (string-append (which "perl") " -M"))
  1296. (("make ")
  1297. (string-append (which "make") " ")))
  1298. (for-each (lambda (file)
  1299. (install-file file (string-append share "/scripts")))
  1300. '("scripts/extractTaxonomy.pl"
  1301. "scripts/accession2taxid.make"
  1302. "scripts/taxonomy.make"))
  1303. (for-each (lambda (file)
  1304. (install-file file share))
  1305. '("updateAccessions.sh"
  1306. "updateTaxonomy.sh")))))
  1307. (add-after 'install 'wrap-program
  1308. (lambda* (#:key inputs outputs #:allow-other-keys)
  1309. (let* ((out (assoc-ref outputs "out"))
  1310. (path (getenv "PERL5LIB")))
  1311. (for-each
  1312. (lambda (executable)
  1313. (wrap-program executable
  1314. `("PERL5LIB" ":" prefix
  1315. (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
  1316. (find-files (string-append out "/bin/") ".*")))))
  1317. (delete 'check)
  1318. (add-after 'wrap-program 'check
  1319. (lambda* (#:key inputs outputs #:allow-other-keys)
  1320. (with-directory-excursion "data"
  1321. (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText")
  1322. "ec.tsv")))))))
  1323. (inputs
  1324. `(("curl" ,curl)
  1325. ("make" ,gnu-make)
  1326. ("perl" ,perl)))
  1327. (home-page "https://github.com/marbl/Krona/wiki")
  1328. (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts")
  1329. (description
  1330. "Krona is a flexible tool for exploring the relative proportions of
  1331. hierarchical data, such as metagenomic classifications, using a radial,
  1332. space-filling display. It is implemented using HTML5 and JavaScript, allowing
  1333. charts to be explored locally or served over the Internet, requiring only a
  1334. current version of any major web browser.")
  1335. (license license:bsd-3)))
  1336. (define-public rapidjson
  1337. (package
  1338. (name "rapidjson")
  1339. (version "1.1.0")
  1340. (source (origin
  1341. (method git-fetch)
  1342. (uri (git-reference
  1343. (url "https://github.com/Tencent/rapidjson")
  1344. (commit (string-append "v" version))))
  1345. (file-name (git-file-name name version))
  1346. (sha256
  1347. (base32
  1348. "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab"))
  1349. (patches (search-patches "rapidjson-gcc-compat.patch"))
  1350. (modules '((guix build utils)))
  1351. (snippet
  1352. '(begin
  1353. ;; Remove code using the problematic JSON license (see
  1354. ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
  1355. (delete-file-recursively "bin/jsonchecker")))))
  1356. (build-system cmake-build-system)
  1357. (arguments
  1358. (if (string-prefix? "aarch64" (or (%current-target-system)
  1359. (%current-system)))
  1360. '(#:phases
  1361. (modify-phases %standard-phases
  1362. (add-after 'unpack 'patch-aarch-march-detection
  1363. (lambda _
  1364. (substitute* (find-files "." "^CMakeLists\\.txt$")
  1365. (("native") "armv8-a"))))))
  1366. '()))
  1367. (home-page "https://github.com/Tencent/rapidjson")
  1368. (synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
  1369. (description
  1370. "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM
  1371. style API.")
  1372. (license license:expat)))
  1373. (define-public libyajl
  1374. (package
  1375. (name "libyajl")
  1376. (version "2.1.0")
  1377. (source (origin
  1378. (method git-fetch)
  1379. (uri (git-reference
  1380. (url "https://github.com/lloyd/yajl")
  1381. (commit version)))
  1382. (file-name (git-file-name name version))
  1383. (sha256
  1384. (base32
  1385. "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml"))))
  1386. (build-system cmake-build-system)
  1387. (arguments
  1388. '(#:phases
  1389. (modify-phases %standard-phases
  1390. (add-after 'patch-source-shebangs 'patch-tests
  1391. (lambda _
  1392. (substitute* "test/parsing/run_tests.sh"
  1393. (("`which echo`") (which "echo")))
  1394. #t)))))
  1395. (home-page "https://lloyd.github.io/yajl/")
  1396. (synopsis "C library for parsing JSON")
  1397. (description
  1398. "Yet Another JSON Library (YAJL) is a small event-driven (SAX-style) JSON
  1399. parser written in ANSI C and a small validating JSON generator.")
  1400. (license license:isc)))
  1401. (define-public libwebsockets
  1402. (package
  1403. (name "libwebsockets")
  1404. (version "4.1.6")
  1405. (source (origin
  1406. ;; The project does not publish tarballs, so we have to take
  1407. ;; things from Git.
  1408. (method git-fetch)
  1409. (uri (git-reference
  1410. (url "https://github.com/warmcat/libwebsockets")
  1411. (commit (string-append "v" version))))
  1412. (sha256
  1413. (base32
  1414. "0x56v4hsx92vm1zibfmnqb5g3v23kzciffn3fjlsc3sly2pknhsg"))
  1415. (file-name (string-append name "-" version))))
  1416. (build-system cmake-build-system)
  1417. (arguments
  1418. ;; XXX: The thing lacks a 'make test' target, because CMakeLists.txt
  1419. ;; doesn't use 'add_test', and it's unclear how to run the test suite.
  1420. '(#:tests? #f))
  1421. (native-inputs `(("perl" ,perl))) ; to build the HTML doc
  1422. (inputs `(("zlib" ,zlib)
  1423. ("openssl" ,openssl)))
  1424. (synopsis "WebSockets library written in C")
  1425. (description
  1426. "Libwebsockets is a library that allows C programs to establish client
  1427. and server WebSockets connections---a protocol layered above HTTP that allows
  1428. for efficient socket-like bidirectional reliable communication channels.")
  1429. (home-page "https://libwebsockets.org")
  1430. ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
  1431. (license license:lgpl2.1)))
  1432. (define-public wabt
  1433. (package
  1434. (name "wabt")
  1435. (version "1.0.12")
  1436. (source
  1437. (origin
  1438. (method git-fetch)
  1439. (uri (git-reference
  1440. (url "https://github.com/WebAssembly/wabt")
  1441. (commit version)))
  1442. (file-name (git-file-name name version))
  1443. (sha256
  1444. (base32 "1zlv3740wkqj4mn6sr84h0x6wk2lcp4pwwmqsh5yyqp1j1glbsa0"))))
  1445. (build-system cmake-build-system)
  1446. (arguments
  1447. `(#:configure-flags '("-DBUILD_TESTS=OFF")
  1448. #:tests? #f))
  1449. (inputs `(("python" ,python-2)
  1450. ("re2c" ,re2c)))
  1451. (home-page "https://github.com/WebAssembly/wabt")
  1452. (synopsis "WebAssembly Binary Toolkit")
  1453. (description "WABT (pronounced: wabbit) is a suite of tools for
  1454. WebAssembly, including:
  1455. @enumerate
  1456. @item @command{wat2wasm} translates from WebAssembly text format to the
  1457. WebAssembly binary format
  1458. @item @command{wasm2wat} is the inverse; it translates from the binary format
  1459. back to the text format (also known as a .wat)
  1460. @item @command{wasm-objdump} prints information about a wasm binary, similarly
  1461. to @command{objdump}.
  1462. @item @command{wasm-interp} decodes ands run a WebAssembly binary file using a
  1463. stack-based interpreter
  1464. @item @command{wat-desugar} parses .wat text form as supported by the spec
  1465. interpreter (s-expressions, flat syntax, or mixed) and prints the canonical
  1466. flat format
  1467. @item @command{wasm2c} converts a WebAssembly binary file to a C source and
  1468. header file.
  1469. @end enumerate
  1470. These tools are intended for use in (or for development of) toolchains or
  1471. other systems that want to manipulate WebAssembly files.")
  1472. (license license:asl2.0)))
  1473. (define-public websocketpp
  1474. (package
  1475. (name "websocketpp")
  1476. (version "0.8.2")
  1477. (source
  1478. (origin
  1479. (method git-fetch)
  1480. (uri (git-reference
  1481. (url "https://github.com/zaphoyd/websocketpp")
  1482. (commit version)))
  1483. (file-name (git-file-name name version))
  1484. (sha256
  1485. (base32 "1ww4fhl8qf12hkv6jaild8zzsygdspxm1gqpk2f63gv1xfi31wpm"))
  1486. (patches (search-patches "websocketpp-fix-for-cmake-3.15.patch"))))
  1487. (build-system cmake-build-system)
  1488. (inputs `(("boost" ,boost)
  1489. ("openssl" ,openssl)))
  1490. (arguments '(#:configure-flags '("-DBUILD_TESTS=ON")
  1491. #:phases
  1492. (modify-phases %standard-phases
  1493. (add-after 'install 'remove-tests
  1494. (lambda* (#:key outputs #:allow-other-keys)
  1495. (let* ((install-dir (assoc-ref outputs "out"))
  1496. (bin-dir (string-append install-dir "/bin")))
  1497. (delete-file-recursively bin-dir)
  1498. #t))))))
  1499. (home-page "https://www.zaphoyd.com/websocketpp/")
  1500. (synopsis "C++ library implementing the WebSocket protocol")
  1501. (description "WebSocket++ is a C++ library that can be used to implement
  1502. WebSocket functionality. The goals of the project are to provide a WebSocket
  1503. implementation that is simple, portable, flexible, lightweight, low level, and
  1504. high performance.")
  1505. (license license:bsd-3)))
  1506. (define-public wslay
  1507. (package
  1508. (name "wslay")
  1509. (version "1.1.1")
  1510. (source
  1511. (origin
  1512. (method git-fetch)
  1513. (uri (git-reference
  1514. (url "https://github.com/tatsuhiro-t/wslay")
  1515. (commit (string-append "release-" version))))
  1516. (file-name (git-file-name name version))
  1517. (sha256
  1518. (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964"))))
  1519. (build-system gnu-build-system)
  1520. (arguments
  1521. ;; Parallel builds don't reliably succeed.
  1522. `(#:parallel-build? #f))
  1523. (native-inputs
  1524. `(("autoconf" ,autoconf)
  1525. ("automake" ,automake)
  1526. ("cunit" ,cunit) ; for tests
  1527. ("libtool" ,libtool)
  1528. ("pkg-config" ,pkg-config)
  1529. ("python-sphinx" ,python-sphinx)))
  1530. (home-page "https://tatsuhiro-t.github.io/wslay/")
  1531. (synopsis "C WebSocket library")
  1532. (description "@code{Wslay} is an event-based C library for the WebSocket
  1533. protocol version 13, described in RFC 6455. Besides a high-level API it
  1534. provides callbacks for sending and receiving frames directly. @code{Wslay}
  1535. only supports the data transfer part of WebSocket protocol and does not
  1536. perform the opening handshake in HTTP.")
  1537. (license license:expat)))
  1538. (define-public libpsl
  1539. (package
  1540. (name "libpsl")
  1541. (version "0.21.1")
  1542. (source (origin
  1543. (method url-fetch)
  1544. (uri (string-append "https://github.com/rockdaboot/libpsl/"
  1545. "releases/download/" version
  1546. "/libpsl-" version ".tar.gz"))
  1547. (sha256
  1548. (base32
  1549. "0k0d46bbh1jj2ll369f134vciplrzbqkg7fv9m62bl6lzghy2v5c"))))
  1550. (build-system gnu-build-system)
  1551. (native-inputs
  1552. `(("pkg-config" ,pkg-config)
  1553. ;; For tests.
  1554. ("python" ,python-wrapper)))
  1555. (inputs
  1556. `(("libidn2" ,libidn2)
  1557. ("libunistring" ,libunistring)))
  1558. (home-page "https://github.com/rockdaboot/libpsl")
  1559. (synopsis "C library for the Publix Suffix List")
  1560. (description
  1561. "A \"public suffix\" is a domain name under which Internet users can
  1562. directly register own names.
  1563. Browsers and other web clients can use it to avoid privacy-leaking
  1564. \"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain
  1565. highlighting parts of the domain in a user interface, and sorting domain lists
  1566. by site.
  1567. Libpsl has built-in PSL data for fast access, allowing to load PSL data from
  1568. files, checks if a given domain is a public suffix, provides immediate cookie
  1569. domain verification, finds the longest public part of a given domain, finds
  1570. the shortest private part of a given domain, works with international
  1571. domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008
  1572. UTS#46.")
  1573. (license license:x11)))
  1574. (define-public tidy
  1575. (package
  1576. (name "tidy")
  1577. (version "20091223")
  1578. (source (origin
  1579. (method cvs-fetch)
  1580. (uri (cvs-reference
  1581. (root-directory
  1582. ":pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy")
  1583. (module "tidy")
  1584. (revision "2009-12-23")))
  1585. (file-name (string-append name "-" version "-checkout"))
  1586. (sha256
  1587. (base32
  1588. "14dsnmirjcrvwsffqp3as70qr6bbfaig2fv3zvs5g7005jrsbvpb"))
  1589. (patches (search-patches "tidy-CVE-2015-5522+5523.patch"))))
  1590. (build-system gnu-build-system)
  1591. (arguments
  1592. '(#:phases (modify-phases %standard-phases
  1593. (replace 'bootstrap
  1594. (lambda* (#:key inputs #:allow-other-keys)
  1595. ;; configure.in and Makefile.am aren't in the root of the
  1596. ;; source tree.
  1597. (copy-recursively "build/gnuauto" ".")
  1598. (setenv "AUTOMAKE" "automake --foreign")
  1599. (invoke "autoreconf" "-vfi"))))))
  1600. (native-inputs
  1601. `(("automake" ,automake)
  1602. ("autoconf" ,autoconf)
  1603. ("libtool" ,libtool)))
  1604. (synopsis "HTML validator and tidier")
  1605. (description "HTML Tidy is a command-line tool and C library that can be
  1606. used to validate and fix HTML data.")
  1607. (home-page "http://tidy.sourceforge.net/")
  1608. (license (license:x11-style "file:///include/tidy.h"))))
  1609. (define-public esbuild
  1610. (package
  1611. (name "esbuild")
  1612. (version "0.12.9")
  1613. (source
  1614. (origin
  1615. (method git-fetch)
  1616. (uri (git-reference
  1617. (url "https://github.com/evanw/esbuild")
  1618. (commit (string-append "v" version))))
  1619. (file-name (git-file-name name version))
  1620. (sha256
  1621. (base32 "10bz1xq2frdja7mbx04m009svg8b5rj7vfq3sc2gc88n31v21b1j"))
  1622. (modules '((guix build utils)))
  1623. (snippet
  1624. '(begin
  1625. ;; Remove prebuilt binaries
  1626. (delete-file-recursively "npm")
  1627. #t))))
  1628. (build-system go-build-system)
  1629. (arguments
  1630. `(#:import-path "github.com/evanw/esbuild/cmd/esbuild"
  1631. #:unpack-path "github.com/evanw/esbuild"
  1632. #:phases
  1633. (modify-phases %standard-phases
  1634. (replace 'check
  1635. (lambda* (#:key tests? unpack-path #:allow-other-keys)
  1636. (when tests?
  1637. ;; The "Go Race Detector" is only supported on 64-bit
  1638. ;; platforms, this variable disables it.
  1639. (unless ,(target-64bit?)
  1640. (setenv "ESBUILD_RACE" ""))
  1641. (with-directory-excursion (string-append "src/" unpack-path)
  1642. (invoke "make" "test-go")))
  1643. #t)))))
  1644. (inputs
  1645. `(("golang.org/x/sys" ,go-golang-org-x-sys)))
  1646. (native-inputs
  1647. `(("github.com/kylelemons/godebug" ,go-github-com-kylelemons-godebug)))
  1648. (home-page "https://esbuild.github.io/")
  1649. (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
  1650. (description
  1651. "The esbuild tool provides a unified bundler, transpiler and
  1652. minifier. It packages up JavaScript and TypeScript code, along with JSON
  1653. and other data, for distribution on the web.")
  1654. (license license:expat)))
  1655. (define-public tinyproxy
  1656. (package
  1657. (name "tinyproxy")
  1658. (version "1.11.0")
  1659. (source (origin
  1660. (method url-fetch)
  1661. (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
  1662. "releases/download/" version "/tinyproxy-"
  1663. version ".tar.xz"))
  1664. (sha256
  1665. (base32
  1666. "0cizm8pbh5p557birdirkayj71xdxapaa9q29v1d4lf5qk7q3v61"))))
  1667. (build-system gnu-build-system)
  1668. (arguments
  1669. `(#:test-target "test" ; ‘make check’ silently does nothing
  1670. #:configure-flags
  1671. (list
  1672. ;; For the log file, etc.
  1673. "--localstatedir=/var")
  1674. #:phases
  1675. (modify-phases %standard-phases
  1676. (add-before 'build 'pre-build
  1677. (lambda* (#:key inputs #:allow-other-keys #:rest args)
  1678. ;; Uncommenting the next two lines may assist in debugging
  1679. ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
  1680. ;; (setenv "XML_DEBUG_CATALOG" "1")
  1681. #t)))))
  1682. (native-inputs
  1683. `(("perl" ,perl))) ; for tests
  1684. (home-page "https://tinyproxy.github.io/")
  1685. (synopsis "Light-weight HTTP/HTTPS proxy daemon")
  1686. (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
  1687. daemon. Designed from the ground up to be fast and yet small, it is an ideal
  1688. solution for use cases such as embedded deployments where a full featured HTTP
  1689. proxy is required, but the system resources for a larger proxy are
  1690. unavailable.")
  1691. (license license:gpl2+)))
  1692. (define-public polipo
  1693. (package
  1694. (name "polipo")
  1695. (version "1.1.1")
  1696. (source
  1697. (origin
  1698. (method url-fetch)
  1699. (uri (string-append
  1700. "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
  1701. version ".tar.gz"))
  1702. (sha256
  1703. (base32
  1704. "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
  1705. (native-inputs `(("texinfo" ,texinfo)))
  1706. (build-system gnu-build-system)
  1707. (arguments
  1708. `(#:phases (modify-phases %standard-phases
  1709. (delete 'configure))
  1710. #:make-flags (let ((out (assoc-ref %outputs "out")))
  1711. (list (string-append "PREFIX=" out)
  1712. (string-append "LOCAL_ROOT="
  1713. out "/share/polipo/www")
  1714. "CC=gcc"))
  1715. ;; No 'check' target.
  1716. #:tests? #f))
  1717. (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
  1718. (synopsis "Small caching web proxy")
  1719. (description
  1720. "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
  1721. server). It was primarily designed to be used by one person or a small group
  1722. of people.")
  1723. (license license:expat)))
  1724. (define-public websockify
  1725. (package
  1726. (name "websockify")
  1727. (version "0.8.0")
  1728. (source (origin
  1729. (method git-fetch)
  1730. (uri (git-reference
  1731. (url "https://github.com/novnc/websockify")
  1732. (commit (string-append "v" version))))
  1733. (file-name (git-file-name name version))
  1734. (sha256
  1735. (base32
  1736. "0pcic8qs0gdwrfjgfaf893jyddaw97wcjm2mmvwn0xyhmy8mbmw1"))))
  1737. (build-system python-build-system)
  1738. (arguments
  1739. `(#:tests? #f)) ; FIXME: 2 out of 6 tests fail with "ImportError: No module
  1740. ; named 'stubout'". The tests can be run by replacing the check phase with
  1741. ; the command "python setup.py nosetests --verbosity=3".
  1742. (native-inputs `(; Required for tests:
  1743. ("python-mox3" ,python-mox3)
  1744. ("python-nose" ,python-nose)))
  1745. (propagated-inputs `(("python-numpy" ,python-numpy)))
  1746. (home-page "https://github.com/novnc/websockify")
  1747. (synopsis "WebSockets support for any application/server")
  1748. (description "Websockify translates WebSockets traffic to normal socket
  1749. traffic. Websockify accepts the WebSockets handshake, parses it, and then
  1750. begins forwarding traffic between the client and the target in both
  1751. directions.")
  1752. (license license:lgpl3)))
  1753. (define-public wwwoffle
  1754. (package
  1755. (name "wwwoffle")
  1756. (version "2.9j")
  1757. (source (origin
  1758. (method url-fetch)
  1759. (uri (string-append "https://www.gedanken.org.uk/software/"
  1760. "wwwoffle/download/wwwoffle-"
  1761. version ".tgz"))
  1762. (sha256
  1763. (base32
  1764. "1ihil1xq9dp21hf108khxbw6f3baq0w5c0j3af038y6lkmad4vdi"))))
  1765. (build-system gnu-build-system)
  1766. (arguments
  1767. `(#:configure-flags '("--with-gnutls")
  1768. #:tests? #f)) ; no test target
  1769. (native-inputs `(("flex" ,flex)))
  1770. (inputs `(("gnutls" ,gnutls)
  1771. ("libcrypt" ,libgcrypt)))
  1772. (home-page "https://www.gedanken.org.uk/software/wwwoffle/")
  1773. (synopsis "Caching web proxy optimized for intermittent internet links")
  1774. (description "WWWOFFLE is a proxy web server that is especially good for
  1775. intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger
  1776. protocols, and supports browsing and requesting pages while offline, indexing,
  1777. modifying pages and incoming and outgoing headers, monitoring pages for
  1778. changes, and much more.")
  1779. (license license:gpl2+)))
  1780. (define-public liboauth
  1781. (package
  1782. (name "liboauth")
  1783. (version "1.0.3")
  1784. (source (origin
  1785. (method url-fetch)
  1786. (uri (string-append "mirror://sourceforge/liboauth/liboauth-"
  1787. version ".tar.gz"))
  1788. (sha256
  1789. (base32
  1790. "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
  1791. (build-system gnu-build-system)
  1792. (arguments '(#:configure-flags '("--enable-nss")))
  1793. (native-inputs `(("pkg-config" ,pkg-config)))
  1794. (propagated-inputs
  1795. `(("curl" ,curl)
  1796. ("nss" ,nss)))
  1797. (home-page "https://sourceforge.net/projects/liboauth")
  1798. (synopsis "C library implementing the OAuth API")
  1799. (description
  1800. "liboauth is a collection of C functions implementing the OAuth API.
  1801. liboauth provides functions to escape and encode strings according to OAuth
  1802. specifications and offers high-level functionality built on top to sign
  1803. requests or verify signatures using either NSS or OpenSSL for calculating the
  1804. hash/signatures.")
  1805. ;; Source code may be distributed under either license.
  1806. (license (list license:expat license:gpl2+))))
  1807. (define-public libquvi-scripts
  1808. (package
  1809. (name "libquvi-scripts")
  1810. (version "0.4.21")
  1811. (source
  1812. (origin
  1813. (method url-fetch)
  1814. (uri (string-append
  1815. "mirror://sourceforge/quvi/" (version-major+minor version) "/"
  1816. name "/" name "-" version ".tar.xz"))
  1817. (sha256
  1818. (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw"))))
  1819. (build-system gnu-build-system)
  1820. (home-page "http://quvi.sourceforge.net/")
  1821. (synopsis "Media stream URL parser")
  1822. (description "This package contains support scripts called by libquvi to
  1823. parse media stream properties.")
  1824. (license license:lgpl2.1+)))
  1825. (define-public libquvi
  1826. (package
  1827. (name "libquvi")
  1828. (version "0.4.1")
  1829. (source
  1830. (origin
  1831. (method url-fetch)
  1832. (uri (string-append
  1833. "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/"
  1834. name "-" version ".tar.xz"))
  1835. (sha256
  1836. (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm"))))
  1837. (build-system gnu-build-system)
  1838. (native-inputs `(("pkg-config" ,pkg-config)))
  1839. (inputs
  1840. `(("curl" ,curl)
  1841. ("cyrus-sasl" ,cyrus-sasl)
  1842. ("libquvi-scripts" ,libquvi-scripts)
  1843. ("lua" ,lua-5.1)
  1844. ("openssl" ,openssl)
  1845. ("zlib" ,zlib)))
  1846. (arguments
  1847. ;; Lua provides no .pc file, so add CFLAGS/LIBS manually.
  1848. '(#:configure-flags
  1849. (let ((lua (assoc-ref %build-inputs "lua")))
  1850. (list
  1851. (string-append "liblua_CFLAGS=-I" lua "/include")
  1852. (string-append "liblua_LIBS=-L" lua "/libs -llua")))))
  1853. (home-page "http://quvi.sourceforge.net/")
  1854. (synopsis "Media stream URL parser")
  1855. (description "libquvi is a library with a C API for parsing media stream
  1856. URLs and extracting their actual media files.")
  1857. (license license:lgpl2.1+)))
  1858. (define-public quvi
  1859. (package
  1860. (name "quvi")
  1861. (version "0.4.2")
  1862. (source
  1863. (origin
  1864. (method url-fetch)
  1865. (uri (string-append
  1866. "mirror://sourceforge/" name "/" (version-major+minor version)
  1867. "/" name "/" name "-" version ".tar.xz"))
  1868. (sha256
  1869. (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci"))))
  1870. (build-system gnu-build-system)
  1871. (native-inputs `(("pkg-config" ,pkg-config)))
  1872. (inputs
  1873. `(("curl" ,curl)
  1874. ("libquvi" ,libquvi)))
  1875. (home-page "http://quvi.sourceforge.net/")
  1876. (synopsis "Media stream URL parser")
  1877. (description "quvi is a command-line-tool suite to extract media files
  1878. from streaming URLs. It is a command-line wrapper for the libquvi library.")
  1879. (license license:lgpl2.1+)))
  1880. (define-public serf
  1881. (package
  1882. (name "serf")
  1883. (version "1.3.9")
  1884. (source
  1885. (origin
  1886. (method url-fetch)
  1887. (uri (string-append "mirror://apache/serf/serf-"
  1888. version ".tar.bz2"))
  1889. (patches (search-patches "serf-python3.patch"))
  1890. (sha256
  1891. (base32 "1k47gbgpp52049andr28y28nbwh9m36bbb0g8p0aka3pqlhjv72l"))))
  1892. (build-system scons-build-system)
  1893. (propagated-inputs
  1894. `(("apr" ,apr)
  1895. ("apr-util" ,apr-util)
  1896. ("openssl" ,openssl)))
  1897. (inputs
  1898. `(;; TODO: Fix build with gss.
  1899. ;;("gss" ,gss)
  1900. ("zlib" ,zlib)))
  1901. (arguments
  1902. `(#:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr"))
  1903. (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
  1904. (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
  1905. ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
  1906. (string-append "ZLIB=" (assoc-ref %build-inputs "zlib"))
  1907. (string-append "PREFIX=" %output))
  1908. #:phases
  1909. (modify-phases %standard-phases
  1910. (add-after 'unpack 'scons-propagate-environment
  1911. (lambda _
  1912. ;; By design, SCons does not, by default, propagate
  1913. ;; environment variables to subprocesses. See:
  1914. ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
  1915. ;; Here, we modify the SConstruct file to arrange for
  1916. ;; environment variables to be propagated.
  1917. (substitute* "SConstruct"
  1918. (("^env = Environment\\(")
  1919. "env = Environment(ENV=os.environ, "))))
  1920. (add-before 'check 'disable-broken-tests
  1921. (lambda _
  1922. ;; These tests rely on SSL certificates that expired 2017-04-18.
  1923. ;; While there are newer certs available upstream, we don't want
  1924. ;; this package to suddenly "expire" some time in the future.
  1925. ;; https://bugs.gnu.org/26671
  1926. (let ((broken-tests
  1927. '("test_ssl_trust_rootca"
  1928. "test_ssl_certificate_chain_with_anchor"
  1929. "test_ssl_certificate_chain_all_from_server"
  1930. "test_ssl_no_servercert_callback_allok"
  1931. "test_ssl_large_response"
  1932. "test_ssl_large_request"
  1933. "test_ssl_client_certificate"
  1934. "test_ssl_future_server_cert"
  1935. "test_setup_ssltunnel"
  1936. "test_ssltunnel_basic_auth"
  1937. "test_ssltunnel_basic_auth_server_has_keepalive_off"
  1938. "test_ssltunnel_basic_auth_proxy_has_keepalive_off"
  1939. "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp"
  1940. "test_ssltunnel_digest_auth")))
  1941. (for-each
  1942. (lambda (test)
  1943. (substitute* "test/test_context.c"
  1944. (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) "")))
  1945. broken-tests)
  1946. #t))))))
  1947. (home-page "https://serf.apache.org/")
  1948. (synopsis "High-performance asynchronous HTTP client library")
  1949. (description
  1950. "serf is a C-based HTTP client library built upon the Apache Portable
  1951. Runtime (APR) library. It multiplexes connections, running the read/write
  1952. communication asynchronously. Memory copies and transformations are kept to a
  1953. minimum to provide high performance operation.")
  1954. ;; Most of the code is covered by the Apache License, Version 2.0, but the
  1955. ;; bundled CuTest framework uses a different non-copyleft license.
  1956. (license (list license:asl2.0 (license:non-copyleft "file://test/CuTest-README.txt")))))
  1957. (define-public libsass
  1958. (package
  1959. (name "libsass")
  1960. ;; When updating, check whether sassc/libsass-3.5 is still needed.
  1961. (version "3.6.4")
  1962. (source (origin
  1963. (method git-fetch)
  1964. (uri (git-reference
  1965. (url "https://github.com/sass/libsass")
  1966. (commit version)))
  1967. (file-name (git-file-name name version))
  1968. (sha256
  1969. (base32
  1970. "0r8lfqvr3rjhjd8r036zd1wc9q17gyiskppcw9m13jks9an7xp4j"))))
  1971. (build-system gnu-build-system)
  1972. (arguments
  1973. `(#:phases
  1974. (modify-phases %standard-phases
  1975. (add-before 'bootstrap 'set-LIBSASS_VERSION
  1976. (lambda _
  1977. (setenv "LIBSASS_VERSION" ,version)
  1978. #t)))))
  1979. (native-inputs
  1980. `(("autoconf" ,autoconf)
  1981. ("automake" ,automake)
  1982. ("libtool" ,libtool)))
  1983. (home-page "https://sass-lang.com/libsass")
  1984. (synopsis "SASS Compiler, implemented as a C/C++ library")
  1985. (description
  1986. "LibSass is a @acronym{SASS,Syntactically awesome style sheets} compiler
  1987. library designed for portability and efficiency. To actually compile SASS
  1988. stylesheets, you'll need to use another program that uses this library,
  1989. @var{sassc} for example.")
  1990. (license license:expat)))
  1991. (define-public sassc
  1992. (package
  1993. (name "sassc")
  1994. (version "3.6.2")
  1995. (source (origin
  1996. (method git-fetch)
  1997. (uri (git-reference
  1998. (url "https://github.com/sass/sassc")
  1999. (commit version)))
  2000. (file-name (git-file-name name version))
  2001. (sha256
  2002. (base32
  2003. "0m7flrs0hz3ivib8kvsgn3d0fgkabqviadkp1dyspa6iibx3gjwd"))))
  2004. (build-system gnu-build-system)
  2005. (arguments
  2006. `(#:make-flags
  2007. (list "CC=gcc"
  2008. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2009. #:tests? #f ; no test suite
  2010. #:phases
  2011. (modify-phases %standard-phases
  2012. (add-after 'unpack 'patch-Makefile
  2013. (lambda _
  2014. (substitute* "Makefile"
  2015. (("build-shared: \\$\\(RESOURCES\\) \\$\\(OBJECTS\\) \\$\\(LIB_SHARED\\)")
  2016. "build-shared: $(RESOURCES) $(OBJECTS)")
  2017. (("\\$\\(SASSC_EXE\\): libsass build")
  2018. "$(SASSC_EXE): build")
  2019. (("install: libsass-install-\\$\\(BUILD\\) \\\\")
  2020. "install: \\"))
  2021. #t))
  2022. ;; This phase fails because…
  2023. (delete 'bootstrap)
  2024. ;; …there is no configure script to be generated.
  2025. (delete 'configure)
  2026. (add-before 'build 'setup-environment
  2027. (lambda _
  2028. (setenv "BUILD" "shared")
  2029. (setenv "SASSC_VERSION" ,version)
  2030. #t)))))
  2031. (inputs
  2032. `(("libsass" ,libsass)))
  2033. (synopsis "CSS pre-processor")
  2034. (description "SassC is a compiler written in C for the CSS pre-processor
  2035. language known as SASS.")
  2036. (home-page "https://sass-lang.com/libsass")
  2037. (license license:expat)))
  2038. (define-public sassc/libsass-3.5
  2039. ;; Newer libsass versions suffor from a memory leak when building (some?)
  2040. ;; GTK themes <https://github.com/sass/libsass/issues/3033>.
  2041. (package
  2042. (inherit sassc)
  2043. (name "sassc")
  2044. (inputs
  2045. `(("libsass" ,
  2046. (package
  2047. (inherit libsass)
  2048. (name "libsass")
  2049. (version "3.5.5")
  2050. (source
  2051. (origin
  2052. (method git-fetch)
  2053. (uri (git-reference
  2054. (url "https://github.com/sass/libsass")
  2055. (commit version)))
  2056. (file-name (git-file-name name version))
  2057. (sha256
  2058. (base32
  2059. "0830pjcvhzxh6yixj82x5k5r1xnadjqzi16kp53213icbly0r9ma"))))))))
  2060. (properties '((hidden? . #t)))))
  2061. (define-public perl-apache-logformat-compiler
  2062. (package
  2063. (name "perl-apache-logformat-compiler")
  2064. (version "0.36")
  2065. (source
  2066. (origin
  2067. (method url-fetch)
  2068. (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
  2069. "Apache-LogFormat-Compiler-" version ".tar.gz"))
  2070. (sha256
  2071. (base32 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l"))))
  2072. (build-system perl-build-system)
  2073. (native-inputs
  2074. `(("perl-http-message" ,perl-http-message)
  2075. ("perl-module-build-tiny" ,perl-module-build-tiny)
  2076. ("perl-test-mocktime" ,perl-test-mocktime)
  2077. ("perl-try-tiny" ,perl-try-tiny)
  2078. ("perl-uri" ,perl-uri)))
  2079. (propagated-inputs
  2080. `(("perl-posix-strftime-compiler" ,perl-posix-strftime-compiler)))
  2081. (arguments `(#:tests? #f)) ; TODO: Timezone test failures
  2082. (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler")
  2083. (synopsis "Compile a log format string to perl-code")
  2084. (description "This module provides methods to compile a log format string
  2085. to perl-code, for faster generation of access_log lines.")
  2086. (license license:perl-license)))
  2087. (define-public perl-authen-sasl
  2088. (package
  2089. (name "perl-authen-sasl")
  2090. (version "2.16")
  2091. (source
  2092. (origin
  2093. (method url-fetch)
  2094. (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/"
  2095. "Authen-SASL-" version ".tar.gz"))
  2096. (sha256
  2097. (base32
  2098. "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536"))))
  2099. (build-system perl-build-system)
  2100. (arguments
  2101. '(#:phases
  2102. (modify-phases %standard-phases
  2103. (add-after 'unpack 'set-env
  2104. ;; Fix the build with Perl 5.26.0. Try removing this phase for later
  2105. ;; versions of perl-authen-sasl.
  2106. (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)))))
  2107. (propagated-inputs
  2108. `(("perl-digest-hmac" ,perl-digest-hmac)
  2109. ("perl-gssapi" ,perl-gssapi)))
  2110. (home-page "https://metacpan.org/release/Authen-SASL")
  2111. (synopsis "SASL authentication framework")
  2112. (description "Authen::SASL provides an SASL authentication framework.")
  2113. (license license:perl-license)))
  2114. (define-public perl-catalyst-action-renderview
  2115. (package
  2116. (name "perl-catalyst-action-renderview")
  2117. (version "0.16")
  2118. (source
  2119. (origin
  2120. (method url-fetch)
  2121. (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
  2122. "Catalyst-Action-RenderView-"
  2123. version ".tar.gz"))
  2124. (sha256
  2125. (base32
  2126. "0j1rrld13cjk7ks92b5hv3xw4rfm2lvmksb4rlzd8mx0a0wj0rc5"))))
  2127. (build-system perl-build-system)
  2128. (native-inputs
  2129. `(("perl-http-request-ascgi" ,perl-http-request-ascgi)
  2130. ("perl-module-install" ,perl-module-install)))
  2131. (propagated-inputs
  2132. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2133. ("perl-data-visitor" ,perl-data-visitor)
  2134. ("perl-mro-compat" ,perl-mro-compat)))
  2135. (home-page "https://metacpan.org/release/Catalyst-Action-RenderView")
  2136. (synopsis "Sensible default Catalyst action")
  2137. (description "This Catalyst action implements a sensible default end
  2138. action, which will forward to the first available view.")
  2139. (license license:perl-license)))
  2140. (define-public perl-catalyst-action-rest
  2141. (package
  2142. (name "perl-catalyst-action-rest")
  2143. (version "1.21")
  2144. (source (origin
  2145. (method url-fetch)
  2146. (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
  2147. "Catalyst-Action-REST-" version ".tar.gz"))
  2148. (sha256
  2149. (base32
  2150. "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c"))))
  2151. (build-system perl-build-system)
  2152. (native-inputs
  2153. `(("perl-test-requires" ,perl-test-requires)
  2154. ("perl-module-install" ,perl-module-install)))
  2155. (propagated-inputs
  2156. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2157. ("perl-class-inspector" ,perl-class-inspector)
  2158. ("perl-config-general" ,perl-config-general)
  2159. ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
  2160. ("perl-libwww" ,perl-libwww)
  2161. ("perl-moose" ,perl-moose)
  2162. ("perl-mro-compat" ,perl-mro-compat)
  2163. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2164. ("perl-params-validate" ,perl-params-validate)
  2165. ("perl-uri-find" ,perl-uri-find)
  2166. ("perl-xml-simple" ,perl-xml-simple)))
  2167. (home-page "https://metacpan.org/release/Catalyst-Action-REST")
  2168. (synopsis "Automated REST Method Dispatching")
  2169. (description "This Action handles doing automatic method dispatching for
  2170. REST requests. It takes a normal Catalyst action, and changes the dispatch to
  2171. append an underscore and method name. First it will try dispatching to an
  2172. action with the generated name, and failing that it will try to dispatch to a
  2173. regular method.")
  2174. (license license:perl-license)))
  2175. (define-public perl-catalyst-authentication-store-dbix-class
  2176. (package
  2177. (name "perl-catalyst-authentication-store-dbix-class")
  2178. (version "0.1506")
  2179. (source
  2180. (origin
  2181. (method url-fetch)
  2182. (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
  2183. "Catalyst-Authentication-Store-DBIx-Class-"
  2184. version ".tar.gz"))
  2185. (sha256
  2186. (base32
  2187. "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw"))))
  2188. (build-system perl-build-system)
  2189. (native-inputs
  2190. `(("perl-catalyst-plugin-authorization-roles"
  2191. ,perl-catalyst-plugin-authorization-roles)
  2192. ("perl-catalyst-plugin-session-state-cookie"
  2193. ,perl-catalyst-plugin-session-state-cookie)
  2194. ("perl-dbd-sqlite" ,perl-dbd-sqlite)
  2195. ("perl-module-install" ,perl-module-install)
  2196. ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)))
  2197. (propagated-inputs
  2198. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2199. ("perl-catalyst-plugin-authentication"
  2200. ,perl-catalyst-plugin-authentication)
  2201. ("perl-dbix-class" ,perl-dbix-class)
  2202. ("perl-catalyst-model-dbic-schema" ,perl-catalyst-model-dbic-schema)))
  2203. (home-page
  2204. "https://metacpan.org/release/Catalyst-Authentication-Store-DBIx-Class")
  2205. (synopsis "Storage class for Catalyst authentication using DBIx::Class")
  2206. (description "The Catalyst::Authentication::Store::DBIx::Class class
  2207. provides access to authentication information stored in a database via
  2208. DBIx::Class.")
  2209. (license license:perl-license)))
  2210. (define-public perl-catalyst-component-instancepercontext
  2211. (package
  2212. (name "perl-catalyst-component-instancepercontext")
  2213. (version "0.001001")
  2214. (source
  2215. (origin
  2216. (method url-fetch)
  2217. (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
  2218. "Catalyst-Component-InstancePerContext-"
  2219. version ".tar.gz"))
  2220. (sha256
  2221. (base32
  2222. "0wfj4vnn2cvk6jh62amwlg050p37fcwdgrn9amcz24z6w4qgjqvz"))))
  2223. (build-system perl-build-system)
  2224. (native-inputs
  2225. `(("perl-module-install" ,perl-module-install)))
  2226. (propagated-inputs
  2227. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2228. ("perl-moose" ,perl-moose)))
  2229. (home-page
  2230. "https://metacpan.org/release/Catalyst-Component-InstancePerContext")
  2231. (synopsis "Create only one instance of Moose component per context")
  2232. (description "Catalyst::Component::InstancePerContext returns a new
  2233. instance of a component on each request.")
  2234. (license license:perl-license)))
  2235. (define-public perl-catalyst-devel
  2236. (package
  2237. (name "perl-catalyst-devel")
  2238. (version "1.41")
  2239. (source
  2240. (origin
  2241. (method url-fetch)
  2242. (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
  2243. "Catalyst-Devel-" version ".tar.gz"))
  2244. (sha256
  2245. (base32 "1r8arq7sw37d0mjyfzkc3pg1a9plgydqbscryc8qpvba4swpljls"))))
  2246. (build-system perl-build-system)
  2247. (native-inputs
  2248. `(("perl-test-fatal" ,perl-test-fatal)))
  2249. (propagated-inputs
  2250. `(("perl-catalyst-action-renderview" ,perl-catalyst-action-renderview)
  2251. ("perl-catalyst-plugin-configloader" ,perl-catalyst-plugin-configloader)
  2252. ("perl-catalyst-plugin-static-simple" ,perl-catalyst-plugin-static-simple)
  2253. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2254. ("perl-config-general" ,perl-config-general)
  2255. ("perl-file-changenotify" ,perl-file-changenotify)
  2256. ("perl-file-copy-recursive" ,perl-file-copy-recursive)
  2257. ("perl-file-sharedir" ,perl-file-sharedir)
  2258. ("perl-module-install" ,perl-module-install)
  2259. ("perl-moose" ,perl-moose)
  2260. ("perl-moosex-emulate-class-accessor-fast"
  2261. ,perl-moosex-emulate-class-accessor-fast)
  2262. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2263. ("perl-namespace-clean" ,perl-namespace-clean)
  2264. ("perl-path-class" ,perl-path-class)
  2265. ("perl-template-toolkit" ,perl-template-toolkit)))
  2266. (home-page "https://metacpan.org/release/Catalyst-Devel")
  2267. (synopsis "Catalyst Development Tools")
  2268. (description "The Catalyst-Devel distribution includes a variety of
  2269. modules useful for the development of Catalyst applications, but not required
  2270. to run them. Catalyst-Devel includes the Catalyst::Helper system, which
  2271. autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install
  2272. extension for Catalyst; and requirements for a variety of development-related
  2273. modules.")
  2274. (license license:perl-license)))
  2275. (define-public perl-catalyst-dispatchtype-regex
  2276. (package
  2277. (name "perl-catalyst-dispatchtype-regex")
  2278. (version "5.90035")
  2279. (source
  2280. (origin
  2281. (method url-fetch)
  2282. (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/"
  2283. "Catalyst-DispatchType-Regex-" version ".tar.gz"))
  2284. (sha256
  2285. (base32
  2286. "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80"))))
  2287. (build-system perl-build-system)
  2288. (native-inputs
  2289. `(("perl-module-build" ,perl-module-build) ;needs Module::Build >= 0.4004
  2290. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2291. ("perl-catalyst-runtime" ,perl-catalyst-runtime)))
  2292. (propagated-inputs
  2293. `(("perl-moose" ,perl-moose)
  2294. ("perl-text-simpletable" ,perl-text-simpletable)))
  2295. (home-page "https://metacpan.org/release/Catalyst-DispatchType-Regex")
  2296. (synopsis "Regex DispatchType for Catalyst")
  2297. (description "Dispatch type managing path-matching behaviour using
  2298. regexes. Regex dispatch types have been deprecated and removed from Catalyst
  2299. core. It is recommend that you use Chained methods or other techniques
  2300. instead. As part of the refactoring, the dispatch priority of Regex vs Regexp
  2301. vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by
  2302. when the dispatch type is first seen in your application.")
  2303. (license license:perl-license)))
  2304. (define-public perl-catalyst-model-dbic-schema
  2305. (package
  2306. (name "perl-catalyst-model-dbic-schema")
  2307. (version "0.65")
  2308. (source
  2309. (origin
  2310. (method url-fetch)
  2311. (uri (string-append "mirror://cpan/authors/id/G/GB/GBJK/"
  2312. "Catalyst-Model-DBIC-Schema-"
  2313. version ".tar.gz"))
  2314. (sha256
  2315. (base32
  2316. "1spfjcjc0b9dv3k2gbanqj1m1cqzyxb32p76dhdwizzpbvpi3a96"))))
  2317. (build-system perl-build-system)
  2318. (native-inputs
  2319. `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
  2320. ("perl-module-install" ,perl-module-install)
  2321. ("perl-test-exception" ,perl-test-exception)
  2322. ("perl-test-requires" ,perl-test-requires)))
  2323. (propagated-inputs
  2324. `(("perl-carp-clan" ,perl-carp-clan)
  2325. ("perl-catalyst-component-instancepercontext"
  2326. ,perl-catalyst-component-instancepercontext)
  2327. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2328. ("perl-catalystx-component-traits" ,perl-catalystx-component-traits)
  2329. ("perl-dbix-class" ,perl-dbix-class)
  2330. ("perl-dbix-class-cursor-cached" ,perl-dbix-class-cursor-cached)
  2331. ("perl-dbix-class-schema-loader" ,perl-dbix-class-schema-loader)
  2332. ("perl-hash-merge" ,perl-hash-merge)
  2333. ("perl-list-moreutils" ,perl-list-moreutils)
  2334. ("perl-module-runtime" ,perl-module-runtime)
  2335. ("perl-moose" ,perl-moose)
  2336. ("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
  2337. ("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
  2338. ("perl-moosex-types" ,perl-moosex-types)
  2339. ("perl-moosex-types-loadableclass" ,perl-moosex-types-loadableclass)
  2340. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2341. ("perl-namespace-clean" ,perl-namespace-clean)
  2342. ("perl-tie-ixhash" ,perl-tie-ixhash)
  2343. ("perl-try-tiny" ,perl-try-tiny)))
  2344. (home-page "https://metacpan.org/release/Catalyst-Model-DBIC-Schema")
  2345. (synopsis "DBIx::Class::Schema Model Class")
  2346. (description "This is a Catalyst Model for DBIx::Class::Schema-based
  2347. Models.")
  2348. (license license:perl-license)))
  2349. (define-public perl-catalyst-plugin-accesslog
  2350. (package
  2351. (name "perl-catalyst-plugin-accesslog")
  2352. (version "1.10")
  2353. (source
  2354. (origin
  2355. (method url-fetch)
  2356. (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
  2357. "Catalyst-Plugin-AccessLog-" version ".tar.gz"))
  2358. (sha256
  2359. (base32
  2360. "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7"))))
  2361. (build-system perl-build-system)
  2362. (propagated-inputs
  2363. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2364. ("perl-datetime" ,perl-datetime)
  2365. ("perl-moose" ,perl-moose)
  2366. ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
  2367. (home-page "https://metacpan.org/release/Catalyst-Plugin-AccessLog")
  2368. (synopsis "Request logging from within Catalyst")
  2369. (description "This Catalyst plugin enables you to create \"access logs\"
  2370. from within a Catalyst application instead of requiring a webserver to do it
  2371. for you. It will work even with Catalyst debug logging turned off.")
  2372. (license license:perl-license)))
  2373. (define-public perl-catalyst-plugin-authentication
  2374. (package
  2375. (name "perl-catalyst-plugin-authentication")
  2376. (version "0.10023")
  2377. (source
  2378. (origin
  2379. (method url-fetch)
  2380. (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
  2381. "Catalyst-Plugin-Authentication-"
  2382. version ".tar.gz"))
  2383. (sha256
  2384. (base32
  2385. "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn"))))
  2386. (build-system perl-build-system)
  2387. (native-inputs
  2388. `(("perl-module-install" ,perl-module-install)))
  2389. (propagated-inputs
  2390. `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
  2391. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2392. ("perl-class-inspector" ,perl-class-inspector)
  2393. ("perl-moose" ,perl-moose)
  2394. ("perl-moosex-emulate-class-accessor-fast"
  2395. ,perl-moosex-emulate-class-accessor-fast)
  2396. ("perl-mro-compat" ,perl-mro-compat)
  2397. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2398. ("perl-string-rewriteprefix" ,perl-string-rewriteprefix)
  2399. ("perl-test-exception" ,perl-test-exception)
  2400. ("perl-try-tiny" ,perl-try-tiny)))
  2401. (home-page "https://metacpan.org/release/Catalyst-Plugin-Authentication")
  2402. (synopsis "Infrastructure plugin for the Catalyst authentication framework")
  2403. (description "The authentication plugin provides generic user support for
  2404. Catalyst apps. It is the basis for both authentication (checking the user is
  2405. who they claim to be), and authorization (allowing the user to do what the
  2406. system authorises them to do).")
  2407. (license license:perl-license)))
  2408. (define-public perl-catalyst-plugin-authorization-roles
  2409. (package
  2410. (name "perl-catalyst-plugin-authorization-roles")
  2411. (version "0.09")
  2412. (source
  2413. (origin
  2414. (method url-fetch)
  2415. (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
  2416. "Catalyst-Plugin-Authorization-Roles-"
  2417. version ".tar.gz"))
  2418. (sha256
  2419. (base32
  2420. "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f"))))
  2421. (build-system perl-build-system)
  2422. (native-inputs
  2423. `(("perl-module-install" ,perl-module-install)
  2424. ("perl-test-exception" ,perl-test-exception)))
  2425. (propagated-inputs
  2426. `(("perl-catalyst-plugin-authentication"
  2427. ,perl-catalyst-plugin-authentication)
  2428. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2429. ("perl-set-object" ,perl-set-object)
  2430. ("perl-universal-isa" ,perl-universal-isa)))
  2431. (home-page
  2432. "https://metacpan.org/release/Catalyst-Plugin-Authorization-Roles")
  2433. (synopsis "Role-based authorization for Catalyst")
  2434. (description "Catalyst::Plugin::Authorization::Roles provides role-based
  2435. authorization for Catalyst based on Catalyst::Plugin::Authentication.")
  2436. (license license:perl-license)))
  2437. (define-public perl-catalyst-plugin-captcha
  2438. (package
  2439. (name "perl-catalyst-plugin-captcha")
  2440. (version "0.04")
  2441. (source
  2442. (origin
  2443. (method url-fetch)
  2444. (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/"
  2445. "Catalyst-Plugin-Captcha-" version ".tar.gz"))
  2446. (sha256
  2447. (base32
  2448. "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"))))
  2449. (build-system perl-build-system)
  2450. (propagated-inputs
  2451. `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
  2452. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2453. ("perl-gd-securityimage" ,perl-gd-securityimage)
  2454. ("perl-http-date" ,perl-http-date)))
  2455. (home-page "https://metacpan.org/release/Catalyst-Plugin-Captcha")
  2456. (synopsis "Captchas for Catalyst")
  2457. (description "This plugin creates and validates Captcha images for
  2458. Catalyst.")
  2459. (license license:perl-license)))
  2460. (define-public perl-catalyst-plugin-configloader
  2461. (package
  2462. (name "perl-catalyst-plugin-configloader")
  2463. (version "0.35")
  2464. (source
  2465. (origin
  2466. (method url-fetch)
  2467. (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
  2468. "Catalyst-Plugin-ConfigLoader-"
  2469. version ".tar.gz"))
  2470. (sha256
  2471. (base32 "0w8r3bbxqnlykvra6sx3sh3wh8ylkj914xg5ql6nw11ddy56jaly"))))
  2472. (build-system perl-build-system)
  2473. (native-inputs
  2474. `(("perl-path-class" ,perl-path-class)
  2475. ("perl-module-install" ,perl-module-install)))
  2476. (propagated-inputs
  2477. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2478. ("perl-config-any" ,perl-config-any)
  2479. ("perl-data-visitor" ,perl-data-visitor)
  2480. ("perl-mro-compat" ,perl-mro-compat)))
  2481. (home-page "https://metacpan.org/release/Catalyst-Plugin-ConfigLoader")
  2482. (synopsis "Load config files of various types")
  2483. (description "This module will attempt to load find and load configuration
  2484. files of various types. Currently it supports YAML, JSON, XML, INI and Perl
  2485. formats.")
  2486. (license license:perl-license)))
  2487. (define-public perl-catalyst-plugin-session
  2488. (package
  2489. (name "perl-catalyst-plugin-session")
  2490. (version "0.41")
  2491. (source
  2492. (origin
  2493. (method url-fetch)
  2494. (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
  2495. "Catalyst-Plugin-Session-" version ".tar.gz"))
  2496. (sha256
  2497. (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5"))))
  2498. (build-system perl-build-system)
  2499. (native-inputs
  2500. `(("perl-module-install" ,perl-module-install)
  2501. ("perl-test-deep" ,perl-test-deep)
  2502. ("perl-test-exception" ,perl-test-exception)))
  2503. (propagated-inputs
  2504. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2505. ("perl-moose" ,perl-moose)
  2506. ("perl-moosex-emulate-class-accessor-fast"
  2507. ,perl-moosex-emulate-class-accessor-fast)
  2508. ("perl-mro-compat" ,perl-mro-compat)
  2509. ("perl-namespace-clean" ,perl-namespace-clean)
  2510. ("perl-object-signature" ,perl-object-signature)
  2511. ("perl-test-www-mechanize-psgi" ,perl-test-www-mechanize-psgi)))
  2512. (home-page "https://metacpan.org/release/Catalyst-Plugin-Session")
  2513. (synopsis "Catalyst generic session plugin")
  2514. (description "This plugin links the two pieces required for session
  2515. management in web applications together: the state, and the store.")
  2516. (license license:perl-license)))
  2517. (define-public perl-catalyst-plugin-session-state-cookie
  2518. (package
  2519. (name "perl-catalyst-plugin-session-state-cookie")
  2520. (version "0.17")
  2521. (source
  2522. (origin
  2523. (method url-fetch)
  2524. (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
  2525. "Catalyst-Plugin-Session-State-Cookie-"
  2526. version ".tar.gz"))
  2527. (sha256
  2528. (base32
  2529. "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb"))))
  2530. (build-system perl-build-system)
  2531. (native-inputs
  2532. `(("perl-module-install" ,perl-module-install)))
  2533. (propagated-inputs
  2534. `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
  2535. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2536. ("perl-moose" ,perl-moose)
  2537. ("perl-mro-compat" ,perl-mro-compat)
  2538. ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
  2539. (home-page
  2540. "https://metacpan.org/release/Catalyst-Plugin-Session-State-Cookie")
  2541. (synopsis "Maintain session IDs using cookies")
  2542. (description "In order for Catalyst::Plugin::Session to work, the session
  2543. ID needs to be stored on the client, and the session data needs to be stored
  2544. on the server. This plugin stores the session ID on the client using the
  2545. cookie mechanism.")
  2546. (license license:perl-license)))
  2547. (define-public perl-catalyst-plugin-session-store-fastmmap
  2548. (package
  2549. (name "perl-catalyst-plugin-session-store-fastmmap")
  2550. (version "0.16")
  2551. (source
  2552. (origin
  2553. (method url-fetch)
  2554. (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
  2555. "Catalyst-Plugin-Session-Store-FastMmap-"
  2556. version ".tar.gz"))
  2557. (sha256
  2558. (base32
  2559. "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs"))))
  2560. (build-system perl-build-system)
  2561. (propagated-inputs
  2562. `(("perl-cache-fastmmap" ,perl-cache-fastmmap)
  2563. ("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
  2564. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2565. ("perl-moosex-emulate-class-accessor-fast"
  2566. ,perl-moosex-emulate-class-accessor-fast)
  2567. ("perl-mro-compat" ,perl-mro-compat)
  2568. ("perl-path-class" ,perl-path-class)))
  2569. (home-page
  2570. "https://metacpan.org/release/Catalyst-Plugin-Session-Store-FastMmap")
  2571. (synopsis "FastMmap session storage backend")
  2572. (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
  2573. storage plugin for Catalyst that uses an mmap'ed file to act as a shared
  2574. memory interprocess cache. It is based on Cache::FastMmap.")
  2575. (license license:perl-license)))
  2576. (define-public perl-catalyst-plugin-stacktrace
  2577. (package
  2578. (name "perl-catalyst-plugin-stacktrace")
  2579. (version "0.12")
  2580. (source
  2581. (origin
  2582. (method url-fetch)
  2583. (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
  2584. "Catalyst-Plugin-StackTrace-" version ".tar.gz"))
  2585. (sha256
  2586. (base32
  2587. "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j"))))
  2588. (build-system perl-build-system)
  2589. (native-inputs
  2590. `(("perl-module-install" ,perl-module-install)))
  2591. (propagated-inputs
  2592. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2593. ("perl-devel-stacktrace" ,perl-devel-stacktrace)
  2594. ("perl-mro-compat" ,perl-mro-compat)))
  2595. (home-page "https://metacpan.org/release/Catalyst-Plugin-StackTrace")
  2596. (synopsis "Stack trace on the Catalyst debug screen")
  2597. (description "This plugin enhances the standard Catalyst debug screen by
  2598. including a stack trace of your application up to the point where the error
  2599. occurred. Each stack frame is displayed along with the package name, line
  2600. number, file name, and code context surrounding the line number.")
  2601. (license license:perl-license)))
  2602. (define-public perl-catalyst-plugin-static-simple
  2603. (package
  2604. (name "perl-catalyst-plugin-static-simple")
  2605. (version "0.36")
  2606. (source
  2607. (origin
  2608. (method url-fetch)
  2609. (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
  2610. "Catalyst-Plugin-Static-Simple-" version ".tar.gz"))
  2611. (sha256
  2612. (base32
  2613. "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn"))))
  2614. (build-system perl-build-system)
  2615. (native-inputs
  2616. `(("perl-module-install" ,perl-module-install)))
  2617. (propagated-inputs
  2618. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2619. ("perl-mime-types" ,perl-mime-types)
  2620. ("perl-moose" ,perl-moose)
  2621. ("perl-moosex-types" ,perl-moosex-types)
  2622. ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
  2623. (home-page "https://metacpan.org/release/Catalyst-Plugin-Static-Simple")
  2624. (synopsis "Simple serving of static pages")
  2625. (description "The Static::Simple plugin is designed to make serving static
  2626. content in your application during development quick and easy, without
  2627. requiring a single line of code from you. This plugin detects static files by
  2628. looking at the file extension in the URL (such as .css or .png or .js). The
  2629. plugin uses the lightweight MIME::Types module to map file extensions to
  2630. IANA-registered MIME types, and will serve your static files with the correct
  2631. MIME type directly to the browser, without being processed through Catalyst.")
  2632. (license license:perl-license)))
  2633. (define-public perl-catalyst-runtime
  2634. (package
  2635. (name "perl-catalyst-runtime")
  2636. (version "5.90124")
  2637. (source
  2638. (origin
  2639. (method url-fetch)
  2640. (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
  2641. "Catalyst-Runtime-" version ".tar.gz"))
  2642. (sha256
  2643. (base32
  2644. "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a"))))
  2645. (build-system perl-build-system)
  2646. (native-inputs
  2647. `(("perl-test-fatal" ,perl-test-fatal)))
  2648. (propagated-inputs
  2649. `(("perl-cgi-simple" ,perl-cgi-simple)
  2650. ("perl-cgi-struct" ,perl-cgi-struct)
  2651. ("perl-class-c3-adopt-next" ,perl-class-c3-adopt-next)
  2652. ("perl-class-date" ,perl-class-date)
  2653. ("perl-class-load" ,perl-class-load)
  2654. ("perl-data-dump" ,perl-data-dump)
  2655. ("perl-http-body" ,perl-http-body)
  2656. ("perl-http-message" ,perl-http-message)
  2657. ("perl-json-maybexs" ,perl-json-maybexs)
  2658. ("perl-libwww" ,perl-libwww)
  2659. ("perl-module-pluggable" ,perl-module-pluggable)
  2660. ("perl-moose" ,perl-moose)
  2661. ("perl-moosex-emulate-class-accessor-fast"
  2662. ,perl-moosex-emulate-class-accessor-fast)
  2663. ("perl-moosex-getopt" ,perl-moosex-getopt)
  2664. ("perl-moosex-methodattributes" ,perl-moosex-methodattributes)
  2665. ("perl-namespace-clean" ,perl-namespace-clean)
  2666. ("perl-path-class" ,perl-path-class)
  2667. ("perl-perlio-utf8-strict" ,perl-perlio-utf8_strict)
  2668. ("perl-plack" ,perl-plack)
  2669. ("perl-plack-middleware-fixmissingbodyinredirect"
  2670. ,perl-plack-middleware-fixmissingbodyinredirect)
  2671. ("perl-plack-middleware-methodoverride"
  2672. ,perl-plack-middleware-methodoverride)
  2673. ("perl-plack-middleware-removeredundantbody"
  2674. ,perl-plack-middleware-removeredundantbody)
  2675. ("perl-plack-middleware-reverseproxy"
  2676. ,perl-plack-middleware-reverseproxy)
  2677. ("perl-plack-test-externalserver" ,perl-plack-test-externalserver)
  2678. ("perl-safe-isa" ,perl-safe-isa)
  2679. ("perl-string-rewriteprefix" ,perl-string-rewriteprefix)
  2680. ("perl-text-simpletable" ,perl-text-simpletable)
  2681. ("perl-tree-simple" ,perl-tree-simple)
  2682. ("perl-tree-simple-visitorfactory" ,perl-tree-simple-visitorfactory)
  2683. ("perl-try-tiny" ,perl-try-tiny)
  2684. ("perl-uri" ,perl-uri)
  2685. ("perl-uri-ws" ,perl-uri-ws)))
  2686. (home-page "https://metacpan.org/release/Catalyst-Runtime")
  2687. (synopsis "The Catalyst Framework Runtime")
  2688. (description "Catalyst is a modern framework for making web applications.
  2689. It is designed to make it easy to manage the various tasks you need to do to
  2690. run an application on the web, either by doing them itself, or by letting you
  2691. \"plug in\" existing Perl modules that do what you need.")
  2692. (license license:perl-license)))
  2693. (define-public perl-catalyst-traitfor-request-proxybase
  2694. (package
  2695. (name "perl-catalyst-traitfor-request-proxybase")
  2696. (version "0.000005")
  2697. (source
  2698. (origin
  2699. (method url-fetch)
  2700. (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
  2701. "Catalyst-TraitFor-Request-ProxyBase-"
  2702. version ".tar.gz"))
  2703. (sha256
  2704. (base32
  2705. "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7"))))
  2706. (build-system perl-build-system)
  2707. (native-inputs
  2708. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2709. ("perl-catalystx-roleapplicator" ,perl-catalystx-roleapplicator)
  2710. ("perl-http-message" ,perl-http-message)
  2711. ("perl-module-install" ,perl-module-install)))
  2712. (propagated-inputs
  2713. `(("perl-moose" ,perl-moose)
  2714. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2715. ("perl-uri" ,perl-uri)))
  2716. (home-page
  2717. "https://metacpan.org/release/Catalyst-TraitFor-Request-ProxyBase")
  2718. (synopsis "Replace request base with value passed by HTTP proxy")
  2719. (description "This module is a Moose::Role which allows you more
  2720. flexibility in your application's deployment configurations when deployed
  2721. behind a proxy. Using this module, the request base ($c->req->base) is
  2722. replaced with the contents of the X-Request-Base header.")
  2723. (license license:perl-license)))
  2724. (define-public perl-catalyst-view-download
  2725. (package
  2726. (name "perl-catalyst-view-download")
  2727. (version "0.09")
  2728. (source
  2729. (origin
  2730. (method url-fetch)
  2731. (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/"
  2732. "Catalyst-View-Download-" version ".tar.gz"))
  2733. (sha256
  2734. (base32
  2735. "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs"))))
  2736. (build-system perl-build-system)
  2737. (native-inputs
  2738. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2739. ("perl-module-install" ,perl-module-install)
  2740. ("perl-test-simple" ,perl-test-simple)
  2741. ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)
  2742. ("perl-text-csv" ,perl-text-csv)
  2743. ("perl-xml-simple" ,perl-xml-simple)))
  2744. (home-page "https://metacpan.org/release/Catalyst-View-Download")
  2745. (synopsis "Download data in many formats")
  2746. (description "The purpose of this module is to provide a method for
  2747. downloading data into many supportable formats. For example, downloading a
  2748. table based report in a variety of formats (CSV, HTML, etc.).")
  2749. (license license:perl-license)))
  2750. (define-public perl-catalyst-view-json
  2751. (package
  2752. (name "perl-catalyst-view-json")
  2753. (version "0.37")
  2754. (source
  2755. (origin
  2756. (method url-fetch)
  2757. (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
  2758. "Catalyst-View-JSON-" version ".tar.gz"))
  2759. (sha256
  2760. (base32
  2761. "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5"))))
  2762. (build-system perl-build-system)
  2763. (native-inputs
  2764. `(("perl-module-install" ,perl-module-install)
  2765. ("perl-yaml" ,perl-yaml)))
  2766. (inputs
  2767. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2768. ("perl-json-maybexs" ,perl-json-maybexs)
  2769. ("perl-mro-compat" ,perl-mro-compat)))
  2770. (home-page "https://metacpan.org/release/Catalyst-View-JSON")
  2771. (synopsis "Catalyst JSON view")
  2772. (description "Catalyst::View::JSON is a Catalyst View handler that returns
  2773. stash data in JSON format.")
  2774. (license license:perl-license)))
  2775. (define-public perl-catalyst-view-tt
  2776. (package
  2777. (name "perl-catalyst-view-tt")
  2778. (version "0.45")
  2779. (source
  2780. (origin
  2781. (method url-fetch)
  2782. (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
  2783. "Catalyst-View-TT-" version ".tar.gz"))
  2784. (sha256
  2785. (base32 "0jzgpkgq5pwq82zlb0nykdyk40dfpsyn9ilz91d0wpixgi9i5pr8"))))
  2786. (build-system perl-build-system)
  2787. (propagated-inputs
  2788. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2789. ("perl-class-accessor" ,perl-class-accessor)
  2790. ("perl-data-dump" ,perl-data-dump)
  2791. ("perl-mro-compat" ,perl-mro-compat)
  2792. ("perl-path-class" ,perl-path-class)
  2793. ("perl-template-timer" ,perl-template-timer)
  2794. ("perl-template-toolkit" ,perl-template-toolkit)))
  2795. (home-page "https://metacpan.org/release/Catalyst-View-TT")
  2796. (synopsis "Template View Class")
  2797. (description "This module is a Catalyst view class for the Template
  2798. Toolkit.")
  2799. (license license:perl-license)))
  2800. (define-public perl-catalystx-component-traits
  2801. (package
  2802. (name "perl-catalystx-component-traits")
  2803. (version "0.19")
  2804. (source
  2805. (origin
  2806. (method url-fetch)
  2807. (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
  2808. "CatalystX-Component-Traits-" version ".tar.gz"))
  2809. (sha256
  2810. (base32
  2811. "0iq4ci8m6g2c4g01fvdl568y7pjz28f3widk986v3pyhr7ll8j88"))))
  2812. (build-system perl-build-system)
  2813. (native-inputs
  2814. `(("perl-moose" ,perl-moose)
  2815. ("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2816. ("perl-moosex-methodattributes" ,perl-moosex-methodattributes)))
  2817. (propagated-inputs
  2818. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2819. ("perl-class-load" ,perl-class-load)
  2820. ("perl-moose" ,perl-moose)
  2821. ("perl-moosex-traits-pluggable" ,perl-moosex-traits-pluggable)
  2822. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2823. ("perl-list-moreutils" ,perl-list-moreutils)))
  2824. (home-page "https://metacpan.org/release/CatalystX-Component-Traits")
  2825. (synopsis "Trait Loading and Resolution for Catalyst Components")
  2826. (description "Adds a \"COMPONENT\" in Catalyst::Component method to your
  2827. Catalyst component base class that reads the optional \"traits\" parameter
  2828. from app and component config and instantiates the component subclass with
  2829. those traits using \"new_with_traits\" in MooseX::Traits from
  2830. MooseX::Traits::Pluggable.")
  2831. (license license:perl-license)))
  2832. (define-public perl-catalystx-roleapplicator
  2833. (package
  2834. (name "perl-catalystx-roleapplicator")
  2835. (version "0.005")
  2836. (source
  2837. (origin
  2838. (method url-fetch)
  2839. (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
  2840. "CatalystX-RoleApplicator-" version ".tar.gz"))
  2841. (sha256
  2842. (base32
  2843. "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2"))))
  2844. (build-system perl-build-system)
  2845. (propagated-inputs
  2846. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2847. ("perl-moose" ,perl-moose)
  2848. ("perl-moosex-relatedclassroles" ,perl-moosex-relatedclassroles)))
  2849. (home-page "https://metacpan.org/release/CatalystX-RoleApplicator")
  2850. (synopsis "Apply roles to Catalyst classes")
  2851. (description "CatalystX::RoleApplicator applies roles to Catalyst
  2852. application classes.")
  2853. (license license:perl-license)))
  2854. (define-public perl-catalystx-script-server-starman
  2855. (package
  2856. (name "perl-catalystx-script-server-starman")
  2857. (version "0.03")
  2858. (source
  2859. (origin
  2860. (method url-fetch)
  2861. (uri (string-append "mirror://cpan/authors/id/A/AB/ABRAXXA/"
  2862. "CatalystX-Script-Server-Starman-"
  2863. version ".tar.gz"))
  2864. (sha256
  2865. (base32
  2866. "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6"))))
  2867. (build-system perl-build-system)
  2868. (native-inputs
  2869. `(("perl-module-install" ,perl-module-install)
  2870. ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)))
  2871. (propagated-inputs
  2872. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  2873. ("perl-moose" ,perl-moose)
  2874. ("perl-namespace-autoclean" ,perl-namespace-autoclean)
  2875. ("starman" ,starman)))
  2876. (home-page "https://metacpan.org/release/CatalystX-Script-Server-Starman")
  2877. (synopsis "Catalyst development server with Starman")
  2878. (description "This module provides a Catalyst extension to replace the
  2879. development server with Starman.")
  2880. (license license:perl-license)))
  2881. (define-public perl-cgi
  2882. (package
  2883. (name "perl-cgi")
  2884. (version "4.52")
  2885. (source
  2886. (origin
  2887. (method url-fetch)
  2888. (uri (string-append "mirror://cpan/authors/id/L/LE/LEEJO/"
  2889. "CGI-" version ".tar.gz"))
  2890. (sha256
  2891. (base32 "1bxrpxv95js8yinicminxdg41xvd85haj2gvlywg3zqdb66smqy8"))))
  2892. (build-system perl-build-system)
  2893. (native-inputs
  2894. `(("perl-test-deep" ,perl-test-deep)
  2895. ("perl-test-nowarnings" ,perl-test-nowarnings)
  2896. ("perl-test-warn" ,perl-test-warn)))
  2897. (propagated-inputs
  2898. `(("perl-html-parser" ,perl-html-parser)))
  2899. (home-page "https://metacpan.org/release/CGI")
  2900. (synopsis "Handle Common Gateway Interface requests and responses")
  2901. (description "CGI.pm is a stable, complete and mature solution for
  2902. processing and preparing HTTP requests and responses. Major features include
  2903. processing form submissions, file uploads, reading and writing cookies, query
  2904. string generation and manipulation, and processing and preparing HTTP
  2905. headers.")
  2906. (license license:perl-license)))
  2907. (define-public perl-cgi-formbuilder
  2908. (package
  2909. (name "perl-cgi-formbuilder")
  2910. (version "3.10")
  2911. (source
  2912. (origin
  2913. (method url-fetch)
  2914. (uri (string-append
  2915. "https://cpan.metacpan.org/authors/id/B/BI/BIGPRESH/"
  2916. "CGI-FormBuilder-" version ".tar.gz"))
  2917. (sha256
  2918. (base32
  2919. "163ixq9kninqq094z2rnkg9pv3bcmvjphlww4vksfrzhq3h9pjdf"))))
  2920. (build-system perl-build-system)
  2921. (inputs `(("perl-cgi" ,perl-cgi)))
  2922. (home-page
  2923. "https://metacpan.org/release/CGI-FormBuilder")
  2924. (synopsis
  2925. "Generate and process stateful forms")
  2926. (description
  2927. "@code{CGI::FormBuilder} provides an easy way to generate and process CGI
  2928. form-based applications.")
  2929. (license license:perl-license)))
  2930. (define-public perl-cgi-session
  2931. (package
  2932. (name "perl-cgi-session")
  2933. (version "4.48")
  2934. (source
  2935. (origin
  2936. (method url-fetch)
  2937. (uri (string-append
  2938. "mirror://cpan/authors/id/M/MA/MARKSTOS/CGI-Session-"
  2939. version
  2940. ".tar.gz"))
  2941. (sha256
  2942. (base32
  2943. "1xsl2pz1jrh127pq0b01yffnj4mnp9nvkp88h5mndrscq9hn8xa6"))))
  2944. (build-system perl-build-system)
  2945. (native-inputs
  2946. `(("perl-module-build" ,perl-module-build)))
  2947. (inputs `(("perl-cgi" ,perl-cgi)))
  2948. (home-page
  2949. "https://metacpan.org/release/CGI-Session")
  2950. (synopsis
  2951. "Persistent session data in CGI applications")
  2952. (description
  2953. "@code{CGI::Session} provides modular session management system across
  2954. HTTP requests.")
  2955. (license license:perl-license)))
  2956. (define-public perl-cgi-simple
  2957. (package
  2958. (name "perl-cgi-simple")
  2959. (version "1.22")
  2960. (source
  2961. (origin
  2962. (method url-fetch)
  2963. (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
  2964. "CGI-Simple-" version ".tar.gz"))
  2965. (sha256
  2966. (base32 "13c7iwnnavky10ab87pi8jc1kqph03s0rhvj7myn7szhbfisc4gn"))))
  2967. (build-system perl-build-system)
  2968. (native-inputs
  2969. `(("perl-io-stringy" ,perl-io-stringy) ; for IO::Scalar
  2970. ("perl-module-build" ,perl-module-build)
  2971. ("perl-test-exception" ,perl-test-exception)
  2972. ("perl-test-nowarnings" ,perl-test-nowarnings)))
  2973. (home-page "https://metacpan.org/release/CGI-Simple")
  2974. (synopsis "CGI interface that is CGI.pm compliant")
  2975. (description "CGI::Simple provides a relatively lightweight drop in
  2976. replacement for CGI.pm. It shares an identical OO interface to CGI.pm for
  2977. parameter parsing, file upload, cookie handling and header generation.")
  2978. (license license:perl-license)))
  2979. (define-public perl-cgi-struct
  2980. (package
  2981. (name "perl-cgi-struct")
  2982. (version "1.21")
  2983. (source
  2984. (origin
  2985. (method url-fetch)
  2986. (uri (string-append "mirror://cpan/authors/id/F/FU/FULLERMD/"
  2987. "CGI-Struct-" version ".tar.gz"))
  2988. (sha256
  2989. (base32
  2990. "0v4xq2qpryr7i6jngw1wpn8yr2kiib10yxp4aih90vfdznkqsgfi"))))
  2991. (build-system perl-build-system)
  2992. (native-inputs
  2993. `(("perl-test-deep" ,perl-test-deep)))
  2994. (home-page "https://metacpan.org/release/CGI-Struct")
  2995. (synopsis "Build structures from CGI data")
  2996. (description "This is a module for building structured data from CGI
  2997. inputs, in a manner reminiscent of how PHP does.")
  2998. (license license:bsd-2)))
  2999. (define-public perl-datetime-format-http
  3000. (package
  3001. (name "perl-datetime-format-http")
  3002. (version "0.42")
  3003. (source
  3004. (origin
  3005. (method url-fetch)
  3006. (uri (string-append "mirror://cpan/authors/id/C/CK/CKRAS/"
  3007. "DateTime-Format-HTTP-" version ".tar.gz"))
  3008. (sha256
  3009. (base32
  3010. "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh"))))
  3011. (build-system perl-build-system)
  3012. (native-inputs
  3013. `(("perl-module-build" ,perl-module-build)))
  3014. (propagated-inputs
  3015. `(("perl-datetime" ,perl-datetime)
  3016. ("perl-http-date" ,perl-http-date)))
  3017. (home-page "https://metacpan.org/release/DateTime-Format-HTTP")
  3018. (synopsis "Date conversion routines")
  3019. (description "This module provides functions that deal with the date
  3020. formats used by the HTTP protocol.")
  3021. (license license:perl-license)))
  3022. (define-public perl-digest-md5-file
  3023. (package
  3024. (name "perl-digest-md5-file")
  3025. (version "0.08")
  3026. (source
  3027. (origin
  3028. (method url-fetch)
  3029. (uri (string-append "mirror://cpan/authors/id/D/DM/DMUEY/"
  3030. "Digest-MD5-File-" version ".tar.gz"))
  3031. (sha256
  3032. (base32
  3033. "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d"))))
  3034. (build-system perl-build-system)
  3035. (propagated-inputs
  3036. `(("perl-libwww" ,perl-libwww)))
  3037. (home-page "https://metacpan.org/release/Digest-MD5-File")
  3038. (synopsis "MD5 sums for files and urls")
  3039. (description "Digest::MD5::File is a Perl extension for getting MD5 sums
  3040. for files and urls.")
  3041. (license license:perl-license)))
  3042. (define-public perl-encode-locale
  3043. (package
  3044. (name "perl-encode-locale")
  3045. (version "1.05")
  3046. (source (origin
  3047. (method url-fetch)
  3048. (uri (string-append
  3049. "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
  3050. version ".tar.gz"))
  3051. (sha256
  3052. (base32
  3053. "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp"))))
  3054. (build-system perl-build-system)
  3055. (license license:perl-license)
  3056. (synopsis "Perl locale encoding determination")
  3057. (description
  3058. "The POSIX locale system is used to specify both the language
  3059. conventions requested by the user and the preferred character set to
  3060. consume and output. The Encode::Locale module looks up the charset and
  3061. encoding (called a CODESET in the locale jargon) and arranges for the
  3062. Encode module to know this encoding under the name \"locale\". It means
  3063. bytes obtained from the environment can be converted to Unicode strings
  3064. by calling Encode::encode(locale => $bytes) and converted back again
  3065. with Encode::decode(locale => $string).")
  3066. (home-page "https://metacpan.org/release/Encode-Locale")))
  3067. (define-public perl-feed-find
  3068. (package
  3069. (name "perl-feed-find")
  3070. (version "0.07")
  3071. (source (origin
  3072. (method url-fetch)
  3073. (uri (string-append "mirror://cpan/authors/id/B/BT/BTROTT/"
  3074. "Feed-Find-" version ".tar.gz"))
  3075. (sha256
  3076. (base32
  3077. "0sa33cm8ww55cymnl8j7b5yspi2y5xkkkgqqa4h6fs3wdqylz600"))))
  3078. (build-system perl-build-system)
  3079. (arguments
  3080. ;; Tests expect to query files at http://stupidfool.org/perl/feeds/
  3081. `(#:tests? #f
  3082. #:phases
  3083. (modify-phases %standard-phases
  3084. (add-after 'unpack 'set-env
  3085. (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
  3086. (inputs
  3087. `(("perl-class-errorhandler" ,perl-class-errorhandler)
  3088. ("perl-html-parser" ,perl-html-parser)
  3089. ("perl-libwww" ,perl-libwww)
  3090. ("perl-uri" ,perl-uri)))
  3091. (home-page "https://metacpan.org/release/Feed-Find")
  3092. (synopsis "Syndication feed auto-discovery")
  3093. (description "@code{Feed::Find} implements feed auto-discovery for finding
  3094. syndication feeds, given a URI. It will discover the following feed formats:
  3095. RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
  3096. (license license:perl-license)))
  3097. (define-public perl-file-listing
  3098. (package
  3099. (name "perl-file-listing")
  3100. (version "6.11")
  3101. (source (origin
  3102. (method url-fetch)
  3103. (uri (string-append
  3104. "mirror://cpan/authors/id/P/PL/PLICEASE/File-Listing-"
  3105. version ".tar.gz"))
  3106. (sha256
  3107. (base32
  3108. "0vmzw1mhv580flzkla80gvwfpficnhlbqr1dnlf9x50bw7n18k62"))))
  3109. (build-system perl-build-system)
  3110. (propagated-inputs
  3111. `(("perl-http-date" ,perl-http-date)))
  3112. (license license:perl-license)
  3113. (synopsis "Perl directory listing parser")
  3114. (description
  3115. "The File::Listing module exports a single function called parse_dir(),
  3116. which can be used to parse directory listings.")
  3117. (home-page "https://metacpan.org/release/File-Listing")))
  3118. (define-public perl-finance-quote
  3119. (package
  3120. (name "perl-finance-quote")
  3121. (version "1.47")
  3122. (source
  3123. (origin
  3124. (method url-fetch)
  3125. (uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/"
  3126. "Finance-Quote-" version ".tar.gz"))
  3127. (sha256
  3128. (base32 "0gzbq85738f299jaw4nj3ljnka380j2y6yspmyl71rgfypqjvbr7"))
  3129. (patches (search-patches
  3130. "perl-finance-quote-unuse-mozilla-ca.patch"))))
  3131. (build-system perl-build-system)
  3132. (propagated-inputs
  3133. `(("perl-cgi" ,perl-cgi)
  3134. ("perl-datetime" ,perl-datetime)
  3135. ("perl-html-parser" ,perl-html-parser)
  3136. ("perl-html-tableextract" ,perl-html-tableextract)
  3137. ("perl-html-tree" ,perl-html-tree)
  3138. ("perl-http-cookies" ,perl-http-cookies)
  3139. ("perl-http-message" ,perl-http-message)
  3140. ("perl-json" ,perl-json)
  3141. ("perl-libwww" ,perl-libwww)
  3142. ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
  3143. ("perl-uri" ,perl-uri)))
  3144. (home-page "https://metacpan.org/release/Finance-Quote")
  3145. (synopsis "Stock and mutual fund quotes")
  3146. (description
  3147. "Finance::Quote gets stock quotes from various internet sources, including
  3148. Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.")
  3149. (license license:gpl2)))
  3150. (define-public perl-gssapi
  3151. (package
  3152. (name "perl-gssapi")
  3153. (version "0.28")
  3154. (source
  3155. (origin
  3156. (method url-fetch)
  3157. (uri (string-append "mirror://cpan/authors/id/A/AG/AGROLMS/"
  3158. "GSSAPI-" version ".tar.gz"))
  3159. (sha256
  3160. (base32
  3161. "1mkhwxjjlhr58pd770i9gnf7zy7jj092iv6jfbnb8bvnc5xjr3vx"))))
  3162. (build-system perl-build-system)
  3163. (inputs `(("gssapi" ,mit-krb5)))
  3164. (arguments
  3165. `(#:make-maker-flags
  3166. `(,(string-append "--gssapiimpl=" (assoc-ref %build-inputs "gssapi")))))
  3167. (home-page "https://metacpan.org/release/GSSAPI")
  3168. (synopsis "Perl extension providing access to the GSSAPIv2 library")
  3169. (description "This is a Perl extension for using GSSAPI C bindings as
  3170. described in RFC 2744.")
  3171. (license license:perl-license)))
  3172. (define-public perl-html-element-extended
  3173. (package
  3174. (name "perl-html-element-extended")
  3175. (version "1.18")
  3176. (source
  3177. (origin
  3178. (method url-fetch)
  3179. (uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/"
  3180. "HTML-Element-Extended-" version ".tar.gz"))
  3181. (sha256
  3182. (base32
  3183. "0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk"))))
  3184. (build-system perl-build-system)
  3185. (propagated-inputs
  3186. `(("perl-html-tree" ,perl-html-tree)))
  3187. (home-page "https://metacpan.org/release/HTML-Element-Extended")
  3188. (synopsis "Manipulate tables of HTML::Element")
  3189. (description
  3190. "HTML::Element::Extended is a Perl extension for manipulating a table
  3191. composed of HTML::Element style components.")
  3192. (license license:perl-license)))
  3193. (define-public perl-html-form
  3194. (package
  3195. (name "perl-html-form")
  3196. (version "6.05")
  3197. (source
  3198. (origin
  3199. (method url-fetch)
  3200. (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
  3201. "HTML-Form-" version ".tar.gz"))
  3202. (sha256
  3203. (base32 "14i4ldyvdvhdhvfhh9kiq6z853q2f84biq8vcpv1k5w2r80wdiin"))))
  3204. (build-system perl-build-system)
  3205. (propagated-inputs
  3206. `(("perl-html-parser" ,perl-html-parser)
  3207. ("perl-html-tagset" ,perl-html-tagset)
  3208. ("perl-http-message" ,perl-http-message)
  3209. ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
  3210. ("perl-uri" ,perl-uri)))
  3211. (home-page "https://metacpan.org/release/HTML-Form")
  3212. (synopsis "Perl class representing an HTML form element")
  3213. (description "Objects of the HTML::Form class represents a single HTML
  3214. <form> ... </form> instance.")
  3215. (license license:perl-license)))
  3216. (define-public perl-html-scrubber
  3217. (package
  3218. (name "perl-html-scrubber")
  3219. (version "0.17")
  3220. (source
  3221. (origin
  3222. (method url-fetch)
  3223. (uri (string-append
  3224. "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Scrubber-"
  3225. version
  3226. ".tar.gz"))
  3227. (sha256
  3228. (base32
  3229. "06p7w4zd42b2yh541mlzyqj40lwmvvn3fyqi8big4mf34la7m2jm"))))
  3230. (build-system perl-build-system)
  3231. (native-inputs
  3232. `(("perl-module-build" ,perl-module-build)
  3233. ("perl-test-cpan-meta" ,perl-test-cpan-meta)
  3234. ("perl-test-differences" ,perl-test-differences)
  3235. ("perl-test-eol" ,perl-test-eol)
  3236. ("perl-test-memory-cycle" ,perl-test-memory-cycle)
  3237. ("perl-test-notabs" ,perl-test-notabs)))
  3238. (inputs
  3239. `(("perl-html-parser" ,perl-html-parser)))
  3240. (home-page
  3241. "https://metacpan.org/release/HTML-Scrubber")
  3242. (synopsis
  3243. "Perl extension for scrubbing/sanitizing html")
  3244. (description
  3245. "@code{HTML::Scrubber} Perl extension for scrubbing/sanitizing HTML.")
  3246. (license license:perl-license)))
  3247. (define-public perl-html-lint
  3248. (package
  3249. (name "perl-html-lint")
  3250. (version "2.32")
  3251. (source
  3252. (origin
  3253. (method url-fetch)
  3254. (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
  3255. "HTML-Lint-" version ".tar.gz"))
  3256. (sha256
  3257. (base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
  3258. (build-system perl-build-system)
  3259. (propagated-inputs
  3260. `(("perl-html-parser" ,perl-html-parser)
  3261. ("perl-html-tagset" ,perl-html-tagset)
  3262. ("perl-libwww" ,perl-libwww)))
  3263. (home-page "https://metacpan.org/release/HTML-Lint")
  3264. (synopsis "Check for HTML errors in a string or file")
  3265. (description "HTML::Lint is a pure-Perl HTML parser and checker for
  3266. syntactic legitmacy.")
  3267. (license license:artistic2.0)))
  3268. (define-public perl-html-tableextract
  3269. (package
  3270. (name "perl-html-tableextract")
  3271. (version "2.13")
  3272. (source
  3273. (origin
  3274. (method url-fetch)
  3275. (uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/"
  3276. "HTML-TableExtract-" version ".tar.gz"))
  3277. (sha256
  3278. (base32
  3279. "01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a"))))
  3280. (build-system perl-build-system)
  3281. (propagated-inputs
  3282. `(("perl-html-element-extended" ,perl-html-element-extended)
  3283. ("perl-html-parser" ,perl-html-parser)))
  3284. (home-page "https://metacpan.org/release/HTML-TableExtract")
  3285. (synopsis "Extract contents from HTML tables")
  3286. (description
  3287. "HTML::TableExtract is a Perl module for extracting the content contained
  3288. in tables within an HTML document, either as text or encoded element trees.")
  3289. (license license:perl-license)))
  3290. (define-public perl-html-tree
  3291. (package
  3292. (name "perl-html-tree")
  3293. (version "5.07")
  3294. (source
  3295. (origin
  3296. (method url-fetch)
  3297. (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/"
  3298. "HTML-Tree-" version ".tar.gz"))
  3299. (sha256
  3300. (base32
  3301. "1gyvm4qlwm9y6hczkpnrdfl303ggbybr0nqxdjw09hii8yw4sdzh"))))
  3302. (build-system perl-build-system)
  3303. (native-inputs
  3304. `(("perl-module-build" ,perl-module-build)
  3305. ("perl-test-fatal" ,perl-test-fatal)))
  3306. (propagated-inputs
  3307. `(("perl-html-parser" ,perl-html-parser)
  3308. ("perl-html-tagset" ,perl-html-tagset)
  3309. ("perl-libwww" ,perl-libwww)))
  3310. (home-page "https://metacpan.org/release/HTML-Tree")
  3311. (synopsis "Work with HTML in a DOM-like tree structure")
  3312. (description "This distribution contains a suite of modules for
  3313. representing, creating, and extracting information from HTML syntax trees.")
  3314. (license license:perl-license)))
  3315. (define-public perl-html-parser
  3316. (package
  3317. (name "perl-html-parser")
  3318. (version "3.72")
  3319. (source (origin
  3320. (method url-fetch)
  3321. (uri (string-append
  3322. "mirror://cpan/authors/id/G/GA/GAAS/HTML-Parser-"
  3323. version ".tar.gz"))
  3324. (sha256
  3325. (base32
  3326. "12v05ywlnsi9lc17z32k9jxx3sj1viy7y1wpl7n4az76v7hwfa7c"))))
  3327. (build-system perl-build-system)
  3328. (inputs
  3329. `(("perl-html-tagset" ,perl-html-tagset)
  3330. ("perl-http-message" ,perl-http-message)))
  3331. (license license:perl-license)
  3332. (synopsis "Perl HTML parser class")
  3333. (description
  3334. "Objects of the HTML::Parser class will recognize markup and separate
  3335. it from plain text (alias data content) in HTML documents. As different
  3336. kinds of markup and text are recognized, the corresponding event handlers
  3337. are invoked.")
  3338. (home-page "https://metacpan.org/release/HTML-Parser")))
  3339. (define-public perl-html-tagset
  3340. (package
  3341. (name "perl-html-tagset")
  3342. (version "3.20")
  3343. (source (origin
  3344. (method url-fetch)
  3345. (uri (string-append
  3346. "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
  3347. version ".tar.gz"))
  3348. (sha256
  3349. (base32
  3350. "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
  3351. (build-system perl-build-system)
  3352. (license license:perl-license)
  3353. (synopsis "Perl data tables useful in parsing HTML")
  3354. (description
  3355. "The HTML::Tagset module contains several data tables useful in various
  3356. kinds of HTML parsing operations.")
  3357. (home-page "https://metacpan.org/release/HTML-Tagset")))
  3358. (define-public perl-html-template
  3359. (package
  3360. (name "perl-html-template")
  3361. (version "2.97")
  3362. (source (origin
  3363. (method url-fetch)
  3364. (uri (string-append "mirror://cpan/authors/id/S/SA/SAMTREGAR/"
  3365. "HTML-Template-" version ".tar.gz"))
  3366. (sha256
  3367. (base32
  3368. "17qjw8swj2q4b1ic285pndgrkmvpsqw0j68nhqzpk1daydhsyiv5"))))
  3369. (build-system perl-build-system)
  3370. (propagated-inputs
  3371. `(("perl-cgi" ,perl-cgi)))
  3372. (home-page "https://metacpan.org/release/HTML-Template")
  3373. (synopsis "HTML-like templates")
  3374. (description
  3375. "This module attempts to make using HTML templates simple and natural.
  3376. It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},
  3377. @code{<TMPL_LOOP>}, @code{<TMPL_INCLUDE>}, @code{<TMPL_IF>},
  3378. @code{<TMPL_ELSE>} and @code{<TMPL_UNLESS>}. The file written with HTML and
  3379. these new tags is called a template. Using this module you fill in the values
  3380. for the variables, loops and branches declared in the template. This allows
  3381. you to separate design from the data.")
  3382. (license license:perl-license)))
  3383. (define-public perl-http-body
  3384. (package
  3385. (name "perl-http-body")
  3386. (version "1.22")
  3387. (source
  3388. (origin
  3389. (method url-fetch)
  3390. (uri (string-append "mirror://cpan/authors/id/G/GE/GETTY/"
  3391. "HTTP-Body-" version ".tar.gz"))
  3392. (sha256
  3393. (base32
  3394. "15vj488i62mdp4ps9k77h39prj70i7anb6b0j8nm7l9vbdc2q3gw"))))
  3395. (build-system perl-build-system)
  3396. (native-inputs
  3397. `(("perl-test-deep" ,perl-test-deep)))
  3398. (propagated-inputs
  3399. `(("perl-file-temp" ,perl-file-temp)
  3400. ("perl-http-message" ,perl-http-message))) ;For HTTP::Headers
  3401. (home-page "https://metacpan.org/release/HTTP-Body")
  3402. (synopsis "HTTP Body Parser")
  3403. (description "HTTP::Body parses chunks of HTTP POST data and supports
  3404. application/octet-stream, application/json, application/x-www-form-urlencoded,
  3405. and multipart/form-data.")
  3406. (license license:perl-license)))
  3407. (define-public perl-http-cookiejar
  3408. (package
  3409. (name "perl-http-cookiejar")
  3410. (version "0.012")
  3411. (source
  3412. (origin
  3413. (method url-fetch)
  3414. (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
  3415. "HTTP-CookieJar-" version ".tar.gz"))
  3416. (sha256
  3417. (base32 "0jk0ps4i67dhhhwaxwwa9nkv3n6n5w44xlnwyzvk59735pwvyjh0"))))
  3418. (build-system perl-build-system)
  3419. (native-inputs
  3420. `(("perl-test-deep" ,perl-test-deep)
  3421. ("perl-test-requires" ,perl-test-requires)
  3422. ("perl-time-mock" ,perl-time-mock)
  3423. ("perl-uri" ,perl-uri)))
  3424. (inputs
  3425. `(("perl-time-local" ,perl-time-local)
  3426. ("perl-http-date" ,perl-http-date)))
  3427. (home-page "https://metacpan.org/release/HTTP-CookieJar")
  3428. (synopsis "Minimalist HTTP user agent cookie jar")
  3429. (description "This module implements a minimalist HTTP user agent cookie
  3430. jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
  3431. (license license:asl2.0)))
  3432. (define-public perl-http-cookies
  3433. (package
  3434. (name "perl-http-cookies")
  3435. (version "6.06")
  3436. (source (origin
  3437. (method url-fetch)
  3438. (uri (string-append
  3439. "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-"
  3440. version ".tar.gz"))
  3441. (sha256
  3442. (base32
  3443. "13rnz3233vbsfariya4njiyfaj6k94j6bvlyh3dmfmh24hpqgx77"))))
  3444. (build-system perl-build-system)
  3445. (propagated-inputs
  3446. `(("perl-http-message" ,perl-http-message)))
  3447. (license license:perl-license)
  3448. (synopsis "Perl HTTP cookie jars")
  3449. (description
  3450. "The HTTP::Cookies class is for objects that represent a cookie jar,
  3451. that is, a database of all the HTTP cookies that a given LWP::UserAgent
  3452. object knows about.")
  3453. (home-page "https://metacpan.org/release/GAAS/HTTP-Cookies-6.01")))
  3454. (define-public perl-http-daemon
  3455. (package
  3456. (name "perl-http-daemon")
  3457. (version "6.01")
  3458. (source (origin
  3459. (method url-fetch)
  3460. (uri (string-append
  3461. "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Daemon-"
  3462. version ".tar.gz"))
  3463. (sha256
  3464. (base32
  3465. "1hmd2isrkilf0q0nkxms1q64kikjmcw9imbvrjgky6kh89vqdza3"))))
  3466. (build-system perl-build-system)
  3467. (propagated-inputs
  3468. `(("perl-http-message" ,perl-http-message)
  3469. ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
  3470. (license license:perl-license)
  3471. (synopsis "Perl simple http server class")
  3472. (description
  3473. "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
  3474. on a socket for incoming requests. The HTTP::Daemon is a subclass of
  3475. IO::Socket::INET, so you can perform socket operations directly on it too.")
  3476. (home-page "https://metacpan.org/release/HTTP-Daemon")))
  3477. (define-public perl-http-date
  3478. (package
  3479. (name "perl-http-date")
  3480. (version "6.05")
  3481. (source (origin
  3482. (method url-fetch)
  3483. (uri (string-append
  3484. "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Date-"
  3485. version ".tar.gz"))
  3486. (sha256
  3487. (base32
  3488. "0awjdbz7x0jd5pna55dwxhs3k6xp3sw6b2zg3p2yndxxvya64p9n"))))
  3489. (build-system perl-build-system)
  3490. (license license:perl-license)
  3491. (synopsis "Perl date conversion routines")
  3492. (description
  3493. "The HTTP::Date module provides functions that deal with date formats
  3494. used by the HTTP protocol (and then some more).")
  3495. (home-page "https://metacpan.org/release/HTTP-Date")))
  3496. (define-public perl-http-lite
  3497. (package
  3498. (name "perl-http-lite")
  3499. (version "2.44")
  3500. (source
  3501. (origin
  3502. (method url-fetch)
  3503. (uri (string-append
  3504. "mirror://cpan/authors/id/N/NE/NEILB/HTTP-Lite-"
  3505. version ".tar.gz"))
  3506. (sha256
  3507. (base32
  3508. "0z77nflj8zdcfg70kc93glq5kmd6qxn2nf7h70x4xhfg25wkvr1q"))))
  3509. (build-system perl-build-system)
  3510. (native-inputs `(("perl-cgi" ,perl-cgi)))
  3511. (home-page "https://metacpan.org/release/HTTP-Lite")
  3512. (synopsis "Lightweight HTTP implementation")
  3513. (description "@code{HTTP::Lite} is a stand-alone lightweight
  3514. HTTP/1.1 implementation for perl. It is intended for use in
  3515. situations where it is desirable to install the minimal number of
  3516. modules to achieve HTTP support. @code{HTTP::Lite} is ideal for
  3517. CGI (or mod_perl) programs or for bundling for redistribution with
  3518. larger packages where only HTTP GET and POST functionality are
  3519. necessary. @code{HTTP::Lite} is compliant with the Host header,
  3520. necessary for name based virtual hosting, and supports proxies.
  3521. Additionally, @code{HTTP::Lite} supports a callback to allow
  3522. processing of request data as it arrives.")
  3523. (license license:perl-license)))
  3524. (define-public perl-http-message
  3525. (package
  3526. (name "perl-http-message")
  3527. (version "6.18")
  3528. (source (origin
  3529. (method url-fetch)
  3530. (uri (string-append
  3531. "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-"
  3532. version ".tar.gz"))
  3533. (sha256
  3534. (base32
  3535. "04lih0fn89jpyk74c4aq1rzq18h8v4zd3x0lik2r9dl8sdqd2q6h"))))
  3536. (build-system perl-build-system)
  3537. (native-inputs
  3538. `(("perl-try-tiny" ,perl-try-tiny)))
  3539. (propagated-inputs
  3540. `(("perl-encode-locale" ,perl-encode-locale)
  3541. ("perl-http-date" ,perl-http-date)
  3542. ("perl-io-html" ,perl-io-html)
  3543. ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
  3544. ("perl-uri" ,perl-uri)))
  3545. (license license:perl-license)
  3546. (synopsis "Perl HTTP style message")
  3547. (description
  3548. "An HTTP::Message object contains some headers and a content body.")
  3549. (home-page "https://metacpan.org/release/ETHER/HTTP-Message-6.11")))
  3550. (define-public perl-http-negotiate
  3551. (package
  3552. (name "perl-http-negotiate")
  3553. (version "6.01")
  3554. (source (origin
  3555. (method url-fetch)
  3556. (uri (string-append
  3557. "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
  3558. version ".tar.gz"))
  3559. (sha256
  3560. (base32
  3561. "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
  3562. (build-system perl-build-system)
  3563. (propagated-inputs
  3564. `(("perl-http-message" ,perl-http-message)))
  3565. (license license:perl-license)
  3566. (synopsis "Perl http content negotiation")
  3567. (description
  3568. "The HTTP::Negotiate module provides a complete implementation of the
  3569. HTTP content negotiation algorithm specified in
  3570. draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for
  3571. the selection of a preferred content representation based upon attributes
  3572. of the negotiable variants and the value of the various Accept* header
  3573. fields in the request.")
  3574. (home-page "https://metacpan.org/release/HTTP-Negotiate")))
  3575. (define-public perl-http-parser
  3576. (package
  3577. (name "perl-http-parser")
  3578. (version "0.06")
  3579. (source
  3580. (origin
  3581. (method url-fetch)
  3582. (uri (string-append "mirror://cpan/authors/id/E/ED/EDECA/"
  3583. "HTTP-Parser-" version ".tar.gz"))
  3584. (sha256
  3585. (base32
  3586. "0idwq3jk595xil65lmxz128ha7s3r2n5zknisddpgwnqrghs3igq"))))
  3587. (build-system perl-build-system)
  3588. (propagated-inputs
  3589. `(("perl-http-message" ,perl-http-message)
  3590. ("perl-uri" ,perl-uri)))
  3591. (home-page "https://metacpan.org/release/HTTP-Parser")
  3592. (synopsis "Parse HTTP/1.1 requests")
  3593. (description "This is an HTTP request parser. It takes chunks of text as
  3594. received and returns a @code{hint} as to what is required, or returns the
  3595. HTTP::Request when a complete request has been read. HTTP/1.1 chunking is
  3596. supported.")
  3597. (license license:perl-license)))
  3598. (define-public perl-http-parser-xs
  3599. (package
  3600. (name "perl-http-parser-xs")
  3601. (version "0.17")
  3602. (source
  3603. (origin
  3604. (method url-fetch)
  3605. (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/"
  3606. "HTTP-Parser-XS-" version ".tar.gz"))
  3607. (sha256
  3608. (base32
  3609. "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr"))))
  3610. (build-system perl-build-system)
  3611. (native-inputs
  3612. `(("perl-module-install" ,perl-module-install)))
  3613. (home-page "https://metacpan.org/release/HTTP-Parser-XS")
  3614. (synopsis "Fast HTTP request parser")
  3615. (description "HTTP::Parser::XS is a fast, primitive HTTP request/response
  3616. parser.")
  3617. (license license:perl-license)))
  3618. (define-public perl-http-request-ascgi
  3619. (package
  3620. (name "perl-http-request-ascgi")
  3621. (version "1.2")
  3622. (source
  3623. (origin
  3624. (method url-fetch)
  3625. (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
  3626. "HTTP-Request-AsCGI-" version ".tar.gz"))
  3627. (sha256
  3628. (base32
  3629. "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl"))))
  3630. (build-system perl-build-system)
  3631. (propagated-inputs
  3632. `(("perl-class-accessor" ,perl-class-accessor)
  3633. ("perl-http-message" ,perl-http-message)))
  3634. (home-page "https://metacpan.org/release/HTTP-Request-AsCGI")
  3635. (synopsis "Set up a CGI environment from an HTTP::Request")
  3636. (description "This module provides a convenient way to set up a CGI
  3637. environment from an HTTP::Request.")
  3638. (license license:perl-license)))
  3639. (define-public perl-http-server-simple
  3640. (package
  3641. (name "perl-http-server-simple")
  3642. (version "0.52")
  3643. (source
  3644. (origin
  3645. (method url-fetch)
  3646. (uri (string-append "mirror://cpan/authors/id/B/BP/BPS/"
  3647. "HTTP-Server-Simple-" version ".tar.gz"))
  3648. (sha256
  3649. (base32
  3650. "0k6bg7k6mjixfzxdkkdrhqvaqmdhjszx0zsk8g0bimiby6j9z4yq"))))
  3651. (build-system perl-build-system)
  3652. (propagated-inputs
  3653. `(("perl-cgi" ,perl-cgi)))
  3654. (arguments
  3655. ;; See the discussion of a related tests issue at
  3656. ;; https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00346.html
  3657. `(#:tests? #f
  3658. #:phases (modify-phases %standard-phases
  3659. (add-before 'configure 'set-search-path
  3660. (lambda _
  3661. ;; Work around "dotless @INC" build failure.
  3662. (setenv "PERL5LIB"
  3663. (string-append (getcwd) ":"
  3664. (getenv "PERL5LIB")))
  3665. #t)))))
  3666. (home-page "https://metacpan.org/release/HTTP-Server-Simple")
  3667. (synopsis "Lightweight HTTP server")
  3668. (description "HTTP::Server::Simple is a simple standalone HTTP daemon with
  3669. no non-core module dependencies. It can be used for building a standalone
  3670. http-based UI to your existing tools.")
  3671. (license license:perl-license)))
  3672. (define-public perl-http-tiny
  3673. (package
  3674. (name "perl-http-tiny")
  3675. (version "0.076")
  3676. (source
  3677. (origin
  3678. (method url-fetch)
  3679. (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
  3680. "HTTP-Tiny-" version ".tar.gz"))
  3681. (sha256
  3682. (base32
  3683. "11wkxxqj3ff84rgj9q2gzkdgscwp3fzj205846k9ycqinlpsmgfx"))))
  3684. (build-system perl-build-system)
  3685. (inputs
  3686. `(("perl-http-cookiejar" ,perl-http-cookiejar)
  3687. ("perl-io-socket-ip" ,perl-io-socket-ip)
  3688. ("perl-io-socket-ssl" ,perl-io-socket-ssl)
  3689. ("perl-mozilla-ca" ,perl-mozilla-ca)
  3690. ("perl-net-ssleay" ,perl-net-ssleay)))
  3691. (home-page "https://metacpan.org/release/HTTP-Tiny")
  3692. (synopsis "HTTP/1.1 client")
  3693. (description "This is a very simple HTTP/1.1 client, designed for doing
  3694. simple requests without the overhead of a large framework like LWP::UserAgent.
  3695. It supports proxies and redirection. It also correctly resumes after EINTR.")
  3696. (license license:perl-license)))
  3697. (define-public perl-http-tinyish
  3698. (package
  3699. (name "perl-http-tinyish")
  3700. (version "0.15")
  3701. (source
  3702. (origin
  3703. (method url-fetch)
  3704. (uri (string-append
  3705. "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
  3706. version
  3707. ".tar.gz"))
  3708. (sha256
  3709. (base32
  3710. "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
  3711. (build-system perl-build-system)
  3712. (propagated-inputs
  3713. `(("perl-file-which" ,perl-file-which)
  3714. ("perl-ipc-run3" ,perl-ipc-run3)))
  3715. (home-page "https://metacpan.org/release/HTTP-Tinyish")
  3716. (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
  3717. (description
  3718. "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
  3719. @code{HTTP::Tiny}, curl and wget.
  3720. It provides an API compatible to HTTP::Tiny.")
  3721. (license license:perl-license)))
  3722. (define-public perl-io-html
  3723. (package
  3724. (name "perl-io-html")
  3725. (version "1.00")
  3726. (source (origin
  3727. (method url-fetch)
  3728. (uri (string-append
  3729. "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
  3730. version ".tar.gz"))
  3731. (sha256
  3732. (base32
  3733. "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
  3734. (build-system perl-build-system)
  3735. (license license:perl-license)
  3736. (synopsis "Perl module to open an HTML file with automatic charset detection")
  3737. (description
  3738. "IO::HTML provides an easy way to open a file containing HTML while
  3739. automatically determining its encoding. It uses the HTML5 encoding sniffing
  3740. algorithm specified in section 8.2.2.1 of the draft standard.")
  3741. (home-page "https://metacpan.org/release/IO-HTML")))
  3742. (define-public perl-io-socket-ip
  3743. (package
  3744. (name "perl-io-socket-ip")
  3745. (version "0.41")
  3746. (source
  3747. (origin
  3748. (method url-fetch)
  3749. (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
  3750. "IO-Socket-IP-" version ".tar.gz"))
  3751. (sha256
  3752. (base32 "0ihlpxrkq1xrvhnq52nhghanskic718ch8kpp642afgq72i4b6l4"))))
  3753. (build-system perl-build-system)
  3754. (native-inputs `(("perl-module-build" ,perl-module-build)))
  3755. (home-page "https://metacpan.org/release/IO-Socket-IP")
  3756. (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
  3757. (description "This module provides a protocol-independent way to use IPv4
  3758. and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
  3759. (license license:perl-license)))
  3760. (define-public perl-io-socket-ssl
  3761. (package
  3762. (name "perl-io-socket-ssl")
  3763. (version "2.068")
  3764. (source (origin
  3765. (method url-fetch)
  3766. (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
  3767. "IO-Socket-SSL-" version ".tar.gz"))
  3768. (sha256
  3769. (base32
  3770. "1ycgzg1l7p07y5wc0vzgnj122vm51p5aqpi4s56pp0piaq0gq824"))))
  3771. (build-system perl-build-system)
  3772. (propagated-inputs
  3773. `(("perl-net-ssleay" ,perl-net-ssleay)
  3774. ;; for IDN support
  3775. ("perl-uri" ,perl-uri)))
  3776. (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
  3777. (description
  3778. "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
  3779. necessary functionality into the familiar IO::Socket interface and providing
  3780. secure defaults whenever possible. This way existing applications can be made
  3781. SSL-aware without much effort, at least if you do blocking I/O and don't use
  3782. select or poll.")
  3783. (license license:perl-license)
  3784. (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
  3785. (define-public perl-libwww
  3786. (package
  3787. (name "perl-libwww")
  3788. (version "6.55")
  3789. (source (origin
  3790. (method url-fetch)
  3791. (uri (string-append
  3792. "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
  3793. version ".tar.gz"))
  3794. (sha256
  3795. (base32
  3796. "0869hn711d6fd6yil8p88wij6p1zdrbnycy7p9p176q39ajd7l61"))))
  3797. (build-system perl-build-system)
  3798. (native-inputs
  3799. `(("perl-test-fatal" ,perl-test-fatal)
  3800. ("perl-test-needs" ,perl-test-needs)
  3801. ("perl-test-requiresinternet" ,perl-test-requiresinternet)))
  3802. (propagated-inputs
  3803. `(("perl-encode-locale" ,perl-encode-locale)
  3804. ("perl-file-listing" ,perl-file-listing)
  3805. ("perl-html-parser" ,perl-html-parser)
  3806. ("perl-http-cookies" ,perl-http-cookies)
  3807. ("perl-http-daemon" ,perl-http-daemon)
  3808. ("perl-http-date" ,perl-http-date)
  3809. ("perl-http-message" ,perl-http-message)
  3810. ("perl-http-negotiate" ,perl-http-negotiate)
  3811. ("perl-net-http" ,perl-net-http)
  3812. ("perl-try-tiny" ,perl-try-tiny)
  3813. ("perl-uri" ,perl-uri)
  3814. ("perl-www-robotrules" ,perl-www-robotrules)))
  3815. (license license:perl-license)
  3816. (synopsis "Perl modules for the WWW")
  3817. (description
  3818. "The libwww-perl collection is a set of Perl modules which provides a
  3819. simple and consistent application programming interface to the
  3820. World-Wide Web. The main focus of the library is to provide classes
  3821. and functions that allow you to write WWW clients. The library also
  3822. contains modules that are of more general use and even classes that
  3823. help you implement simple HTTP servers.")
  3824. (home-page "https://metacpan.org/release/libwww-perl")))
  3825. (define-public perl-lwp-online
  3826. (package
  3827. (name "perl-lwp-online")
  3828. (version "1.08")
  3829. (source
  3830. (origin
  3831. (method url-fetch)
  3832. (uri (string-append
  3833. "mirror://cpan/authors/id/A/AD/ADAMK/LWP-Online-"
  3834. version ".tar.gz"))
  3835. (sha256
  3836. (base32
  3837. "176f6vbk1018i0y7xj9d406ndbjgwzan2j9nihxnsahzg2vr2vz2"))))
  3838. (build-system perl-build-system)
  3839. (propagated-inputs
  3840. `(("perl-libwww" ,perl-libwww)
  3841. ("perl-uri" ,perl-uri)))
  3842. (native-inputs
  3843. `(("perl-module-install" ,perl-module-install)))
  3844. (home-page "https://metacpan.org/release/LWP-Online")
  3845. (synopsis "Checks whether your process has access to the web")
  3846. (description "This module attempts to answer, as accurately as it can, one
  3847. of the nastiest technical questions there is: am I on the internet?
  3848. A host of networking and security issues make this problem very difficult.
  3849. There are firewalls, proxies (both well behaved and badly behaved). We might
  3850. not have DNS. We might not have a network card at all!")
  3851. (license license:perl-license)))
  3852. (define-public perl-lwp-mediatypes
  3853. (package
  3854. (name "perl-lwp-mediatypes")
  3855. (version "6.04")
  3856. (source (origin
  3857. (method url-fetch)
  3858. (uri (string-append
  3859. "mirror://cpan/authors/id/O/OA/OALDERS/LWP-MediaTypes-"
  3860. version ".tar.gz"))
  3861. (sha256
  3862. (base32
  3863. "1n8rg6csv3dsvymg06cmxipimr6cb1g9r903ghm1qsmiv89cl6wg"))))
  3864. (build-system perl-build-system)
  3865. (native-inputs
  3866. `(("perl-test-fatal" ,perl-test-fatal)))
  3867. (license license:perl-license)
  3868. (synopsis "Perl module to guess the media type for a file or a URL")
  3869. (description
  3870. "The LWP::MediaTypes module provides functions for handling media (also
  3871. known as MIME) types and encodings. The mapping from file extensions to
  3872. media types is defined by the media.types file. If the ~/.media.types file
  3873. exists it is used instead.")
  3874. (home-page "https://metacpan.org/release/LWP-MediaTypes")))
  3875. (define-public perl-lwp-protocol-https
  3876. (package
  3877. (name "perl-lwp-protocol-https")
  3878. (version "6.09")
  3879. (source
  3880. (origin
  3881. (method url-fetch)
  3882. (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
  3883. "LWP-Protocol-https-" version ".tar.gz"))
  3884. (sha256
  3885. (base32 "14pm785cgyrnppks6ccasb2vkqifh0a8fz36nmnhc2v926jy3kqn"))))
  3886. (build-system perl-build-system)
  3887. (native-inputs
  3888. ;; For tests.
  3889. `(("perl-test-requiresinternet" ,perl-test-requiresinternet)))
  3890. (propagated-inputs
  3891. `(("perl-io-socket-ssl" ,perl-io-socket-ssl)
  3892. ("perl-libwww" ,perl-libwww)
  3893. ("perl-mozilla-ca" ,perl-mozilla-ca)
  3894. ("perl-net-http" ,perl-net-http)))
  3895. (home-page "https://metacpan.org/release/LWP-Protocol-https")
  3896. (synopsis "HTTPS support for LWP::UserAgent")
  3897. (description "The LWP::Protocol::https module provides support for using
  3898. https schemed URLs with LWP.")
  3899. (license license:perl-license)))
  3900. (define-public perl-lwp-useragent-cached
  3901. (package
  3902. (name "perl-lwp-useragent-cached")
  3903. (version "0.08")
  3904. (source
  3905. (origin
  3906. (method url-fetch)
  3907. (uri (string-append "mirror://cpan/authors/id/O/OL/OLEG/"
  3908. "LWP-UserAgent-Cached-" version ".tar.gz"))
  3909. (sha256
  3910. (base32
  3911. "1hw7wy7f82kl61xjwkgmhv1ixgg56dhgfr45wxn6ahc0qys5mkix"))))
  3912. (build-system perl-build-system)
  3913. (propagated-inputs
  3914. `(("perl-libwww" ,perl-libwww)))
  3915. (home-page "https://metacpan.org/release/LWP-UserAgent-Cached")
  3916. (synopsis "Simple caching for LWP::UserAgent")
  3917. (description "LWP::UserAgent::Cached is an LWP::UserAgent subclass with
  3918. cache support. It returns responses from the local file system, if available,
  3919. instead of making an HTTP request.")
  3920. (license license:perl-license)))
  3921. (define-public perl-lwp-useragent-determined
  3922. (package
  3923. (name "perl-lwp-useragent-determined")
  3924. (version "1.07")
  3925. (source
  3926. (origin
  3927. (method url-fetch)
  3928. (uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/"
  3929. "LWP-UserAgent-Determined-" version ".tar.gz"))
  3930. (sha256
  3931. (base32
  3932. "0lyvbpjng7yfvyha9rp2y2c6liz5hhplmd2grc8jlsfkih7dbn06"))))
  3933. (build-system perl-build-system)
  3934. (propagated-inputs
  3935. `(("perl-libwww" ,perl-libwww)))
  3936. (home-page "https://metacpan.org/release/LWP-UserAgent-Determined")
  3937. (synopsis "Virtual browser that retries errors")
  3938. (description "LWP::UserAgent::Determined works just like LWP::UserAgent,
  3939. except that when you use it to get a web page but run into a
  3940. possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds
  3941. and retry a few times.")
  3942. (license license:perl-license)))
  3943. (define-public perl-lwpx-paranoidagent
  3944. (package
  3945. (name "perl-lwpx-paranoidagent")
  3946. (version "1.12")
  3947. (source
  3948. (origin
  3949. (method url-fetch)
  3950. (uri (string-append
  3951. "mirror://cpan/authors/id/S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-"
  3952. version ".tar.gz"))
  3953. (sha256
  3954. (base32
  3955. "0gfhw3jbs25yya2dryv8xvyn9myngcfcmsybj7gkq62fnznil16c"))))
  3956. (build-system perl-build-system)
  3957. (propagated-inputs
  3958. `(("perl-libwww" ,perl-libwww)
  3959. ;; Users should instead make sure SSL_ca_path is set properly.
  3960. ;; ("perl-mozilla-ca" ,perl-mozilla-ca)
  3961. ("perl-net-dns" ,perl-net-dns)))
  3962. (home-page "https://metacpan.org/release/LWPx-ParanoidAgent")
  3963. (synopsis "Security enhanced subclass of LWP::UserAgent")
  3964. (description "@code{LWPx::ParanoidAgent} is a class subclassing
  3965. @code{LWP::UserAgent} but paranoid against attackers. Its purpose is
  3966. to vet requests for a remote resource on behalf of a possibly
  3967. malicious user. The class can do the same as @code{LWP::UserAgent},
  3968. except that proxy support has been removed. Support for URI schemes
  3969. is limited to http and https.")
  3970. (license license:perl-license)))
  3971. (define-public perl-net-amazon-s3
  3972. (package
  3973. (name "perl-net-amazon-s3")
  3974. (version "0.60")
  3975. (source
  3976. (origin
  3977. (method url-fetch)
  3978. (uri (string-append "mirror://cpan/authors/id/P/PF/PFIG/"
  3979. "Net-Amazon-S3-" version ".tar.gz"))
  3980. (sha256
  3981. (base32
  3982. "10dcsq4s2kc9cb1vccx17r187c81drirc3s1hbxh3rb8489kg2b2"))
  3983. (patches (search-patches
  3984. "perl-net-amazon-s3-moose-warning.patch"))))
  3985. (build-system perl-build-system)
  3986. (native-inputs
  3987. `(("perl-libwww" ,perl-libwww)
  3988. ("perl-test-exception" ,perl-test-exception)))
  3989. (propagated-inputs
  3990. `(("perl-data-stream-bulk" ,perl-data-stream-bulk)
  3991. ("perl-datetime-format-http" ,perl-datetime-format-http)
  3992. ("perl-digest-hmac" ,perl-digest-hmac)
  3993. ("perl-digest-md5-file" ,perl-digest-md5-file)
  3994. ("perl-file-find-rule" ,perl-file-find-rule)
  3995. ("perl-http-date" ,perl-http-date)
  3996. ("perl-http-message" ,perl-http-message)
  3997. ("perl-lwp-useragent-determined" ,perl-lwp-useragent-determined)
  3998. ("perl-mime-types" ,perl-mime-types)
  3999. ("perl-moose" ,perl-moose)
  4000. ("perl-moosex-strictconstructor" ,perl-moosex-strictconstructor)
  4001. ("perl-moosex-types-datetime-morecoercions"
  4002. ,perl-moosex-types-datetime-morecoercions)
  4003. ("perl-path-class" ,perl-path-class)
  4004. ("perl-regexp-common" ,perl-regexp-common)
  4005. ("perl-term-encoding" ,perl-term-encoding)
  4006. ("perl-term-progressbar-simple" ,perl-term-progressbar-simple)
  4007. ("perl-uri" ,perl-uri)
  4008. ("perl-xml-libxml" ,perl-xml-libxml)))
  4009. (home-page "https://metacpan.org/release/Net-Amazon-S3")
  4010. (synopsis "Perl interface to Amazon S3")
  4011. (description "This module provides a Perlish interface to Amazon S3.")
  4012. (license license:perl-license)))
  4013. (define-public perl-net-http
  4014. (package
  4015. (name "perl-net-http")
  4016. (version "6.21")
  4017. (source (origin
  4018. (method url-fetch)
  4019. (uri (string-append
  4020. "mirror://cpan/authors/id/O/OA/OALDERS/"
  4021. "Net-HTTP-" version ".tar.gz"))
  4022. (sha256
  4023. (base32
  4024. "1i7fk6q1iaxzgf82mjd5hg77hvy7dbb79488cijg16dyfrds6nip"))))
  4025. (build-system perl-build-system)
  4026. (propagated-inputs
  4027. `(("perl-io-socket-ssl" ,perl-io-socket-ssl)
  4028. ("perl-uri" ,perl-uri)))
  4029. (license license:perl-license)
  4030. (synopsis "Perl low-level HTTP connection (client)")
  4031. (description
  4032. "The Net::HTTP class is a low-level HTTP client. An instance of the
  4033. Net::HTTP class represents a connection to an HTTP server. The HTTP protocol
  4034. is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and
  4035. HTTP/1.1.")
  4036. (home-page "https://metacpan.org/release/Net-HTTP")))
  4037. (define-public perl-net-server
  4038. (package
  4039. (name "perl-net-server")
  4040. (version "2.009")
  4041. (source
  4042. (origin
  4043. (method url-fetch)
  4044. (uri (string-append "mirror://cpan/authors/id/R/RH/RHANDOM/"
  4045. "Net-Server-" version ".tar.gz"))
  4046. (sha256
  4047. (base32
  4048. "0gw1k9gcw7habbkxvsfa2gz34brlbwcidk6khgsf1qjm0dbccrw2"))))
  4049. (build-system perl-build-system)
  4050. (home-page "https://metacpan.org/release/Net-Server")
  4051. (synopsis "Extensible Perl server engine")
  4052. (description "Net::Server is an extensible, generic Perl server engine.
  4053. It attempts to be a generic server as in Net::Daemon and NetServer::Generic.
  4054. It includes with it the ability to run as an inetd
  4055. process (Net::Server::INET), a single connection server (Net::Server or
  4056. Net::Server::Single), a forking server (Net::Server::Fork), a preforking
  4057. server which maintains a constant number of preforked
  4058. children (Net::Server::PreForkSimple), or as a managed preforking server which
  4059. maintains the number of children based on server load (Net::Server::PreFork).
  4060. In all but the inetd type, the server provides the ability to connect to one
  4061. or to multiple server ports.")
  4062. (license license:perl-license)))
  4063. (define-public perl-net-smtp-ssl
  4064. (package
  4065. (name "perl-net-smtp-ssl")
  4066. (version "1.04")
  4067. (source
  4068. (origin
  4069. (method url-fetch)
  4070. (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
  4071. "Net-SMTP-SSL-" version ".tar.gz"))
  4072. (sha256
  4073. (base32
  4074. "001a6dcfahf7kkyirqkc8jd4fh4fkal7n7vm9c4dblqrvmdc8abv"))))
  4075. (build-system perl-build-system)
  4076. (propagated-inputs
  4077. `(("perl-io-socket-ssl" ,perl-io-socket-ssl)))
  4078. (home-page "https://metacpan.org/release/Net-SMTP-SSL")
  4079. (synopsis "SSL support for Net::SMTP")
  4080. (description "SSL support for Net::SMTP.")
  4081. (license license:perl-license)))
  4082. (define-public perl-plack
  4083. (package
  4084. (name "perl-plack")
  4085. (version "1.0033")
  4086. (source
  4087. (origin
  4088. (method url-fetch)
  4089. (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
  4090. "Plack-" version ".tar.gz"))
  4091. (sha256
  4092. (base32
  4093. "081jg0xddzpg2anmqi9i6d7vs6c8z7k557bf8xl6vgb3h95pin5w"))))
  4094. (build-system perl-build-system)
  4095. (native-inputs
  4096. `(("perl-test-requires" ,perl-test-requires)
  4097. ("perl-file-sharedir-install" ,perl-file-sharedir-install)))
  4098. (propagated-inputs
  4099. `(("perl-apache-logformat-compiler" ,perl-apache-logformat-compiler)
  4100. ("perl-devel-stacktrace" ,perl-devel-stacktrace)
  4101. ("perl-devel-stacktrace-ashtml" ,perl-devel-stacktrace-ashtml)
  4102. ("perl-file-sharedir" ,perl-file-sharedir)
  4103. ("perl-hash-multivalue" ,perl-hash-multivalue)
  4104. ("perl-http-body" ,perl-http-body)
  4105. ("perl-http-message" ,perl-http-message)
  4106. ("perl-http-tiny" ,perl-http-tiny)
  4107. ("perl-libwww" ,perl-libwww)
  4108. ("perl-stream-buffered" ,perl-stream-buffered)
  4109. ("perl-test-tcp" ,perl-test-tcp)
  4110. ("perl-try-tiny" ,perl-try-tiny)
  4111. ("perl-uri" ,perl-uri)))
  4112. (home-page "https://metacpan.org/release/Plack")
  4113. (synopsis "Perl Superglue for Web frameworks and servers (PSGI toolkit)")
  4114. (description "Plack is a set of tools for using the PSGI stack. It
  4115. contains middleware components, a reference server, and utilities for Web
  4116. application frameworks. Plack is like Ruby's Rack or Python's Paste for
  4117. WSGI.")
  4118. (license license:perl-license)))
  4119. (define-public perl-plack-middleware-deflater
  4120. (package
  4121. (name "perl-plack-middleware-deflater")
  4122. (version "0.12")
  4123. (source
  4124. (origin
  4125. (method url-fetch)
  4126. (uri (string-append
  4127. "mirror://cpan/authors/id/K/KA/KAZEBURO/"
  4128. "Plack-Middleware-Deflater-" version ".tar.gz"))
  4129. (sha256
  4130. (base32
  4131. "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
  4132. (build-system perl-build-system)
  4133. (native-inputs
  4134. `(("perl-module-install" ,perl-module-install)
  4135. ("perl-test-requires" ,perl-test-requires)))
  4136. (propagated-inputs
  4137. `(("perl-plack" ,perl-plack)))
  4138. (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
  4139. (synopsis "Compress response body with Gzip or Deflate")
  4140. (description
  4141. "Plack::Middleware::Deflater is a middleware to encode your response body
  4142. in gzip or deflate, based on \"Accept-Encoding\" HTTP request header. It
  4143. would save the bandwidth a little bit but should increase the Plack server
  4144. load, so ideally you should handle this on the frontend reverse proxy
  4145. servers.")
  4146. (license license:perl-license)))
  4147. (define-public perl-plack-middleware-fixmissingbodyinredirect
  4148. (package
  4149. (name "perl-plack-middleware-fixmissingbodyinredirect")
  4150. (version "0.12")
  4151. (source
  4152. (origin
  4153. (method url-fetch)
  4154. (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
  4155. "Plack-Middleware-FixMissingBodyInRedirect-"
  4156. version ".tar.gz"))
  4157. (sha256
  4158. (base32
  4159. "14dkrmccq7a5vpymx5dv8032gfcvhsw2i6v5sh3c4ym5ymlx08kc"))))
  4160. (build-system perl-build-system)
  4161. (native-inputs
  4162. `(("perl-html-parser" ,perl-html-parser) ;for HTML::Entities
  4163. ("perl-http-message" ,perl-http-message)
  4164. ("perl-plack" ,perl-plack))) ;for Plack::Test
  4165. (home-page
  4166. "https://metacpan.org/release/Plack-Middleware-FixMissingBodyInRedirect")
  4167. (synopsis "Plack::Middleware which sets body for redirect response")
  4168. (description "This module sets the body in redirect response, if it's not
  4169. already set.")
  4170. (license license:perl-license)))
  4171. (define-public perl-plack-middleware-methodoverride
  4172. (package
  4173. (name "perl-plack-middleware-methodoverride")
  4174. (version "0.20")
  4175. (source
  4176. (origin
  4177. (method url-fetch)
  4178. (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
  4179. "Plack-Middleware-MethodOverride-"
  4180. version ".tar.gz"))
  4181. (sha256
  4182. (base32 "1wdmmav3rbhv49zpw311zrxxqmg1fz3f3q9src0ypgs8zcp5myyv"))))
  4183. (build-system perl-build-system)
  4184. (native-inputs
  4185. `(("perl-module-build" ,perl-module-build)))
  4186. (propagated-inputs
  4187. `(("perl-plack" ,perl-plack)))
  4188. (home-page "https://metacpan.org/release/Plack-Middleware-MethodOverride")
  4189. (synopsis "Override REST methods to Plack apps via POST")
  4190. (description "This middleware allows for POST requests that pretend to be
  4191. something else: by adding either a header named X-HTTP-Method-Override to the
  4192. request, or a query parameter named x-tunneled-method to the URI, the client
  4193. can say what method it actually meant.")
  4194. (license license:perl-license)))
  4195. (define-public perl-plack-middleware-removeredundantbody
  4196. (package
  4197. (name "perl-plack-middleware-removeredundantbody")
  4198. (version "0.09")
  4199. (source
  4200. (origin
  4201. (method url-fetch)
  4202. (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
  4203. "Plack-Middleware-RemoveRedundantBody-"
  4204. version ".tar.gz"))
  4205. (sha256
  4206. (base32 "0zh83001rn5aqwpc1pn3di2h3ibzlf2dvkmkv05hnadpss9mzm40"))))
  4207. (build-system perl-build-system)
  4208. (propagated-inputs
  4209. `(("perl-plack" ,perl-plack)))
  4210. (home-page
  4211. "https://metacpan.org/release/Plack-Middleware-RemoveRedundantBody")
  4212. (synopsis "Plack::Middleware which removes body for HTTP response")
  4213. (description "This module removes the body in an HTTP response if it's not
  4214. required.")
  4215. (license license:perl-license)))
  4216. (define-public perl-plack-middleware-reverseproxy
  4217. (package
  4218. (name "perl-plack-middleware-reverseproxy")
  4219. (version "0.16")
  4220. (source
  4221. (origin
  4222. (method url-fetch)
  4223. (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
  4224. "Plack-Middleware-ReverseProxy-"
  4225. version ".tar.gz"))
  4226. (sha256
  4227. (base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
  4228. (build-system perl-build-system)
  4229. (native-inputs
  4230. `(("perl-module-install" ,perl-module-install)))
  4231. (propagated-inputs
  4232. `(("perl-plack" ,perl-plack)))
  4233. (home-page "https://metacpan.org/release/Plack-Middleware-ReverseProxy")
  4234. (synopsis "Supports app to run as a reverse proxy backend")
  4235. (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
  4236. which are changed by reverse-proxy. You can specify the reverse proxy address
  4237. and stop fake requests using @code{enable_if} directive in your app.psgi.")
  4238. (license license:perl-license)))
  4239. (define-public perl-plack-test-externalserver
  4240. (package
  4241. (name "perl-plack-test-externalserver")
  4242. (version "0.02")
  4243. (source
  4244. (origin
  4245. (method url-fetch)
  4246. (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
  4247. "Plack-Test-ExternalServer-" version ".tar.gz"))
  4248. (sha256
  4249. (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
  4250. (build-system perl-build-system)
  4251. (propagated-inputs
  4252. `(("perl-plack" ,perl-plack)))
  4253. (home-page "https://metacpan.org/release/Plack-Test-ExternalServer")
  4254. (synopsis "Run HTTP tests on external live servers")
  4255. (description "This module allows your to run your Plack::Test tests
  4256. against an external server instead of just against a local application through
  4257. either mocked HTTP or a locally spawned server.")
  4258. (license license:perl-license)))
  4259. (define-public perl-test-tcp
  4260. (package
  4261. (name "perl-test-tcp")
  4262. (version "2.22")
  4263. (source
  4264. (origin
  4265. (method url-fetch)
  4266. (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
  4267. "Test-TCP-" version ".tar.gz"))
  4268. (sha256
  4269. (base32 "0mvv9rqwrwlcfh8qrs0s47p85rhlnw15d4gbpyi802bddp0c6lry"))))
  4270. (build-system perl-build-system)
  4271. (propagated-inputs
  4272. `(("perl-test-sharedfork" ,perl-test-sharedfork)))
  4273. (arguments `(#:tests? #f)) ;related to signaling in t/05_sigint.t
  4274. (home-page "https://metacpan.org/release/Test-TCP")
  4275. (synopsis "Testing TCP programs")
  4276. (description "Test::TCP is test utilities for TCP/IP programs.")
  4277. (license license:perl-license)))
  4278. (define-public perl-test-www-mechanize
  4279. (package
  4280. (name "perl-test-www-mechanize")
  4281. (version "1.52")
  4282. (source
  4283. (origin
  4284. (method url-fetch)
  4285. (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
  4286. "Test-WWW-Mechanize-" version ".tar.gz"))
  4287. (sha256
  4288. (base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
  4289. (build-system perl-build-system)
  4290. (propagated-inputs
  4291. `(("perl-carp-assert-more" ,perl-carp-assert-more)
  4292. ("perl-html-form" ,perl-html-form)
  4293. ("perl-html-lint" ,perl-html-lint)
  4294. ("perl-http-server-simple" ,perl-http-server-simple)
  4295. ("perl-libwww" ,perl-libwww)
  4296. ("perl-test-longstring" ,perl-test-longstring)
  4297. ("perl-www-mechanize" ,perl-www-mechanize)))
  4298. (home-page "https://metacpan.org/release/Test-WWW-Mechanize")
  4299. (synopsis "Testing-specific WWW::Mechanize subclass")
  4300. (description "Test::WWW::Mechanize is a subclass of the Perl module
  4301. WWW::Mechanize that incorporates features for web application testing.")
  4302. (license license:artistic2.0)))
  4303. (define-public perl-test-www-mechanize-catalyst
  4304. (package
  4305. (name "perl-test-www-mechanize-catalyst")
  4306. (version "0.62")
  4307. (source
  4308. (origin
  4309. (method url-fetch)
  4310. (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
  4311. "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
  4312. (sha256
  4313. (base32 "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq"))))
  4314. (build-system perl-build-system)
  4315. (native-inputs
  4316. `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
  4317. ("perl-catalyst-plugin-session-state-cookie"
  4318. ,perl-catalyst-plugin-session-state-cookie)
  4319. ("perl-module-install" ,perl-module-install)
  4320. ("perl-test-exception" ,perl-test-exception)
  4321. ("perl-test-pod" ,perl-test-pod)
  4322. ("perl-test-utf8" ,perl-test-utf8)))
  4323. (propagated-inputs
  4324. `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
  4325. ("perl-class-load" ,perl-class-load)
  4326. ("perl-libwww" ,perl-libwww)
  4327. ("perl-moose" ,perl-moose)
  4328. ("perl-namespace-clean" ,perl-namespace-clean)
  4329. ("perl-test-www-mechanize" ,perl-test-www-mechanize)
  4330. ("perl-www-mechanize" ,perl-www-mechanize)))
  4331. (home-page "https://metacpan.org/release/Test-WWW-Mechanize-Catalyst")
  4332. (synopsis "Test::WWW::Mechanize for Catalyst")
  4333. (description "The Test::WWW::Mechanize::Catalyst module meshes the
  4334. Test::WWW:Mechanize module and the Catalyst web application framework to allow
  4335. testing of Catalyst applications without needing to start up a web server.")
  4336. (license license:perl-license)))
  4337. (define-public perl-test-www-mechanize-psgi
  4338. (package
  4339. (name "perl-test-www-mechanize-psgi")
  4340. (version "0.38")
  4341. (source
  4342. (origin
  4343. (method url-fetch)
  4344. (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
  4345. "Test-WWW-Mechanize-PSGI-" version ".tar.gz"))
  4346. (sha256
  4347. (base32
  4348. "0fsh2i05kf1kfavv2r9kmnjl7qlyqrd11ikc0qcqzzxsqzzjkg9r"))))
  4349. (build-system perl-build-system)
  4350. (native-inputs
  4351. `(("perl-test-pod" ,perl-test-pod)))
  4352. (propagated-inputs
  4353. `(("perl-plack" ,perl-plack)
  4354. ("perl-test-www-mechanize" ,perl-test-www-mechanize)))
  4355. (home-page "https://metacpan.org/release/Test-WWW-Mechanize-PSGI")
  4356. (synopsis "Test PSGI programs using WWW::Mechanize")
  4357. (description "PSGI is a specification to decouple web server environments
  4358. from web application framework code. Test::WWW::Mechanize is a subclass of
  4359. WWW::Mechanize that incorporates features for web application testing. The
  4360. Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI
  4361. applications.")
  4362. (license license:perl-license)))
  4363. (define-public perl-uri
  4364. (package
  4365. (name "perl-uri")
  4366. (version "5.05")
  4367. (source (origin
  4368. (method url-fetch)
  4369. (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
  4370. "URI-" version ".tar.gz"))
  4371. (sha256
  4372. (base32
  4373. "1v3r3ck67w272kzfgm1nd3wb41av1hlnza56vkxxj1i7s3917hd5"))))
  4374. (build-system perl-build-system)
  4375. (native-inputs
  4376. ;; For tests.
  4377. `(("perl-test-needs" ,perl-test-needs)))
  4378. (license license:perl-license)
  4379. (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
  4380. (description
  4381. "The URI module implements the URI class. Objects of this class
  4382. represent \"Uniform Resource Identifier references\" as specified in RFC 2396
  4383. and updated by RFC 2732.")
  4384. (home-page "https://metacpan.org/release/URI")))
  4385. (define-public perl-uri-fetch
  4386. (package
  4387. (name "perl-uri-fetch")
  4388. (version "0.15")
  4389. (source (origin
  4390. (method url-fetch)
  4391. (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
  4392. "URI-Fetch-" version ".tar.gz"))
  4393. (sha256
  4394. (base32
  4395. "0355rnw3xbgfwy9fgs6zrjmrsychzmwpkc9jcd9mrbkd9kr3k7rp"))))
  4396. (build-system perl-build-system)
  4397. (arguments
  4398. `(#:tests? #f)) ; Tests require internet connection to succeed
  4399. (inputs
  4400. `(("perl-class-errorhandler" ,perl-class-errorhandler)
  4401. ("perl-libwww" ,perl-libwww)
  4402. ("perl-uri" ,perl-uri)))
  4403. (home-page "https://metacpan.org/release/URI-Fetch")
  4404. (synopsis "Smart URI fetching/caching")
  4405. (description "@code{URI::Fetch} is a smart client for fetching HTTP pages,
  4406. notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-
  4407. and time-saving way.")
  4408. (license license:perl-license)))
  4409. (define-public perl-uri-find
  4410. (package
  4411. (name "perl-uri-find")
  4412. (version "20160806")
  4413. (source
  4414. (origin
  4415. (method url-fetch)
  4416. (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHWERN/"
  4417. "URI-Find-" version ".tar.gz"))
  4418. (sha256
  4419. (base32
  4420. "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2"))))
  4421. (build-system perl-build-system)
  4422. (native-inputs
  4423. `(("perl-module-build" ,perl-module-build)))
  4424. (propagated-inputs
  4425. `(("perl-uri" ,perl-uri)))
  4426. (home-page "https://metacpan.org/release/URI-Find")
  4427. (synopsis "Find URIs in arbitrary text")
  4428. (description "This module finds URIs and URLs (according to what URI.pm
  4429. considers a URI) in plain text. It only finds URIs which include a
  4430. scheme (http:// or the like), for something a bit less strict, consider
  4431. URI::Find::Schemeless. For a command-line interface, urifind is provided.")
  4432. (license license:perl-license)))
  4433. (define-public perl-uri-ws
  4434. (package
  4435. (name "perl-uri-ws")
  4436. (version "0.03")
  4437. (source
  4438. (origin
  4439. (method url-fetch)
  4440. (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
  4441. "URI-ws-" version ".tar.gz"))
  4442. (sha256
  4443. (base32
  4444. "1vs1wm80sq685944g1l4a0fxcbccc00c0f9648yabdmcf90hwsvf"))))
  4445. (build-system perl-build-system)
  4446. (propagated-inputs
  4447. `(("perl-uri" ,perl-uri)))
  4448. (home-page "https://metacpan.org/release/URI-ws")
  4449. (synopsis "WebSocket support for URI package")
  4450. (description "With this module, the URI package provides the same set of
  4451. methods for WebSocket URIs as it does for HTTP URIs.")
  4452. (license license:perl-license)))
  4453. (define-public perl-uri-template
  4454. (package
  4455. (name "perl-uri-template")
  4456. (version "0.24")
  4457. (source (origin
  4458. (method url-fetch)
  4459. (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-"
  4460. version ".tar.gz"))
  4461. (sha256
  4462. (base32
  4463. "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8"))))
  4464. (build-system perl-build-system)
  4465. (inputs
  4466. `(("perl-uri" ,perl-uri)))
  4467. (native-inputs
  4468. `(("perl-test-pod-coverage" ,perl-test-pod-coverage)
  4469. ("perl-test-pod" ,perl-test-pod)
  4470. ("perl-module-install" ,perl-module-install)
  4471. ("perl-json" ,perl-json)))
  4472. (home-page "https://metacpan.org/release/URI-Template")
  4473. (synopsis "Object for handling URI templates")
  4474. (description "This perl module provides a wrapper around URI templates as described in
  4475. RFC 6570.")
  4476. (license license:perl-license)))
  4477. (define-public perl-www-curl
  4478. (package
  4479. (name "perl-www-curl")
  4480. (version "4.17")
  4481. (source (origin
  4482. (method url-fetch)
  4483. (uri (string-append
  4484. "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-"
  4485. version".tar.gz"))
  4486. (patches (search-patches "perl-www-curl-fix-struct-void.patch"
  4487. "perl-www-curl-remove-symbol.patch"))
  4488. (sha256
  4489. (base32
  4490. "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj"))))
  4491. (build-system perl-build-system)
  4492. (arguments
  4493. '(#:tests? #f ;XXX: tests require network access
  4494. #:phases (modify-phases %standard-phases
  4495. (add-before 'configure 'set-search-path
  4496. (lambda _
  4497. ;; Work around "dotless @INC" build failure.
  4498. (setenv "PERL5LIB"
  4499. (string-append (getcwd) ":"
  4500. (getenv "PERL5LIB")))
  4501. #t)))))
  4502. (native-inputs
  4503. `(("perl-module-install" ,perl-module-install)))
  4504. (inputs `(("curl" ,curl)))
  4505. (synopsis "Perl extension interface for libcurl")
  4506. (description
  4507. "This is a Perl extension interface for the libcurl file downloading
  4508. library.")
  4509. (license license:perl-license)
  4510. (home-page "https://metacpan.org/release/WWW-Curl")))
  4511. (define-public perl-www-mechanize
  4512. (package
  4513. (name "perl-www-mechanize")
  4514. (version "1.91")
  4515. (source
  4516. (origin
  4517. (method url-fetch)
  4518. (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
  4519. "WWW-Mechanize-" version ".tar.gz"))
  4520. (sha256
  4521. (base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
  4522. (build-system perl-build-system)
  4523. (native-inputs ;only for tests
  4524. `(("perl-cgi" ,perl-cgi)
  4525. ("perl-test-deep" ,perl-test-deep)
  4526. ("perl-test-fatal" ,perl-test-fatal)
  4527. ("perl-test-output" ,perl-test-output)
  4528. ("perl-test-warnings" ,perl-test-warnings)))
  4529. (propagated-inputs
  4530. `(("perl-html-form" ,perl-html-form)
  4531. ("perl-html-parser" ,perl-html-parser)
  4532. ("perl-html-tree" ,perl-html-tree)
  4533. ("perl-http-message" ,perl-http-message)
  4534. ("perl-http-server-simple" ,perl-http-server-simple)
  4535. ("perl-libwww" ,perl-libwww)
  4536. ("perl-test-warn" ,perl-test-warn)
  4537. ("perl-uri" ,perl-uri)))
  4538. (home-page "https://metacpan.org/release/WWW-Mechanize")
  4539. (synopsis "Web browsing in a Perl object")
  4540. (description "WWW::Mechanize is a Perl module for stateful programmatic
  4541. web browsing, used for automating interaction with websites.")
  4542. (license license:perl-license)))
  4543. (define-public perl-www-opensearch
  4544. (package
  4545. (name "perl-www-opensearch")
  4546. (version "0.17")
  4547. (source (origin
  4548. (method url-fetch)
  4549. (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/"
  4550. "WWW-OpenSearch-" version ".tar.gz"))
  4551. (sha256
  4552. (base32
  4553. "1yxplx1q1qk2fvnzqrbk01lz26fy1lyhay51a3ky7q3jgh9p01rb"))))
  4554. (build-system perl-build-system)
  4555. (native-inputs
  4556. `(("perl-class-errorhandler" ,perl-class-errorhandler)
  4557. ("perl-datetime" ,perl-datetime)
  4558. ("perl-datetime-format-mail" ,perl-datetime-format-mail)
  4559. ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
  4560. ("perl-feed-find" ,perl-feed-find)
  4561. ("perl-module-install" ,perl-module-install)
  4562. ("perl-module-pluggable" ,perl-module-pluggable)
  4563. ("perl-uri-fetch" ,perl-uri-fetch)
  4564. ("perl-test-simple" ,perl-test-simple)
  4565. ("perl-xml-atom" ,perl-xml-atom)
  4566. ("perl-xml-rss" ,perl-xml-rss)))
  4567. (inputs
  4568. `(("perl-data-page" ,perl-data-page)
  4569. ("perl-libwww" ,perl-libwww)
  4570. ("perl-uri" ,perl-uri)
  4571. ("perl-uri-template" ,perl-uri-template)
  4572. ("perl-xml-feed" ,perl-xml-feed)
  4573. ("perl-xml-libxml" ,perl-xml-libxml)))
  4574. (home-page "https://metacpan.org/release/WWW-OpenSearch")
  4575. (synopsis "Search A9 OpenSearch compatible engines")
  4576. (description
  4577. "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,
  4578. http://opensearch.a9.com} compatible search engines.")
  4579. (license license:perl-license)))
  4580. (define-public perl-www-robotrules
  4581. (package
  4582. (name "perl-www-robotrules")
  4583. (version "6.02")
  4584. (source (origin
  4585. (method url-fetch)
  4586. (uri (string-append
  4587. "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
  4588. version ".tar.gz"))
  4589. (sha256
  4590. (base32
  4591. "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
  4592. (build-system perl-build-system)
  4593. (propagated-inputs
  4594. `(("perl-uri" ,perl-uri)))
  4595. (license license:perl-license)
  4596. (synopsis "Perl database of robots.txt-derived permissions")
  4597. (description
  4598. "The WWW::RobotRules module parses /robots.txt files as specified in
  4599. \"A Standard for Robot Exclusion\", at
  4600. <http://www.robotstxt.org/wc/norobots.html>. Webmasters can use the
  4601. /robots.txt file to forbid conforming robots from accessing parts of
  4602. their web site.")
  4603. (home-page "https://metacpan.org/release/WWW-RobotRules")))
  4604. (define-public python-feedparser
  4605. (package
  4606. (name "python-feedparser")
  4607. (version "6.0.8")
  4608. (source
  4609. (origin
  4610. (method url-fetch)
  4611. (uri (pypi-uri "feedparser" version ".tar.gz"))
  4612. (sha256
  4613. (base32
  4614. "0qcnkyjjfj5gg5rhd1j4zzlqx5h34bma18zwgj68q95b0l543q2w"))))
  4615. (build-system python-build-system)
  4616. (propagated-inputs
  4617. `(("python-sgmllib3k" ,python-sgmllib3k)))
  4618. (arguments
  4619. '(#:tests? #f))
  4620. (home-page
  4621. "https://github.com/kurtmckee/feedparser")
  4622. (synopsis "Parse feeds in Python")
  4623. (description
  4624. "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
  4625. CDF, Atom 0.3, and Atom 1.0 feeds.")
  4626. (license (list license:bsd-2 ; source code
  4627. license:freebsd-doc)))) ; documentation
  4628. (define-public python2-feedparser
  4629. (package
  4630. (name "python2-feedparser")
  4631. (version "5.2.1")
  4632. (source
  4633. (origin
  4634. (method url-fetch)
  4635. (uri (pypi-uri "feedparser" version ".tar.bz2"))
  4636. (sha256
  4637. (base32
  4638. "00hb4qg2am06g81mygfi1jsbx8830024jm45g6qp9g8fr6am91yf"))))
  4639. (build-system python-build-system)
  4640. (arguments
  4641. `(#:tests? #f
  4642. #:python ,python-2))
  4643. (home-page
  4644. "https://github.com/kurtmckee/feedparser")
  4645. (synopsis "Parse feeds in Python")
  4646. (description
  4647. "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
  4648. CDF, Atom 0.3, and Atom 1.0 feeds.")
  4649. (license (list license:bsd-2 ; source code
  4650. license:freebsd-doc)))) ; documentation
  4651. (define-public guix-data-service
  4652. (let ((commit "df2a0a73f1f35ea53ba6c07a6ad4c5347ba12b8f")
  4653. (revision "27"))
  4654. (package
  4655. (name "guix-data-service")
  4656. (version (string-append "0.0.1-" revision "." (string-take commit 7)))
  4657. (source (origin
  4658. (method git-fetch)
  4659. (uri (git-reference
  4660. (url "https://git.savannah.gnu.org/git/guix/data-service.git/")
  4661. (commit commit)))
  4662. (file-name (git-file-name name version))
  4663. (sha256
  4664. (base32
  4665. "1ss1prr98zdjkm97w24rd04lfnnvcw6xs0gwxqgd40briqisaa5g"))))
  4666. (build-system gnu-build-system)
  4667. (arguments
  4668. '(#:modules ((guix build utils)
  4669. (guix build gnu-build-system)
  4670. (ice-9 ftw)
  4671. (ice-9 match)
  4672. (ice-9 rdelim)
  4673. (ice-9 popen))
  4674. #:test-target "check-with-tmp-database"
  4675. #:phases
  4676. (modify-phases %standard-phases
  4677. (add-before 'build 'set-GUILE_AUTO_COMPILE
  4678. (lambda _
  4679. ;; To avoid warnings relating to 'guild'.
  4680. (setenv "GUILE_AUTO_COMPILE" "0")
  4681. #t))
  4682. (add-after 'install 'wrap-executable
  4683. (lambda* (#:key inputs outputs #:allow-other-keys)
  4684. (let* ((out (assoc-ref outputs "out"))
  4685. (bin (string-append out "/bin"))
  4686. (guile (assoc-ref inputs "guile"))
  4687. (guile-effective-version
  4688. (read-line
  4689. (open-pipe* OPEN_READ
  4690. (string-append guile "/bin/guile")
  4691. "-c" "(display (effective-version))")))
  4692. (scm (string-append out "/share/guile/site/"
  4693. guile-effective-version))
  4694. (go (string-append out "/lib/guile/"
  4695. guile-effective-version
  4696. "/site-ccache")))
  4697. (for-each
  4698. (lambda (file)
  4699. (simple-format (current-error-port)
  4700. "wrapping: ~A\n"
  4701. (string-append bin "/" file))
  4702. (wrap-program (string-append bin "/" file)
  4703. `("PATH" ":" prefix
  4704. ,(cons*
  4705. bin
  4706. (map (lambda (input)
  4707. (string-append
  4708. (assoc-ref inputs input)
  4709. "/bin"))
  4710. '("ephemeralpg"
  4711. "util-linux"
  4712. "postgresql"))))
  4713. `("GUILE_LOAD_PATH" ":" prefix
  4714. (,scm ,(getenv "GUILE_LOAD_PATH")))
  4715. `("GUILE_LOAD_COMPILED_PATH" ":" prefix
  4716. (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
  4717. (scandir bin
  4718. (match-lambda
  4719. ((or "." "..") #f)
  4720. (_ #t))))
  4721. #t)))
  4722. (delete 'strip)))) ; As the .go files aren't compatible
  4723. (inputs
  4724. `(("guix" ,guix)
  4725. ("guile-fibers" ,guile-fibers)
  4726. ("guile-json" ,guile-json-4)
  4727. ("guile-email" ,guile-email)
  4728. ("guile-prometheus" ,guile-prometheus)
  4729. ("guile-squee" ,guile-squee)
  4730. ("ephemeralpg" ,ephemeralpg)
  4731. ("util-linux" ,util-linux)
  4732. ("postgresql" ,postgresql-13)
  4733. ("sqitch" ,sqitch)))
  4734. (native-inputs
  4735. `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
  4736. ("autoconf" ,autoconf)
  4737. ("automake" ,automake)
  4738. ("emacs-minimal" ,emacs-minimal)
  4739. ("emacs-htmlize" ,emacs-htmlize)
  4740. ("pkg-config" ,pkg-config)))
  4741. (synopsis "Store and provide data about GNU Guix")
  4742. (description
  4743. "The Guix Data Service stores data about GNU Guix, and provides this
  4744. through a web interface. It supports listening to the guix-commits mailing
  4745. list to find out about new revisions, then loads the data from these in to a
  4746. PostgreSQL database.")
  4747. (home-page "https://data.guix.gnu.org/")
  4748. (license license:agpl3+))))
  4749. (define-public gumbo-parser
  4750. (package
  4751. (name "gumbo-parser")
  4752. (version "0.10.1")
  4753. (source (origin
  4754. (method git-fetch)
  4755. (uri (git-reference
  4756. (url "https://github.com/google/gumbo-parser")
  4757. (commit (string-append "v" version))))
  4758. (file-name (git-file-name name version))
  4759. (sha256
  4760. (base32
  4761. "0xslckwdh2i0g2qjsb6rnm8mjmbagvziz0hjlf7d1lbljfms1iw1"))))
  4762. (build-system gnu-build-system)
  4763. (arguments
  4764. `(#:tests? #f)) ;tests require bundling googletest sources
  4765. ;; The release tarball lacks the generated files.
  4766. (native-inputs
  4767. `(("autoconf" ,autoconf)
  4768. ("automake" ,automake)
  4769. ("libtool" ,libtool)))
  4770. (home-page "https://github.com/google/gumbo-parser")
  4771. (synopsis "HTML5 parsing library")
  4772. (description
  4773. "Gumbo is an implementation of the HTML5 parsing algorithm implemented as
  4774. a pure C99 library.")
  4775. (license license:asl2.0)))
  4776. (define-public uwsgi
  4777. (package
  4778. (name "uwsgi")
  4779. (version "2.0.18")
  4780. (source (origin
  4781. (method url-fetch)
  4782. (uri (string-append "https://projects.unbit.it/downloads/uwsgi-"
  4783. version ".tar.gz"))
  4784. (sha256
  4785. (base32
  4786. "10zmk4npknigmbqcq1wmhd461dk93159px172112vyq0i19sqwj9"))))
  4787. (build-system gnu-build-system)
  4788. (outputs '("out" "python"))
  4789. (arguments
  4790. '(;; XXX: The 'check' target runs cppcheck to do static code analysis.
  4791. ;; But there is no obvious way to run the real tests.
  4792. #:tests? #f
  4793. #:phases
  4794. (modify-phases %standard-phases
  4795. (replace 'configure
  4796. ;; Configuration is done by writing an ini file.
  4797. (lambda* (#:key outputs #:allow-other-keys)
  4798. (let* ((out (assoc-ref outputs "out"))
  4799. (bindir (string-append out "/bin"))
  4800. (plugindir (string-append out "/lib/uwsgi")))
  4801. ;; The build phase outputs files to these directories directly.
  4802. (mkdir-p bindir)
  4803. (mkdir-p plugindir)
  4804. ;; XXX: Enable other plugins.
  4805. (call-with-output-file "buildconf/guix.ini"
  4806. (lambda (port)
  4807. (format port "[uwsgi]
  4808. yaml = libyaml
  4809. bin_name = ~a/uwsgi
  4810. plugin_dir = ~a
  4811. inherit = base
  4812. plugins = cgi,python
  4813. embedded_plugins =
  4814. " bindir plugindir))))
  4815. (setenv "PROFILE" "guix")
  4816. #t))
  4817. (replace 'install
  4818. ;; Move plugins into their own output.
  4819. (lambda* (#:key outputs #:allow-other-keys)
  4820. (let* ((out (assoc-ref outputs "out"))
  4821. (plugindir (string-append out "/lib/uwsgi"))
  4822. (python-plugin (string-append
  4823. plugindir "/python_plugin.so")))
  4824. (install-file python-plugin
  4825. (string-append
  4826. (assoc-ref outputs "python") "/lib/uwsgi"))
  4827. (delete-file python-plugin)
  4828. #t))))))
  4829. (native-inputs
  4830. `(("pkg-config" ,pkg-config)
  4831. ("python" ,python-wrapper)))
  4832. (inputs
  4833. `(("jansson" ,jansson)
  4834. ("libxml2" ,libxml2)
  4835. ("libyaml" ,libyaml)
  4836. ("openssl" ,openssl)
  4837. ("pcre" ,pcre)
  4838. ("zlib" ,zlib)
  4839. ;; For plugins.
  4840. ("python" ,python)))
  4841. (home-page "https://uwsgi-docs.readthedocs.org/")
  4842. (synopsis "Application container server")
  4843. (description
  4844. "uWSGI presents a complete stack for networked/clustered web applications,
  4845. implementing message/object passing, caching, RPC and process management.
  4846. It uses the uwsgi protocol for all the networking/interprocess communications.")
  4847. (license license:gpl2+))) ; with linking exception
  4848. (define-public jq
  4849. (package
  4850. (name "jq")
  4851. (version "1.6")
  4852. (source
  4853. (origin
  4854. (method url-fetch)
  4855. (uri (string-append "https://github.com/stedolan/jq"
  4856. "/releases/download/jq-" version
  4857. "/jq-" version ".tar.gz"))
  4858. (sha256
  4859. (base32 "0wmapfskhzfwranf6515nzmm84r7kwljgfs7dg6bjgxakbicis2x"))
  4860. (modules '((guix build utils)))
  4861. (snippet
  4862. '(begin
  4863. ;; Remove bundled onigurama.
  4864. (delete-file-recursively "modules")
  4865. #t))))
  4866. (inputs
  4867. `(("oniguruma" ,oniguruma)))
  4868. (native-inputs
  4869. `(;; TODO fix gems to generate documentation
  4870. ;;("ruby" ,ruby)
  4871. ;;("bundler" ,bundler)
  4872. ("valgrind" ,valgrind)))
  4873. (build-system gnu-build-system)
  4874. (home-page "https://stedolan.github.io/jq/")
  4875. (synopsis "Command-line JSON processor")
  4876. (description "jq is like sed for JSON data – you can use it to slice and
  4877. filter and map and transform structured data with the same ease that sed, awk,
  4878. grep and friends let you play with text. It is written in portable C. jq can
  4879. mangle the data format that you have into the one that you want with very
  4880. little effort, and the program to do so is often shorter and simpler than
  4881. you'd expect.")
  4882. (license (list license:expat license:cc-by3.0))))
  4883. (define-public pup
  4884. (let ((revision "1")
  4885. (commit "681d7bb639334bf485476f5872c5bdab10931f9a"))
  4886. (package
  4887. (name "pup")
  4888. (version (git-version "0.4.0" revision commit))
  4889. (source
  4890. (origin
  4891. (method git-fetch)
  4892. (uri (git-reference
  4893. (url "https://github.com/ericchiang/pup")
  4894. (commit commit)))
  4895. (file-name (git-file-name name version))
  4896. (sha256
  4897. (base32 "1hx1k0qlc1bq6gg5d4yprn4d7kvqzagg6mi5mvb39zdq6c4y17vr"))))
  4898. (build-system go-build-system)
  4899. (arguments
  4900. `(#:import-path "github.com/ericchiang/pup"))
  4901. (home-page "https://github.com/ericchiang/pup")
  4902. (synopsis "Parse HTML at the command line")
  4903. (description
  4904. "@command{pup} is a command line tool for processing HTML. It reads
  4905. from stdin, prints to stdout, and allows the user to filter parts of the page
  4906. using CSS selectors. Inspired by @command{jq}, @command{pup} aims to be a
  4907. fast and flexible way of exploring HTML from the terminal.")
  4908. (license license:expat))))
  4909. (define-public uhttpmock
  4910. (package
  4911. (name "uhttpmock")
  4912. (version "0.5.3")
  4913. (source
  4914. (origin
  4915. (method url-fetch)
  4916. (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
  4917. "uhttpmock-" version ".tar.xz"))
  4918. (sha256
  4919. (base32 "0bqizz69hxk8rn4z57asz1d45vizl1rj6i5k3rzxn2x3qcik514h"))))
  4920. (build-system glib-or-gtk-build-system)
  4921. (native-inputs
  4922. `(("gobject-introspection" ,gobject-introspection)
  4923. ;; For check phase.
  4924. ("glib-networking" ,glib-networking)
  4925. ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
  4926. ("pkg-config" ,pkg-config)))
  4927. (inputs
  4928. `(("libsoup" ,libsoup)))
  4929. (arguments
  4930. `(#:phases
  4931. (modify-phases %standard-phases
  4932. (add-before 'check 'set-home-for-tests
  4933. (lambda _
  4934. (setenv "HOME" "/tmp"))))))
  4935. (home-page "https://gitlab.com/groups/uhttpmock")
  4936. (synopsis "Library for mocking web service APIs which use HTTP or HTTPS")
  4937. (description
  4938. "Uhttpmock is a project for mocking web service APIs which use HTTP or
  4939. HTTPS. It provides a library, libuhttpmock, which implements recording and
  4940. playback of HTTP request/response traces.")
  4941. (license license:lgpl2.1+)))
  4942. (define-public woof
  4943. (package
  4944. (name "woof")
  4945. (version "2012-05-31")
  4946. (source (origin
  4947. (method url-fetch)
  4948. (uri (string-append
  4949. "http://www.home.unix-ag.org/simon/woof-"
  4950. version ".py"))
  4951. (sha256
  4952. (base32
  4953. "0wjmjhpg6xlid33yi59j47q2qadz20sijrqsjahj30vngz856hyq"))))
  4954. (build-system trivial-build-system)
  4955. (arguments
  4956. '(#:modules ((guix build utils))
  4957. #:builder
  4958. (begin
  4959. (use-modules (guix build utils))
  4960. (let* ((source (assoc-ref %build-inputs "source"))
  4961. (out (assoc-ref %outputs "out"))
  4962. (bin (string-append out "/bin"))
  4963. (python (assoc-ref %build-inputs "python")))
  4964. (mkdir-p bin)
  4965. (with-directory-excursion bin
  4966. (copy-file source "woof")
  4967. (patch-shebang "woof" (list (string-append python "/bin")))
  4968. (chmod "woof" #o555))
  4969. #t))))
  4970. (inputs `(("python" ,python-2)))
  4971. (home-page "http://www.home.unix-ag.org/simon/woof.html")
  4972. (synopsis "Single file web server")
  4973. (description "Woof (Web Offer One File) is a small simple web server that
  4974. can easily be invoked on a single file. Your partner can access the file with
  4975. tools they trust (e.g. wget).")
  4976. (license license:gpl2+)))
  4977. (define netsurf-buildsystem
  4978. (package
  4979. (name "netsurf-buildsystem")
  4980. (version "1.9")
  4981. (source
  4982. (origin
  4983. (method url-fetch)
  4984. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  4985. "buildsystem-" version ".tar.gz"))
  4986. (sha256
  4987. (base32
  4988. "0alsmaig9ln8dgllb3z63gq90fiz75jz0ic71fi0k0k898qix14k"))))
  4989. (build-system gnu-build-system)
  4990. (inputs `(("perl" ,perl)))
  4991. (arguments
  4992. '(#:make-flags (list (string-append "PREFIX=" %output))
  4993. #:tests? #f ;no tests
  4994. #:phases (modify-phases %standard-phases
  4995. (delete 'configure)
  4996. (delete 'build))))
  4997. (home-page "https://www.netsurf-browser.org")
  4998. (synopsis "Build system for the Netsurf project")
  4999. (description
  5000. "This package provides the shared build system for Netsurf project
  5001. libraries.")
  5002. (license license:expat)))
  5003. (define netsurf-buildsystem-arguments
  5004. `(#:make-flags `("COMPONENT_TYPE=lib-shared"
  5005. "CC=gcc" "BUILD_CC=gcc"
  5006. ,(string-append "PREFIX=" %output)
  5007. ,(string-append "NSSHARED="
  5008. (assoc-ref %build-inputs
  5009. "netsurf-buildsystem")
  5010. "/share/netsurf-buildsystem"))
  5011. #:test-target "test"
  5012. #:phases (modify-phases %standard-phases
  5013. (delete 'configure))))
  5014. (define-public libparserutils
  5015. (package
  5016. (name "libparserutils")
  5017. (version "0.2.4")
  5018. (source
  5019. (origin
  5020. (method url-fetch)
  5021. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5022. name "-" version "-src.tar.gz"))
  5023. (sha256
  5024. (base32
  5025. "1n2794y2l0c8nv8z2pxwfnbn882987ifmxjv60zdxkhcndhswarj"))))
  5026. (build-system gnu-build-system)
  5027. (native-inputs
  5028. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5029. ("pkg-config" ,pkg-config)
  5030. ("perl" ,perl))) ;for test harness
  5031. (arguments netsurf-buildsystem-arguments)
  5032. (home-page "https://www.netsurf-browser.org/projects/libparserutils/")
  5033. (synopsis "Parser building library")
  5034. (description
  5035. "LibParserUtils is a library for building efficient parsers, written in
  5036. C. It is developed as part of the NetSurf project.")
  5037. (license license:expat)))
  5038. (define-public hubbub
  5039. (package
  5040. (name "hubbub")
  5041. (version "0.3.7")
  5042. (source
  5043. (origin
  5044. (method url-fetch)
  5045. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5046. "libhubbub-" version "-src.tar.gz"))
  5047. (sha256
  5048. (base32
  5049. "1dimfyblmym98qa1b80c5jslv2zk8r44xbdrgrsrw1n9wr9y4yly"))
  5050. (patches (search-patches "hubbub-sort-entities.patch"))))
  5051. (build-system gnu-build-system)
  5052. (native-inputs
  5053. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5054. ("pkg-config" ,pkg-config)
  5055. ("doxygen" ,doxygen)
  5056. ("json-c" ,json-c-0.12) ; check whether json-c-0.12 can be removed
  5057. ("perl" ,perl)))
  5058. (propagated-inputs
  5059. `(("libparserutils" ,libparserutils))) ;for libhubbub.pc
  5060. (arguments netsurf-buildsystem-arguments)
  5061. (home-page "https://www.netsurf-browser.org/projects/hubbub/")
  5062. (synopsis "HTML5 compliant parsing library")
  5063. (description
  5064. "Hubbub is an HTML5 compliant parsing library, written in C, which can
  5065. parse both valid and invalid web content. It is developed as part of the
  5066. NetSurf project.")
  5067. (license license:expat)))
  5068. (define-public ikiwiki
  5069. (package
  5070. (name "ikiwiki")
  5071. (version "3.20200202.3")
  5072. (source
  5073. (origin
  5074. (method git-fetch)
  5075. (uri (git-reference
  5076. (url "git://git.ikiwiki.info/")
  5077. (commit version)))
  5078. (file-name (git-file-name name version))
  5079. (sha256
  5080. (base32
  5081. "0fphyqzlk9y8v9s89ypsmrnbhyymzrpc2w0liy0n4knc7kk2pabq"))
  5082. (snippet
  5083. '(begin
  5084. ;; The POT file requires write permission during the build
  5085. ;; phase.
  5086. (chmod "po/ikiwiki.pot" #o644)
  5087. #t))))
  5088. (build-system perl-build-system)
  5089. (arguments
  5090. `(#:phases
  5091. (modify-phases %standard-phases
  5092. (add-after 'patch-source-shebangs 'patch-Makefiles
  5093. (lambda _
  5094. (substitute* "Makefile.PL"
  5095. (("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)"))
  5096. (with-directory-excursion "po"
  5097. (substitute* "Makefile"
  5098. (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))
  5099. #t))
  5100. (add-before 'build 'set-modification-times
  5101. ;; The wiki '--refresh' steps, which are executed during
  5102. ;; the check phase, require recent timestamps on files in
  5103. ;; the 'doc' and 'underlays' directories.
  5104. (lambda _
  5105. (invoke "find" "doc" "underlays" "-type" "f" "-exec"
  5106. "touch" "{}" "+")
  5107. #t))
  5108. (add-before 'check 'pre-check
  5109. (lambda* (#:key inputs #:allow-other-keys)
  5110. ;; Six tests use IPC::Run. For these tests the PERL5LIB
  5111. ;; variable is needed in the runtime environment and also
  5112. ;; in the search path list in the setup file.
  5113. (substitute*
  5114. '("t/aggregate-file.t" "t/git-cgi.t" "t/git-untrusted.t"
  5115. "t/passwordauth.t" "t/relativity.t" "t/wrapper-environ.t")
  5116. (("(.*)\"perl\"(.*)$" _ prefix suffix)
  5117. (string-append prefix "qw(env), 'PERL5LIB='.$ENV{PERL5LIB}"
  5118. ", qw(perl)" suffix))
  5119. (("(.*) PERL5LIB=(.*) perl(.*)$" _ prefix middle suffix)
  5120. (string-append prefix "), 'PERL5LIB='.$ENV{PERL5LIB}.':"
  5121. middle "', qw(perl" suffix))
  5122. (("(.*)setup(.* )getcwd(.*)$" _ prefix middle suffix)
  5123. (string-append prefix "setup" middle
  5124. "$ENV{PERL5LIB}.':'.getcwd" suffix))
  5125. (("^ENV(.*): '(.*)$" _ middle suffix)
  5126. (string-append "ENV" middle
  5127. ": '$ENV{PERL5LIB}:" suffix)))
  5128. ;; XDG_DATA_DIRS is needed by the podcast.t test.
  5129. (setenv "XDG_DATA_DIRS"
  5130. (string-append (assoc-ref inputs "shared-mime-info")
  5131. "/share"))
  5132. ;; CC is needed by IkiWiki/Wrapper.pm.
  5133. (setenv "CC" "gcc")
  5134. #t))
  5135. (add-after 'install 'wrap-programs
  5136. (lambda* (#:key outputs #:allow-other-keys)
  5137. (let* ((out (assoc-ref outputs "out"))
  5138. (bin (string-append out "/bin/"))
  5139. (path (getenv "PERL5LIB")))
  5140. (for-each (lambda (file)
  5141. (wrap-program file
  5142. `("PERL5LIB" ":" prefix (,path))))
  5143. (find-files bin))
  5144. #t))))))
  5145. (native-inputs
  5146. `(("which" ,which)
  5147. ("gettext" ,gettext-minimal)
  5148. ("subversion" ,subversion)
  5149. ("git" ,git)
  5150. ("bazaar" ,bazaar)
  5151. ("cvs" ,cvs)
  5152. ("mercurial" ,mercurial)))
  5153. (inputs
  5154. `(("python" ,python-wrapper)
  5155. ("perl-authen-passphrase" ,perl-authen-passphrase)
  5156. ("perl-cgi-simple" ,perl-cgi-simple)
  5157. ("perl-db-file" ,perl-db-file)
  5158. ("perl-file-mimeinfo" ,perl-file-mimeinfo)
  5159. ("perl-html-tagset" ,perl-html-tagset)
  5160. ("perl-image-magick" ,perl-image-magick)
  5161. ("perl-ipc-run" ,perl-ipc-run)
  5162. ("perl-lwpx-paranoidagent" ,perl-lwpx-paranoidagent)
  5163. ("perl-xml-feed" ,perl-xml-feed)
  5164. ("perl-xml-sax" ,perl-xml-sax)
  5165. ("perl-xml-twig" ,perl-xml-twig)
  5166. ("perl-yaml-tiny" ,perl-yaml-tiny)
  5167. ("po4a" ,po4a)))
  5168. (propagated-inputs
  5169. `(("perl-cgi-formbuilder" ,perl-cgi-formbuilder)
  5170. ("perl-cgi-session" ,perl-cgi-session)
  5171. ("perl-html-parser" ,perl-html-parser)
  5172. ("perl-html-scrubber" ,perl-html-scrubber)
  5173. ("perl-html-template" ,perl-html-template)
  5174. ("perl-json" ,perl-json)
  5175. ("perl-mail-sendmail" ,perl-mail-sendmail)
  5176. ("perl-text-markdown-discount" ,perl-text-markdown-discount)
  5177. ("perl-timedate" ,perl-timedate)
  5178. ("perl-uri" ,perl-uri)
  5179. ("perl-xml-simple" ,perl-xml-simple)
  5180. ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
  5181. (home-page "https://ikiwiki.info/")
  5182. (synopsis "Wiki compiler, capable of generating HTML")
  5183. (description
  5184. "Ikiwiki is a wiki compiler, capable of generating a static set of web
  5185. pages, but also incorporating dynamic features like a web based editor and
  5186. commenting.")
  5187. (license license:gpl2+)))
  5188. (define-public libwapcaplet
  5189. (package
  5190. (name "libwapcaplet")
  5191. (version "0.4.3")
  5192. (source
  5193. (origin
  5194. (method url-fetch)
  5195. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5196. "libwapcaplet-" version "-src.tar.gz"))
  5197. (sha256
  5198. (base32
  5199. "0p0c2q9lsj4vs97aa7vjllfhw33zv3dpysdkjblzhib6dpfs2alv"))))
  5200. (build-system gnu-build-system)
  5201. (native-inputs
  5202. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5203. ("pkg-config" ,pkg-config)
  5204. ("check" ,check-0.14))) ;for tests
  5205. (arguments netsurf-buildsystem-arguments)
  5206. (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/")
  5207. (synopsis "String internment library")
  5208. (description
  5209. "LibWapcaplet provides a reference counted string internment system
  5210. designed to store small strings and allow rapid comparison of them. It is
  5211. developed as part of the Netsurf project.")
  5212. (license license:expat)))
  5213. (define-public libcss
  5214. (package
  5215. (name "libcss")
  5216. (version "0.9.1")
  5217. (source
  5218. (origin
  5219. (method url-fetch)
  5220. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5221. "libcss-" version "-src.tar.gz"))
  5222. (sha256
  5223. (base32
  5224. "1p66sdiiqm7w4jkq23hsf08khsnmq93hshh9f9m8sbirjdpf3p6j"))
  5225. (modules '((guix build utils)))
  5226. (snippet
  5227. '(begin
  5228. ;; This can be removed with the next release.
  5229. (substitute* "src/select/computed.c"
  5230. (("css_unit unit;") "css_unit unit = CSS_UNIT_PX;"))))))
  5231. (build-system gnu-build-system)
  5232. (native-inputs
  5233. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5234. ("pkg-config" ,pkg-config)
  5235. ("perl" ,perl)))
  5236. (propagated-inputs ;needed for libcss.pc
  5237. `(("libparserutils" ,libparserutils)
  5238. ("libwapcaplet" ,libwapcaplet)))
  5239. (arguments netsurf-buildsystem-arguments)
  5240. (home-page "https://www.netsurf-browser.org/projects/libcss/")
  5241. (synopsis "CSS parser and selection library")
  5242. (description
  5243. "LibCSS is a CSS (Cascading Style Sheet) parser and selection engine,
  5244. written in C. It is developed as part of the NetSurf project.")
  5245. (license license:expat)))
  5246. (define-public libdom
  5247. (package
  5248. (name "libdom")
  5249. (version "0.4.1")
  5250. (source
  5251. (origin
  5252. (method url-fetch)
  5253. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5254. "libdom-" version "-src.tar.gz"))
  5255. (sha256
  5256. (base32
  5257. "0jpg5hx3y0mdxk5szd47dyijqimd2321brbqk2620pp5f4j0gvlq"))))
  5258. (build-system gnu-build-system)
  5259. (native-inputs
  5260. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5261. ("pkg-config" ,pkg-config)
  5262. ("perl" ,perl) ;for test harness
  5263. ("perl-libxml" ,perl-libxml)
  5264. ("perl-switch" ,perl-switch)
  5265. ("perl-xml-xpath" ,perl-xml-xpath)))
  5266. (inputs
  5267. `(("libparserutils" ,libparserutils)
  5268. ("libwapcaplet" ,libwapcaplet)))
  5269. (propagated-inputs
  5270. `(("expat" ,expat) ;needed for headers and linking
  5271. ("hubbub" ,hubbub))) ;for libdom.pc
  5272. (arguments
  5273. `(#:tests? #f ;TODO: re-enable. tests take a looong time.
  5274. ,@netsurf-buildsystem-arguments))
  5275. (home-page "https://www.netsurf-browser.org/projects/libdom/")
  5276. (synopsis "Implementation of the W3C DOM")
  5277. (description
  5278. "LibDOM is an implementation of the W3C DOM, written in C. It is
  5279. developed as part of the NetSurf project.")
  5280. (license license:expat)))
  5281. (define-public libsvgtiny
  5282. (package
  5283. (name "libsvgtiny")
  5284. (version "0.1.7")
  5285. (source
  5286. (origin
  5287. (method url-fetch)
  5288. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5289. name "-" version "-src.tar.gz"))
  5290. (sha256
  5291. (base32
  5292. "10bpkmvfpydj74im3r6kqm9vnvgib6afy0alx71q5n0w5yawy39c"))))
  5293. (build-system gnu-build-system)
  5294. (native-inputs
  5295. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5296. ("pkg-config" ,pkg-config)
  5297. ("gperf" ,gperf-3.0)))
  5298. (inputs
  5299. `(("libwapcaplet" ,libwapcaplet)))
  5300. (propagated-inputs
  5301. `(("libdom" ,libdom))) ;for libsvgtiny.pc
  5302. (arguments netsurf-buildsystem-arguments)
  5303. (home-page "https://www.netsurf-browser.org/projects/libsvgtiny/")
  5304. (synopsis "Library for parsing SVG files")
  5305. (description
  5306. "Libsvgtiny takes some SVG as input and returns a list of paths and texts
  5307. which can be rendered easily, as defined in
  5308. @url{http://www.w3.org/TR/SVGMobile/}. It is developed as part of the NetSurf
  5309. project.")
  5310. (license license:expat)))
  5311. (define-public libnsbmp
  5312. (package
  5313. (name "libnsbmp")
  5314. (version "0.1.6")
  5315. (source
  5316. (origin
  5317. (method url-fetch)
  5318. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5319. name "-" version "-src.tar.gz"))
  5320. (sha256
  5321. (base32
  5322. "0krjg69a2amxjsahdgm3wmy9ngnyr3gfs2a1zhdlbvb0z1jr7i3r"))))
  5323. (build-system gnu-build-system)
  5324. (native-inputs
  5325. `(("netsurf-buildsystem" ,netsurf-buildsystem)))
  5326. (arguments netsurf-buildsystem-arguments)
  5327. (home-page "https://www.netsurf-browser.org/projects/libnsbmp/")
  5328. (synopsis "Decoding library for BMP and ICO files")
  5329. (description
  5330. "Libnsbmp is a decoding library for BMP and ICO image file formats,
  5331. written in C. It is developed as part of the NetSurf project.")
  5332. (license license:expat)))
  5333. (define-public libnsgif
  5334. (package
  5335. (name "libnsgif")
  5336. (version "0.2.1")
  5337. (source
  5338. (origin
  5339. (method url-fetch)
  5340. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5341. name "-" version "-src.tar.gz"))
  5342. (sha256
  5343. (base32
  5344. "0jwshypgmx16xlsbx3d8njk8a5khazlplca5mxd3rdbhrlsabbly"))))
  5345. (build-system gnu-build-system)
  5346. (native-inputs
  5347. `(("netsurf-buildsystem" ,netsurf-buildsystem)))
  5348. (arguments netsurf-buildsystem-arguments)
  5349. (home-page "https://www.netsurf-browser.org/projects/libnsgif/")
  5350. (synopsis "Decoding library for GIF files")
  5351. (description
  5352. "Libnsgif is a decoding library for the GIF image file format, written in
  5353. C. It is developed as part of the NetSurf project.")
  5354. (license license:expat)))
  5355. (define-public libnslog
  5356. (package
  5357. (name "libnslog")
  5358. (version "0.1.3")
  5359. (source
  5360. (origin
  5361. (method url-fetch)
  5362. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5363. "libnslog-" version "-src.tar.gz"))
  5364. (sha256
  5365. (base32
  5366. "1l2k0kdv9iv18svhv360vszjavhl4g09cp8a8yb719pgsylxr67w"))))
  5367. (build-system gnu-build-system)
  5368. (native-inputs
  5369. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5370. ("pkg-config" ,pkg-config)
  5371. ("check" ,check) ; For tests
  5372. ("bison" ,bison)
  5373. ("flex" ,flex)))
  5374. (arguments netsurf-buildsystem-arguments)
  5375. (home-page "https://www.netsurf-browser.org/")
  5376. (synopsis "Logging library")
  5377. (description
  5378. "Libnslog provides a category-based logging library which supports
  5379. complex logging filters, multiple log levels, and provides context through to
  5380. client applications. It is developed as part of the NetSurf project.")
  5381. (license license:expat)))
  5382. (define-public libnsutils
  5383. (package
  5384. (name "libnsutils")
  5385. (version "0.1.0")
  5386. (source
  5387. (origin
  5388. (method url-fetch)
  5389. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5390. name "-" version "-src.tar.gz"))
  5391. (sha256
  5392. (base32
  5393. "1w5fyy2i60a3v3if3iqcn9sy9sycx6966rcx53v85gja6hb6a33r"))))
  5394. (build-system gnu-build-system)
  5395. (native-inputs
  5396. `(("netsurf-buildsystem" ,netsurf-buildsystem)))
  5397. (arguments netsurf-buildsystem-arguments)
  5398. (home-page "https://www.netsurf-browser.org/")
  5399. (synopsis "Utility library for NetSurf")
  5400. (description
  5401. "Libnsutils provides a small number of useful utility routines. It is
  5402. developed as part of the NetSurf project.")
  5403. (license license:expat)))
  5404. (define-public libnspsl
  5405. (package
  5406. (name "libnspsl")
  5407. (version "0.1.6")
  5408. (source
  5409. (origin
  5410. (method url-fetch)
  5411. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5412. "libnspsl-" version "-src.tar.gz"))
  5413. (sha256
  5414. (base32
  5415. "02q28n5i6fwqcz1nn167rb71k1q95mx38mfah6zi1lvqrc2q5ifk"))))
  5416. (build-system gnu-build-system)
  5417. (native-inputs
  5418. `(("netsurf-buildsystem" ,netsurf-buildsystem)))
  5419. (arguments netsurf-buildsystem-arguments)
  5420. (home-page "https://www.netsurf-browser.org/")
  5421. (synopsis "Library to generate a static Public Suffix List")
  5422. (description
  5423. "Libnspsl is a library to generate a static code representation of the
  5424. Public Suffix List. It is developed as part of the NetSurf project.")
  5425. (license license:expat)))
  5426. (define-public nsgenbind
  5427. (package
  5428. (name "nsgenbind")
  5429. (version "0.8")
  5430. (source
  5431. (origin
  5432. (method url-fetch)
  5433. (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
  5434. "nsgenbind-" version "-src.tar.gz"))
  5435. (sha256
  5436. (base32
  5437. "1cqwgwca49jvmijwiyaab2bwxicgxdrnlpinf8kp3nha02nm73ad"))))
  5438. (build-system gnu-build-system)
  5439. (native-inputs
  5440. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5441. ("bison" ,bison)
  5442. ("flex" ,flex)))
  5443. (arguments
  5444. (substitute-keyword-arguments netsurf-buildsystem-arguments
  5445. ((#:make-flags flags)
  5446. `(delete "COMPONENT_TYPE=lib-shared" ,flags))))
  5447. (home-page "https://www.netsurf-browser.org/")
  5448. (synopsis "Generate JavaScript to DOM bindings")
  5449. (description
  5450. "@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from
  5451. w3c webidl files and a binding configuration file.")
  5452. (license license:expat)))
  5453. (define-public netsurf
  5454. (package
  5455. (name "netsurf")
  5456. (version "3.10")
  5457. (source
  5458. (origin
  5459. (method url-fetch)
  5460. (uri (string-append "https://download.netsurf-browser.org/netsurf/"
  5461. "releases/source/netsurf-" version "-src.tar.gz"))
  5462. (sha256
  5463. (base32
  5464. "0plra64c5xyiw12yx2q13brxsv8apmany97zqa2lcqckw4ll8j1n"))
  5465. (patches (search-patches "netsurf-system-utf8proc.patch"
  5466. "netsurf-y2038-tests.patch"
  5467. "netsurf-longer-test-timeout.patch"
  5468. "netsurf-message-timestamp.patch"))))
  5469. (build-system glib-or-gtk-build-system)
  5470. (native-inputs
  5471. `(("netsurf-buildsystem" ,netsurf-buildsystem)
  5472. ("nsgenbind" ,nsgenbind)
  5473. ("libidn" ,libidn) ;only for tests
  5474. ("check" ,check)
  5475. ("perl" ,perl)
  5476. ("perl-html-parser" ,perl-html-parser)
  5477. ("pkg-config" ,pkg-config)
  5478. ("xxd" ,xxd)))
  5479. (inputs
  5480. `(("curl" ,curl)
  5481. ("gtk+" ,gtk+)
  5482. ("openssl" ,openssl)
  5483. ("utf8proc" ,utf8proc)
  5484. ("libpng" ,libpng)
  5485. ("libjpeg" ,libjpeg-turbo)
  5486. ("libcss" ,libcss)
  5487. ("libdom" ,libdom)
  5488. ("libnsbmp" ,libnsbmp)
  5489. ("libnsgif" ,libnsgif)
  5490. ("libnslog" ,libnslog)
  5491. ("libnspsl" ,libnspsl)
  5492. ("libnsutils" ,libnsutils)
  5493. ("libsvgtiny" ,libsvgtiny)
  5494. ("miscfiles" ,miscfiles)))
  5495. (arguments
  5496. `(#:make-flags `("CC=gcc" "BUILD_CC=gcc"
  5497. "TARGET=gtk3"
  5498. ,(string-append "PREFIX=" %output)
  5499. ,(string-append "NSSHARED="
  5500. (assoc-ref %build-inputs
  5501. "netsurf-buildsystem")
  5502. "/share/netsurf-buildsystem"))
  5503. #:test-target "test"
  5504. #:modules ((ice-9 rdelim)
  5505. (ice-9 match)
  5506. (srfi srfi-1)
  5507. (sxml simple)
  5508. ,@%glib-or-gtk-build-system-modules)
  5509. #:phases
  5510. (modify-phases %standard-phases
  5511. (delete 'configure)
  5512. (add-after 'build 'adjust-welcome
  5513. (lambda _
  5514. (substitute* "frontends/gtk/res/welcome.html"
  5515. ;; Close some XHTML tags.
  5516. (("<(img|input)([^>]*)>" _ tag contents)
  5517. (string-append "<" tag contents " />"))
  5518. ;; Increase freedom.
  5519. ((" open source") ", free software")
  5520. ;; Prefer a more privacy-respecting default search engine.
  5521. (("www.google.co.uk") "www.duckduckgo.com/html")
  5522. (("Google Search") "DuckDuckGo Search")
  5523. (("name=\"btnG\"") ""))
  5524. ;; Remove default links so it doesn't seem we're endorsing them.
  5525. (with-atomic-file-replacement "frontends/gtk/res/welcome.html"
  5526. (lambda (in out)
  5527. ;; Leave the DOCTYPE header as is.
  5528. (display (read-line in 'concat) out)
  5529. (sxml->xml
  5530. (let rec ((sxml (xml->sxml in
  5531. #:default-entity-handler
  5532. (lambda (port name)
  5533. (string-append "<ENTITY>"
  5534. (symbol->string name)
  5535. "</ENTITY>")))))
  5536. ;; We'd like to use sxml-match here, but it can't
  5537. ;; match against generic tag symbols...
  5538. (match sxml
  5539. (`(div (@ (class "links")) . ,rest)
  5540. '())
  5541. (`(ENTITY ,ent)
  5542. `(*ENTITY* ,ent))
  5543. ((x ...)
  5544. (map rec x))
  5545. (x x)))
  5546. out)))
  5547. #t))
  5548. (add-before 'check 'patch-check
  5549. (lambda* (#:key inputs #:allow-other-keys)
  5550. (substitute* '("test/bloom.c" "test/hashtable.c")
  5551. (("/usr/share/dict/words")
  5552. (search-input-file inputs "/share/web2")))
  5553. #t))
  5554. (add-after 'install 'install-more
  5555. (lambda* (#:key outputs #:allow-other-keys)
  5556. (let* ((out (assoc-ref outputs "out"))
  5557. (desktop (string-append out "/share/applications/"
  5558. "netsurf.desktop")))
  5559. (mkdir-p (dirname desktop))
  5560. (copy-file "frontends/gtk/res/netsurf-gtk.desktop"
  5561. desktop)
  5562. (substitute* desktop
  5563. (("netsurf-gtk") (string-append out "/bin/netsurf-gtk3"))
  5564. (("netsurf.png") (string-append out "/share/netsurf/"
  5565. "netsurf.xpm")))
  5566. (install-file "docs/netsurf-gtk.1"
  5567. (string-append out "/share/man/man1/"))
  5568. #t))))))
  5569. (home-page "https://www.netsurf-browser.org")
  5570. (synopsis "Web browser")
  5571. (description
  5572. "NetSurf is a lightweight web browser that has its own layout and
  5573. rendering engine entirely written from scratch. It is small and capable of
  5574. handling many of the web standards in use today.")
  5575. (license license:gpl2+)))
  5576. (define-public surfraw
  5577. (package
  5578. (name "surfraw")
  5579. (version "2.3.0")
  5580. (source
  5581. (origin
  5582. (method url-fetch)
  5583. (uri (string-append "https://gitlab.com/surfraw/Surfraw/uploads/"
  5584. "2de827b2786ef2fe43b6f07913ca7b7f/"
  5585. "surfraw-" version ".tar.gz"))
  5586. (sha256
  5587. (base32 "099nbif0x5cbcf18snc58nx1a3q7z0v9br9p2jiq9pcc7ic2015d"))))
  5588. (build-system gnu-build-system)
  5589. (arguments
  5590. `(#:phases
  5591. (modify-phases %standard-phases
  5592. (add-before 'configure 'patch-perl
  5593. (lambda* (#:key inputs #:allow-other-keys)
  5594. (let ((perl (assoc-ref inputs "perl")))
  5595. (substitute* "surfraw.IN"
  5596. (("perl -e")
  5597. (string-append perl "/bin/perl -e")))
  5598. #t)))
  5599. (add-after 'install 'compress-elvi.1sr
  5600. (lambda* (#:key outputs #:allow-other-keys)
  5601. ;; The manpages of the elvis are symlinks to elvi.1sr.gz
  5602. ;; but elvi.1sr does not get compressed by our manpage phase.
  5603. (let* ((out (assoc-ref %outputs "out"))
  5604. (man (string-append out "/share/man/man1")))
  5605. (with-directory-excursion man
  5606. (invoke "gzip" "elvi.1sr"))))))))
  5607. (inputs
  5608. `(("perl" ,perl)
  5609. ("perl-www-opensearch" ,perl-www-opensearch)
  5610. ("perl-html-parser" ,perl-html-parser)
  5611. ("perl-libwww" ,perl-libwww)))
  5612. (synopsis "Unix command line interface to the www")
  5613. (description "Surfraw (Shell Users' Revolutionary Front Rage Against the Web)
  5614. provides a unix command line interface to a variety of popular www search engines
  5615. and similar services.")
  5616. (home-page "https://surfraw.alioth.debian.org/")
  5617. (license license:public-domain)))
  5618. (define-public darkhttpd
  5619. (package
  5620. (name "darkhttpd")
  5621. (version "1.12")
  5622. (source
  5623. (origin
  5624. (method url-fetch)
  5625. (uri (string-append "https://unix4lyfe.org/darkhttpd/darkhttpd-"
  5626. version ".tar.bz2"))
  5627. (sha256
  5628. (base32
  5629. "0185wlyx4iqiwfigp1zvql14zw7gxfacncii3d15yaxk4av1f155"))))
  5630. (build-system gnu-build-system)
  5631. (arguments
  5632. `(#:make-flags '("CC=gcc")
  5633. #:tests? #f ; No test suite
  5634. #:phases
  5635. (modify-phases %standard-phases
  5636. (delete 'configure)
  5637. (replace 'install
  5638. (lambda* (#:key outputs #:allow-other-keys)
  5639. (install-file "darkhttpd"
  5640. (string-append (assoc-ref outputs "out")
  5641. "/bin"))
  5642. #t)))))
  5643. (synopsis "Simple static web server")
  5644. (description "darkhttpd is a simple static web server. It is
  5645. standalone and does not need inetd or ucspi-tcp. It does not need any
  5646. config files---you only have to specify the www root.")
  5647. (home-page "https://unix4lyfe.org/darkhttpd/")
  5648. (license license:isc)))
  5649. (define-public goaccess
  5650. (package
  5651. (name "goaccess")
  5652. (version "1.5.1")
  5653. (source (origin
  5654. (method url-fetch)
  5655. (uri (string-append "http://tar.goaccess.io/goaccess-"
  5656. version ".tar.gz"))
  5657. (sha256
  5658. (base32
  5659. "03wp75n1krv8g643q00gcv1ikmzwwh8jjqmph0wxww1bwrw7whc8"))
  5660. (modules '((guix build utils)))
  5661. (snippet '(begin
  5662. (substitute* "src/error.h"
  5663. (("__DATE__") "\"1970-01-01\"")
  5664. (("__TIME__") "\"00:00:00\""))
  5665. #t))))
  5666. (build-system gnu-build-system)
  5667. (inputs
  5668. ;; TODO: Add dependency on geoip-tools.
  5669. `(("glib" ,glib)
  5670. ("ncurses" ,ncurses)))
  5671. (native-inputs
  5672. `(("pkg-config" ,pkg-config)))
  5673. (home-page "https://goaccess.io")
  5674. (synopsis "Analyze Web server logs in real time")
  5675. (description
  5676. "GoAccess is a real-time web log analyzer and interactive viewer that
  5677. runs in a terminal or through your browser. It provides fast and valuable
  5678. HTTP statistics for system administrators that require a visual server report
  5679. on the fly.")
  5680. (license license:x11)))
  5681. (define-public hitch
  5682. (package
  5683. (name "hitch")
  5684. (version "1.7.0")
  5685. (home-page "https://hitch-tls.org/")
  5686. (source (origin
  5687. (method url-fetch)
  5688. (uri (string-append home-page "source/hitch-" version ".tar.gz"))
  5689. (sha256
  5690. (base32
  5691. "1i75giwyr66ip8xsvk3gg5xdbxnmcabgxz8dqi06c58mw7qzhzn9"))))
  5692. (build-system gnu-build-system)
  5693. (arguments
  5694. `(#:phases (modify-phases %standard-phases
  5695. (add-before 'check 'pre-check
  5696. (lambda _
  5697. ;; Most tests attempts to access hitch-tls.org which is
  5698. ;; unavailable in the build container. Run them against
  5699. ;; a dummy local web server instead.
  5700. (for-each (lambda (test)
  5701. (substitute* test
  5702. (("\\[hitch-tls\\.org\\]:80")
  5703. "[localhost]:8000")))
  5704. (find-files "src/tests" "\\.sh$"))
  5705. (system "python3 -m http.server &")
  5706. ;; The build container does not reap zombie processes,
  5707. ;; causing stop_hitch to hang indefinitely while waiting
  5708. ;; for the process to terminate because 'kill -0' never
  5709. ;; succeeds. Use a different test to see whether the
  5710. ;; process has shut down.
  5711. (substitute* "src/tests/hitch_test.sh"
  5712. (("kill -0 \"\\$HITCH_PID\"")
  5713. "$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')"))
  5714. #t)))))
  5715. (native-inputs
  5716. `(("pkg-config" ,pkg-config)
  5717. ;; For tests.
  5718. ("curl" ,curl)
  5719. ("egrep" ,grep)
  5720. ("lsof" ,lsof)
  5721. ("procps" ,procps)
  5722. ("python" ,python)))
  5723. (inputs
  5724. `(("libev" ,libev)
  5725. ("openssl" ,openssl)))
  5726. (synopsis "Scalable TLS proxy")
  5727. (description
  5728. "Hitch is a performant TLS proxy based on @code{libev}. It terminates
  5729. SSL/TLS connections and forwards the unencrypted traffic to a backend such
  5730. as a web server. It is designed to handle many thousand connections on
  5731. multicore machines.")
  5732. (license license:bsd-2)))
  5733. (define-public httptunnel
  5734. (package
  5735. (name "httptunnel")
  5736. (version "3.3")
  5737. (source
  5738. (origin
  5739. (method url-fetch)
  5740. (uri (string-append "http://www.nocrew.org/software/httptunnel/"
  5741. name "-" version ".tar.gz"))
  5742. (sha256
  5743. (base32
  5744. "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql"))
  5745. (modules '((guix build utils)))
  5746. (snippet '(begin
  5747. ;; Remove non-free IETF RFC documentation.
  5748. (delete-file-recursively "doc")
  5749. #t))))
  5750. (build-system gnu-build-system)
  5751. (arguments
  5752. `(#:phases
  5753. (modify-phases %standard-phases
  5754. ;; The default configure phase tries to pass environment variables as
  5755. ;; command-line arguments, which confuses the ./configure script.
  5756. (replace 'configure
  5757. (lambda* (#:key outputs #:allow-other-keys)
  5758. (let* ((out (assoc-ref outputs "out")))
  5759. (setenv "CONFIG_SHELL" (which "bash"))
  5760. (invoke "./configure"
  5761. (string-append "--prefix=" out))))))))
  5762. (home-page "http://www.nocrew.org/software/httptunnel.html")
  5763. (synopsis "Tunnel data connections through HTTP requests")
  5764. (description "httptunnel creates a bidirectional virtual data connection
  5765. tunnelled through HTTP (HyperText Transfer Protocol) requests. This can be
  5766. useful for users behind restrictive firewalls. As long as Web traffic is
  5767. allowed, even through a HTTP-only proxy, httptunnel can be combined with other
  5768. tools like SSH (Secure Shell) to reach the outside world.")
  5769. (license license:gpl2+)))
  5770. (define-public stunnel
  5771. (package
  5772. (name "stunnel")
  5773. (version "5.60")
  5774. (source
  5775. (origin
  5776. (method url-fetch)
  5777. (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
  5778. version ".tar.gz"))
  5779. (sha256
  5780. (base32 "0zbqiydyz9dvfg3axh18a42v6j3xvnwjbd03kgm1z1i12mdpcpf4"))))
  5781. (build-system gnu-build-system)
  5782. (native-inputs
  5783. ;; For tests.
  5784. `(("iproute" ,iproute)
  5785. ("netcat" ,netcat)
  5786. ("procps" ,procps)))
  5787. (inputs `(("openssl" ,openssl)))
  5788. (arguments
  5789. `(#:configure-flags
  5790. (list (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl")))
  5791. #:phases
  5792. (modify-phases %standard-phases
  5793. (add-after 'unpack 'patch-output-directories
  5794. (lambda _
  5795. ;; Some (not all) Makefiles have a hard-coded incorrect docdir.
  5796. (substitute* (list "Makefile.in"
  5797. "doc/Makefile.in"
  5798. "tools/Makefile.in")
  5799. (("/doc/stunnel")
  5800. (string-append "/doc/" ,name "-" ,version)))))
  5801. (add-before 'check 'patch-tests
  5802. (lambda _
  5803. (substitute* "tests/make_test"
  5804. (("/bin/sh ")
  5805. (string-append (which "sh") " ")))
  5806. ;; This test requires networking.
  5807. (delete-file "tests/recipes/055_socket_closed")))
  5808. (add-after 'install 'prune-documentation
  5809. (lambda* (#:key outputs #:allow-other-keys)
  5810. (let* ((out (assoc-ref outputs "out"))
  5811. (doc (string-append out "/share/doc/" ,name "-" ,version)))
  5812. (for-each delete-file (find-files doc "^INSTALL"))))))))
  5813. (home-page "https://www.stunnel.org")
  5814. (synopsis "TLS proxy for clients or servers")
  5815. (description "Stunnel is a proxy designed to add TLS encryption
  5816. functionality to existing clients and servers without any changes in the
  5817. programs' code. Its architecture is optimized for security, portability, and
  5818. scalability (including load-balancing), making it suitable for large
  5819. deployments.")
  5820. (license license:gpl2+)))
  5821. (define-public varnish
  5822. (package
  5823. (name "varnish")
  5824. (home-page "https://varnish-cache.org/")
  5825. (version "7.0.0")
  5826. (source (origin
  5827. (method url-fetch)
  5828. (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
  5829. (sha256
  5830. (base32
  5831. "11z0pa618lh925ih67wmp1gqk7i46l486j4spjy71g1n3w5mqylc"))))
  5832. (build-system gnu-build-system)
  5833. (arguments
  5834. `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
  5835. (string-append "CC=" ,(cc-for-target))
  5836. ;; Use absolute path of GCC so it's found at runtime.
  5837. (string-append "PTHREAD_CC="
  5838. (assoc-ref %build-inputs "gcc")
  5839. "/bin/gcc")
  5840. "--localstatedir=/var")
  5841. #:phases
  5842. (modify-phases %standard-phases
  5843. (add-after 'unpack 'use-absolute-file-names
  5844. (lambda* (#:key inputs #:allow-other-keys)
  5845. (let* ((bash (assoc-ref inputs "bash-minimal"))
  5846. (sh (string-append bash "/bin/sh"))
  5847. (coreutils (assoc-ref inputs "coreutils"))
  5848. (rm (string-append coreutils "/bin/rm")))
  5849. (substitute* '("bin/varnishtest/vtc_varnish.c"
  5850. "bin/varnishtest/vtc_process.c"
  5851. "bin/varnishtest/vtc_haproxy.c"
  5852. "bin/varnishtest/tests/u00014.vtc"
  5853. "bin/varnishd/mgt/mgt_vcc.c")
  5854. (("/bin/sh") sh))
  5855. (substitute* "bin/varnishd/mgt/mgt_shmem.c"
  5856. (("rm -rf") (string-append rm " -rf")))
  5857. (substitute* "bin/varnishtest/vtc_main.c"
  5858. (("/bin/rm") rm)))))
  5859. (add-before 'install 'patch-Makefile
  5860. (lambda _
  5861. (substitute* "Makefile"
  5862. ;; Do not create /var/varnish during install.
  5863. (("^install-data-am: install-data-local") "install-data-am: "))))
  5864. (add-after 'install 'wrap-varnishd
  5865. ;; Varnish uses GCC to compile VCL, so wrap it with required GCC
  5866. ;; environment variables to avoid propagating them to profiles.
  5867. (lambda* (#:key inputs outputs #:allow-other-keys)
  5868. (let* ((out (assoc-ref outputs "out"))
  5869. (varnishd (string-append out "/sbin/varnishd"))
  5870. (PATH (string-append (assoc-ref inputs "binutils") "/bin"))
  5871. (LIBRARY_PATH (string-append (assoc-ref inputs "libc") "/lib")))
  5872. (wrap-program varnishd
  5873. ;; Add binutils to PATH so gcc finds the 'as' executable.
  5874. `("PATH" ":" prefix (,PATH))
  5875. ;; Make sure 'crti.o' et.al is found.
  5876. `("LIBRARY_PATH" ":" prefix (,LIBRARY_PATH)))))))))
  5877. (native-inputs
  5878. `(("pkg-config" ,pkg-config)
  5879. ("python-sphinx" ,python-sphinx)
  5880. ("rst2man" ,python-docutils)))
  5881. (inputs
  5882. `(("bash-minimal" ,bash-minimal)
  5883. ("coreutils" ,coreutils)
  5884. ("jemalloc" ,jemalloc)
  5885. ("ncurses" ,ncurses)
  5886. ("pcre2" ,pcre2)
  5887. ("python" ,python)
  5888. ("readline" ,readline)))
  5889. (synopsis "Web application accelerator")
  5890. (description
  5891. "Varnish is a high-performance HTTP accelerator. It acts as a caching
  5892. reverse proxy and load balancer. You install it in front of any server that
  5893. speaks HTTP and configure it to cache the contents through an extensive
  5894. configuration language.")
  5895. (license (list license:bsd-2 ;main distribution
  5896. license:zlib ;lib/libvgz/*
  5897. license:public-domain ;bin/varnishncsa/as64.c, include/miniobj.h
  5898. license:bsd-3)))) ;include/vqueue.h, lib/libvarnishcompat/daemon.c
  5899. (define-public varnish-modules
  5900. (package
  5901. (name "varnish-modules")
  5902. (home-page "https://github.com/varnish/varnish-modules")
  5903. (version "0.19.0")
  5904. (source (origin
  5905. (method git-fetch)
  5906. (uri (git-reference (url home-page) (commit version)))
  5907. (file-name (git-file-name name version))
  5908. (sha256
  5909. (base32
  5910. "0qq5g6bbd1a1ml1wk8jj9z39a899jzqbf7aizr3pvyz0f4kz8mis"))))
  5911. (build-system gnu-build-system)
  5912. (native-inputs
  5913. `(("pkg-config" ,pkg-config)
  5914. ;; For bootstrapping.
  5915. ("autoconf" ,autoconf)
  5916. ("automake" ,automake)
  5917. ("libtool" ,libtool)
  5918. ;; For generating manuals.
  5919. ("rst2man" ,python-docutils)))
  5920. (inputs
  5921. `(("python" ,python)
  5922. ("varnish" ,varnish)))
  5923. (synopsis "Collection of Varnish modules")
  5924. (description
  5925. "This package provides a collection of modules (@dfn{vmods}) for the Varnish
  5926. cache server, extending the @acronym{VCL, Varnish Configuration Language} with
  5927. additional capabilities.")
  5928. (license license:bsd-2)))
  5929. (define-public xinetd
  5930. (package
  5931. (name "xinetd")
  5932. ;; This is the maintenance fork currently used by openSUSE and Debian.
  5933. (version "2.3.15.4")
  5934. (source
  5935. (origin
  5936. (method git-fetch)
  5937. (uri (git-reference
  5938. (url "https://github.com/openSUSE/xinetd")
  5939. (commit version)))
  5940. (file-name (git-file-name name version))
  5941. (sha256
  5942. (base32 "0lrp3lcj6azhjplwxws2rx40bkyp6i6bp7n77ndcisb7ninad30q"))))
  5943. (build-system gnu-build-system)
  5944. (arguments
  5945. `(#:configure-flags '("--with-loadavg")
  5946. #:tests? #f)) ; no tests
  5947. (native-inputs
  5948. `(("autoconf" ,autoconf)
  5949. ("automake" ,automake)
  5950. ("libtool" ,libtool)
  5951. ("pkg-config" ,pkg-config)))
  5952. (home-page "https://github.com/openSUSE/xinetd")
  5953. (synopsis "Internet services daemon")
  5954. (description "@code{xinetd}, a more secure replacement for @code{inetd},
  5955. listens for incoming requests over a network and launches the appropriate
  5956. service for that request. Requests are made using port numbers as identifiers
  5957. and xinetd usually launches another daemon to handle the request. It can be
  5958. used to start services with both privileged and non-privileged port numbers.")
  5959. (license (license:fsf-free "file://COPYRIGHT"))))
  5960. (define-public tidy-html
  5961. (package
  5962. (name "tidy-html")
  5963. (version "5.7.28")
  5964. (source
  5965. (origin
  5966. (method git-fetch)
  5967. (uri (git-reference
  5968. (url "https://github.com/htacg/tidy-html5")
  5969. (commit version)))
  5970. (file-name (git-file-name name version))
  5971. (sha256
  5972. (base32
  5973. "01k5sqwgcsr26i8031v1yr2r8qcy9a5w7sj800660haszgfbjz2f"))))
  5974. (build-system cmake-build-system)
  5975. (outputs '("out"
  5976. "static")) ; 1.3MiB of .a files
  5977. (arguments
  5978. `(#:tests? #f ; no tests available
  5979. #:build-type "Release"
  5980. #:phases
  5981. (modify-phases %standard-phases
  5982. (add-after 'install 'move-static-libraries
  5983. (lambda* (#:key outputs #:allow-other-keys)
  5984. ;; Move static libraries to the "static" output.
  5985. (let* ((out (assoc-ref outputs "out"))
  5986. (lib (string-append out "/lib"))
  5987. (static (assoc-ref outputs "static"))
  5988. (slib (string-append static "/lib")))
  5989. (mkdir-p slib)
  5990. (for-each (lambda (file)
  5991. (install-file file slib)
  5992. (delete-file file))
  5993. (find-files lib "\\.a$"))
  5994. #t))))))
  5995. (native-inputs
  5996. `(("libxslt" ,libxslt)))
  5997. (home-page "http://www.html-tidy.org/")
  5998. (synopsis "HTML Tidy with HTML5 support")
  5999. (description
  6000. "Tidy is a console application which corrects and cleans up
  6001. HTML and XML documents by fixing markup errors and upgrading
  6002. legacy code to modern standards.
  6003. Tidy also provides @code{libtidy}, a C static and dynamic library that
  6004. developers can integrate into their applications to make use of the
  6005. functions of Tidy.")
  6006. (license license:bsd-3)))
  6007. (define-public hiawatha
  6008. (package
  6009. (name "hiawatha")
  6010. (version "10.11")
  6011. (source
  6012. (origin
  6013. (method url-fetch)
  6014. (uri (string-append "https://www.hiawatha-webserver.org/files/"
  6015. "hiawatha-" version ".tar.gz"))
  6016. (modules '((guix build utils)))
  6017. (snippet '(begin
  6018. ;; We use packaged libraries, so delete the bundled copies.
  6019. (for-each delete-file-recursively
  6020. (list "extra/nghttp2.tgz" "mbedtls"))
  6021. #t))
  6022. (sha256
  6023. (base32 "09wpgilbv13zal71v9lbsqr8c3fignygadykpd1p1pb8blb5vn3r"))))
  6024. (build-system cmake-build-system)
  6025. (arguments
  6026. `(#:tests? #f ; no tests included
  6027. #:configure-flags (list (string-append "-DUSE_SYSTEM_MBEDTLS=on")
  6028. (string-append "-DENABLE_HTTP2=on")
  6029. (string-append "-DUSE_SYSTEM_NGHTTP2=on")
  6030. (string-append "-DENABLE_TOMAHAWK=on")
  6031. (string-append "-DLOG_DIR=/var/log/hiawatha")
  6032. (string-append "-DPID_DIR=/run")
  6033. (string-append "-DWEBROOT_DIR="
  6034. (assoc-ref %outputs "out")
  6035. "/share/hiawatha/html")
  6036. (string-append "-DWORK_DIR=/var/lib/hiawatha"))
  6037. #:phases
  6038. (modify-phases %standard-phases
  6039. (add-after 'unpack 'install-no-empty-directories
  6040. (lambda _
  6041. (substitute* "CMakeLists.txt"
  6042. (("install\\(DIRECTORY DESTINATION" match)
  6043. (string-append "#" match)))
  6044. #t))
  6045. (add-after 'install 'wrap
  6046. (lambda* (#:key inputs outputs #:allow-other-keys)
  6047. ;; Make sure 'hiawatha' finds 'mbedtls'.
  6048. (let* ((out (assoc-ref outputs "out"))
  6049. (sbin (string-append out "/sbin"))
  6050. (mbed (assoc-ref inputs "mbedtls-apache")))
  6051. (wrap-program (string-append sbin "/hiawatha")
  6052. `("PATH" ":" prefix (,mbed)))))))))
  6053. (inputs
  6054. ;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha".
  6055. `(("libxslt" ,libxslt)
  6056. ("libxml2" ,libxml2)
  6057. ("mbedtls-apache" ,mbedtls-for-hiawatha)
  6058. ("nghttp2" ,nghttp2 "lib")
  6059. ("zlib" ,zlib)))
  6060. (home-page "https://www.hiawatha-webserver.org")
  6061. (synopsis "Webserver with focus on security")
  6062. (description
  6063. "Hiawatha has been written with security in mind.
  6064. Features include the ability to stop SQL injections, XSS and CSRF attacks and
  6065. exploit attempts.")
  6066. (license license:gpl2)))
  6067. (define-public python-httpbin
  6068. (package
  6069. (name "python-httpbin")
  6070. (version "0.5.0")
  6071. (source
  6072. (origin
  6073. (method url-fetch)
  6074. (uri (pypi-uri "httpbin" version))
  6075. (sha256
  6076. (base32
  6077. "1dc92lnk846hpilslrqnr63x55cxll4qx88gif8fm521gv9cbyvr"))))
  6078. (build-system python-build-system)
  6079. (propagated-inputs
  6080. `(("python-decorator" ,python-decorator)
  6081. ("python-flask" ,python-flask)
  6082. ("python-itsdangerous" ,python-itsdangerous)
  6083. ("python-markupsafe" ,python-markupsafe)
  6084. ("python-six" ,python-six)))
  6085. (home-page "https://github.com/Runscope/httpbin")
  6086. (synopsis "HTTP request and response service")
  6087. (description "Testing an HTTP Library can become difficult sometimes.
  6088. @code{RequestBin} is fantastic for testing POST requests, but doesn't let you control the
  6089. response. This exists to cover all kinds of HTTP scenarios. All endpoint responses are
  6090. JSON-encoded.")
  6091. (license license:isc)))
  6092. (define-public python-pytest-httpbin
  6093. (package
  6094. (name "python-pytest-httpbin")
  6095. (version "0.2.3")
  6096. (source
  6097. (origin
  6098. (method url-fetch)
  6099. (uri (pypi-uri "pytest-httpbin" version))
  6100. (sha256
  6101. (base32
  6102. "1y0v2v7xpzpyd4djwp7ad8ifnlxp8r1y6dfbxg5ckzvllkgridn5"))))
  6103. (build-system python-build-system)
  6104. (propagated-inputs
  6105. `(("python-six" ,python-six)
  6106. ("python-httpbin" ,python-httpbin)
  6107. ("python-pytest" ,python-pytest)))
  6108. (home-page
  6109. "https://github.com/kevin1024/pytest-httpbin")
  6110. (synopsis
  6111. "Test your HTTP library against a local copy of httpbin")
  6112. (description
  6113. "@code{Pytest-httpbin} creates a @code{pytest} fixture that is dependency-injected
  6114. into your tests. It automatically starts up a HTTP server in a separate thread running
  6115. @code{httpbin} and provides your test with the URL in the fixture.")
  6116. (license license:expat)))
  6117. (define-public http-parser
  6118. (let ((commit "ec8b5ee63f0e51191ea43bb0c6eac7bfbff3141d")
  6119. (revision "1"))
  6120. (package
  6121. (name "http-parser")
  6122. (version (git-version "2.9.4" revision commit))
  6123. (home-page "https://github.com/nodejs/http-parser")
  6124. (source
  6125. (origin
  6126. (method git-fetch)
  6127. (uri (git-reference (url home-page)
  6128. (commit commit)))
  6129. (sha256
  6130. (base32 "0f297hrbx0kvy3qwgm9rhmbnjww6iljlcz9grsc9d4km1qj1071i"))
  6131. (file-name (git-file-name name version))
  6132. (patches
  6133. (append
  6134. (search-patches "http-parser-CVE-2020-8287.patch")
  6135. (list
  6136. (origin
  6137. ;; Treat an empty port (e.g. `http://hostname:/`) when parsing
  6138. ;; URLs as if no port were specified. This patch is applied
  6139. ;; to Fedora's http-parser and to libgit2's bundled version.
  6140. (method url-fetch)
  6141. (uri (string-append
  6142. "https://src.fedoraproject.org/rpms/http-parser/raw/"
  6143. "e89b4c4e2874c19079a5a1a2d2ccc61b551aa289/"
  6144. "f/0001-url-treat-empty-port-as-default.patch"))
  6145. (sha256
  6146. (base32
  6147. "0pbxf2nq9pcn299k2b2ls8ldghaqln9glnp79gi57mamx4iy0f6g"))))))
  6148. (modules '((guix build utils)))
  6149. (snippet
  6150. '(begin
  6151. ;; This assertion fails when building for i686-linux.
  6152. (substitute* "test.c"
  6153. (("assert\\(sizeof\\(http_parser\\) == 32\\);")
  6154. "assert(1);"))
  6155. #t))))
  6156. (build-system gnu-build-system)
  6157. (arguments
  6158. `(#:test-target "test"
  6159. #:make-flags
  6160. (list (string-append "PREFIX="
  6161. (assoc-ref %outputs "out"))
  6162. "library"
  6163. ,@(if (%current-target-system)
  6164. '()
  6165. '("CC=gcc")))
  6166. #:phases
  6167. (modify-phases %standard-phases
  6168. ,@(if (%current-target-system)
  6169. '((replace 'configure
  6170. (lambda* (#:key target #:allow-other-keys)
  6171. (substitute* (find-files "." "Makefile")
  6172. (("CC\\?=.*$")
  6173. (string-append "CC=" target "-gcc\n"))
  6174. (("AR\\?=.*$")
  6175. (string-append "AR=" target "-ar\n")))
  6176. #t)))
  6177. '((delete 'configure))))))
  6178. (synopsis "HTTP request/response parser for C")
  6179. (description "This is a parser for HTTP messages written in C. It
  6180. parses both requests and responses. The parser is designed to be used in
  6181. high-performance HTTP applications. It does not make any syscalls nor
  6182. allocations, it does not buffer data, it can be interrupted at anytime.
  6183. Depending on your architecture, it only requires about 40 bytes of data per
  6184. message stream (in a web server that is per connection).")
  6185. (license license:expat))))
  6186. (define-public python-httpretty
  6187. (package
  6188. (name "python-httpretty")
  6189. (version "1.0.5")
  6190. (source
  6191. (origin
  6192. (method url-fetch)
  6193. (uri (pypi-uri "httpretty" version))
  6194. (sha256
  6195. (base32 "1dg0nfl7i9kjnq98ww98x2afzav4mpgiwzvjc43ily1x9my94g75"))))
  6196. (build-system python-build-system)
  6197. (arguments
  6198. `(#:tests? #f ; Tests require network access.
  6199. #:phases
  6200. (modify-phases %standard-phases
  6201. (replace 'check
  6202. (lambda* (#:key tests? #:allow-other-keys)
  6203. (when tests?
  6204. (invoke "nosetests"))
  6205. #t)))))
  6206. (native-inputs
  6207. `(("python-coverage" ,python-coverage)
  6208. ("python-eventlet" ,python-eventlet)
  6209. ("python-nose" ,python-nose)
  6210. ("python-rednose" ,python-rednose)
  6211. ("python-requests" ,python-requests)
  6212. ("python-sure" ,python-sure)
  6213. ("python-tornado" ,python-tornado)))
  6214. (home-page "https://httpretty.readthedocs.io")
  6215. (synopsis "HTTP client mock for Python")
  6216. (description "@code{httpretty} is a helper for faking web requests,
  6217. inspired by Ruby's @code{fakeweb}.")
  6218. (license license:expat)))
  6219. (define-public jo
  6220. (package
  6221. (name "jo")
  6222. (version "1.4")
  6223. (source
  6224. (origin
  6225. (method url-fetch)
  6226. (uri (string-append "https://github.com/jpmens/jo/releases/download/"
  6227. version "/jo-" version ".tar.gz"))
  6228. (sha256
  6229. (base32 "18jna9xlpxci3cak3z85c448zv2zr41baclgym3hk433p0p4vii4"))))
  6230. (build-system gnu-build-system)
  6231. (home-page "https://github.com/jpmens/jo")
  6232. (synopsis "Output JSON from a shell")
  6233. (description "jo is a command-line utility to create JSON objects or
  6234. arrays. It creates a JSON string on stdout from words provided as
  6235. command-line arguments or read from stdin.")
  6236. (license (list license:gpl2+
  6237. license:expat)))) ; json.c, json.h
  6238. (define-public python-internetarchive
  6239. (package
  6240. (name "python-internetarchive")
  6241. (version "1.8.5")
  6242. (source
  6243. (origin
  6244. (method git-fetch)
  6245. (uri (git-reference
  6246. (url "https://github.com/jjjake/internetarchive")
  6247. (commit (string-append "v" version))))
  6248. (file-name (git-file-name name version))
  6249. (sha256
  6250. (base32
  6251. "0ih7hplv92wbv6cmgc1gs0v35qkajwicalwcq8vcljw30plr24fp"))
  6252. (modules '((guix build utils)))
  6253. (snippet
  6254. '(begin
  6255. ;; Python 3.7 removed `_pattern_type'.
  6256. (for-each (lambda (file)
  6257. (chmod file #o644)
  6258. (substitute* file
  6259. (("^import re\n" line)
  6260. (string-append line "re._pattern_type = re.Pattern\n"))))
  6261. (find-files "." "\\.py$"))
  6262. #t))))
  6263. (build-system python-build-system)
  6264. (arguments
  6265. `(#:phases
  6266. (modify-phases %standard-phases
  6267. (delete 'check)
  6268. (add-after 'install 'check
  6269. (lambda* (#:key inputs outputs #:allow-other-keys)
  6270. (add-installed-pythonpath inputs outputs)
  6271. (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
  6272. ":" (getenv "PATH")))
  6273. (invoke "py.test" "-v" "-k"
  6274. (string-append
  6275. ;; These tests attempt to make a connection to
  6276. ;; an external web service.
  6277. "not test_get_item_with_kwargs"
  6278. " and not test_ia")))))))
  6279. (propagated-inputs
  6280. `(("python-requests" ,python-requests)
  6281. ("python-jsonpatch" ,python-jsonpatch-0.4)
  6282. ("python-docopt" ,python-docopt)
  6283. ("python-clint" ,python-clint)
  6284. ("python-six" ,python-six)
  6285. ("python-schema" ,python-schema-0.5)
  6286. ("python-backports-csv" ,python-backports-csv)))
  6287. (native-inputs
  6288. `(("python-pytest" ,python-pytest)
  6289. ("python-pytest-capturelog" ,python-pytest-capturelog)
  6290. ("python-responses" ,python-responses)))
  6291. (home-page "https://github.com/jjjake/internetarchive")
  6292. (synopsis "Command-line interface to archive.org")
  6293. (description "@code{ia} is a command-line tool for using
  6294. @url{archive.org} from the command-line. It also implements the
  6295. internetarchive python module for programmatic access to archive.org.")
  6296. (license license:agpl3+)))
  6297. (define-public python-clf
  6298. (let ((commit-test-clf "d01d25923c599d3261910f79fb948825b4270d07")) ; 0.5.7
  6299. (package
  6300. (name "python-clf")
  6301. (version "0.5.7")
  6302. (source
  6303. (origin
  6304. (method url-fetch)
  6305. (uri (pypi-uri "clf" version))
  6306. (sha256
  6307. (base32
  6308. "0zlkzqnpz7a4iavsq5vaz0nf5nr7qm5znpg1vlpz6rwnx6hikjdb"))))
  6309. (build-system python-build-system)
  6310. (propagated-inputs
  6311. `(("python-docopt" ,python-docopt)
  6312. ("python-pygments" ,python-pygments)
  6313. ("python-requests" ,python-requests)
  6314. ("python-nose" ,python-nose)
  6315. ("python-lxml" ,python-lxml)
  6316. ("python-pyaml" ,python-pyaml)))
  6317. (inputs
  6318. `(("test-clf"
  6319. ,(origin
  6320. (method url-fetch)
  6321. (uri (string-append "https://raw.githubusercontent.com"
  6322. "/ncrocfer/clf/" commit-test-clf
  6323. "/test_clf.py"))
  6324. (sha256
  6325. (base32
  6326. "19lr5zdzsmxgkg7wrjq1yzkiahd03wi4k3dskssyhmjls8c10nqd"))))))
  6327. (arguments
  6328. '(#:phases
  6329. (modify-phases %standard-phases
  6330. (add-after 'unpack 'get-tests
  6331. (lambda _
  6332. (copy-file (assoc-ref %build-inputs "test-clf") "test_clf.py")
  6333. #t))
  6334. (replace 'check
  6335. (lambda _
  6336. (invoke "nosetests"
  6337. ;; These tests require an Internet connection.
  6338. "--exclude=test_browse"
  6339. "--exclude=test_command"
  6340. "--exclude=test_search"))))))
  6341. (home-page "https://github.com/ncrocfer/clf")
  6342. (synopsis "Search code snippets on @url{https://commandlinefu.com}")
  6343. (description "@code{clf} is a command line tool for searching code
  6344. snippets on @url{https://commandlinefu.com}.")
  6345. (license license:expat))))
  6346. (define-public python2-clf
  6347. (package-with-python2 python-clf))
  6348. (define-public rss-bridge
  6349. (package
  6350. (name "rss-bridge")
  6351. (version "2020-11-10")
  6352. (source
  6353. (origin
  6354. (method git-fetch)
  6355. (uri (git-reference
  6356. (url "https://github.com/RSS-Bridge/rss-bridge")
  6357. (commit version)))
  6358. (file-name (git-file-name name version))
  6359. (sha256
  6360. (base32 "1mir6mcm37sbdrhl5kgs6schpp3l4r5mfamhiic0yfbz4hqwmg44"))))
  6361. (build-system copy-build-system)
  6362. (arguments
  6363. '(#:install-plan
  6364. '(("." "share/rss-bridge"))
  6365. #:phases
  6366. (modify-phases %standard-phases
  6367. ;;Change paths to not use source directory.
  6368. (add-before 'install 'patch-paths
  6369. (lambda _
  6370. (substitute* "lib/rssbridge.php"
  6371. (("PATH_ROOT . 'cache/'")
  6372. "'/var/cache/rss-bridge/'")
  6373. (("PATH_ROOT . 'whitelist.txt'")
  6374. "'/etc/rss-bridge/whitelist.txt'")
  6375. (("PATH_ROOT . 'config.ini.php'")
  6376. "'/etc/rss-bridge/config.ini.php'")))))))
  6377. (home-page "https://github.com/RSS-Bridge/rss-bridge")
  6378. (synopsis "Generate Atom feeds for social networking websites")
  6379. (description "rss-bridge generates Atom feeds for social networking
  6380. websites lacking feeds. Supported websites include Facebook, Twitter,
  6381. Instagram and YouTube.")
  6382. (license (list license:public-domain
  6383. license:expat)))) ; vendor/simplehtmldom/simple_html_dom.php
  6384. (define-public linkchecker
  6385. (package
  6386. (name "linkchecker")
  6387. (version "10.0.1")
  6388. (source
  6389. (origin
  6390. (method git-fetch)
  6391. (uri (git-reference
  6392. (url "https://github.com/linkchecker/linkchecker")
  6393. (commit (string-append "v" version))))
  6394. (file-name (git-file-name name version))
  6395. (sha256
  6396. (base32
  6397. "1j97dc9a4yhpscwadhv5dxp7036pnrxiaky18l8ddr3pvxdjvkxs"))))
  6398. (build-system python-build-system)
  6399. (inputs
  6400. `(("python-beautifulsoup4" ,python-beautifulsoup4)
  6401. ("python-dnspython" ,python-dnspython)
  6402. ("python-pyxdg" ,python-pyxdg)
  6403. ("python-requests" ,python-requests)))
  6404. (native-inputs
  6405. `(("gettext" ,gettext-minimal)
  6406. ("python-pytest" ,python-pytest)
  6407. ("python-miniboa" ,python-miniboa)
  6408. ("python-parameterized" ,python-parameterized)))
  6409. (arguments
  6410. `(#:phases
  6411. (modify-phases %standard-phases
  6412. (replace 'check
  6413. (lambda* (#:key tests? #:allow-other-keys)
  6414. (when tests?
  6415. (invoke "py.test" "tests")))))))
  6416. (home-page "https://linkchecker.github.io/linkchecker/")
  6417. (synopsis "Check websites for broken links")
  6418. (description "LinkChecker is a website validator. It checks for broken
  6419. links in websites. It is recursive and multithreaded providing output in
  6420. colored or normal text, HTML, SQL, CSV, XML or as a sitemap graph. It
  6421. supports checking HTTP/1.1, HTTPS, FTP, mailto, news, nntp, telnet and local
  6422. file links.")
  6423. (license (list license:gpl2+
  6424. license:bsd-2 ; linkcheck/better_exchook2.py
  6425. license:bsd-3 ; linkcheck/colorama.py
  6426. license:psfl ; linkcheck/gzip2.py
  6427. license:expat)))) ; linkcheck/mem.py
  6428. (define-public castor
  6429. (package
  6430. (name "castor")
  6431. (version "0.8.18")
  6432. (source
  6433. (origin
  6434. (method git-fetch)
  6435. (uri (git-reference
  6436. (url "https://git.sr.ht/~julienxx/castor")
  6437. (commit version)))
  6438. (file-name (git-file-name name version))
  6439. (sha256
  6440. (base32 "1l72r6a917ymc9pn8dllbal1xdczfai376nvqkiys5fm4j4s3zmj"))))
  6441. (build-system cargo-build-system)
  6442. (arguments
  6443. `(#:cargo-inputs
  6444. (("rust-ansi-parser" ,rust-ansi-parser-0.6)
  6445. ("rust-dirs" ,rust-dirs-2)
  6446. ("rust-gdk" ,rust-gdk-0.13)
  6447. ("rust-gtk" ,rust-gtk-0.8)
  6448. ("rust-linkify" ,rust-linkify-0.4)
  6449. ("rust-native-tls" ,rust-native-tls-0.2)
  6450. ("rust-open" ,rust-open-1)
  6451. ("rust-percent-encoding" ,rust-percent-encoding-2)
  6452. ("rust-url" ,rust-url-2))))
  6453. (native-inputs
  6454. `(("pkg-config" ,pkg-config)))
  6455. (inputs
  6456. `(("atk" ,atk)
  6457. ("cairo" ,cairo)
  6458. ("gdk-pixbuf" ,gdk-pixbuf)
  6459. ("gtk+" ,gtk+)
  6460. ("libressl" ,libressl)
  6461. ("pango" ,pango)))
  6462. (home-page "https://git.sr.ht/~julienxx/castor")
  6463. (synopsis "Graphical client for plain-text protocols")
  6464. (description
  6465. "Castor is a graphical client for plain-text protocols written in
  6466. Rust with GTK. It currently supports the Gemini, Gopher and Finger
  6467. protocols.")
  6468. (license license:expat)))
  6469. (define-public python-py-ubjson
  6470. (package
  6471. (name "python-py-ubjson")
  6472. (version "0.10.0")
  6473. (source
  6474. (origin
  6475. (method url-fetch)
  6476. (uri (pypi-uri "py-ubjson" version))
  6477. (sha256
  6478. (base32
  6479. "03l9m9w5ip4hw0y69wlys5gzsfb7zcq3a77blj88grgiqhn5vm5n"))))
  6480. (build-system python-build-system)
  6481. (home-page "https://github.com/Iotic-Labs/py-ubjson")
  6482. (synopsis "Universal Binary JSON encoder/decoder")
  6483. (description
  6484. "Py-ubjson is a Python module providing an Universal Binary JSON
  6485. encoder/decoder based on the draft-12 specification for UBJSON.")
  6486. (license license:asl2.0)))
  6487. (define-public java-tomcat
  6488. (package
  6489. (name "java-tomcat")
  6490. (version "8.5.63")
  6491. (source (origin
  6492. (method url-fetch)
  6493. (uri (string-append "mirror://apache/tomcat/tomcat-8/v"
  6494. version "/src/apache-tomcat-" version "-src.tar.gz"))
  6495. (sha256
  6496. (base32
  6497. "1wr6mpgbk2gs18vp8mdggiq6vifj68a875dd1fkdf7cs31q54rns"))
  6498. (modules '((guix build utils)))
  6499. ;; Delete bundled jars.
  6500. (snippet
  6501. '(begin
  6502. (for-each delete-file (find-files "." "\\.jar$"))
  6503. (for-each delete-file (find-files "." "\\.bat$"))
  6504. #t))))
  6505. (build-system ant-build-system)
  6506. (inputs
  6507. `(("java-commons-daemon" ,java-commons-daemon)
  6508. ("java-ecj" ,java-ecj)))
  6509. (arguments
  6510. `(#:build-target "deploy"
  6511. #:tests? #f; requires downloading some files.
  6512. #:phases
  6513. (modify-phases %standard-phases
  6514. (add-after 'unpack 'prevent-download
  6515. (lambda _
  6516. ;; This directory must exist
  6517. (mkdir "downloads")
  6518. ;; We patch build.xml so it doesn't download any dependency, because
  6519. ;; we already have all of them.
  6520. (substitute* "build.xml"
  6521. (("download-compile,") "")
  6522. (("depends=\"validate\"") "depends=\"build-prepare\"")
  6523. ((",download-validate") ""))
  6524. #t))
  6525. (add-after 'unpack 'strip-timestamps
  6526. (lambda _
  6527. (substitute* "build.xml"
  6528. (("<filter token=\"YEAR\" value=.*")
  6529. "<filter token=\"YEAR\" value=\"1970\"/>")
  6530. (("<filter token=\"VERSION_BUILT\" value=.*")
  6531. "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
  6532. #t))
  6533. (add-after 'unpack 'modify-deploy
  6534. (lambda _
  6535. ;; The Tomcat build downloads and copies these files to the
  6536. ;; bin and lib directory.
  6537. ;; We instead symlink to the input (see below).
  6538. (substitute* "build.xml"
  6539. (("<copy tofile=\"\\$\\{tomcat.build\\}/bin/commons-daemon.jar.*") "")
  6540. (("<copy file=\"\\$\\{jdt.jar\\}\" todir=\"\\$\\{tomcat.build\\}/lib\"/>")
  6541. ""))
  6542. #t))
  6543. (add-after 'install 'symlink-commons-daemon
  6544. (lambda* (#:key inputs outputs #:allow-other-keys)
  6545. (let* ((commons-daemon (assoc-ref inputs "java-commons-daemon"))
  6546. (files (find-files commons-daemon "commons-daemon-.*\\.jar"))
  6547. (daemon-jar (car files))
  6548. (out-bin (string-append (assoc-ref outputs "out") "/bin"))
  6549. (target (string-append out-bin "/commons-daemon.jar")))
  6550. (symlink daemon-jar target)
  6551. #t)))
  6552. (add-after 'install 'symlink-java-ecj
  6553. (lambda* (#:key inputs outputs #:allow-other-keys)
  6554. (let* ((java-ecj (assoc-ref inputs "java-ecj"))
  6555. (files (find-files java-ecj "ecj.*\\.jar"))
  6556. (java-ecj-jar (car files))
  6557. (out-lib (string-append (assoc-ref outputs "out") "/lib"))
  6558. (target (string-append out-lib "/java-ecj.jar")))
  6559. (symlink java-ecj-jar target)
  6560. #t)))
  6561. (add-after 'unpack 'generate-properties
  6562. (lambda _
  6563. ;; This could have been passed to make-flags, but getcwd returns
  6564. ;; a different directory then.
  6565. (with-output-to-file "build.properties"
  6566. (lambda _
  6567. (display
  6568. (string-append "base.path=" (getcwd) "/downloads\n"))))
  6569. #t))
  6570. (replace 'install
  6571. (lambda* (#:key outputs #:allow-other-keys)
  6572. (let ((out (assoc-ref outputs "out")))
  6573. (copy-recursively "output/build" out))
  6574. #t)))))
  6575. (properties '((cpe-name . "tomcat")))
  6576. (home-page "https://tomcat.apache.org")
  6577. (synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
  6578. WebSocket")
  6579. (description "Apache Tomcat is a free implementation of the Java
  6580. Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
  6581. technologies.")
  6582. (license license:asl2.0)))
  6583. (define-public java-eclipse-jetty-test-helper
  6584. (package
  6585. (name "java-eclipse-jetty-test-helper")
  6586. (version "4.2")
  6587. (source (origin
  6588. (method git-fetch)
  6589. (uri (git-reference
  6590. (url "https://github.com/eclipse/jetty.toolchain/")
  6591. (commit (string-append "jetty-test-helper-" version))))
  6592. (file-name (git-file-name name version))
  6593. (sha256
  6594. (base32
  6595. "1g7cdh03nfwbdxzvwm84ysgvw08xx7431lsjryj2gmf3lrqpizgb"))))
  6596. (build-system ant-build-system)
  6597. (arguments
  6598. `(#:jar-name "eclipse-jetty-test-helper.jar"
  6599. #:source-dir "src/main/java"
  6600. #:test-dir "src/test"
  6601. #:jdk ,icedtea-8
  6602. #:phases
  6603. (modify-phases %standard-phases
  6604. (add-before 'configure 'chdir
  6605. (lambda _
  6606. (chdir "jetty-test-helper")
  6607. #t))
  6608. (add-before 'build 'fix-paths
  6609. (lambda _
  6610. ;; TODO:
  6611. ;; This file assumes that the build directory is named "target"
  6612. ;; but it is not the case with our ant-build-system. Once we have
  6613. ;; maven though, we will have to rebuild this package because this
  6614. ;; assumption is correct with maven-build-system.
  6615. (substitute*
  6616. "src/main/java/org/eclipse/jetty/toolchain/test/MavenTestingUtils.java"
  6617. (("\"target\"") "\"build\"")
  6618. (("\"tests\"") "\"test-classes\""))
  6619. ;; Tests assume we are building with maven, so that the build
  6620. ;; directory is named "target", and not "build".
  6621. (with-directory-excursion "src/test/java/org/eclipse/jetty/toolchain/test"
  6622. (substitute* '("FSTest.java" "OSTest.java" "TestingDirTest.java"
  6623. "MavenTestingUtilsTest.java")
  6624. (("target/tests") "build/test-classes")
  6625. (("\"target") "\"build")))
  6626. #t)))))
  6627. (inputs
  6628. `(("junit" ,java-junit)
  6629. ("hamcrest" ,java-hamcrest-all)))
  6630. (home-page "https://www.eclipse.org/jetty/")
  6631. (synopsis "Helper classes for jetty tests")
  6632. (description "This package contains helper classes for testing the Jetty
  6633. Web Server.")
  6634. ;; This program is licensed under both epl and asl.
  6635. (license (list license:epl1.0 license:asl2.0))))
  6636. (define-public java-eclipse-jetty-perf-helper
  6637. (package
  6638. (inherit java-eclipse-jetty-test-helper)
  6639. (name "java-eclipse-jetty-perf-helper")
  6640. (arguments
  6641. `(#:jar-name "eclipse-jetty-perf-helper.jar"
  6642. #:source-dir "src/main/java"
  6643. #:tests? #f; no tests
  6644. #:jdk ,icedtea-8
  6645. #:phases
  6646. (modify-phases %standard-phases
  6647. (add-before 'configure 'chdir
  6648. (lambda _
  6649. (chdir "jetty-perf-helper")
  6650. #t)))))
  6651. (inputs
  6652. `(("hdrhistogram" ,java-hdrhistogram)))))
  6653. (define-public java-eclipse-jetty-util
  6654. (package
  6655. (name "java-eclipse-jetty-util")
  6656. (version "9.4.39")
  6657. (source (origin
  6658. (method url-fetch)
  6659. (uri (string-append "https://github.com/eclipse/jetty.project/"
  6660. "archive/jetty-" version ".v20210325.tar.gz"))
  6661. (sha256
  6662. (base32
  6663. "0b4hy4zmdmfbqk9bzmxk7v75y2ysqiappkip4z3hb9lxjvjh0b19"))))
  6664. (build-system ant-build-system)
  6665. (arguments
  6666. `(#:jar-name "eclipse-jetty-util.jar"
  6667. #:source-dir "src/main/java"
  6668. #:tests? #f; require junit 5
  6669. #:test-exclude
  6670. (list "**/Abstract*.java"
  6671. ;; requires network
  6672. "**/InetAddressSetTest.java"
  6673. ;; Assumes we are using maven
  6674. "**/TypeUtilTest.java"
  6675. ;; Error on the style of log
  6676. "**/StdErrLogTest.java")
  6677. #:jdk ,icedtea-8
  6678. #:phases
  6679. (modify-phases %standard-phases
  6680. (add-before 'configure 'chdir
  6681. (lambda _
  6682. (chdir "jetty-util")
  6683. #t)))))
  6684. (inputs
  6685. `(("slf4j" ,java-slf4j-api)
  6686. ("servlet" ,java-javaee-servletapi)))
  6687. (home-page "https://www.eclipse.org/jetty/")
  6688. (synopsis "Utility classes for Jetty")
  6689. (description "The Jetty Web Server provides an HTTP server and Servlet
  6690. container capable of serving static and dynamic content either from a standalone
  6691. or embedded instantiation. This package provides utility classes.")
  6692. (license (list license:epl1.0 license:asl2.0))))
  6693. ;; This version is required by maven-wagon
  6694. (define-public java-eclipse-jetty-util-9.2
  6695. (package
  6696. (inherit java-eclipse-jetty-util)
  6697. (version "9.2.22")
  6698. (source (origin
  6699. (method url-fetch)
  6700. (uri (string-append "https://github.com/eclipse/jetty.project/"
  6701. "archive/jetty-" version ".v20170606.tar.gz"))
  6702. (sha256
  6703. (base32
  6704. "1i51qlsd7h06d35kx5rqpzbfadbcszycx1iwr6vz7qc9gf9f29la"))))
  6705. (arguments
  6706. `(#:jar-name "eclipse-jetty-util.jar"
  6707. #:source-dir "src/main/java"
  6708. #:jdk ,icedtea-8
  6709. #:test-exclude
  6710. (list "**/Abstract*.java"
  6711. ;; requires network
  6712. "**/InetAddressSetTest.java"
  6713. ;; Assumes we are using maven
  6714. "**/TypeUtilTest.java"
  6715. ;; We don't have an implementation for slf4j
  6716. "**/LogTest.java"
  6717. ;; Error on the style of log
  6718. "**/StdErrLogTest.java")
  6719. #:phases
  6720. (modify-phases %standard-phases
  6721. (add-before 'configure 'chdir
  6722. (lambda _
  6723. (chdir "jetty-util")
  6724. #t))
  6725. (add-before 'build 'fix-test-sources
  6726. (lambda _
  6727. ;; We need to fix issues caused by changes in newer versions of
  6728. ;; jetty-test-helper
  6729. (let ((src "src/test/java/org/eclipse/jetty/util/resource"))
  6730. (substitute* (string-append src "/AbstractFSResourceTest.java")
  6731. (("testdir.getDir\\(\\)") "testdir.getPath().toFile()")
  6732. (("testdir.getFile\\(\"foo\"\\)")
  6733. "testdir.getPathFile(\"foo\").toFile()")
  6734. (("testdir.getFile\\(name\\)")
  6735. "testdir.getPathFile(name).toFile()")))
  6736. #t)))))
  6737. (native-inputs
  6738. `(("java-junit" ,java-junit)
  6739. ("java-hamcrest-all" ,java-hamcrest-all)
  6740. ("perf-helper" ,java-eclipse-jetty-perf-helper)
  6741. ("test-helper" ,java-eclipse-jetty-test-helper)))))
  6742. (define-public java-eclipse-jetty-io
  6743. (package
  6744. (inherit java-eclipse-jetty-util)
  6745. (name "java-eclipse-jetty-io")
  6746. (arguments
  6747. `(#:jar-name "eclipse-jetty-io.jar"
  6748. #:source-dir "src/main/java"
  6749. #:jdk ,icedtea-8
  6750. #:tests? #f; require junit 5
  6751. #:test-exclude (list "**/Abstract*.java"
  6752. ;; Abstract class
  6753. "**/EndPointTest.java")
  6754. #:phases
  6755. (modify-phases %standard-phases
  6756. (add-before 'configure 'chdir
  6757. (lambda _
  6758. (chdir "jetty-io")
  6759. #t)))))
  6760. (inputs
  6761. `(("slf4j" ,java-slf4j-api)
  6762. ("servlet" ,java-javaee-servletapi)
  6763. ("util" ,java-eclipse-jetty-util)))
  6764. (synopsis "Jetty :: IO Utility")
  6765. (description "The Jetty Web Server provides an HTTP server and Servlet
  6766. container capable of serving static and dynamic content either from a standalone
  6767. or embedded instantiation. This package provides IO-related utility classes.")))
  6768. (define-public java-eclipse-jetty-io-9.2
  6769. (package
  6770. (inherit java-eclipse-jetty-io)
  6771. (version (package-version java-eclipse-jetty-util-9.2))
  6772. (source (package-source java-eclipse-jetty-util-9.2))
  6773. (inputs
  6774. `(("util" ,java-eclipse-jetty-util-9.2)
  6775. ,@(package-inputs java-eclipse-jetty-util-9.2)))
  6776. (native-inputs
  6777. `(("mockito" ,java-mockito-1)
  6778. ("cglib" ,java-cglib)
  6779. ("objenesis" ,java-objenesis)
  6780. ("asm" ,java-asm)
  6781. ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
  6782. (define-public java-eclipse-jetty-http
  6783. (package
  6784. (inherit java-eclipse-jetty-util)
  6785. (name "java-eclipse-jetty-http")
  6786. (arguments
  6787. `(#:jar-name "eclipse-jetty-http.jar"
  6788. #:source-dir "src/main/java"
  6789. #:jdk ,icedtea-8
  6790. #:tests? #f; require junit 5
  6791. #:phases
  6792. (modify-phases %standard-phases
  6793. (add-before 'configure 'chdir
  6794. (lambda _
  6795. (chdir "jetty-http")
  6796. #t))
  6797. (add-before 'build 'copy-resources
  6798. (lambda _
  6799. (mkdir-p "build/classes")
  6800. (copy-recursively "src/main/resources/" "build/classes/")
  6801. #t)))))
  6802. (inputs
  6803. `(("slf4j" ,java-slf4j-api)
  6804. ("servlet" ,java-javaee-servletapi)
  6805. ("io" ,java-eclipse-jetty-io)
  6806. ("util" ,java-eclipse-jetty-util)))
  6807. (synopsis "Jetty :: Http Utility")
  6808. (description "The Jetty Web Server provides an HTTP server and Servlet
  6809. container capable of serving static and dynamic content either from a standalone
  6810. or embedded instantiation. This package provides HTTP-related utility classes.")))
  6811. (define-public java-eclipse-jetty-http-9.2
  6812. (package
  6813. (inherit java-eclipse-jetty-http)
  6814. (version (package-version java-eclipse-jetty-util-9.2))
  6815. (source (package-source java-eclipse-jetty-util-9.2))
  6816. (inputs
  6817. `(("util" ,java-eclipse-jetty-util-9.2)
  6818. ("io" ,java-eclipse-jetty-io-9.2)
  6819. ,@(package-inputs java-eclipse-jetty-util-9.2)))))
  6820. (define-public java-eclipse-jetty-jmx
  6821. (package
  6822. (inherit java-eclipse-jetty-util)
  6823. (name "java-eclipse-jetty-jmx")
  6824. (arguments
  6825. `(#:jar-name "eclipse-jetty-jmx.jar"
  6826. #:source-dir "src/main/java"
  6827. #:jdk ,icedtea-8
  6828. #:tests? #f; FIXME: requires com.openpojo.validation
  6829. #:phases
  6830. (modify-phases %standard-phases
  6831. (add-before 'configure 'chdir
  6832. (lambda _
  6833. (chdir "jetty-jmx")
  6834. #t)))))
  6835. (inputs
  6836. `(("slf4j" ,java-slf4j-api)
  6837. ("servlet" ,java-javaee-servletapi)
  6838. ("util" ,java-eclipse-jetty-util)))
  6839. (synopsis "Jetty :: JMX Management")
  6840. (description "The Jetty Web Server provides an HTTP server and Servlet
  6841. container capable of serving static and dynamic content either from a standalone
  6842. or embedded instantiation. This package provides the JMX management.")))
  6843. (define-public java-eclipse-jetty-jmx-9.2
  6844. (package
  6845. (inherit java-eclipse-jetty-jmx)
  6846. (version (package-version java-eclipse-jetty-util-9.2))
  6847. (source (package-source java-eclipse-jetty-util-9.2))
  6848. (inputs
  6849. `(("util" ,java-eclipse-jetty-util-9.2)
  6850. ,@(package-inputs java-eclipse-jetty-util-9.2)))))
  6851. (define java-eclipse-jetty-http-test-classes
  6852. (package
  6853. (inherit java-eclipse-jetty-util)
  6854. (name "java-eclipse-jetty-http-test-classes")
  6855. (arguments
  6856. `(#:jar-name "eclipse-jetty-http.jar"
  6857. #:source-dir "src/test"
  6858. #:tests? #f
  6859. #:jdk ,icedtea-8
  6860. #:phases
  6861. (modify-phases %standard-phases
  6862. (add-before 'configure 'chdir
  6863. (lambda _
  6864. (chdir "jetty-http")
  6865. #t)))))
  6866. (inputs
  6867. `(("slf4j" ,java-slf4j-api)
  6868. ("java-javaee-servletapi" ,java-javaee-servletapi)
  6869. ("http" ,java-eclipse-jetty-http)
  6870. ("io" ,java-eclipse-jetty-io)
  6871. ("util" ,java-eclipse-jetty-util)))))
  6872. (define java-eclipse-jetty-http-test-classes-9.2
  6873. (package
  6874. (inherit java-eclipse-jetty-http-test-classes)
  6875. (version (package-version java-eclipse-jetty-util-9.2))
  6876. (source (package-source java-eclipse-jetty-util-9.2))
  6877. (inputs
  6878. `(("http" ,java-eclipse-jetty-http-9.2)
  6879. ,@(package-inputs java-eclipse-jetty-http-9.2)))
  6880. (native-inputs (package-native-inputs java-eclipse-jetty-util-9.2))))
  6881. (define-public java-eclipse-jetty-server
  6882. (package
  6883. (inherit java-eclipse-jetty-util)
  6884. (name "java-eclipse-jetty-server")
  6885. (arguments
  6886. `(#:jar-name "eclipse-jetty-server.jar"
  6887. #:source-dir "src/main/java"
  6888. #:jdk ,icedtea-8
  6889. #:tests? #f; requires a mockito version we don't have
  6890. #:phases
  6891. (modify-phases %standard-phases
  6892. (add-before 'configure 'chdir
  6893. (lambda _
  6894. (chdir "jetty-server")
  6895. #t))
  6896. (add-before 'build 'fix-source
  6897. (lambda _
  6898. ;; Explicit casts to prevent build failures
  6899. (substitute* "src/main/java/org/eclipse/jetty/server/Request.java"
  6900. (("append\\(LazyList")
  6901. "append((CharSequence)LazyList"))
  6902. (substitute*
  6903. "src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java"
  6904. (((string-append
  6905. "Class<\\? extends EventListener> clazz = _classLoader==null"
  6906. "\\?Loader.loadClass\\(ContextHandler.class,className\\):"
  6907. "_classLoader.loadClass\\(className\\);"))
  6908. (string-append "Class<? extends EventListener> clazz = "
  6909. "(Class<? extends EventListener>) "
  6910. "(_classLoader==null?Loader.loadClass("
  6911. "ContextHandler.class,className):"
  6912. "_classLoader.loadClass(className));")))
  6913. #t)))))
  6914. (inputs
  6915. `(("slf4j" ,java-slf4j-api)
  6916. ("servlet" ,java-javaee-servletapi)
  6917. ("http" ,java-eclipse-jetty-http)
  6918. ("io" ,java-eclipse-jetty-io)
  6919. ("jmx" ,java-eclipse-jetty-jmx)
  6920. ("util" ,java-eclipse-jetty-util)))
  6921. (synopsis "Core jetty server artifact")
  6922. (description "The Jetty Web Server provides an HTTP server and Servlet
  6923. container capable of serving static and dynamic content either from a standalone
  6924. or embedded instantiation. This package provides the core jetty server
  6925. artifact.")))
  6926. (define-public java-eclipse-jetty-server-9.2
  6927. (package
  6928. (inherit java-eclipse-jetty-server)
  6929. (version (package-version java-eclipse-jetty-util-9.2))
  6930. (source (package-source java-eclipse-jetty-util-9.2))
  6931. (inputs
  6932. `(("util" ,java-eclipse-jetty-util-9.2)
  6933. ("jmx" ,java-eclipse-jetty-jmx-9.2)
  6934. ("io" ,java-eclipse-jetty-io-9.2)
  6935. ("http" ,java-eclipse-jetty-http-9.2)
  6936. ,@(package-inputs java-eclipse-jetty-util-9.2)))
  6937. (native-inputs
  6938. `(("test-classes" ,java-eclipse-jetty-http-test-classes-9.2)
  6939. ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
  6940. (define-public java-eclipse-jetty-security
  6941. (package
  6942. (inherit java-eclipse-jetty-util)
  6943. (name "java-eclipse-jetty-security")
  6944. (arguments
  6945. `(#:jar-name "eclipse-jetty-security.jar"
  6946. #:source-dir "src/main/java"
  6947. #:jdk ,icedtea-8
  6948. #:tests? #f; require junit 5
  6949. #:test-exclude (list "**/ConstraintTest.*") ; This test fails
  6950. #:phases
  6951. (modify-phases %standard-phases
  6952. (add-before 'configure 'chdir
  6953. (lambda _
  6954. (chdir "jetty-security")
  6955. #t)))))
  6956. (inputs
  6957. `(("slf4j" ,java-slf4j-api)
  6958. ("servlet" ,java-javaee-servletapi)
  6959. ("http" ,java-eclipse-jetty-http)
  6960. ("server" ,java-eclipse-jetty-server)
  6961. ("util" ,java-eclipse-jetty-util)))
  6962. (synopsis "Jetty security infrastructure")
  6963. (description "The Jetty Web Server provides an HTTP server and Servlet
  6964. container capable of serving static and dynamic content either from a standalone
  6965. or embedded instantiation. This package provides the core jetty security
  6966. infrastructure")))
  6967. (define-public java-eclipse-jetty-security-9.2
  6968. (package
  6969. (inherit java-eclipse-jetty-security)
  6970. (version (package-version java-eclipse-jetty-util-9.2))
  6971. (source (package-source java-eclipse-jetty-util-9.2))
  6972. (inputs
  6973. `(("util" ,java-eclipse-jetty-util-9.2)
  6974. ("http" ,java-eclipse-jetty-http-9.2)
  6975. ("server" ,java-eclipse-jetty-server-9.2)
  6976. ,@(package-inputs java-eclipse-jetty-util-9.2)))
  6977. (native-inputs
  6978. `(("io" ,java-eclipse-jetty-io-9.2)
  6979. ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
  6980. (define-public java-eclipse-jetty-util-ajax
  6981. (package
  6982. (inherit java-eclipse-jetty-util)
  6983. (name "java-eclipse-jetty-util-ajax")
  6984. (arguments
  6985. `(#:jar-name "eclipse-jetty-util-ajax.jar"
  6986. #:source-dir "jetty-util-ajax/src/main/java"
  6987. #:tests? #f)); require junit 5
  6988. (inputs
  6989. `(("java-eclipse-jetty-util" ,java-eclipse-jetty-util)
  6990. ("java-javaee-servletapi" ,java-javaee-servletapi)))))
  6991. (define-public java-eclipse-jetty-servlet
  6992. (package
  6993. (inherit java-eclipse-jetty-util)
  6994. (name "java-eclipse-jetty-servlet")
  6995. (arguments
  6996. `(#:jar-name "eclipse-jetty-servlet.jar"
  6997. #:source-dir "src/main/java"
  6998. #:jdk ,icedtea-8
  6999. #:tests? #f; require junit 5
  7000. #:phases
  7001. (modify-phases %standard-phases
  7002. (add-before 'configure 'chdir
  7003. (lambda _
  7004. (chdir "jetty-servlet")
  7005. #t)))))
  7006. (inputs
  7007. `(("slf4j" ,java-slf4j-api)
  7008. ("java-javaee-servletapi" ,java-javaee-servletapi)
  7009. ("java-eclipse-jetty-util-ajax" ,java-eclipse-jetty-util-ajax)
  7010. ("http" ,java-eclipse-jetty-http)
  7011. ("io" ,java-eclipse-jetty-io)
  7012. ("jmx" ,java-eclipse-jetty-jmx)
  7013. ("security" ,java-eclipse-jetty-security)
  7014. ("server" ,java-eclipse-jetty-server)
  7015. ("util" ,java-eclipse-jetty-util)))
  7016. (synopsis "Jetty Servlet Container")
  7017. (description "The Jetty Web Server provides an HTTP server and Servlet
  7018. container capable of serving static and dynamic content either from a standalone
  7019. or embedded instantiation. This package provides the core jetty servlet
  7020. container.")))
  7021. (define-public java-eclipse-jetty-servlet-9.2
  7022. (package
  7023. (inherit java-eclipse-jetty-servlet)
  7024. (version (package-version java-eclipse-jetty-util-9.2))
  7025. (source (package-source java-eclipse-jetty-util-9.2))
  7026. (arguments
  7027. `(#:jar-name "eclipse-jetty-servlet.jar"
  7028. #:source-dir "src/main/java"
  7029. #:jdk ,icedtea-8
  7030. #:tests? #f; doesn't work
  7031. #:phases
  7032. (modify-phases %standard-phases
  7033. (add-before 'configure 'chdir
  7034. (lambda _
  7035. (chdir "jetty-servlet")
  7036. #t)))))
  7037. (inputs
  7038. `(("util" ,java-eclipse-jetty-util-9.2)
  7039. ("jmx" ,java-eclipse-jetty-jmx-9.2)
  7040. ("io" ,java-eclipse-jetty-io-9.2)
  7041. ("http" ,java-eclipse-jetty-http-9.2)
  7042. ("security" ,java-eclipse-jetty-security-9.2)
  7043. ("http-test" ,java-eclipse-jetty-http-test-classes-9.2)
  7044. ("server" ,java-eclipse-jetty-server-9.2)
  7045. ,@(package-inputs java-eclipse-jetty-util-9.2)))))
  7046. (define-public java-eclipse-jetty-xml
  7047. (package
  7048. (inherit java-eclipse-jetty-util)
  7049. (name "java-eclipse-jetty-xml")
  7050. (arguments
  7051. `(#:jar-name "eclipse-jetty-xml.jar"
  7052. #:source-dir "src/main/java"
  7053. #:jdk ,icedtea-8
  7054. #:tests? #f; most tests require network
  7055. #:phases
  7056. (modify-phases %standard-phases
  7057. (add-before 'configure 'chdir
  7058. (lambda _
  7059. (chdir "jetty-xml")
  7060. #t)))))
  7061. (inputs
  7062. `(("java-eclipse-jetty-util" ,java-eclipse-jetty-util)))
  7063. (native-inputs
  7064. `(("java-eclipse-jetty-io" ,java-eclipse-jetty-io)
  7065. ,@(package-native-inputs java-eclipse-jetty-util)))))
  7066. (define-public java-eclipse-jetty-xml-9.2
  7067. (package
  7068. (inherit java-eclipse-jetty-xml)
  7069. (version (package-version java-eclipse-jetty-util-9.2))
  7070. (source (package-source java-eclipse-jetty-util-9.2))
  7071. (arguments
  7072. `(#:jar-name "eclipse-jetty-xml.jar"
  7073. #:source-dir "src/main/java"
  7074. #:jdk ,icedtea-8
  7075. #:tests? #f; most tests require network
  7076. #:phases
  7077. (modify-phases %standard-phases
  7078. (add-before 'configure 'chdir
  7079. (lambda _
  7080. (chdir "jetty-xml")
  7081. #t)))))
  7082. (inputs
  7083. `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
  7084. ,@(package-inputs java-eclipse-jetty-util-9.2)))
  7085. (native-inputs
  7086. `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
  7087. ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
  7088. (define-public java-eclipse-jetty-webapp
  7089. (package
  7090. (inherit java-eclipse-jetty-util)
  7091. (name "java-eclipse-jetty-webapp")
  7092. (arguments
  7093. `(#:jar-name "eclipse-jetty-webapp.jar"
  7094. #:source-dir "src/main/java"
  7095. #:jdk ,icedtea-8
  7096. #:tests? #f; require junit 5
  7097. ;; One test fails
  7098. #:test-exclude (list "**/WebAppContextTest.java")
  7099. #:phases
  7100. (modify-phases %standard-phases
  7101. (add-before 'configure 'chdir
  7102. (lambda _
  7103. (chdir "jetty-webapp")
  7104. #t)))))
  7105. (inputs
  7106. `(("java-eclipse-jetty-util" ,java-eclipse-jetty-util)
  7107. ("java-eclipse-jetty-http" ,java-eclipse-jetty-http)
  7108. ("java-eclipse-jetty-io" ,java-eclipse-jetty-io)
  7109. ("java-eclipse-jetty-server" ,java-eclipse-jetty-server)
  7110. ("java-eclipse-jetty-servlet" ,java-eclipse-jetty-servlet)
  7111. ("java-eclipse-jetty-security" ,java-eclipse-jetty-security)
  7112. ("java-eclipse-jetty-xml" ,java-eclipse-jetty-xml)
  7113. ("java-javaee-servletapi" ,java-javaee-servletapi)))))
  7114. (define-public java-eclipse-jetty-webapp-9.2
  7115. (package
  7116. (inherit java-eclipse-jetty-webapp)
  7117. (version (package-version java-eclipse-jetty-util-9.2))
  7118. (source (package-source java-eclipse-jetty-util-9.2))
  7119. (arguments
  7120. `(#:jar-name "eclipse-jetty-webapp.jar"
  7121. #:source-dir "src/main/java"
  7122. #:jdk ,icedtea-8
  7123. #:test-exclude (list "**/WebAppContextTest.java")
  7124. #:phases
  7125. (modify-phases %standard-phases
  7126. (add-before 'configure 'chdir
  7127. (lambda _
  7128. (chdir "jetty-webapp")
  7129. #t)))))
  7130. (inputs
  7131. `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
  7132. ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
  7133. ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
  7134. ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
  7135. ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
  7136. ("java-eclipse-jetty-xml-9.2" ,java-eclipse-jetty-xml-9.2)
  7137. ("java-javaee-servletapi" ,java-javaee-servletapi)
  7138. ,@(package-inputs java-eclipse-jetty-util-9.2)))
  7139. (native-inputs
  7140. `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
  7141. ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
  7142. (define-public java-jsoup
  7143. (package
  7144. (name "java-jsoup")
  7145. (version "1.10.3")
  7146. (source (origin
  7147. (method git-fetch)
  7148. (uri (git-reference
  7149. (url "https://github.com/jhy/jsoup")
  7150. (commit (string-append "jsoup-" version))))
  7151. (file-name (git-file-name name version))
  7152. (sha256
  7153. (base32
  7154. "1hdpdx0x140r5x3yc251v7dj1h4j5a7nh9k885aw9q5vvz49lkf4"))))
  7155. (build-system ant-build-system)
  7156. (arguments
  7157. `(#:jar-name "jsoup.jar"
  7158. #:source-dir "src/main/java"
  7159. #:phases
  7160. (modify-phases %standard-phases
  7161. (add-before 'build 'copy-resources
  7162. (lambda _
  7163. (let ((classes-dir (string-append (getcwd) "/build/classes")))
  7164. (with-directory-excursion "src/main/java"
  7165. (for-each (lambda (file)
  7166. (let ((dist (string-append classes-dir "/" file)))
  7167. (mkdir-p (dirname dist))
  7168. (copy-file file dist)))
  7169. (find-files "." ".*.properties"))))
  7170. #t)))))
  7171. (native-inputs
  7172. `(("java-junit" ,java-junit)
  7173. ("java-hamcrest-core" ,java-hamcrest-core)
  7174. ("java-gson" ,java-gson)))
  7175. (home-page "https://jsoup.org")
  7176. (synopsis "HTML parser")
  7177. (description "Jsoup is a Java library for working with real-world HTML. It
  7178. provides a very convenient API for extracting and manipulating data, using the
  7179. best of DOM, CSS, and jQuery-like methods.")
  7180. (license license:expat)))
  7181. (define-public java-signpost-core
  7182. (package
  7183. (name "java-signpost-core")
  7184. (version "1.2.1.2")
  7185. (source (origin
  7186. (method git-fetch)
  7187. (uri (git-reference
  7188. (url "https://github.com/mttkay/signpost")
  7189. (commit version)))
  7190. (file-name (git-file-name name version))
  7191. (sha256
  7192. (base32
  7193. "1l04yj2znch3hpyw90c4g4jan453w7d88l84bgl0c72i2kbb8z7h"))))
  7194. (build-system ant-build-system)
  7195. (arguments
  7196. `(#:jar-name "signpost-core.jar"
  7197. #:source-dir "signpost-core/src/main/java"
  7198. #:test-dir "signpost-core/src/test"
  7199. ;; Tests all fail with InstantiationException from mockito
  7200. #:tests? #f))
  7201. (propagated-inputs
  7202. `(("java-commons-codec" ,java-commons-codec)))
  7203. (home-page "https://github.com/mttkay/signpost")
  7204. (synopsis "Lightweight client-side OAuth library for Java")
  7205. (description "Signpost is the easy and intuitive solution for signing
  7206. HTTP messages on the Java platform in conformance with the OAuth Core 1.0a
  7207. standard. Signpost follows a modular and flexible design, allowing you to
  7208. combine it with different HTTP messaging layers.")
  7209. (license license:asl2.0)))
  7210. (define-public tidyp
  7211. (package
  7212. (name "tidyp")
  7213. (version "1.04")
  7214. (source
  7215. (origin
  7216. (method url-fetch)
  7217. (uri (string-append "https://github.com/downloads/petdance/tidyp/tidyp-"
  7218. version ".tar.gz"))
  7219. (sha256
  7220. (base32
  7221. "0f5ky0ih4vap9c6j312jn73vn8m2bj69pl2yd3a5nmv35k9zmc10"))))
  7222. (build-system gnu-build-system)
  7223. ;; ./test-thing.sh tries to run ./testall.sh, which is not included.
  7224. (arguments `(#:tests? #f))
  7225. (home-page "http://www.tidyp.com/")
  7226. (synopsis "Validate HTML")
  7227. (description "Tidyp is a program that can validate your HTML, as well as
  7228. modify it to be more clean and standard. tidyp does not validate HTML 5.
  7229. libtidyp is the library on which the program is based. It can be used by any
  7230. other program that can interface to it. The Perl module @code{HTML::Tidy} is
  7231. based on this library, allowing Perl programmers to easily validate HTML.")
  7232. ;; See htmldoc/license.html
  7233. (license license:bsd-3)))
  7234. (define-public perl-html-tidy
  7235. (package
  7236. (name "perl-html-tidy")
  7237. (version "1.60")
  7238. (source
  7239. (origin
  7240. (method url-fetch)
  7241. (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-"
  7242. version ".tar.gz"))
  7243. (sha256
  7244. (base32
  7245. "1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw"))))
  7246. (build-system perl-build-system)
  7247. (arguments
  7248. '(#:phases
  7249. (modify-phases %standard-phases
  7250. (add-after 'unpack 'fix-tidyp-paths
  7251. (lambda* (#:key inputs #:allow-other-keys)
  7252. (substitute* "Makefile.PL"
  7253. (("^my \\$inc = \"" line)
  7254. (string-append line
  7255. "-I" (assoc-ref inputs "tidyp") "/include/tidyp "))
  7256. (("-L/usr/lib")
  7257. (string-append
  7258. "-L" (assoc-ref inputs "tidyp") "/lib")))
  7259. #t)))))
  7260. (inputs
  7261. `(("perl-libwww" ,perl-libwww)
  7262. ("tidyp" ,tidyp)))
  7263. (native-inputs
  7264. `(("perl-test-exception" ,perl-test-exception)))
  7265. (home-page "https://metacpan.org/release/HTML-Tidy")
  7266. (synopsis "(X)HTML validation in a Perl object")
  7267. (description "@code{HTML::Tidy} is an HTML checker in a handy dandy
  7268. object. It's meant as a replacement for @code{HTML::Lint}, which is written
  7269. in Perl but is not nearly as capable as @code{HTML::Tidy}.")
  7270. (license license:artistic2.0)))
  7271. (define-public geomyidae
  7272. (package
  7273. (name "geomyidae")
  7274. (version "0.34")
  7275. (source
  7276. (origin
  7277. (method git-fetch)
  7278. (uri (git-reference
  7279. (url "git://r-36.net/geomyidae")
  7280. (commit (string-append "v" version))))
  7281. (file-name (git-file-name name version))
  7282. (sha256
  7283. (base32 "02afgrk36wkdkflyqr2xgh49v9zq6ma454jshk7igvhpxfb5l3ks"))))
  7284. (build-system gnu-build-system)
  7285. (arguments
  7286. `(#:make-flags (list "CC=gcc"
  7287. (string-append "PREFIX="
  7288. (assoc-ref %outputs "out")))
  7289. #:tests? #f ; no tests
  7290. #:phases (modify-phases %standard-phases
  7291. (delete 'configure))))
  7292. (home-page "http://r-36.net/scm/geomyidae/file/README.html")
  7293. (synopsis "Small Gopher server")
  7294. (description
  7295. "Geomyidae is a server for distributed hypertext protocol Gopher. Its
  7296. features include:
  7297. @enumerate
  7298. @item Gopher menus (see @file{index.gph} for an example);
  7299. @item directory listings (if no @file{index.gph} was found);
  7300. @item CGI support (@file{.cgi} files are executed);
  7301. @item search support in CGI files;
  7302. @item logging with multiple log levels.
  7303. @end enumerate\n")
  7304. (license license:expat)))
  7305. (define-public cat-avatar-generator
  7306. (package
  7307. (name "cat-avatar-generator")
  7308. (version "1")
  7309. (source (origin
  7310. (method git-fetch)
  7311. (uri (git-reference
  7312. (url "https://framagit.org/Deevad/cat-avatar-generator.git")
  7313. (commit "71c0c662742cafe8afd2d2d50ec84243113e35ad")))
  7314. (file-name (string-append name "-" version))
  7315. (sha256
  7316. (base32
  7317. "0s7b5whqsmfa57prbgl66ym551kg6ly0z14h5dgrlx4lqm70y2yw"))))
  7318. (build-system trivial-build-system)
  7319. (arguments
  7320. `(#:modules ((guix build utils))
  7321. #:builder
  7322. (begin
  7323. (use-modules (guix build utils)
  7324. (srfi srfi-1)
  7325. (srfi srfi-26))
  7326. (let ((source (assoc-ref %build-inputs "source"))
  7327. (php-dir (string-append %output "/share/web/" ,name "/")))
  7328. ;; The cache directory must not be in the store, but in a writable
  7329. ;; location. The webserver will give us this location.
  7330. (copy-recursively source php-dir)
  7331. (substitute* (string-append php-dir "/cat-avatar-generator.php")
  7332. (("\\$cachepath = .*")
  7333. "if(isset($_SERVER['CACHE_DIR']))
  7334. $cachepath = $_SERVER['CACHE_DIR'];
  7335. else
  7336. die('You need to set the CACHE_DIR variable first.');"))
  7337. #t))))
  7338. (home-page "https://framagit.org/Deevad/cat-avatar-generator")
  7339. (synopsis "Random avatar generator")
  7340. (description "Cat avatar generator is a generator of cat pictures optimised
  7341. to generate random avatars, or defined avatar from a \"seed\". This is a
  7342. derivation by David Revoy from the original MonsterID by Andreas Gohr.")
  7343. ;; expat for the code, CC-BY 4.0 for the artwork
  7344. (license (list license:expat
  7345. license:cc-by4.0))))
  7346. (define-public nghttp2
  7347. (package
  7348. (name "nghttp2")
  7349. (version "1.44.0")
  7350. (source
  7351. (origin
  7352. (method url-fetch)
  7353. (uri (string-append "https://github.com/nghttp2/nghttp2/"
  7354. "releases/download/v" version "/"
  7355. "nghttp2-" version ".tar.xz"))
  7356. (sha256
  7357. (base32
  7358. "0p9wvva4g8hwj55x19rbyvnq2dbsnf65rphhxnpqs7ll54xlg6an"))))
  7359. (build-system gnu-build-system)
  7360. (outputs (list "out"
  7361. "lib")) ; only libnghttp2
  7362. (native-inputs
  7363. `(("pkg-config" ,pkg-config)
  7364. ;; Required by tests.
  7365. ("cunit" ,cunit)
  7366. ("python" ,python)
  7367. ("tzdata" ,tzdata-for-tests)))
  7368. (inputs
  7369. ;; Required to build the tools (i.e. without ‘--enable-lib-only’).
  7370. `(("c-ares" ,c-ares)
  7371. ("jansson" ,jansson) ; for HPACK tools
  7372. ,@(if (hurd-target?) '()
  7373. `(("jemalloc" ,jemalloc))) ; fight nghttpd{,x} heap fragmentation
  7374. ("libev" ,libev)
  7375. ("libxml2" ,libxml2) ; for ‘nghttp -a’
  7376. ("openssl" ,openssl)
  7377. ,@(if (hurd-target?)
  7378. `(("openssl-static" ,openssl "static"))
  7379. '())))
  7380. (arguments
  7381. `(#:configure-flags
  7382. (list (string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
  7383. "--enable-app" ; build all the tools
  7384. "--enable-hpack-tools" ; ...all the tools
  7385. "--disable-examples"
  7386. "--disable-static") ; don't bother building .a files
  7387. #:phases
  7388. (modify-phases %standard-phases
  7389. (add-after 'unpack 'break-circular-reference
  7390. ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
  7391. ;; which is not allowed. Break this cycle. While we could install
  7392. ;; only the library to ‘out’ and move everything else to a separate
  7393. ;; output, this would inconvenience the majority of (human) users.
  7394. (lambda* (#:key outputs #:allow-other-keys)
  7395. (substitute* "lib/libnghttp2.pc.in"
  7396. (("@prefix@")
  7397. (assoc-ref outputs "lib")))
  7398. #t))
  7399. (add-before 'check 'set-timezone-directory
  7400. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  7401. (setenv "TZDIR" (string-append
  7402. (assoc-ref (or native-inputs inputs) "tzdata")
  7403. "/share/zoneinfo"))
  7404. #t)))))
  7405. (home-page "https://nghttp2.org/")
  7406. (synopsis "HTTP/2 protocol client, proxy, server, and library")
  7407. (description
  7408. "nghttp2 implements the Hypertext Transfer Protocol, version
  7409. 2 (@dfn{HTTP/2}).
  7410. A reusable C library provides the HTTP/2 framing layer, with several tools built
  7411. on top of it:
  7412. @itemize
  7413. @item @command{nghttp}, a command-line HTTP/2 client. It exposes many advanced
  7414. and low-level aspects of the protocol and is useful for debugging.
  7415. @item @command{nghttpd}, a fast, multi-threaded HTTP/2 static web server that
  7416. serves files from a local directory.
  7417. @item @command{nghttpx}, a fast, multi-threaded HTTP/2 reverse proxy that can be
  7418. deployed in front of existing web servers that don't support HTTP/2.
  7419. Both @command{nghttpd} and @command{nghttpx} can fall back to HTTP/1.1 for
  7420. backwards compatibility with clients that don't speak HTTP/2.
  7421. @item @command{h2load} for benchmarking (only!) your own HTTP/2 servers.
  7422. @item HTTP/2 uses a header compression method called @dfn{HPACK}.
  7423. nghttp2 provides a HPACK encoder and decoder as part of its public API.
  7424. @item @command{deflatehd} converts JSON data or HTTP/1-style header fields to
  7425. compressed JSON header blocks.
  7426. @item @command{inflatehd} converts such compressed headers back to JSON pairs.
  7427. @end itemize\n")
  7428. (license license:expat)))
  7429. (define-public hpcguix-web
  7430. (package
  7431. (name "hpcguix-web")
  7432. (version "0.1.0")
  7433. (source (origin
  7434. (method git-fetch)
  7435. (uri (git-reference
  7436. (url "https://github.com/UMCUGenetics/hpcguix-web")
  7437. (commit (string-append "v" version))))
  7438. (file-name (git-file-name name version))
  7439. (sha256
  7440. (base32
  7441. "02lz5k1hhkwfz3nr3lsd69icsz6n0q82z047d3svi09qpxw6y0cj"))))
  7442. (build-system gnu-build-system)
  7443. (arguments
  7444. `(#:modules ((guix build gnu-build-system)
  7445. (guix build utils)
  7446. (srfi srfi-26)
  7447. (ice-9 popen)
  7448. (ice-9 rdelim))
  7449. #:phases
  7450. (modify-phases %standard-phases
  7451. (add-before 'configure 'set-variables
  7452. (lambda _
  7453. ;; This prevents a few warnings
  7454. (setenv "GUILE_AUTO_COMPILE" "0")
  7455. (setenv "XDG_CACHE_HOME" (getcwd))))
  7456. (add-after 'install 'wrap-program
  7457. (lambda* (#:key inputs outputs #:allow-other-keys)
  7458. (let* ((out (assoc-ref outputs "out"))
  7459. (guix (assoc-ref inputs "guix"))
  7460. (guile (assoc-ref inputs "guile"))
  7461. (gcrypt (assoc-ref inputs "guile-gcrypt"))
  7462. (git (assoc-ref inputs "guile-git"))
  7463. (bs (assoc-ref inputs "guile-bytestructures"))
  7464. (json (assoc-ref inputs "guile-json"))
  7465. (guile-cm (assoc-ref inputs
  7466. "guile-commonmark"))
  7467. (deps (list guile gcrypt git bs guile-cm guix json))
  7468. (effective
  7469. (read-line
  7470. (open-pipe* OPEN_READ
  7471. (string-append guile "/bin/guile")
  7472. "-c" "(display (effective-version))")))
  7473. (path (string-join
  7474. (map (cut string-append <>
  7475. "/share/guile/site/"
  7476. effective)
  7477. deps)
  7478. ":"))
  7479. (gopath (string-join
  7480. (map (cut string-append <>
  7481. "/lib/guile/" effective
  7482. "/site-ccache")
  7483. deps)
  7484. ":")))
  7485. (wrap-program (string-append out "/bin/hpcguix-web")
  7486. `("GUILE_LOAD_PATH" ":" prefix (,path))
  7487. `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))))))))
  7488. (native-inputs
  7489. `(("autoconf" ,autoconf)
  7490. ("automake" ,automake)
  7491. ("uglify-js" ,uglify-js)
  7492. ("pkg-config" ,pkg-config)))
  7493. (inputs
  7494. `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
  7495. ("guix" ,guix)
  7496. ("bash-minimal" ,bash-minimal))) ;for 'wrap-program'
  7497. (propagated-inputs
  7498. `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
  7499. ("guile-commonmark" ,guile-commonmark)
  7500. ("guile-json" ,guile-json-4)))
  7501. (home-page "https://github.com/UMCUGenetics/hpcguix-web")
  7502. (synopsis "Web interface for cluster deployments of Guix")
  7503. (description "Hpcguix-web provides a web interface to the list of packages
  7504. provided by Guix. The list of packages is searchable and provides
  7505. instructions on how to use Guix in a shared HPC environment.")
  7506. (license license:agpl3+)))
  7507. (define-public httrack
  7508. (package
  7509. (name "httrack")
  7510. (version "3.49.2")
  7511. (source (origin
  7512. (method url-fetch)
  7513. (uri (string-append "https://mirror.httrack.com/historical/"
  7514. "httrack-" version ".tar.gz"))
  7515. (sha256
  7516. (base32
  7517. "09a0gm67nml86qby1k1gh7rdxamnrnzwr6l9r5iiq94favjs0xrl"))))
  7518. (build-system gnu-build-system)
  7519. (inputs
  7520. `(("libressl" ,libressl)
  7521. ("zlib" ,zlib)))
  7522. (home-page "https://www.httrack.com/")
  7523. (synopsis "Easy-to-use offline browser utility")
  7524. (description "HTTrack allows you to download a World Wide Web site from
  7525. the Internet to a local directory, building recursively all directories,
  7526. getting HTML, images, and other files from the server to your computer.
  7527. HTTrack arranges the original site's relative link-structure. Simply open
  7528. a page of the @emph{mirrored} website in your browser, and you can browse the
  7529. site from link to link, as if you were viewing it online. HTTrack can also
  7530. update an existing mirrored site, and resume interrupted downloads.
  7531. HTTrack is fully configurable, and has an integrated help system.")
  7532. (license license:gpl3+)))
  7533. (define-public buku
  7534. (package
  7535. (name "buku")
  7536. (version "4.6")
  7537. (source
  7538. (origin
  7539. (method url-fetch)
  7540. (uri (pypi-uri "buku" version))
  7541. (file-name (git-file-name name version))
  7542. (sha256
  7543. (base32 "1n4d1mkjyvzdxbyq067p1p9skb3iwx0msd86nzr224dlqrfh9675"))))
  7544. (build-system python-build-system)
  7545. (arguments
  7546. `(#:tests? #f)) ;FIXME: many tests need network access
  7547. (inputs
  7548. `(("python-beautifulsoup4" ,python-beautifulsoup4)
  7549. ("python-certifi" ,python-certifi)
  7550. ("python-cryptography" ,python-cryptography)
  7551. ("python-html5lib" ,python-html5lib)
  7552. ("python-urllib3" ,python-urllib3)))
  7553. (home-page "https://github.com/jarun/buku")
  7554. (synopsis "Bookmark manager")
  7555. (description
  7556. "buku is a powerful bookmark manager written in Python3 and SQLite3.
  7557. @command{buku} can auto-import bookmarks from your browser and present them
  7558. in an interactive command-line interface that lets you compose and update
  7559. bookmarks directly. It can also present them in a web interface with
  7560. @command{bukuserver}.")
  7561. (license license:gpl3+)))
  7562. (define-public anonip
  7563. (package
  7564. (name "anonip")
  7565. (version "1.0.0")
  7566. (source (origin
  7567. (method url-fetch)
  7568. (uri (pypi-uri "anonip" version))
  7569. (sha256
  7570. (base32
  7571. "0ckn9nnfhpdnz8b92q8pkysdqj6pdh71ckfqvfj0z01cq0hzbhd2"))))
  7572. (build-system python-build-system)
  7573. (home-page "https://github.com/DigitaleGesellschaft/Anonip")
  7574. (synopsis "Anonymize IP addresses in log files")
  7575. (description
  7576. "Anonip masks the last bits of IPv4 and IPv6 addresses in log files.
  7577. That way most of the relevant information is preserved, while the IP address
  7578. does not match a particular individuum anymore.
  7579. Depending on your Web server, the log entries may be piped to Anonip directly
  7580. or via a FIFO (named pipe). Thus the unmasked IP addresses will never be
  7581. written to any file.
  7582. It's also possible to rewrite existing log files.
  7583. Anonip can also be uses as a Python module in your own Python application.")
  7584. (license license:bsd-3)))
  7585. (define-public poussetaches
  7586. (package
  7587. (name "poussetaches")
  7588. (version "0.0.2")
  7589. (source
  7590. (origin
  7591. (method git-fetch)
  7592. (uri (git-reference
  7593. (url "https://github.com/tsileo/poussetaches")
  7594. (commit version)))
  7595. (file-name (git-file-name name version))
  7596. (sha256
  7597. (base32
  7598. "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
  7599. (build-system go-build-system)
  7600. (propagated-inputs
  7601. `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron)
  7602. ("go-golang-org-x-time" ,go-golang-org-x-time)))
  7603. (arguments
  7604. `(#:import-path "github.com/tsileo/poussetaches"))
  7605. (home-page "https://github.com/tsileo/poussetaches")
  7606. (synopsis "Lightweight asynchronous task execution service")
  7607. (description "Poussetaches (which literally means \"push tasks\" in
  7608. French) is a lightweight asynchronous task execution service that aims to
  7609. replace Celery and RabbitMQ for small Python applications.
  7610. The app posts base64-encoded payload to poussetaches and specifies the
  7611. endpoint that will be used to trigger the task. Poussetaches makes HTTP
  7612. requests with the registered payload until the right status code is
  7613. returned.")
  7614. (license license:isc)))
  7615. (define-public htmlcxx
  7616. (package
  7617. (name "htmlcxx")
  7618. (version "0.87")
  7619. (source
  7620. (origin
  7621. (method url-fetch)
  7622. (uri
  7623. (string-append "mirror://sourceforge/htmlcxx/v"
  7624. version "/htmlcxx-" version ".tar.gz"))
  7625. (sha256
  7626. (base32 "1j3mzjlczjrk4ahc43s6kzpvzypzjmqz4sillnca5yadrwwgjf2x"))))
  7627. (build-system gnu-build-system)
  7628. (home-page "http://htmlcxx.sourceforge.net/")
  7629. (synopsis "Simple non-validating CSS1 and HTML parser for C++")
  7630. (description "htmlcxx is a simple non-validating CSS1 and HTML parser for
  7631. C++. Although there are several other HTML parsers available, htmlcxx has some
  7632. characteristics that make it unique:
  7633. @itemize
  7634. @item STL like navigation of DOM tree, using excelent's tree.hh library from
  7635. Kasper Peeters
  7636. @item It is possible to reproduce exactly, character by character, the original
  7637. document from the parse tree
  7638. @item Bundled CSS parser
  7639. @item Optional parsing of attributes
  7640. @item C++ code that looks like C++ (not so true anymore)
  7641. @item Offsets of tags/elements in the original document are stored in the nodes
  7642. of the DOM tree
  7643. @end itemize")
  7644. (license (list license:lgpl2.0
  7645. license:gpl2
  7646. license:asl2.0))))
  7647. (define-public librocket
  7648. (package
  7649. (name "librocket")
  7650. (version "1.3.0.0")
  7651. (source
  7652. (origin
  7653. (method git-fetch)
  7654. (uri
  7655. (git-reference
  7656. (url "https://github.com/libRocket/libRocket")
  7657. (commit (string-append "release-" version))))
  7658. (file-name (git-file-name name version))
  7659. (sha256
  7660. (base32 "1n6gq007vqijyfasfnfg6c8d2rc9qarl4bhzbgkz062m4h5izlfs"))))
  7661. (build-system cmake-build-system)
  7662. (arguments
  7663. `(#:tests? #f ; No tests.
  7664. #:phases
  7665. (modify-phases %standard-phases
  7666. (add-after 'unpack 'chdir
  7667. (lambda _
  7668. (chdir "Build"))))))
  7669. (inputs
  7670. `(("freetype" ,freetype)))
  7671. (home-page "https://github.com/libRocket/libRocket") ; http://librocket.com/ is down.
  7672. (synopsis "HTML/CSS user interface library")
  7673. (description "libRocket is a C++ user interface package based on the HTML
  7674. and CSS standards. libRocket uses the open standards XHTML1.0 and
  7675. CSS2.0 (while borrowing features from HTML5 and CSS3), and extends them with
  7676. features suited towards real-time applications. It is designed as a complete
  7677. solution for any project's interface needs:
  7678. @itemize
  7679. @item Dynamic layout system.
  7680. @item Efficient application-wide styling, with a custom-built templating engine.
  7681. @item Fully featured control set: buttons, sliders, drop-downs, etc.
  7682. @item Runtime visual debugging suite.
  7683. @item Easily integrated and extensible with Python or Lua scripting.
  7684. @end itemize\n")
  7685. (license license:expat)))
  7686. (define-public gmnisrv
  7687. (let ((commit "32854b79c73b278bf33eb5123abf1c36abdc7c01")
  7688. (revision "2"))
  7689. (package
  7690. (name "gmnisrv")
  7691. (version (git-version "0" revision commit))
  7692. (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
  7693. (source (origin
  7694. (method git-fetch)
  7695. (uri (git-reference
  7696. (url home-page)
  7697. (commit commit)))
  7698. (sha256
  7699. (base32
  7700. "0lbb3ablwkdcgm1cjr1hikr55y8gpl420nh8b8g9wn4abhm2xgr9"))
  7701. (file-name (git-file-name name version))))
  7702. (build-system gnu-build-system)
  7703. (arguments
  7704. `(#:tests? #f ; no check target
  7705. #:configure-flags (list "--sysconfdir=/etc"
  7706. (string-append "--with-mimedb="
  7707. (assoc-ref %build-inputs "mailcap")
  7708. "/etc/mime.types"))
  7709. #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
  7710. (inputs
  7711. `(("mailcap" ,mailcap)
  7712. ("openssl" ,openssl)))
  7713. (native-inputs
  7714. `(("pkg-config" ,pkg-config)
  7715. ("scdoc" ,scdoc)))
  7716. (synopsis "Simple Gemini protocol server")
  7717. (description "gmnisrv is a simple Gemini protocol server written in C.")
  7718. (license (list license:gpl3+
  7719. license:bsd-3))))) ;; for ini.c and ini.h
  7720. (define-public libzim
  7721. (package
  7722. (name "libzim")
  7723. (version "6.3.2")
  7724. (source (origin
  7725. (method git-fetch)
  7726. (uri (git-reference
  7727. (url "https://github.com/openzim/libzim")
  7728. (commit version)))
  7729. (sha256
  7730. (base32
  7731. "00kc4qc0a69jh1jwk5xhi567b7ffpc3p38ffrf2xaax4hvpjwmn6"))
  7732. (file-name (git-file-name name version))))
  7733. (build-system meson-build-system)
  7734. (arguments
  7735. ;; TODO: Find out why tests fail.
  7736. '(#:tests? #f))
  7737. (inputs
  7738. `(("icu4c" ,icu4c)
  7739. ("liblzma" ,xz)
  7740. ("libuuid" ,util-linux "lib")
  7741. ("xapian" ,xapian)
  7742. ("zstd" ,zstd "lib")))
  7743. (native-inputs
  7744. `(("pkg-config" ,pkg-config)
  7745. ("googletest" ,googletest)))
  7746. (home-page "https://wiki.openzim.org/wiki/Main_Page")
  7747. (synopsis "Reference implementation of the ZIM specification")
  7748. (description "The openZIM project proposes offline storage solutions for
  7749. content coming from the Web. The zimlib is the standard implementation of the
  7750. ZIM specification. It is a library which implements the read and write method
  7751. for ZIM files.")
  7752. (license license:gpl2)))
  7753. (define-public kiwix-lib
  7754. (package
  7755. (name "kiwix-lib")
  7756. (version "9.4.1")
  7757. (home-page "https://github.com/kiwix/kiwix-lib/")
  7758. (source (origin
  7759. (method git-fetch)
  7760. (uri (git-reference
  7761. (url home-page)
  7762. (commit version)))
  7763. (sha256
  7764. (base32
  7765. "034nk6l623v78clrs2d0k1vg69sbzrd8c0q79qiqmlkinck1nkxw"))
  7766. (file-name (git-file-name name version))))
  7767. (build-system meson-build-system)
  7768. (arguments
  7769. `(#:phases
  7770. (modify-phases %standard-phases
  7771. (add-before 'configure 'fix-paths-and-includes
  7772. (lambda* (#:key inputs #:allow-other-keys)
  7773. (setenv "CPPFLAGS" (string-append "-I" (assoc-ref inputs "mustache")))
  7774. (substitute* "src/aria2.cpp"
  7775. (("ARIA2_CMD \"aria2c\"")
  7776. (string-append "ARIA2_CMD \""
  7777. (assoc-ref inputs "aria2")
  7778. "/bin/aria2c\"")))
  7779. #t)))))
  7780. (inputs
  7781. `(("aria2" ,aria2)
  7782. ("curl" ,curl)
  7783. ("icu4c" ,icu4c)
  7784. ("libmicrohttpd" ,libmicrohttpd)
  7785. ("libzim" ,libzim)
  7786. ("pugixml" ,pugixml)
  7787. ("xapian" ,xapian)
  7788. ("zlib" ,zlib)
  7789. ("zstd" ,zstd "lib")))
  7790. (native-inputs
  7791. `(("mustache" ,(origin
  7792. (method git-fetch)
  7793. (uri (git-reference
  7794. (url "https://github.com/kainjow/Mustache")
  7795. ;; XXX: Readme says to use version 3. Can we use 3.2.1?
  7796. (commit "v4.1")))
  7797. (file-name (git-file-name "mustache" "4.1"))
  7798. (sha256
  7799. (base32
  7800. "0r9rbk6v1wpld2ismfsk2lkhbyv3dkf0p03hkjivbj05qkfhvlbb"))))
  7801. ("pkg-config" ,pkg-config)))
  7802. (synopsis "Common code base for all Kiwix ports")
  7803. (description "The Kiwix library provides the Kiwix software suite core.
  7804. It contains the code shared by all Kiwix ports.")
  7805. (license license:gpl3)))
  7806. (define-public kiwix-desktop
  7807. (package
  7808. (name "kiwix-desktop")
  7809. (version "2.0.5")
  7810. (source (origin
  7811. (method url-fetch)
  7812. (uri (string-append
  7813. "https://download.kiwix.org/release/kiwix-desktop/kiwix-desktop-"
  7814. version
  7815. ".tar.gz"))
  7816. (sha256
  7817. (base32
  7818. "1a9h4qmh6fkfscyp6lax0ri07dvvzw2wp4kr1sm86n0bdk3cwwha"))))
  7819. (build-system gnu-build-system)
  7820. (arguments
  7821. `(#:phases
  7822. (modify-phases %standard-phases
  7823. (replace 'configure
  7824. (lambda* (#:key outputs #:allow-other-keys)
  7825. (invoke "qmake"
  7826. (string-append "PREFIX="
  7827. (assoc-ref outputs "out")))))
  7828. (add-before 'configure 'enable-print-support
  7829. (lambda _
  7830. (substitute* "kiwix-desktop.pro"
  7831. (("webenginewidgets") "webenginewidgets printsupport"))
  7832. #t))
  7833. (add-before 'configure 'substitute-source
  7834. ;; Looks like .pro file is missing a feature.
  7835. ;; See https://github.com/kiwix/kiwix-desktop/issues/556.
  7836. (lambda* (#:key inputs #:allow-other-keys)
  7837. (substitute* "kiwix-desktop.pro"
  7838. (("webenginewidgets" all) (string-append all " printsupport")))
  7839. #t))
  7840. (add-after 'install 'wrap-qt-process-path
  7841. (lambda* (#:key inputs outputs #:allow-other-keys)
  7842. (let* ((out (assoc-ref outputs "out"))
  7843. (bin (string-append out "/bin/kiwix-desktop"))
  7844. (qt-process-path (string-append
  7845. (assoc-ref inputs "qtwebengine")
  7846. "/lib/qt5/libexec/QtWebEngineProcess")))
  7847. (wrap-program bin
  7848. `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
  7849. #t))))))
  7850. (inputs
  7851. `(("curl" ,curl)
  7852. ("icu4c" ,icu4c)
  7853. ("kiwix-lib" ,kiwix-lib)
  7854. ("libmicrohttpd" ,libmicrohttpd)
  7855. ("libzim" ,libzim)
  7856. ("pugixml" ,pugixml)
  7857. ("qtbase" ,qtbase-5)
  7858. ("qtdeclarative" ,qtdeclarative)
  7859. ("qtwebchannel" ,qtwebchannel)
  7860. ("qtwebengine" ,qtwebengine)
  7861. ("xapian" ,xapian)
  7862. ("zlib" ,zlib)
  7863. ("zstd" ,zstd "lib")))
  7864. (native-inputs
  7865. `(("pkg-config" ,pkg-config)
  7866. ("qmake" ,qtbase-5)))
  7867. (home-page "https://wiki.kiwix.org/wiki/Software")
  7868. (synopsis "Viewer and manager of ZIM files")
  7869. (description "Kiwix Desktop allows you to enjoy a lot of different content
  7870. offline (such as Wikipedia), without any access to Internet.")
  7871. (license license:gpl3)))
  7872. (define-public uriparser
  7873. (let ((commit "25dddb16cf044a7df27884e7ad3911baaaca3d7c")
  7874. (revision "1"))
  7875. (package
  7876. (name "uriparser")
  7877. (version (git-version "0.9.4" revision commit))
  7878. (source (origin
  7879. (method git-fetch)
  7880. (uri (git-reference
  7881. (url "https://github.com/uriparser/uriparser")
  7882. (commit commit)))
  7883. (file-name (git-file-name name version))
  7884. (sha256
  7885. (base32
  7886. "1ffzia679axcsccx2fxjpxhb0i5xc42zxn446x6c1170w6v69qf6"))))
  7887. (build-system cmake-build-system)
  7888. (native-inputs `(("gtest" ,googletest)
  7889. ("doxygen" ,doxygen)
  7890. ("graphviz" ,graphviz)))
  7891. (synopsis "Strictly RFC 3986 compliant URI parsing and handling library")
  7892. (description "uriparser is a strictly RFC 3986 compliant URI parsing and
  7893. handling library written in C89 (\"ANSI C\"). uriparser is fast and supports
  7894. Unicode.")
  7895. (home-page "https://uriparser.github.io/")
  7896. (license license:bsd-3))))
  7897. (define-public quark
  7898. ;; No releases yet
  7899. (let ((revision "0")
  7900. (commit "c6a9055e5a30be570e30da8d216c39662c3a3f99"))
  7901. (package
  7902. (name "quark")
  7903. (version (git-version "0.0.0" revision commit))
  7904. (source (origin
  7905. (method git-fetch)
  7906. (uri (git-reference
  7907. (url "https://git.suckless.org/quark/")
  7908. (commit commit)))
  7909. (file-name (git-file-name name version))
  7910. (sha256
  7911. (base32
  7912. "1znvnr30xi5vgd6n3wvgv9pwj992zpzzjk0fmq28ydf1l6kqvkm7"))))
  7913. (build-system gnu-build-system)
  7914. (arguments
  7915. `(#:tests? #f ; no tests
  7916. #:make-flags
  7917. (list (string-append "CC=" ,(cc-for-target))
  7918. (string-append "PREFIX=" %output))
  7919. #:phases
  7920. (modify-phases %standard-phases
  7921. (delete 'configure)))) ; no configure script
  7922. (home-page "https://tools.suckless.org/quark/")
  7923. (synopsis "Small and simple HTTP GET/HEAD-only web server for static
  7924. content")
  7925. (description "Quark is an extremely small and simple HTTP GET/HEAD only
  7926. web server for static content. TLS is not natively supported and should be
  7927. provided by a TLS reverse proxy (e.g. tlstunnel, hitch or stunnel).")
  7928. (license license:isc)
  7929. ;; XXX: Ignore this CVE to work around a name clash with the unrelated
  7930. ;; "cpe:2.3:a:comelz:quark" package. The proper fix is for (guix cve)
  7931. ;; to account for "vendor names".
  7932. (properties '((lint-hidden-cve . ("CVE-2019-15520")))))))