ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.-  ]vQc@s}ddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlZddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZdd l mZd d d gZd dgZdddddddgZgaedZejdZdZ ddddd ddddd d!d"d#d$d%dd&d'd(d)d*d+d,d-gZ!ga"dd.dd d/dd0dd&d(d+g Z#e$a%e$a&e'd1Z(d2Z)d3Z*d4Z+d5Z,d6Z-d7Z.d8Z/d9Z0d:e1fd;YZ2d<e3fd=YZ4d>Z5ed?Z6id@dA6dBdC6dDdE6Z7dFZ8ejdGZ9dHZ:ejdIZ;ejdJZ<ejdKZ=iZ>dLZ?dMZ@dNZAdOZBdPZCdQZDdRZEdSZFe'dTZGdUZHdVZIdWZJdXZKdYZLdZZMd[ZNd\ZOd]e3fd^YZPd_ZQd`ZRdaZSdbZTejdcZUddZVe$eWdeZXdfZYdgZZdhZ[diZ\djZ]dkZ^dlZ_dmZ`dnZadoZbdpZcdqZddrZedsZfdS(ti(tConst(tDict(tDiscard(tList(tModule(tNode(tStmtN(tGypErrort executabletshared_librarytloadable_modulet dependenciestexport_dependent_settingst destinationtfilest include_dirstinputst librariestoutputstsourcess=+?!s_(dir|file|path)s?$cCs:x|dtkr |d }qW|tkp9tj|S(Ni(tis_path_section_charsett path_sectionstis_path_section_match_retsearch(tsection((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyt IsPathSection4stactionstconfigurationstcopiestdefault_configurationtdependencies_originaltlink_languagest postbuildst product_dirtproduct_extensiont product_nametproduct_prefixtrulestrun_aststandalone_static_librarytsuppress_wildcardt target_namettoolsetttoolsetsttypetvariantst variablestall_dependent_settingstdirect_dependent_settingst link_settingscCsg|dkrg}n||kr%|S|j|x.||jdgD]}t|||qIW|S(sReturn a list of all build files included into build_file_path. The returned list will contain build_file_path as well as all other files that it included, either directly or indirectly. Note that the list may contain files that were included into a conditional section that evaluated to false and was not merged into build_file_path's dict. aux_data is a dict containing a key for each build file or included build file. Those keys provide access to dicts whose "included" keys contain lists of all other files included by the build file. included should be left at its default None value by external callers. It is used for recursion. The returned list will not contain any duplicate entries. Each build file in the list will be relative to the current directory. tincludedN(tNonetappendtgettGetIncludedBuildFiles(tbuild_file_pathtaux_dataR2tincluded_build_file((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyR6vs    cCstj|}t|ts$t|j}|ddksFtt|dts_t|dj}t|dtst|dj}t |dkstt |dgS(sReturn the eval of a gyp file. The gyp file is restricted to dictionaries and lists only, and repeated keys are not allowed. Note that this is slower than eval() is. iiN( tcompilertparset isinstanceRtAssertionErrort getChildrenR3RRtlent CheckNode(t file_contentstasttc1tc2tc3((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyt CheckedEvals  c Cst|tr|j}i}xtdt|dD]}t||tsYt||jd}||krtd|dtt|dddj |dnt |}|j |t ||d|||trangeR?RR=RtreprtjointlistR4R@Rt enumeratet TypeError( tnodetkeypathtctdicttntkeytkptchildrentindextchild((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyR@s2  =    c Cs||kr||Stjj|r;t|j}ntd|tjfd}y2|rut|}nt |idd6d}WnKt k r} || _ n-t k r} t jj| d|nXt|tstd|n|||(?P<(?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))sy(?P(?P>(?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))s|(?P(?P[\^](?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))cCsdtjdkr`t|tkrHtjdd|dg|d}q`tjdd|}n|S(Ntwin32s^cat stype ii(RtplatformR,RLtretsub(tcmd((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytFixupPlatformCommands 'iiic+ Cs|tkrt}d}nB|tkr6t}d}n'|tkrQt}d}n ts]tt|}t |rt |S||kr|St |j |}|s|S|}|j x|D]} | j} tjtjd| d| dk} | d} d| dk} | jd }| jd }t||\}}||}|||!}||d }|d }|||!}| rtj|}t||t||||}nt||||}|j}d | dko||k}| s | r4tjj|}|d kr4d}q4n| rt|t krU|}n|jd }|d}|}|rtjj | rtjj!||}ntj"j#|}x#|d D]}|j$d|qW|j%n}| rt&}| drt'|}t}nt|}t(j)|d}|dkrtjtjd||d }| dkr(tj*} |rtj+|nzvt,j|}!yt-|!d}"Wn-t.k r}#t/d|!d|#fnXt|"j0|!d j1}Wdtj+| X|dkstn| rGt/d| |fnt2|}t3j4|d|dt3j5dt3j5dt3j5d|}$|$j6d \}%}&|$j7dks|&rt8j9j$|&t/d||$j:fn|%j1}|t(|||||nEt;|t r8t;|t  r8t/d |d!d#|j<j=n|rot;|t rW|}qt,jt|}nLd }(t;|t rtj"j?|}(n|}(|| t|(||}|}qWtjtjd$|t;|t rB|rt;|dt rqWg})x*|D]"}'|)j@t|'|||qW|)}nt||||}t;|t rxbtAdtB|D]-}*t ||*r|t ||*||*t^s Matches: %rt!R,tcommand_stringt|Rit@Rt is%s tis_arrays(Executing command '%s' in directory '%s't pymod_do_mains,Error importing pymod_do_mainmodule (%s): %ss$Unknown command string '%s' in '%s'.tshelltstdoutRtstdintcwds%Call to '%s' returned exit status %d.s2Had cache value for command '%s' in directory '%s'iRsUndefined variable s in s Variable s- must expand to a string or list of strings; slist contains a sfound a sFound output %r, recursing.(RR(CRtearly_variable_ret PHASE_LATEtlate_variable_retPHASE_LATELATEtlatelate_variable_reRvR=RRtintRLtfinditertreverset groupdictRdRstDEBUG_VARIABLESRtendRRRtProcessListFiltersInDicttExpandVariableststripRZR[RrR3R,tsplittisabsRKRet WriteOnDifftwritetcloseRR`tcached_command_resultsR5R_tchdirtshlext __import__t ImportErrorRtDoMaintrstripRt subprocesstPopentPIPEt communicateRRRt returncodeR<RxRt#ProcessVariablesAndConditionsInListtEncodePOSIXShellListR4txrangeR?(+tinputtphaseR.t build_filet variable_retexpansion_symbolRtmatchestoutputt match_groupRt run_commandRt file_listt replace_startt replace_endtc_starttc_endt replacementtcontents_startt contents_endtcontentstprocessed_variablestexpand_to_listtbuild_file_dirt contents_listR[tftit use_shellt cache_keyt cached_valuetoldwdtparsed_contentst py_moduleRntptp_stdouttp_stderrRtencoded_replacementt new_outputRW((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyRs.                                     #                 "       cCs|tkrd}n1|tkr*d}n|tkr:dStsFt||krVdS||}||=x|D]}t|tst|dnt|dkrt|dkrt|d|ddt t|n|dd!\}}d} t|dkr!|d} nt ||||} t| t  rpt| t  rpt d d tjjny>t| d d } t| idd 6|r|} n| } Wntk r} tdt | jd| j|| jf| j| j| j| j}|n<tk rK} tjj| d| |ft| nX| dkrnt| |||t|| ||qnqnWdS(NRttarget_conditionss must be a listiiRis must be length 2 or 3, not s7Variable expansion in this context permits str and int s only, found sR`RYs9%s while evaluating condition '%s' in %s at character %d.s%while evaluating condition '%s' in %s(RRRRvR=R<RLRR?RR3RR t ValueErrortexpandedRxRtcompileR`RaRttexttoffsetRbtlinenot NameErrorRdReRfRRu(tthe_dictR(R.R)tconditions_keytconditions_listRt cond_exprt true_dictt false_dicttcond_expr_expandedtast_codet merge_dictRnt syntax_error((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytProcessConditionsInDictsZ         $,     #    cCs_xX|jD]J\}}t|tsFt|tsFt|tr ||d|Returns a list of all of a target's dependencies, recursively.N(R3R RR4tDeepDependencies(RR R((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyRs  cCsi|d krg}n|jd kr(|Sd||jkrJtdnd||jkr{td||jdn||jd}|tk}|r| r|S|dkr||jjdt r|j|kr|j|jn|S| r |d kr |S|j|kre|j|j|s8| rex'|jD]}|j||t qBWqen|S( sReturns a list of dependency targets that are linked into this target. This function has a split personality, depending on the setting of |initial|. Outside callers should always leave |initial| at its default setting. When adding a target to the list of dependencies, this function will recurse into itself with |initial| set to False, to collect dependencies that are linked into the linkable target for which the list is being built. R)s&Missing 'target_name' field in target.R,s!Missing 'type' field in target %stnonetdependencies_traverseRR N(RR ( R3RRtlinkable_typesR5RR4R tLinkDependenciesRv(RRR tinitialt target_typet is_linkableR((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyRs4      N(RRRRRRRR3RRRRRR(((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyRs  * ) c Cswi}x9|jD]+\}}||krt|||}t|j dkru|j j | | j j |ququW| j} t| t|kr4g} x0|jD]"}|| kr| j |qqWtjdddj| ndS(NR s,while computing dependencies of .gyp file %ssDependancy '%s' not foundis>Some files not reachable, cycle in .gyp file dependency graph s#detected involving some or all of: R(titerkeysRdReRiRRwR5RRfR R4RR3t itervaluesR?RRRK(RRRR)Rtbuild_file_nodettarget_dependenciesRRvRnRRRt bad_filestfile((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyt#VerifyNoGYPFileCircularDependenciessL        c Csx|D]}||}tjj|}|dkrH||j}nT|dkrj||j|}n2|dkr||j|}ntd|xS|D]K}||} || krqntjj|} t|| ||| qWqWdS(NR/R0R1sCDoDependentSettings doesn't know how to determine dependencies for (RdReRiRRRRRu( RTRRRRRR)R RRRv((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytDoDependentSettingss$          c Csx|D]}||}|d}|dkrd|kr?qn|jdg|d<||j|}d}x|t|kr||} || } | ddkr| jdt s| ddkr| |dkr||=qr|d}qrWt|dkr||d^]cCs||kstj|r|Stjjtjjtjjtjj |tjj ||j dd}|ddkr|d7}n|SdS(Ns\Ri( t exception_reRRZR[RqRKRdReRRrR(tto_filetfro_fileRtret((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytMakePathRelative*s c sdfd}d}tfd|D}x|D]} t} t| tskt| tr|rt||| } n| } t| t s| jd r!t} q!nit| tri} t | | ||n>t| t rg} t | | ||nt d| j j|rp| sA|| || r|j| | rm|j| qmqqAx#| r| |kr|j| qsW|j|| | r|j| n|d}qAWdS(NcSs|jS(N(t__hash__(tval((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytMRcs |r||kS||kS(N((txtsR(t is_hashable(sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytis_in_set_or_listPs  ic3s!|]}|r|VqdS(N((t.0R(R(sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pys Yst-s/Attempt to merge list item of unsupported type i(RRvR<RR Rt startswithRRRRuRLt MergeListsRNRxRR4RtremoveRu( ttotfroRRtis_pathsR4Rt prepend_indexthashable_to_setRt singletontto_item((RsH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pyRJs@        cCs;x4|jD]&\}}||krt}t|tsIt|tr{t||tplt||tst}qn|j||jkrt}n|rtd|jjd||jjd|qnt|tst|tr)t |}|rt |||||tconcreteRtold_configuration_dictRt delete_keysRTtkey_exttkey_baseR((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytSetUpConfigurations s\  #                 cCsg}g}x|jD]\}}|d}|dkrM|dkrMqnt|ts~t|d|d|jjn|d }||kr|j|qnt||tst|d|d|jjdidd6dd6|n||kr|j|qqWx|D] }||=qWxB|D]:}||} tdt| } |d} | |krxO|| D]C} x:td t| D]#} | | | krd | | Target %s has an invalid target type '%s'. Must be one of %s.RR'is_Target %s has type %s but standalone_static_library flag is only valid for static_library type.N(RR RR R(R5R3RRK(RRtVALID_TARGET_TYPESR((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateTargetType s   c Cs|jdddkrdS|jdg}i}xi|D]a}tjj|\}}|dk}|sqq;ntjj|} |j| gj|q;Wd } xL|jD]>\} } t | dkr| d| dj | f7} qqW| rd|| dGHt dndS(NR,RR Rs.cs.ccs.cpps.cxxs.ms.mms.ss.SRis %s: %s Rs<static library %s has several files with the same basename: s4Some build systems, e.g. MSVC08, cannot handle that.s6Duplicate basenames in sources section, see list above(RR (s.cs.ccs.cpps.cxxs.ms.mms.ss.S( R5R3RZR[tsplitexttbasenameR~R4RwR?RKR( RRR)Rt basenamestsourceRRtis_compiled_fileRRR((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateSourcesInTarget s&  $cCsi}i}|jdg}xz|D]r}|d}||krZtd||fn|||<|d}||krtdd||||d|fn|||The 'run_as' in target %s from file %s should be a dictionary.RsEThe 'run_as' in target %s from file %s must have an 'action' section.sCThe 'action' for 'run_as' in target %s from file %s must be a list.tworking_directorysPThe 'working_directory' for 'run_as' in target %s in file %s should be a string.t environmentsNThe 'environment' for 'run_as' in target %s in file %s should be a dictionary.(R5R<RRRRLR(RRR)R)R&RRR((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateRunAsInTargetq s,c Cs|jd}|jdg}x|D]}|jd}|sVtd|n|jdd }|d krtd|n|jd}|r(|d r(td |q(q(Wd S( s0Validates the inputs to the actions in a target.R)Rt action_namesKAnonymous action in target %s. An action must have an 'action_name' field.Rs"Action in target %s has no inputs.Ris%Empty action as command in target %s.N(R5RR3( RRR)R)RRRRtaction_command((sH//opt/alt/alt-nodejs10/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateActionsInTarget s   cCsx|jD]\}}t|trAt|}|||s                    !   . ( $ p 35 ;        / V  o "  ' E    ( 7  M H c  T    9