��
r�$Lc�����������@���s����d��Z��d�Z�d�d�k�Z�d�d�k�l�Z�d�d�k�Z�d�d�k�Z�d�e�f�d�������YZ	�d�e�i
�f�d�������YZ�d	�e�f�d
�������YZ�d����Z
�d�e�f�d
�������YZ�h��Z�d����Z�d����Z�e�a�d����Z�d�e�f�d�������YZ�d�S(���s`���SCons.Executor

A module for executing actions with specific lists of target and source
Nodes.

s;���src/engine/SCons/Executor.py 5023 2010/06/14 22:05:46 sconsi����N(���t���logInstanceCreationt���Batchc�����������B���s���e��Z�d��Z�g��g��d���Z�RS(���sH���Remembers exact association between targets
    and sources of executor.c���������C���s���|�|��_��|�|��_�d��S(���N(���t���targetst���sources(���t���selfR���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__init__*���s����	(���t���__name__t
���__module__t���__doc__R���(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���'���s���t���TSListc�����������B���sD���e��Z�d��Z�d����Z�d����Z�d����Z�d����Z�d����Z�d����Z�RS(���s���A class that implements $TARGETS or $SOURCES expansions by wrapping
    an executor Method.  This class is used in the Executor.lvars()
    to delay creation of NodeList objects until they're needed.

    Note that we subclass collections.UserList purely so that the
    is_Sequence() function will identify an object of this class as
    a list during variable expansion.  We're not really using any
    collections.UserList methods in practice.
    c���������C���s
���|�|��_��d��S(���N(���t���func(���R���R
���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���:���s����c���������C���s���|��i�����}�t�|�|���S(���N(���R
���t���getattr(���R���t���attrt���nl(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__getattr__<���s����c���������C���s���|��i�����}�|�|�S(���N(���R
���(���R���t���iR
���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__getitem__?���s����c���������C���s5���|��i�����}�t�|�d���}�t�|�d���}�|�|�|�!S(���Ni����(���R
���t���max(���R���R���t���jR
���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__getslice__B���s�����c���������C���s���|��i�����}�t�|���S(���N(���R
���t���str(���R���R
���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__str__F���s����c���������C���s���|��i�����}�t�|���S(���N(���R
���t���repr(���R���R
���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__repr__I���s����(	���R���R���R���R���R���R���R���R���R���(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR	���0���s���						t���TSObjectc�����������B���s2���e��Z�d��Z�d����Z�d����Z�d����Z�d����Z�RS(���s^���A class that implements $TARGET or $SOURCE expansions by wrapping
    an Executor method.
    c���������C���s
���|�|��_��d��S(���N(���R
���(���R���R
���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���Q���s����c���������C���s���|��i�����}�t�|�|���S(���N(���R
���R���(���R���R���t���n(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���S���s����c���������C���s"���|��i�����}�|�o�t�|���Sd�S(���Nt����(���R
���R���(���R���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���V���s����c���������C���s"���|��i�����}�|�o�t�|���Sd�S(���NR���(���R
���R���(���R���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���[���s����(���R���R���R���R���R���R���R���(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���M���s
���			c���������C���s/���y
�|��i��}�Wn�t�j
�o�|��SX|����Sd�S(���s����
    A function to return the results of a Node's rfile() method,
    if it exists, and the Node itself otherwise (if it's a Value
    Node, e.g.).
    N(���t���rfilet���AttributeError(���t���nodeR���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���a���s
����
t���Executorc�����������B���s��e��Z�d��Z�e�i�i�o�e�i�i�Z�n�g��Z�d/�h��g�g��g��h��d���Z
�d����Z�d����Z�d����Z
�d����Z�d����Z�d����Z�d����Z�d	����Z�d
����Z�d����Z�d����Z�d
����Z�d����Z�d����Z�d����Z�d����Z�d����Z�d����Z�e�i�e�i�i�d�����d����Z�d����Z �h��d���Z!�d����Z"�d����Z#�d����Z$�d����Z%�d����Z&�d����Z'�d����Z(�d����Z)�d ����Z*�d!����Z+�d"����Z,�d#����Z-�d$����Z.�e�i�e�i�i�d%�����d&����Z/�d'����Z0�d(����Z1�d)����Z2�d*����Z3�d0�d+���Z4�e�i�e�i�i5�d,�e4�����d1�d-���Z6�d.����Z7�RS(2���s����A class for controlling instances of executing an action.

    This largely exists to hold a single association of an action,
    environment, list of environment override dictionaries, targets
    and sources for later processing as needed.
    c���������C���s����t��|��d���|��i�|���g��|��_�g��|��_�|�|��_�|�|��_�|�p�|�o�t�|�|���g�|��_�n
�g��|��_�|�|��_�h��|��_	�d��S(���Ns���Executor.Executor(
���R����t���set_action_listt���pre_actionst���post_actionst���envt���overridelistR���t���batchest
���builder_kwt���_memo(���R���t���actionR"���R#���R���R���R%���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���|���s����

						c���������C���s����y�|��i��SWn��t�j
�o��h�t�|��i���d�6t�|��i���d�6t�|��i���d�6t�|��i���d�6t�|��i���d�6t�|��i	���d�6t�|��i
���d�6t�|��i���d�6|��_��|��i��SXd��S(	���Nt���CHANGED_SOURCESt���CHANGED_TARGETSt���SOURCEt���SOURCESt���TARGETt���TARGETSt���UNCHANGED_SOURCESt���UNCHANGED_TARGETS(���t���lvarsR���R	���t���_get_changed_sourcest���_get_changed_targetsR���t���_get_sourcet���_get_sourcest���_get_targett���_get_targetst���_get_unchanged_sourcest���_get_unchanged_targets(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt	���get_lvars����s����c���������C���s����g��}�g��}�g��}�g��}�x��|��i��D]|�}�|�i�d�i����o3�|�i�t�t�t�|�i�������|�i�|�i���q"�|�i�t�t�t�|�i�������|�i�|�i���q"�Wt�i	�i
�|���|��_�t�i	�i
�|���|��_�t�i	�i
�|���|��_
�t�i	�i
�|���|��_�d��S(���Ni����(���R$���R���t
���is_up_to_datet���extendt���listt���mapR���R���t���SConst���Utilt���NodeListt���_changed_sources_listt���_changed_targets_listt���_unchanged_sources_listt���_unchanged_targets_list(���R���t���cst���ctt���ust���utt���b(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���_get_changes����s����
�c���������O���s3���y�|��i��SWn!�t�j
�o�|��i����|��i��SXd��S(���N(���RA���R���RJ���(���R���t���argst���kw(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR1�������s
����
c���������O���s3���y�|��i��SWn!�t�j
�o�|��i����|��i��SXd��S(���N(���RB���R���RJ���(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR2�������s
����
c���������O���s���t��|��i�d�i�d���i����S(���Ni����(���R���R$���R���t���get_subst_proxy(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR3�������s����c���������O���s=���t��i�i�g��}�|��i����D]�}�|�t�|���i����q�~���S(���N(���R>���R?���R@���t���get_all_sourcesR���RM���(���R���RK���RL���t���_[1]R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR4�������s����c���������O���s���|��i��d�i�d�i����S(���Ni����(���R$���R���RM���(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR5�������s����c���������O���s7���t��i�i�g��}�|��i����D]�}�|�|�i����q�~���S(���N(���R>���R?���R@���t���get_all_targetsRM���(���R���RK���RL���RO���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR6�������s����c���������O���s3���y�|��i��SWn!�t�j
�o�|��i����|��i��SXd��S(���N(���RC���R���RJ���(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR7�������s
����
c���������O���s3���y�|��i��SWn!�t�j
�o�|��i����|��i��SXd��S(���N(���RD���R���RJ���(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR8�������s
����
c���������C���sX���|��i��p�g��S|��i��d�i�|��i�|����}�|�d�d�j�o�|�d�}�n�|��i����|�S(���Ni����t���$i���(���t���action_listt���get_targetsR"���R9���(���R���t���targets_string(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_action_targets����s����
c���������C���sb���d�d��k��}�|�i�i�|���p6�|�p"�d�d��k�}�|�i�i�d�����n�|�g�}�n�|�|��_�d��S(���Ni����s���Executor must have an action.(���t
���SCons.UtilR?���t���is_Listt���SCons.Errorst���Errorst	���UserErrorRR���(���R���R'���R>���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR�������s����
c���������C���s���|��i��|��i�|��i�S(���N(���R ���RR���R!���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_action_list����s����c���������C���s.���g��}�x!�|��i��D]�}�|�i�|�i���q�W|�S(���s5���Returns all targets for all batches of this Executor.(���R$���R;���R���(���R���t���resultt���batch(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRP�������s
����
�c���������C���s.���g��}�x!�|��i��D]�}�|�i�|�i���q�W|�S(���s5���Returns all sources for all batches of this Executor.(���R$���R;���R���(���R���R\���R]���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRN�������s
����
�c���������C���s@���t��i�i�g����}�x'�|��i����D]�}�|�i�|�i������q�W|�S(���s���Returns all unique children (dependencies) for all batches
        of this Executor.

        The Taskmaster can recognize when it's already evaluated a
        Node, so we don't have to make this list unique for its intended
        canonical use case, but we expect there to be a lot of redundancy
        (long lists of batched .cc files #including the same .h files
        over and over), so removing the duplicates once up front should
        save the Taskmaster a lot of work.
        (���R>���R?���t
���UniqueListRP���R;���t���children(���R���R\���t���target(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_all_children����s
����
�c���������C���s=���t��i�i�g����}�x$�|��i����D]�}�|�i�|�i���q�W|�S(���s`���Returns all unique (order-only) prerequisites for all batches
        of this Executor.
        (���R>���R?���R^���RP���R;���t
���prerequisites(���R���R\���R`���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_all_prerequisites��s
����
�c���������C���s=���t��i�i�g����}�x$�|��i����D]�}�|�i�|�i���q�W|�S(���si���Returns all side effects for all batches of this
        Executor used by the underlying Action.
        (���R>���R?���R^���RU���R;���t���side_effects(���R���R\���R`���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_action_side_effects��s
����
�t
���get_build_envc������	���C���s����y�|��i��d�SWn�t�j
�o�n�Xh��}�x�|��i�D]�}�|�i�|���q5�Wd�d�k�}�|��i�p
�|�i�i����}�|�i�|���}�|�|��i��d�<|�S(���sU���Fetch or create the appropriate build Environment
        for this Executor.
        Rf���i����N(	���R&���t���KeyErrorR#���t���updatet���SCons.DefaultsR"���t���Defaultst���DefaultEnvironmentt���Override(���R���t	���overridest���odictR>���R"���t	���build_env(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRf�����s����
�
c���������C���sk���|��i�����}�y�|��i�d�i�d�i�}�Wn�t�t�f�j
�o
�d�}�n�X|�i�|�|�|��i����|��i	������S(���sH���Fetch the scanner path for this executor's targets and sources.
        i����N(
���Rf���R$���R���t���cwdt
���IndexErrorR���t���Nonet���pathRP���RN���(���R���t���scannerR"���Rp���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_build_scanner_path7��s����	c���������C���s*���|��i��i����}�|�i�|���|��|�d�<|�S(���Nt���executor(���R%���t���copyRh���(���R���RL���R\���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_kwC��s����

c���������C���s���d�S(���Ni����(����(���R���R`���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt
���do_nothingI��s����c������
���C���s����|��i�����}�|��i�|���}�d�}�x��|��i����D]��}�g��g��|�f�}�|�|�|����}�t�|�t�i�i���o�|��|�_�|���q.�|�o?�d�|�}�t�i�i�d�|�d�|��i�d�i	�d�|��d�|�����q.�q.�W|�S(���s!���Actually execute the action list.i����s���Error %st���errstrR���Rv���R'���(
���Rf���Rx���R[���t
���isinstanceR>���RY���t
���BuildErrorRv���R$���R���(���R���R`���RL���R"���t���statust���actRK���t���msg(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt
���do_executeL��s$����
�	

c���������K���s���|��i��|�|���S(���N(���R����(���R���R`���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���__call__e��s����c���������C���s
���h��|��_��d��S(���N(���R&���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���cleanuph��s����c���������C���st���t��|��i���d�j�p�t���g��}�|�D](�}�|�|��i�d�i�j�o�|�|�q(�q(�~�}�|��i�d�i�i�|���d�S(���s����Add source files to this Executor's list.  This is necessary
        for "multi" Builders that can be called repeatedly to build up
        a source file list for a given target.i���i����N(���t���lenR$���t���AssertionErrorR���R;���(���R���R���RO���t���x(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���add_sourcesk��s����<c���������C���s���|��i��d�i�S(���Ni����(���R$���R���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_sourcesu��s����c���������C���s���|��i��i�t�|�|�����d�S(���so��Add pair of associated target and source to this Executor's list.
        This is necessary for "batch" Builders that can be called repeatedly
        to build up a list of matching target and source files that will be
        used in order to update multiple target files at once from multiple
        corresponding source files, for tools like MSVC that support it.N(���R$���t���appendR���(���R���R���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt	���add_batchx��s����c���������C���s\���xU�|��i�����D]G�}�|�i����o4�d�}�t�i�i�|�|�|��i�d�i�d�f�����q
�q
�Wd�S(���ss���
        Preparatory checks for whether this Executor can go ahead
        and (try to) build its targets.
        s-���Source `%s' not found, needed by target `%s'.i����N(���RN���t���missingR>���RY���t	���StopErrorR$���R���(���R���t���sR���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���prepare���s
����
�
c���������C���s���|��i��i�|���d��S(���N(���R ���R����(���R���R'���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���add_pre_action���s����c���������C���s���|��i��i�|���d��S(���N(���R!���R����(���R���R'���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���add_post_action���s����c���������C���sU���|��i�����}�d�i�g��}�|��i����D](�}�|�|�i�|��i����|��i����|���q#�~���S(���Ns���
(���Rf���t���joinR[���t	���genstringRP���RN���(���R���R"���RO���R'���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���my_str���s����
c���������C���s
���|��i�����S(���N(���R����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR������s����c���������C���s&���|��i�����|��i�|��_�d����|��_�d��S(���Nc�����������S���s���d��S(���R���(����(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���<lambda>���s����(���R����Ry���R����R����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���nullify���s����
t���get_contentsc���������C���s����y�|��i��d�SWn�t�j
�o�n�X|��i����}�d�i�g��}�|��i����D](�}�|�|�i�|��i����|��i����|���qH�~���}�|�|��i��d�<|�S(���s����Fetch the signature contents.  This is the main reason this
        class exists, so we can compute this once and cache it regardless
        of how many target or source Nodes there are.
        R����R���(���R&���Rg���Rf���R����R[���R����RP���RN���(���R���R"���RO���R'���R\���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR�������s����
>
c���������C���s���d�S(���s����Fetch a time stamp for this Executor.  We don't have one, of
        course (only files do), but this is the interface used by the
        timestamp module.
        i����(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt
���get_timestamp���s����c���������C���s���|��i��|�|��i������d��S(���N(���t���scanRP���(���R���Rt���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���scan_targets���s����c���������C���s/���|��i��d�i�o�|��i�|�|��i������n�d��S(���Ni����(���R$���R���R����RN���(���R���Rt���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���scan_sources���s����c���
������C���sJ��|��i�����}�g��}�|�og�x��|�D]X�}�|�i����|�i�|���}�|�p�q �n�|��i�|���}�|�i�|�i�|�|�|�����q �Wn��|��i����}�x��|�D]x�}�|�i����|�i�|�|���}�|�p�q��n�|�i�|���}�|�p�q��n�|��i�|���}�|�i�|�i�|�|�|�����q��W|�i�|��i������x!�|��i����D]�}	�|	�i	�|���q/Wd�S(���s��Scan a list of this Executor's files (targets or sources) for
        implicit dependencies and update all of the targets with them.
        This essentially short-circuits an N*M scan of the sources for
        each individual target, which is a hell of a lot more efficient.
        N(
���Rf���t���disambiguatet���selectRu���R;���t���get_implicit_depsRx���t���get_env_scannerRP���t���add_to_implicit(
���R���Rt���t	���node_listR"���t���depsR���R����Rs���RL���t���tgt(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR�������s6�����
$�
 
�c���������C���s���|�f�t��|���S(���N(���t���tuple(���R���R���t���ignore(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���_get_unignored_sources_key���s����t���get_unignored_sourcesc���������C���s*��|�f�t��|���}�y�|��i�d�}�Wn&�t�j
�o�h��}�|�|��i�d�<n$�Xy�|�|�SWn�t�j
�o�n�X|�o<�g��}�x?�|��i�D]$�}�|�|�i�j�o�|�i�}�Pq��q��Wn
�|��i����}�|�oW�h��}�x�|�D]�}�d�|�|�<q��Wg��}	�|�D]�}
�|
�|�j�o�|	�|
�q��q��~	�}�n�|�|�|�<|�S(���NR����i���(���R����R&���Rg���R$���R���R���RN���(���R���R���R����t���keyt	���memo_dictt
���sourcelistRI���t���idictR���RO���R����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR�������s4����
�	
�6
c���������C���s[���g��}�|��i�����}�xB�|��i����D]4�}�|�i�|��i����|��i����|���}�|�i�|���q�W|�S(���sc���Return the executor's implicit dependencies, i.e. the nodes of
        the commands to be executed.(���Rf���R[���R����RP���RN���R;���(���R���R\���Ro���R~���R����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR������s����
�		N(����(����(8���R���R���R���R>���t���Memoizet���use_memoizert���Memoized_Metaclasst
���__metaclass__t���memoizer_countersRr���R���R9���RJ���R1���R2���R3���R4���R5���R6���R7���R8���RU���R���R[���RP���RN���Ra���Rc���Re���R����t
���CountValueRf���Ru���Rx���Ry���R����R����R����R����R����R����R����R����R����R����R���R����R����R����R����R����R����R����t	���CountDictR����R����(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���o���sf���
																					
							
			
										$!c���������C���s���t��|��S(���N(���t���_batch_executors(���R����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���GetBatchExecutor��s����c���������C���s"���|��t��j�p�t���|�t��|��<d��S(���N(���R����R����(���R����Rv���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���AddBatchExecutor"��s����c����������C���s@���d�d�k��}��d�|��i�i�f�d�������Y}�t�p
�|����a�n�t�S(���s,���Use singleton pattern for Null Environments.i����Nt���NullEnvironmentc�����������B���s5���e��Z�d��d�k�Z�d�Z�e�i�i�d���Z�d����Z�RS(���i����Nc���������S���s���|��i��S(���N(���t	���_CacheDir(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_CacheDir2��s����(	���R���R���t���SCons.CacheDirR>���Rr���t���_CacheDir_patht���CacheDirR����R����(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����.��s���(���RV���R?���t���Nullt���nullenv(���R>���R����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���get_NullEnvironment)��s
����
R����c�����������B���s����e��Z�d��Z�d����Z�d����Z�d����Z�d����Z�d����Z�d����Z�d����Z	�d����Z
�d	����Z�d
����Z�d����Z
�d����Z�d
����Z�d����Z�d����Z�d����Z�d����Z�d����Z�d����Z�RS(���s+��A null Executor, with a null build Environment, that does
    nothing when the rest of the methods call it.

    This might be able to disapper when we refactor things to
    disassociate Builders from Nodes entirely, so we're not
    going to worry about unit tests for this--at least for now.
    c���������O���s+���t��|��d���t�|�d�g����g�|��_�d��S(���Ns
���Executor.NullR���(���R����R���R$���(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���A��s����
c���������C���s���t�����S(���N(���R����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRf���D��s����c���������C���s���d��S(���N(���Rr���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRu���F��s����c���������C���s���d��S(���N(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����H��s����c���������C���s���d��S(���N(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����J��s����c���������O���s
���t��d���S(���N(����(���R����(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����L��s����c���������C���s���g��S(���N(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRU���N��s����c���������C���s���g��S(���N(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR[���P��s����c���������C���s���|��i��d�i�S(���Ni����(���R$���R���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRP���R��s����c���������C���s���|��i��d�i�d�i�S(���Ni����(���R$���R���R���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRN���T��s����c���������C���s
���|��i�����S(���N(���RN���(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRa���V��s����c���������C���s���g��S(���N(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRc���X��s����c���������C���s���g��S(���N(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyRe���Z��s����c���������O���s���d�S(���Ni����(����(���R���RK���RL���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����\��s����c���������C���s���d�S(���NR���(����(���R���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����^��s����c���������C���s,���|��i��}�t�|��_�|��i�g����|�|��_��d�S(���s3���Morph this Null executor to a real Executor object.N(���R$���R���t	���__class__R���(���R���R$���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���_morph`��s����		
c���������C���s���|��i�����|��i�|���d��S(���N(���R����R����(���R���R'���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����j��s����
c���������C���s���|��i�����|��i�|���d��S(���N(���R����R����(���R���R'���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����m��s����
c���������C���s���|��i�����|��i�|���d��S(���N(���R����R���(���R���R'���(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR���p��s����
(���R���R���R���R���Rf���Ru���R����R����R����RU���R[���RP���RN���Ra���Rc���Re���R����R����R����R����R����R���(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyR����9��s(���																
		(���R���t���__revision__t���collectionst���SCons.DebugR����RX���R>���t
���SCons.Memoizet���objectR���t���UserListR	���R���R���R���R����R����R����Rr���R����R����R����(����(����(����s1���install/lib/scons-2.0.0.final.0/SCons/Executor.pyt���<module>���s"���		���