U±G¹ŒèµãvSBÏh1Æ(9ØsÊpxÒÎæ¶ëCã[zX[2À×!vH#-0ÕÏDÛFü0\Ü2Àg£žHÎŒ¥v²#/êpn#O[``Q3Á6VfV5WÆ¥L¶Ìv$m#-,HSÝ3 µHâÀp0Bã#$ñ¬Ä×{;ðc¬gkj,¢çkV#Œåí $òsO¿êàüÚ©L"#/D`¥
t16×:{>þ?â Ï8ÌDHC
óòX"#œ0q2¢¡>uå÷#µWÓ{DØa!ݧb©ÝV3žÖÀ4*SmÙüç Uy ïô(_{#/êi·ÉúÜn¬¬YtëÃ&E_žò#/ûwܪ¡ÏôzòœxÕjSxv'ËÕîôÖ. YÍÌÙx»ÏktÙ äæ÷n&Òã³Ëø£ÒÿU€¡K¹eŽ8ŒŠgÓÌÞç·n7m#-H1É#m@GKíÙ³wsÛä¯mùöGÝÆuêNÐ÷¢?:1pa8¡I¢©5tîX®L1ê4áœ,5¹`µ#-§Öè
%±CÌ€î$#%Èð³»6ÒInªe5Z^]Ì%(š#%t``žf ¿P;àá"Göuz¯¯×:]ßPPÑE(EM&¶° ²&J(*i!ª[4ɬk&¢µcL£lIŽÃ²¢Æ4Ò¡dIE)D$šŠ ÔJDÔi¢£dÙU4-##-aÌ"CTDM ŽÛÐ|æ|Öâá¹ôØ(3vŠ3Aߥne£Ü°®ºEcø#%ÍæÚÂßk!!cÌ0d Äc_Vø²Ýýz1/Él®¡>o€=Û`µHrÉ>Ây óž 6€R<ø7å#-Œs¬2Rljm[-OÊô×fÊžX (ÉáË?3@ês+Ìðåå;Cb7Na|I"LÁ€²ÙK òusÖ#-ä·ajÞ»žÒ!9Õû*!toX¥®Ç0µ:#%·uû |À'ÓHÑED¢5I¶>e«\ÚE°ÂQ£±÷jæ[0hÄÌGèM!¥Øûq={ïdDBIŠ»tÒYœN ¿$Âœý
ÁŽÍý¢Ô4ÌF£.V0Øâìñšvš£-Ôr[o$cÓJj4aŠÁÇjKÒ#-6ŠàÖM=üíyc)Nݯz#-1-BLN¥Ë_Q¶ø9`]"VyiR11
Aud/ÌôaÕÃÌøàq#'è¶ëå)×klCm18öì&·OQ¶ÊRiLjbf2ÖD2¹þJt¬³÷Më^¯y¹UÊŠÆŠòL¬!ÚæbÇÄ#-ìvV9æe>ÙÖaLPUmC@Àf-CØmeûA*ªwAñe@>ßÊÜ#-ü#%$àf#/W̱B®|}NùßÇ}QŽGÿjز<8eiÚÊ:S¹IÆÜ0F)ß}gìÐt¥À¯ë0|>DAâ€6¡BUT5çê }ÊRÐ0AxÔîoxj|Cð#%?'§Njr#'0µÏòŒ%W²å1*íáYùøxã*7ß*š¥MµtÀñºHú¯ÌQ÷éLBŠ¥tÍ«lv`î2ÆÍ#ÏÝGʬIRâÑRÝ ©mŠLšlh,Rh9d;2öHïð^îWÃWpçš»:ÎØù])áÒÆ4Dåç°ÉîÉ£Ê{#%À'©ßÀ²pÓQôŸßUr>?}v/Ru"rÀã×ó)±ŒIíLj
NG¡¯RfÅ<Ì;¬#/Aî0x}+À_¬Îëhü> úJlßGãÄÁ¡kø}&!»°tªMG&gÝËõB`>Pp×à}Qå#PP¬DA*º=ÛT£žØýúÝÆ¡©ÂÊ_XS3>~±Î$~æqÁ.ÅóodÎw3µK!UÓE11ãvTÏÑ ²2F çÖÌš#-Pó³ŒíXÞî[ÈÜ#%#ìúÛÍÚ·ôÚþÌwžÃ[Ó}ùWß1ë«_6îFGãõlîsëÌ08é©=Vféاt^gG)P6BËî¥wy÷p°Ï6)NéÔU[Ûùc5ñÏmºìs£Š9¢îÒN a*žnb%#%1Õ²m¶0X8f3ÃN¡pdI¹#-1%:È×Òל8ö*[îžÈBFóuÇaS¥ ÛK¢NvM\0ãÙ§R;ÆÄÐÂùÄdÕ6wãRI6ñÐâYÃ2TJšc]ç>ædë:Y×2ÂÓ#-zéery06CÅ°š\ab ã1 s1âzÄÜ6 P0)¡m±J@ÐÍL¢Œ€~ŒÒÑÍÌà òhÄë{ù98)Ž€©Ø *èëÇÄØãY")-
pÛ{rqØÖÂóÂàXFQ¬^ÈP9£zÆsJ$Þà°/P`Ê5Qçåý{ë.I©ž£Ÿ! òð!hcïfyÌ«ÇIDUÓ#~s®ÝÐ&ZÄ3å58þÊU(*ÅtøaâLO:w\Nï1¥XV·aÙ¥Š=HgYÇV2öevhUôŽ Âk^K¬äG{ÒE;Ó¡SÂïÛ¶ Ò)rzv\bIIeñ2dú:ÇM¬ØÖDùG$»h·bžE@`A 뎫§$luf°ïßÐx«13~p0(xeÃtÑ!["šºß¡kSŒµR¬A.úu$[!"û»âÄÏ#/ÇÇmÈ
]^º³~ÑZÜïÌÒŽ^£jj>FãÃunåxa,ÈíîKfbÂ]z&°}j#/³1á\Ö¶¢ÔÑ7Ù͵7U9Þ
x¹Hîw+Ú5 #-ZxBSÒݧŽ@DËußHC2TšâÈjkìêÜCOȵµæ#/Šg¹svŠ&ì¥Çuë#WC\Í&MÅb)j7f$m6CvÜÇ<ùtÀÒ¥ÅÌëgqÅ«ëlÝqz§°}A¹%qHÎíúäÀÑÂü(,Á€Ék9f§i#%`,:Áã uÐÌ0QLl6C:iŽ#%sŽÕXDDÒLhw
q©×áÆç(2°uÎvüðì©y«ÎññÛu¥98hškÃتÚ*z iŠTÆ'`Î]D &3ÇÁqŸXÓ~6j·E&ëgxBp$Š46j#µb²x¥Æ`žÆéhÚÎs ºŽ'å»ÎQm2àé²)r×ÄÓAùzdåÓ<<4!2#/i;WŒïÏXèÖÚ3póϧh®i¯-u%\œßžè§wÓGš)S6H0¬EìómÍùe
ÕZ°bSÚwãŠâBZßRõ®<¥CAZ6)¡úf_³Ñ éšDb 6ÅÔvàÌP:Ocöí*oXÃ$ºÝ8ñ§fs$»Ü»vvêZÂF IßNÄjöãË;fµO &H¡Aèòà«+š2ÅÐì)Šé ²ÍÑÍ"¯·YkyLö3ÈÖIdx¥;çøŠŠ¥Ôë¬#bŸeÔL÷åP0{G=k(,Îð4ŠùÎÄå3L¹rpëZvLi¿.a#}eÐì»@ÂKOXv/5Ê·è²O4ogtÇÆp8§k°öè¹ T3@ñGO`Ø×dú£4äE"GÍdoŒcCy#aÆq6ß=(Ö!Á×kDåÌy Ók¯¢£ÍÙìŽÈMC³. !8lV±§Ï F#A@hÐÄ¥åäKÅx= Õ#-ELÇ"BÌÉ(³eÄÜ4Q³3,TT C)3-õ©õ!õÊ©¡/Ó)×¥;íåÁ|>Á Cs0Zò°`)³ÅR~gZè2)çy#/€²#"¥"2Åݵæy&§yÝ7ž#¯,!,€@%ÒÎiÁ&Tpwp(Øýõ#-I"ºÉ£8+²¥tÒñŒoÄ49ÖSFF :Bé$i6&Nb¹öw7nþ`]ÊN[ÌìqÚhz1ó¡u©qôÌ°ÄxHÂ1QÁã¹!"¢±Då0¯=aŽ2¡# ÑĪñ0;LçòšOù¡NÖz߹ͯkëg3Ÿ¢¯¶Î}Òª)ëFlªó3!Ð9§°Ï¯âM#/ê#/02q6Œª1#-œSô9g\ßÝrõý4j5\#/L¹gûSSôeLÉ·(É»$8":¢ñÅ>¿ qòTMüºö=ëÔA*§Ž^)ÔwáÉÝ·û-'äÙÍÍŽðBŠ&ž°wéFfEb©¬Dõ €~ól3|Œ#-(É+ Þæû!8k_akuµj͵iF Dw1*¡";,H&Û" lI«%"mo¥\
4É»"@²2t}RÔ#%ÓÃáÃÀHØ8_ëÜ#%¡@NGW¯uûÎlÒxòØìz¡hHdi ¡i(Û{}kî'ä§5VÛ»w~ À2¢ùg}þ±àç(®œ%5Lä,:ÁØÄ£Â?ÄnÍhoàc4§š 4a¢L &GÉbAY.J#-
BFtZÒf1cCf:É)pÛ5¡\6c #LB.õ<ÎÞ{Ã
žPs2zsàW±M[#-0zyð6S¡{Mb@QqÄJMfoÄU¥ Ÿ2{8é#-Z×|ò×@Ù@ ûðôjõ|Úí*¹a#-`¥¡×¬¬\7YÖ¯¢ìUe±íÀscX×\ä#$¯ÁÚ-ghçkwdÌeQé3ò¹üØVä«<+EÈõÖ²föÏ>8úÍôôªGI<öwx§¢ô{Tú¯eæ@x#%H`w7Bšðy}~;&hÖœø¯ÙxgøÖPeè!£UÄß?#/m£×Y#/Ê/Nûhzª;óH§g-$ÃSwIÝÅHÆXKwÁõ¢&Ê#-\YNr ôbéÄ·ÈVïÂF#-ÂL²Ùnúêã<ÜvråÂnÃm_f£ÅÊs¿»"ßZhéù+n7Eo¶îøKwÚ¶š#rE$AeÆuZ4¡Ø#¥ÃötzþiŽöüQFxTÐК£EŠ¹±«)%¯ô³Ü°àeYv× €É¿>Oüx¡º©Á),Þ~W@à9`dñòøÎð.}{Vöy¡#%g¯ïPMfCM[*ݯ̳p£VÂæ*Ù;): 7)èÑ>HÁh0#%2fa°m©¶hyV±äê`ۚϬð±P;Ã#U'!FqY¢D~Ó=ÀRÂ!ÇŽ€ÃRöÝϲ€Nõ:úuŠÒ{Dì14¥ öñËÀððóoìÉë#ÌÌ EYtüM,þSIw0$ñ\Ñ·Á'5ÙêàѲ@_}î!úí@"#-Ž3_£ÕýGùà¡ñ^®ù~&d{ØpSî¬GôQíòÀÓ¡ÑÝÍdÑÔÔTJc2y×QQY%Ý®aŠWÉÞdEQ¿s×^»Î¥ÙF(į&ë W²bÑj+c²&TqZdúAàDÌ\ /)}Þnãã~C#ÂuYË)À~?»npãæ©ãè?0¥¥iFheRÙÜv¡8mKJDš©HØÚ,ÌBË(zþb§¹òœtTh6j*%FÒÄ(zP,JÃR}äª"qüÑbçWÈnFÈFÊ{#/uÂ=xD=¥õZ6ø%ê"ÍÝsdScµh£jCÆmf¢KmkBH$$¡¢z1@ÔKÚ!þ8]öðEò{No¬Ÿ§æû¿ÝéÀWÛ$öC#%ë(ô'Ä÷þ|iãújSŸžõqÀ%ÆOi1g#%õDÌ7ÈuqûÎ=lCbûÀHÚ?CÔ]þ¬Ê`BATÚO©ý·boÉDÆê`rØ5A!i?TÕáÓèØ2Wi#-g èù#%ôVßâ£)õ /ÖšŠ'ÕÑÀÂÖ€µÍÒZ©¶£JMRÚ°,°88é&
Sc®EžþN+Ì!`y;U7²)#% Øì;6ë#/kì.ÒîÁÇTªa3Uk*]ÈÊôæÜLzýªÎì䎀l?= Äûói#-ŠÑÕ 9ãjö#/ò¯%°â£Ü®[ÜÝ:K×hØÇø)#ôÌ0~l> AúÇæþ0¬0>#/sovS4U,Ód#Qi0TFÛ5PŠÑŸÓ[èxP¢ŽQŽÊÂ¥·ÑúFÝ[8QÚ» çc#-ûC·s1e82QçCÎ*óÜ[ fŸÐæ^€Ø³_ÕjÍJý E#%!€J)+AjPª4&ÔÙb(B@ùÑâo~#-þîÞÚUeB;=Û~3õÁ rgöçççß|CX²M:QIÉoñ Ã'Ì}9#-Ьl#/Ål)äEµ«"DcRª60DãTÙþ#-
I7 ¬C ÕõÃ-RP@I³-IBSfc€Ó LŽY5œ*äš·ºÌÝ]svÖçT3YZŒ»±&×wWwkI²€©)±äª,$©Âa!#/THn[ÈÉZa#mÒX LXkX©#/#/f`X!5.&c#-2È4AFÀÑÖî±f"±AtàPçÊIšu$if4ëø#-¹ÿžjZªà
$žR#%yh\>ú3º)Pýa ª/~&jfÉ&NšP0'1®Éá:oŠâÓZ#/6ªæC&ÞÃ5ßίº`aõWîìöðÏ0ôfôVHWMÿ<`Y#-³7žÖÁ^Snë{6Îçzp%Ì
Œ[篩öÿ!i1êDÐÕ)Gkë;3ŒZ`SS9¹c}|Ì=#/ugá·A¢+R3x\ëÔÞ9¢¿}ì!$Ôè!rRM',ÌmVD]ßaîÊIi³ M©ý"²Ê±1é;àÛeÕ0ÞDbM¶àl6«DnCL7&ÒîW§lÕ<
¥²Ì©ñŠáªPúY¿iØT7ÇqÃE]2/ÝŠi&ìYû3!ònëoÖ±¥ûQ7£cбy|k ž)JÉ¡°žèÍÓA³YúÐ'@#%äóbX:sm ×nw&ù»ûŒÄ±{©²\Y <ÓFaÝ%ÒÉáÙ[w~Û¿§ÌýüxðþλèêäÜÕÔ% ãjýß) Ãeèqm§rµî6v{2»QGŽîwc÷T±àI=]JjDtÚ¥ï[°1mRfYt-Vš3ÛD'3±_*µ·ªHtà àµcÖBëw{L"7E°Ô*íâtwí¡@qÁKL'J7ÜîgàUì:D#DFÁÐjñŽÑ`ÄâAÄŽ{ÀcgÀûseÔÁâp0`ùæFÈ0ÍAÓè!ÏyŸþŽºôSê;»Å;Ï#Ž|I+¹Új§7meµBžìEÀ¶¿ÄÛíížXXøb6#%ÿ#%_ÑÏÕŽ°HL'ÝL¡e@æñÒ/èZ%«ÔË <'=D|.~ ~¿vÛdùVµ3A°É¶§¿Üóm·âüÄÿgò?#ÿ¿ùïæÿëòœ¿#ü¿Wý_WòÓùß÷>Ûü¯ËÿÇæøþÿùåöëÿÍÿÿ?øñÓÿíþ_ü¿ú>¿kÿß»ÿãôÿËwþ_ÿïþúYÿ/ý?~?ÿ/þ_úÿ}÷Ëì?åÿñÿÃðý?¯Îì6GìÓÄý Å¡ú5i£5CÈ?Ñý
"eYîÿÚÈ`£pÍjŸ°BµòÞ¢ÝçñïÆÏ¿îwv$š»Qæ,)ß#%fÇ4'(öí=xD5ÏS¢2)ÀŠ#/)3÷ÃcþRiš`Ú7úcìR»Ç #úF§Œ;5Þèþ±8>ÉÖ€pŒg«¬Ï5I!ЯÙc1cØgP-#%Eoû°O ¯/Ë?ùÅúóÜëxÿ./#/]càUq0óâ;nÙfßñ¯6 ŠžpD<ÈÓ3|ä?ðÍCpðñÆþþÊÝew\ËZcíc+#<³3ý®]ojTåUA}éLðÒef¬
SM0Rì hyôJàÆlÿÍF¡ SÍ£zÛÇ¿f#-?x{N÷ºÓGÛÄ3³wF#QŽ!lš|y¡ŠéQGjÕ6mÕ€Ó5¶š5¡ÄÆdX:Ãf°ÞÖôÁŠaÅâOél,rF kÞ±êûiÍâ³»Î%¥éšC Ê0·º!óN¡ì/£ý ³ð;®ÙBž©² hY#\ŒíËd»@µòA·8MQEjÁ!ÕŒ.D[cHɶØ"]ChÎ¥O}žññ}/ö« zÀãøJu'=4,×yª®äf Í)×28hgäÂ]Ât,#/¹^> O£ã7î|6á5àÁUE€©E.þ]7ôŽ@é XÎfjš*ç ¡I|:òÁ!êëèp`HŠéÖö[SÅC)#%ª{¥ÚyyiÐ!œJA2¡PGHØ{Ú`öñ^K{?GÙ1,Lοþ²uÊÉ8Ü᧰ê$ÜÊ"¯/Ž>ãº>o#÷Ó¡-û«ðŒ@ý'>NŠýÛÔÆ2?V³^Í£(íñ?^®õMäÛ¢æ8!ÎKºFUÒlÿé¿×a¢Ÿá1âd·TjŠ(ÝÐíM+ŸjK} kŒ#%ãr/4ßF\ÊðºßÁßÜDÑÍ)6Å]dK,=37ÓÑ&Çžà'ÛE¢âoYvœÜ\nÈÖZúéœ~fËh2Šõ».7\!E4Cª<*ž,XüêJ9
°øÿÛ>}zd^Bw`s©h#/nÑ÷#/gü¯šü=|8Ÿ(õ£Éú;Å÷wnþv;>öôPôB,(uœhö®háX¡È£ 1&8«vCD²&ÇDù¢¡%û;Œ*9z#%ÿÏÒ0ÆæÙkèAОó'<;U) Eñš?¹Üõ.Èïæóe>i?%¢OwèýAýÏùE2ÿ±ÓõCÖ\ù)¥€ýgÿôÚm§ÏýÇtñÏÿ]íîM,æÿòûÈÿ£~]#-
þa±{OûŒóðÿßÿÒ ÇÙîõtæšÕÌt?ÿç£ ÛÿD7äNÞÄI5|?ûÇÌ€*LÎ|
é&ñÛF·ÿ7¬îh)V¹Â+[ßüŸ\>ÂsõD%ýöS©$ìj\äüfQWPé]ŒN*ŠpMõÕpžË9SùCãìÚtí¢tYXýüåŒ#pÅå°7áá'׎æ.ç¯ÁÉXd!éÞ>ÅÖµ$ELÕIÂ×ßÌäio²œŠžÖsÓ·ñyÑ×8Î,PÛï1ë-UEù#-ÿÇÃÿ§üê54øý¿s0ÃÿâîH§#/··'#%
#<==
-#-----BEGIN PGP SIGNATURE-----\n\niQIcBAABCgAGBQJYT8WAAAoJEEm0xnwFJ3qqk5wP/iJ8sHn9qbJUGtbAqs1evaGy\nrw+H61R+jYb10JWyn4YvCw8Gbwdcd0Z31DHKTYEC4Z3vJSukYJeLOPVu5UmTVs5i\nAITgDu4pBriv1QiRgiG4V82jTKdl122iveev6IG8pYDziu8X/3qXAlWGu3nIS7iL\nmS+MBUdrZdPXmNVUv800hEfNGeiV+xFI1Bk1N3ZsOvvNbD5+ZWA3hb2rwOWNZxxL\nRcn0SmMkCUBH9EInb2cQhHRR2TLqd3mnT7HM0yzrAkSTz0p/RJSd4/HXLBYSMQQ4\n1ge12UlfwCrxuIU1/v+KaQESQuL6ev8voYoRarzG/LOXhyEAwNJXP/zPT4xdqtg/\ntsMH7r7LrZ7gzGbXkHxu9VdI4rGyu5Et3qpPEoF31GTtQY33QXPbMRo9O8HzoI9E\nV2kK4AxRrkadQt9vNU3SMFPo8w2K5pffIvc0E6jr+TrmrIrQWT5iAxPf4QePBY1V\ntSSuvZLDpEco8sO7OKgbdPq/PY1o7BjZafu/xoQYEeBII350HwnBDfAs3vkB89cQ\nqgaCtjBOmFs95n1gENPxRfAT2Ct23VuBLJKTEmZR3yZkU1X0omu2OVJcwkik60lv\nvw8pRQnTbcsnlwnBgiuZjujcaZSTyHIX2mgj3vYaB15XcU++jJixVihDLzJSjMIG\n6VqEwsbcXLz369vZzLTN\n=iorv\n-----END PGP SIGNATURE-----\n
+#-----BEGIN PGP SIGNATURE-----\n\niQIcBAABCgAGBQJYohEKAAoJEEm0xnwFJ3qqn/QP/1Iu/CIV9bEOu2KQr4xjikSr\nlxw4JQJZ3Vjua5fJq3wucvFnohTAeZ7shwmi5rCNmpmRmNgbcTpptTo2nRHEBVN/\neLDjn7Ge1F0v6TMod565hgG5wBNun82H7FMmvDjYyAiLm9zUkyIfodUflNs/RwWI\nqR5KDRa43cl5ex0xOzmUh8ZafezLEGVoR2EZhYPu3FqejgGFB6L4DyHGb1mCwWMY\nmmKdsTGXxJkGdp91WuSYUdt7Ju+MiS5uyXeajxStb+47lDmqL2NbKVtHWkho4k+C\ncdVGZj6txp9cwCI611ezaIQZYLSIXP22cGS1stAInQ5emYUg2boIX+kkCyLbr/tw\nYDJoxOnfXKc2Ry6nNAu9BeH9ZVbEBqtcBx3h0QJTU5hkxkAZiqugIRGLzq04oPRZ\noavHb9/7MDiU12z1K2bpUuXIjvtxR9iWwC490lNSWQbVEtZrVOI8sm2sdW2SiLNn\nuScHzGusycsCGSP8me1Azrwz5kWtQa/yfEfRFVSuqYrM6LJRQS6TlmvnM/OyvFok\nQwAccXa1q1tdGgw6tWndulBkXXkOM6qE+UFL47XeKXRph2+f4Hj080e8bDwH/iTj\nFLbT4wSd1EQqfg4lsRevT7jIapgqNbYPsae4QqomecE2StXVUiESMNdwkanbBXq0\nNt4w5FgcVJ7dKbADutfH\n=uKvG\n-----END PGP SIGNATURE-----\n
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waf-light new/waf-1.9.8/waf-light
--- old/waf-1.9.7/waf-light 2016-12-13 10:37:37.000000000 +0100
+++ new/waf-1.9.8/waf-light 2017-02-13 20:53:53.000000000 +0100
@@ -32,7 +32,7 @@
import os, sys, inspect
-VERSION="1.9.7"
+VERSION="1.9.8"
REVISION="x"
GIT="x"
INSTALL="x"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Build.py new/waf-1.9.8/waflib/Build.py
--- old/waf-1.9.7/waflib/Build.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Build.py 2017-02-13 19:23:33.000000000 +0100
@@ -296,7 +296,8 @@
pass
else:
if env.version < Context.HEXVERSION:
- raise Errors.WafError('Version mismatch! reconfigure the project')
+ raise Errors.WafError('Project was configured with a different version of Waf, please reconfigure it')
+
for t in env.tools:
self.setup(**t)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Configure.py new/waf-1.9.8/waflib/Configure.py
--- old/waf-1.9.7/waflib/Configure.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Configure.py 2017-02-13 19:23:33.000000000 +0100
@@ -415,7 +415,7 @@
:param path_list: paths to use for searching
:type param_list: list of string
- :param var: store the result to conf.env[var], by default use filename.upper()
+ :param var: store the result to conf.env[var] where var defaults to filename.upper() if not provided; the result is stored as a list of strings
:type var: string
:param value: obtain the program from the value passed exclusively
:type value: list or string (list is preferred)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Context.py new/waf-1.9.8/waflib/Context.py
--- old/waf-1.9.7/waflib/Context.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Context.py 2017-02-13 20:53:53.000000000 +0100
@@ -11,13 +11,13 @@
import waflib.Node
# the following 3 constants are updated on each new release (do not touch)
-HEXVERSION=0x1090700
+HEXVERSION=0x1090800
"""Constant updated on new releases"""
-WAFVERSION="1.9.7"
+WAFVERSION="1.9.8"
"""Constant updated on new releases"""
-WAFREVISION="ade48ed52ee94965251ed072b590484d5d14352d"
+WAFREVISION="ffcbf5d4020624dcd1b9338005e3e10dcbebf8f1"
"""Git revision when the waf version is updated"""
ABI = 99
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Node.py new/waf-1.9.8/waflib/Node.py
--- old/waf-1.9.7/waflib/Node.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/Node.py 2017-02-13 19:23:33.000000000 +0100
@@ -252,9 +252,9 @@
shutil.rmtree(self.abspath())
else:
os.remove(self.abspath())
- except OSError as e:
+ except OSError:
if os.path.exists(self.abspath()):
- raise e
+ raise
finally:
if evict:
self.evict()
@@ -430,10 +430,9 @@
:param node: path to use as a reference
:type node: :py:class:`waflib.Node.Node`
- :returns: the relative path
+ :returns: a relative path or an absolute one if that is better
:rtype: string
"""
-
c1 = self
c2 = node
@@ -461,13 +460,11 @@
c2 = c2.parent
if c1.parent:
- for i in range(up):
- lst.append('..')
+ lst.extend(['..'] * up)
+ lst.reverse()
+ return os.sep.join(lst) or '.'
else:
- if lst and not Utils.is_win32:
- lst.append('')
- lst.reverse()
- return os.sep.join(lst) or '.'
+ return self.abspath()
def abspath(self):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Task.py new/waf-1.9.8/waflib/Task.py
--- old/waf-1.9.7/waflib/Task.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Task.py 2017-02-13 19:23:33.000000000 +0100
@@ -989,6 +989,7 @@
return "%s"
return None
line = reg_act.sub(repl, line) or line
+ dvars = []
def replc(m):
# performs substitutions and populates dvars
@@ -1003,7 +1004,6 @@
return 'env[%r]' % x
parm = []
- dvars = []
app = parm.append
for (var, meth) in extr:
if var == 'SRC':
@@ -1167,7 +1167,7 @@
if ret:
return ret
return None
- return composed_fun, dvars
+ return composed_fun, dvars_lst
if shell:
return compile_fun_shell(line)
else:
@@ -1194,10 +1194,6 @@
'vars': vars or [], # function arguments are static, and this one may be modified by the class
'color': color,
'name': name,
- 'ext_in': Utils.to_list(ext_in),
- 'ext_out': Utils.to_list(ext_out),
- 'before': Utils.to_list(before),
- 'after': Utils.to_list(after),
'shell': shell,
'scan': scan,
}
@@ -1210,6 +1206,16 @@
cls = type(Task)(name, (Task,), params)
global classes
classes[name] = cls
+
+ if ext_in:
+ cls.ext_in = Utils.to_list(ext_in)
+ if ext_out:
+ cls.ext_out = Utils.to_list(ext_out)
+ if before:
+ cls.before = Utils.to_list(before)
+ if after:
+ cls.after = Utils.to_list(after)
+
return cls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/TaskGen.py new/waf-1.9.8/waflib/TaskGen.py
--- old/waf-1.9.7/waflib/TaskGen.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/TaskGen.py 2017-02-13 19:23:33.000000000 +0100
@@ -558,28 +558,51 @@
except AttributeError:
cache = self.bld.cache_rule_attr = {}
+ chmod = getattr(self, 'chmod', None)
+ shell = getattr(self, 'shell', True)
+ color = getattr(self, 'color', 'BLUE')
+ scan = getattr(self, 'scan', None)
+ _vars = getattr(self, 'vars', [])
+ cls_str = getattr(self, 'cls_str', None)
+ cls_keyword = getattr(self, 'cls_keyword', None)
+ use_cache = getattr(self, 'cache_rule', 'True')
+
+ scan_val = has_deps = hasattr(self, 'deps')
+ if scan:
+ scan_val = id(scan)
+
+ key = Utils.h_list((name, self.rule, chmod, shell, color, cls_str, cls_keyword, scan_val, _vars))
+
cls = None
- if getattr(self, 'cache_rule', 'True'):
+ if use_cache:
try:
- cls = cache[(name, self.rule)]
+ cls = cache[key]
except KeyError:
pass
if not cls:
-
rule = self.rule
- if hasattr(self, 'chmod'):
+ if chmod is not None:
def chmod_fun(tsk):
for x in tsk.outputs:
- os.chmod(x.abspath(), self.chmod)
- rule = (self.rule, chmod_fun)
+ os.chmod(x.abspath(), tsk.generator.chmod)
+ if isinstance(rule, tuple):
+ rule = list(rule)
+ rule.append(chmod_fun)
+ rule = tuple(rule)
+ else:
+ rule = (rule, chmod_fun)
+
+ cls = Task.task_factory(name, rule, _vars, shell=shell, color=color)
+
+ if cls_str:
+ setattr(cls, '__str__', self.cls_str)
+
+ if cls_keyword:
+ setattr(cls, 'keyword', self.cls_keyword)
- cls = Task.task_factory(name, rule,
- getattr(self, 'vars', []),
- shell=getattr(self, 'shell', True), color=getattr(self, 'color', 'BLUE'),
- scan = getattr(self, 'scan', None))
- if getattr(self, 'scan', None):
+ if scan:
cls.scan = self.scan
- elif getattr(self, 'deps', None):
+ elif has_deps:
def scan(self):
nodes = []
for x in self.generator.to_list(getattr(self.generator, 'deps', None)):
@@ -590,27 +613,23 @@
return [nodes, []]
cls.scan = scan
- if getattr(self, 'always', None):
- cls.always_run = True
-
- if getattr(self, 'timeout', None):
- cls.timeout = self.timeout
-
+ # TODO use these values in the cache key if provided
+ # (may cause excessive caching)
for x in ('after', 'before', 'ext_in', 'ext_out'):
setattr(cls, x, getattr(self, x, []))
- if getattr(self, 'cache_rule', 'True'):
- cache[(name, self.rule)] = cls
-
- if getattr(self, 'cls_str', None):
- setattr(cls, '__str__', self.cls_str)
-
- if getattr(self, 'cls_keyword', None):
- setattr(cls, 'keyword', self.cls_keyword)
+ if use_cache:
+ cache[key] = cls
# now create one instance
tsk = self.create_task(name)
+ if getattr(self, 'timeout', None):
+ tsk.timeout = self.timeout
+
+ if getattr(self, 'always', None):
+ tsk.always_run = True
+
if getattr(self, 'target', None):
if isinstance(self.target, str):
self.target = self.target.split()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/c_config.py new/waf-1.9.8/waflib/Tools/c_config.py
--- old/waf-1.9.7/waflib/Tools/c_config.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/c_config.py 2017-02-13 19:23:33.000000000 +0100
@@ -201,7 +201,7 @@
static = False
elif x.startswith('-Wl'):
app('LINKFLAGS', x)
- elif x.startswith(('-m', '-f', '-dynamic')):
+ elif x.startswith(('-m', '-f', '-dynamic', '-O')):
app('CFLAGS', x)
app('CXXFLAGS', x)
elif x.startswith('-bundle'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/c_tests.py new/waf-1.9.8/waflib/Tools/c_tests.py
--- old/waf-1.9.7/waflib/Tools/c_tests.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/c_tests.py 2017-02-13 19:23:33.000000000 +0100
@@ -211,7 +211,7 @@
@after_method('process_source')
def grep_for_endianness_fun(self):
"""
- Used by the endiannes configuration test
+ Used by the endianness configuration test
"""
self.create_task('grep_for_endianness', self.compiled_tasks[0].outputs[0])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/fc_config.py new/waf-1.9.8/waflib/Tools/fc_config.py
--- old/waf-1.9.7/waflib/Tools/fc_config.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/fc_config.py 2017-02-13 19:23:33.000000000 +0100
@@ -456,7 +456,7 @@
"""
Detects openmp flags and sets the OPENMP ``FCFLAGS``/``LINKFLAGS``
"""
- for x in ('-fopenmp','-openmp','-mp','-xopenmp','-omp','-qsmp=omp'):
+ for x in ('-qopenmp', '-fopenmp','-openmp','-mp','-xopenmp','-omp','-qsmp=omp'):
try:
self.check_fc(
msg = 'Checking for OpenMP flag %s' % x,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/glib2.py new/waf-1.9.8/waflib/Tools/glib2.py
--- old/waf-1.9.7/waflib/Tools/glib2.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/glib2.py 2017-02-13 19:23:33.000000000 +0100
@@ -12,6 +12,7 @@
"""
import os
+import functools
from waflib import Context, Task, Utils, Options, Errors, Logs
from waflib.TaskGen import taskgen_method, before_method, feature, extension
from waflib.Configure import conf
@@ -301,20 +302,30 @@
# 3. schemas install task
def compile_schemas_callback(bld):
- if not bld.is_install: return
- Logs.pprint ('YELLOW','Updating GSettings schema cache')
- command = Utils.subst_vars("${GLIB_COMPILE_SCHEMAS} ${GSETTINGSSCHEMADIR}", bld.env)
- self.bld.exec_command(command)
+ if not bld.is_install:
+ return
+ compile_schemas = Utils.to_list(bld.env.GLIB_COMPILE_SCHEMAS)
+ destdir = Options.options.destdir
+ paths = bld._compile_schemas_registered
+ if destdir:
+ paths = (os.path.join(destdir, path.lstrip(os.sep)) for path in paths)
+ for path in paths:
+ Logs.pprint('YELLOW', 'Updating GSettings schema cache %r' % path)
+ if self.bld.exec_command(compile_schemas + [path]):
+ Logs.warn('Could not update GSettings schema cache %r' % path)
if self.bld.is_install:
- if not self.env.GSETTINGSSCHEMADIR:
+ schemadir = self.env.GSETTINGSSCHEMADIR
+ if not schemadir:
raise Errors.WafError ('GSETTINGSSCHEMADIR not defined (should have been set up automatically during configure)')
if install_files:
- self.add_install_files(install_to=self.env.GSETTINGSSCHEMADIR, install_from=install_files)
- if not hasattr(self.bld, '_compile_schemas_registered'):
+ self.add_install_files(install_to=schemadir, install_from=install_files)
+ registered_schemas = getattr(self.bld, '_compile_schemas_registered', None)
+ if not registered_schemas:
+ registered_schemas = self.bld._compile_schemas_registered = set()
self.bld.add_post_fun(compile_schemas_callback)
- self.bld._compile_schemas_registered = True
+ registered_schemas.add(schemadir)
class glib_validate_schema(Task.Task):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/javaw.py new/waf-1.9.8/waflib/Tools/javaw.py
--- old/waf-1.9.7/waflib/Tools/javaw.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/javaw.py 2017-02-13 19:23:33.000000000 +0100
@@ -95,7 +95,7 @@
tsk.srcdir = tmp
if getattr(self, 'compat', None):
- tsk.env.append_value('JAVACFLAGS', ['-source', self.compat])
+ tsk.env.append_value('JAVACFLAGS', ['-source', str(self.compat)])
if hasattr(self, 'sourcepath'):
fold = [isinstance(x, Node.Node) and x or self.path.find_dir(x) for x in self.to_list(self.sourcepath)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/python.py new/waf-1.9.8/waflib/Tools/python.py
--- old/waf-1.9.7/waflib/Tools/python.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/python.py 2017-02-11 16:06:57.000000000 +0100
@@ -103,7 +103,7 @@
pyd = node.abspath()
for ext in lst:
- if self.env.PYTAG:
+ if self.env.PYTAG and not self.env.NOPYCACHE:
# __pycache__ installation for python 3.2 - PEP 3147
name = node.name[:-3]
pyobj = node.parent.get_bld().make_node('__pycache__').make_node("%s.%s.%s" % (name, self.env.PYTAG, ext))
@@ -588,6 +588,8 @@
v.PYTHONDIR = Options.options.pythondir
if Options.options.pythonarchdir:
v.PYTHONARCHDIR = Options.options.pythonarchdir
+ if Options.options.nopycache:
+ v.NOPYCACHE=Options.options.nopycache
conf.find_program('python', var='PYTHON', value=Options.options.python or sys.executable)
@@ -611,6 +613,8 @@
help = 'Do not install bytecode compiled .pyc files (configuration) [Default:install]')
pyopt.add_option('--nopyo', dest='pyo', action='store_false', default=1,
help='Do not install optimised compiled .pyo files (configuration) [Default:install]')
+ pyopt.add_option('--nopycache',dest='nopycache', action='store_true',
+ help='Do not use __pycache__ directory to install objects [Default:auto]')
pyopt.add_option('--python', dest="python",
help='python binary to be used [Default: %s]' % sys.executable)
pyopt.add_option('--pythondir', dest='pythondir',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/qt5.py new/waf-1.9.8/waflib/Tools/qt5.py
--- old/waf-1.9.7/waflib/Tools/qt5.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/qt5.py 2017-02-13 19:23:33.000000000 +0100
@@ -70,7 +70,7 @@
else:
has_xml = True
-import os, sys
+import os, sys, re
from waflib.Tools import cxx
from waflib import Task, Utils, Options, Errors, Context
from waflib.TaskGen import feature, after_method, extension, before_method
@@ -97,72 +97,6 @@
File extensions of C++ files that may require a .moc processing
"""
-QT5_LIBS = '''
-qtmain
-Qt53DCore
-Qt53DExtras
-Qt53DInput
-Qt53DLogic
-Qt53DQuickExtras
-Qt53DQuickInput
-Qt53DQuickRender
-Qt53DQuick.so
-Qt53DRender
-Qt5Bluetooth
-Qt5Charts
-Qt5CLucene
-Qt5Concurrent
-Qt5Core
-Qt5DataVisualization
-Qt5DBus
-Qt5Declarative
-Qt5DesignerComponents
-Qt5Designer
-Qt5EglDeviceIntegration
-Qt5Gamepad
-Qt5Gui
-Qt5Help
-Qt5Location
-Qt5MultimediaQuick_p
-Qt5Multimedia
-Qt5MultimediaWidgets
-Qt5Network
-Qt5Nfc
-Qt5OpenGL
-Qt5Positioning
-Qt5PrintSupport
-Qt5Purchasing
-Qt5Qml
-Qt5QuickControls2
-Qt5QuickParticles
-Qt5Quick
-Qt5QuickTemplates2
-Qt5QuickTest
-Qt5QuickWidgets
-Qt5Script
-Qt5ScriptTools
-Qt5Scxml
-Qt5Sensors
-Qt5SerialBus
-Qt5SerialPort
-Qt5Sql
-Qt5Svg
-Qt5Test
-Qt5WebChannel
-Qt5WebEngineCore
-Qt5WebEngine
-Qt5WebEngineWidgets
-Qt5WebKit
-Qt5WebKitWidgets
-Qt5WebSockets
-Qt5WebView
-Qt5Widgets
-Qt5WinExtras
-Qt5X11Extras
-Qt5XcbQpa
-Qt5XmlPatterns
-Qt5Xml'''
-
class qxx(Task.classes['cxx']):
"""
Each C++ file can have zero or several .moc files to create.
@@ -487,6 +421,7 @@
The detection uses the program ``pkg-config`` through :py:func:`waflib.Tools.config_c.check_cfg`
"""
self.find_qt5_binaries()
+ self.set_qt5_libs_dir()
self.set_qt5_libs_to_check()
self.set_qt5_defines()
self.find_qt5_libraries()
@@ -648,6 +583,19 @@
env.MOCDEFINES_ST = '-D%s'
@conf
+def set_qt5_libs_dir(self):
+ env = self.env
+ qtlibs = getattr(Options.options, 'qtlibs', None) or self.environ.get('QT5_LIBDIR')
+ if not qtlibs:
+ try:
+ qtlibs = self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_LIBS']).strip()
+ except Errors.WafError:
+ qtdir = self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_PREFIX']).strip()
+ qtlibs = os.path.join(qtdir, 'lib')
+ self.msg('Found the Qt5 libraries in', qtlibs)
+ env.QTLIBS = qtlibs
+
+@conf
def find_single_qt5_lib(self, name, uselib, qtlibs, qtincludes, force_static):
env = self.env
if force_static:
@@ -682,14 +630,6 @@
@conf
def find_qt5_libraries(self):
env = self.env
- qtlibs = getattr(Options.options, 'qtlibs', None) or self.environ.get('QT5_LIBDIR')
- if not qtlibs:
- try:
- qtlibs = self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_LIBS']).strip()
- except Errors.WafError:
- qtdir = self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_PREFIX']).strip()
- qtlibs = os.path.join(qtdir, 'lib')
- self.msg('Found the Qt5 libraries in', qtlibs)
qtincludes = self.environ.get('QT5_INCLUDES') or self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_HEADERS']).strip()
force_static = self.environ.get('QT5_FORCE_STATIC')
@@ -703,23 +643,23 @@
if Utils.unversioned_sys_platform() == 'darwin':
# Since at least qt 4.7.3 each library locates in separate directory
frameworkName = i + '.framework'
- qtDynamicLib = os.path.join(qtlibs, frameworkName, i)
+ qtDynamicLib = os.path.join(env.QTLIBS, frameworkName, i)
if os.path.exists(qtDynamicLib):
env.append_unique('FRAMEWORK_' + uselib, i)
self.msg('Checking for %s' % i, qtDynamicLib, 'GREEN')
else:
self.msg('Checking for %s' % i, False, 'YELLOW')
- env.append_unique('INCLUDES_' + uselib, os.path.join(qtlibs, frameworkName, 'Headers'))
+ env.append_unique('INCLUDES_' + uselib, os.path.join(env.QTLIBS, frameworkName, 'Headers'))
else:
for j in ('', 'd'):
k = '_DEBUG' if j == 'd' else ''
- ret = self.find_single_qt5_lib(i + j, uselib + k, qtlibs, qtincludes, force_static)
+ ret = self.find_single_qt5_lib(i + j, uselib + k, env.QTLIBS, qtincludes, force_static)
if not force_static and not ret:
- ret = self.find_single_qt5_lib(i + j, uselib + k, qtlibs, qtincludes, True)
+ ret = self.find_single_qt5_lib(i + j, uselib + k, env.QTLIBS, qtincludes, True)
self.msg('Checking for %s' % (i + j), ret, 'GREEN' if ret else 'YELLOW')
else:
path = '%s:%s:%s/pkgconfig:/usr/lib/qt5/lib/pkgconfig:/opt/qt5/lib/pkgconfig:/usr/lib/qt5/lib:/opt/qt5/lib' % (
- self.environ.get('PKG_CONFIG_PATH', ''), qtlibs, qtlibs)
+ self.environ.get('PKG_CONFIG_PATH', ''), env.QTLIBS, env.QTLIBS)
for i in self.qt5_vars_debug + self.qt5_vars:
self.check_cfg(package=i, args='--cflags --libs', mandatory=False, force_static=force_static, pkg_config_path=path)
@@ -758,7 +698,7 @@
def process_rpath(vars_, coreval):
for d in vars_:
var = d.upper()
- value = env['LIBPATH_'+var]
+ value = env['LIBPATH_' + var]
if value:
core = env[coreval]
accu = []
@@ -767,15 +707,33 @@
if lib in core:
continue
accu.append('-Wl,--rpath='+lib)
- env['RPATH_'+var] = accu
+ env['RPATH_' + var] = accu
process_rpath(self.qt5_vars, 'LIBPATH_QTCORE')
process_rpath(self.qt5_vars_debug, 'LIBPATH_QTCORE_DEBUG')
@conf
def set_qt5_libs_to_check(self):
- if not hasattr(self, 'qt5_vars'):
- self.qt5_vars = QT5_LIBS
- self.qt5_vars = Utils.to_list(self.qt5_vars)
+ self.qt5_vars = Utils.to_list(getattr(self, 'qt5_vars', []))
+ if not self.qt5_vars:
+ dirlst = Utils.listdir(self.env.QTLIBS)
+
+ pat = self.env.cxxshlib_PATTERN
+ if Utils.is_win32:
+ pat = pat.replace('.dll', '.lib')
+ if self.environ.get('QT5_FORCE_STATIC'):
+ pat = self.env.cxxstlib_PATTERN
+ re_qt = re.compile(pat % '(?P<name>Qt5.*)' + '$')
+ for x in dirlst:
+ m = re_qt.match(x)
+ if m:
+ self.qt5_vars.append(m.group('name'))
+ if not self.qt5_vars:
+ self.fatal('cannot find any Qt5 library (%r)' % self.env.QTLIBS)
+
+ qtextralibs = getattr(Options.options, 'qtextralibs', None)
+ if qtextralibs:
+ self.qt5_vars.extend(qtextralibs.split(','))
+
if not hasattr(self, 'qt5_vars_debug'):
self.qt5_vars_debug = [a + '_DEBUG' for a in self.qt5_vars]
self.qt5_vars_debug = Utils.to_list(self.qt5_vars_debug)
@@ -798,4 +756,5 @@
opt.add_option('--'+i, type='string', default='', dest=i)
opt.add_option('--translate', action='store_true', help='collect translation strings', dest='trans_qt5', default=False)
+ opt.add_option('--qtextralibs', type='string', default='', dest='qtextralibs', help='additional qt libraries on the system to add to default ones, comma separated')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Tools/winres.py new/waf-1.9.8/waflib/Tools/winres.py
--- old/waf-1.9.7/waflib/Tools/winres.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/Tools/winres.py 2017-02-11 23:34:21.000000000 +0100
@@ -65,10 +65,6 @@
Detects the programs RC or windres, depending on the C/C++ compiler in use
"""
v = conf.env
- v.WINRC_TGT_F = '-o'
- v.WINRC_SRC_F = '-i'
-
- # find rc.exe
if not v.WINRC:
if v.CC_NAME == 'msvc':
conf.find_program('RC', var='WINRC', path_list=v.PATH)
@@ -76,6 +72,6 @@
v.WINRC_SRC_F = ''
else:
conf.find_program('windres', var='WINRC', path_list=v.PATH)
- if not v.WINRC:
- conf.fatal('winrc was not found!')
+ v.WINRC_TGT_F = '-o'
+ v.WINRC_SRC_F = '-i'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/Utils.py new/waf-1.9.8/waflib/Utils.py
--- old/waf-1.9.7/waflib/Utils.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/Utils.py 2017-02-13 20:52:06.000000000 +0100
@@ -980,7 +980,8 @@
pass
else:
k.wait()
-if sys.hexversion<0x207000f and not is_win32:
+# see #1889
+if (sys.hexversion<0x207000f and not is_win32) or sys.hexversion>=0x306000f:
atexit.register(atexit_pool)
if sys.platform == 'cli' or not sys.executable:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/extras/boost.py new/waf-1.9.8/waflib/extras/boost.py
--- old/waf-1.9.7/waflib/extras/boost.py 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/waflib/extras/boost.py 2017-02-13 19:23:33.000000000 +0100
@@ -129,7 +129,7 @@
default=False, dest='boost_mt',
help='select multi-threaded libraries')
opt.add_option('--boost-abi', type='string', default='', dest='boost_abi',
- help='''select libraries with tags (gd for debug, static is automatically added),
+ help='''select libraries with tags (s for static runtime, gd for debug, sgd for both),
see doc Boost, Getting Started, chapter 6.1''')
opt.add_option('--boost-linkage_autodetect', action="store_true", dest='boost_linkage_autodetect',
help="auto-detect boost linkage options (don't get used to it / might break other stuff)")
@@ -270,9 +270,7 @@
if kw.get('mt', False):
t.append('-mt')
if kw.get('abi'):
- t.append('%s%s' % (is_static and '-s' or '-', kw['abi']))
- elif is_static:
- t.append('-s')
+ t.append('-%s' % kw['abi'])
tags_pat = t and ''.join(t) or ''
ext = is_static and self.env.cxxstlib_PATTERN or self.env.cxxshlib_PATTERN
ext = ext.partition('%s')[2] # remove '%s' or 'lib%s' from PATTERN
@@ -285,14 +283,16 @@
tags = '({0})?((-py{2})|(-py{1}(?=[^0-9]))|({2})|(-{1}.{3})|({1}(?=[^0-9]))|(?=[^0-9])(?!-py))'.format(tags_pat, kw['python'][0], kw['python'], kw['python'][1])
else:
tags = tags_pat
+
# Trying libraries, from most strict match to least one
- for pattern in ['boost_%s%s%s%s%s$' % (lib, toolset_pat, tags, version, ext),
- 'boost_%s%s%s%s$' % (lib, tags, version, ext),
+ prefix = (not Utils.is_win32 or is_static) and 'lib' or ''
+ for pattern in ['%sboost_%s%s%s%s%s$' % (prefix, lib, toolset_pat, tags, version, ext),
+ '%sboost_%s%s%s%s$' % (prefix, lib, tags, version, ext),
# Give up trying to find the right version
- 'boost_%s%s%s%s$' % (lib, toolset_pat, tags, ext),
- 'boost_%s%s%s$' % (lib, tags, ext),
- 'boost_%s%s$' % (lib, ext),
- 'boost_%s' % lib]:
+ '%sboost_%s%s%s%s$' % (prefix, lib, toolset_pat, tags, ext),
+ '%sboost_%s%s%s$' % (prefix, lib, tags, ext),
+ '%sboost_%s%s$' % (prefix, lib, ext),
+ '%sboost_%s' % (prefix, lib)]:
self.to_log('Trying pattern %s' % pattern)
file = find_lib(re.compile(pattern), files)
if file:
@@ -367,8 +367,8 @@
def is_log_mt():
'''Check if found boost_log library is multithread-safe'''
- for lib in libs:
- if lib.startswith('boost_log'):
+ for lib in libs + stlibs:
+ if 'boost_log' in lib:
lib_log = lib
break
return '-mt' in lib_log
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/extras/c_emscripten.py new/waf-1.9.8/waflib/extras/c_emscripten.py
--- old/waf-1.9.7/waflib/extras/c_emscripten.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/extras/c_emscripten.py 2017-02-13 19:23:33.000000000 +0100
@@ -76,9 +76,12 @@
conf.env.ARFLAGS = ['rcs']
conf.env.cshlib_PATTERN = '%s.js'
conf.env.cxxshlib_PATTERN = '%s.js'
- conf.env.cstlib_PATTERN = '%s.bc'
- conf.env.cxxstlib_PATTERN = '%s.bc'
+ conf.env.cstlib_PATTERN = '%s.a'
+ conf.env.cxxstlib_PATTERN = '%s.a'
conf.env.cprogram_PATTERN = '%s.html'
conf.env.cxxprogram_PATTERN = '%s.html'
+ conf.env.CXX_TGT_F = ['-c', '-o', '']
+ conf.env.CC_TGT_F = ['-c', '-o', '']
+ conf.env.CXXLNK_TGT_F = ['-o', '']
+ conf.env.CCLNK_TGT_F = ['-o', '']
conf.env.append_value('LINKFLAGS',['-Wl,--enable-auto-import'])
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/waflib/extras/syms.py new/waf-1.9.8/waflib/extras/syms.py
--- old/waf-1.9.7/waflib/extras/syms.py 2016-12-08 21:58:29.000000000 +0100
+++ new/waf-1.9.8/waflib/extras/syms.py 2017-02-11 16:07:01.000000000 +0100
@@ -33,7 +33,7 @@
re_nm=re.compile(r'T\s+(_?'+self.generator.export_symbols_regex+r')\b')
else:
re_nm = re.compile(r'T\s+(' + self.generator.export_symbols_regex + r')\b')
- cmd = self.env.NM or ['nm'] + ['-g', obj.abspath()]
+ cmd = (self.env.NM or ['nm']) + ['-g', obj.abspath()]
syms = re_nm.findall(self.generator.bld.cmd_and_log(cmd, quiet=STDOUT, **kw))
self.outputs[0].write('%r' % syms)
@@ -56,7 +56,7 @@
raise WafError('NotImplemented')
@feature('syms')
-@after_method('process_source', 'process_use', 'apply_link', 'process_uselib_local')
+@after_method('process_source', 'process_use', 'apply_link', 'propagate_uselib_vars')
def do_the_symbol_stuff(self):
ins = [x.outputs[0] for x in self.compiled_tasks]
self.gen_sym_tasks = [self.create_task('gen_sym', x, x.change_ext('.%d.sym' % self.idx)) for x in ins]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waf-1.9.7/wscript new/waf-1.9.8/wscript
--- old/waf-1.9.7/wscript 2016-12-13 10:51:16.000000000 +0100
+++ new/waf-1.9.8/wscript 2017-02-13 20:53:53.000000000 +0100
@@ -9,7 +9,7 @@
./waf-light --tools=compat15,/comp/waf/aba.py --prelude=$'\tfrom waflib.extras import aba\n\taba.foo()'
"""
-VERSION="1.9.7"
+VERSION="1.9.8"
APPNAME='waf'
REVISION=''