
    ve!                     f    d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d Zd Z	d dl
Z
d Zd ZdS )    N)datetime)Pathc                 V   t          | d                                                              d          }g }|D ]m}|                                }|d d         dk    rI|dd                                                                          }|                    |d                    n|S )Nutf8)encoding
   z#define   r   )openreadsplitstripappend)filepathfalineslinekvs         AD:\Marlin-2.1.1.1\buildroot\share\PlatformIO\scripts\signature.pyextract_definesr      s    	(V$$$))++11$77  T
**,,%
2A2Y)abb	!!288BqE???	    c                     t          j                    }t          | d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )r   )r   s   r   <lambda>z$get_file_sha256sum.<locals>.<lambda>"   s     r   r   )hashlibsha256r   iterupdate	hexdigest)r   sha256_hash
byte_blockr   s      @r   get_file_sha256sumr$      s    ~
8D "Q----c22 " "jj!!!!"" " " " " " " " " " " " " " " 	s   ,AA"%A"c                     t          j        |dt           j        d          5 }|                    | t           j        d           d d d            d S # 1 swxY w Y   d S )Nw	   )compressioncompresslevel)compress_typer)   )zipfileZipFile	ZIP_BZIP2write)r   outpathzipfs      r   compress_filer1   *   s    ogs0AQRSSS IW[**XW%6a*HHHI I I I I I I I I I I I I I I I I Is   #AAAc           
        % d| v rd S ddg}t          | d         | d                   }d}|D ]}|t          |          dd         z  }|d	z  }|d
z  }	 |                                5 }t          j        |          }|d         |k    rt          ||           	 d d d            d S 	 d d d            n# 1 swxY w Y   n#  Y nxY wddlm}	  |	|           }
i }g }|D ]4}t          |          %|%z  }%||	                    d          d         <   5t          j        d          }i %|
D ]}|dd                                                                          	                    d          }|d         d                    |dd                    }}t          |          dk    r|dd         dk    rd|v rd|v r|                    |          rt          |          r|nd%|<   d%v sd%v sd S i }%D ]e}|                    d          r|dk    r|                    d          r|dk    r:|                    d          rP||ddgz   vrZ%|         ||<   fi }||d<   |D ]}i ||<   |D ]"}|D ]}|||         v r||         ||         |<   #%fd } |d          }|dk    rt'          d!           |d"z  }|                    d#          5 }d$}d%d&d'}%d(         }t)          j                                        d)          }d*}|                    d+d,| d-z   d.z   d-z   d/z   |                    d0d1          z   |                    d2d3|           z              |D ]}|                    d          r|                    d4||         z   d5z              t3          ||                   D ]f}||vr`||         |         dk    rd6n||         |         }|                    |                    |                                d3|z                        g	 d d d            n# 1 swxY w Y   |d7k    r	 t7          j                    }n8# t:          $ r+}t'          d8t=          |          z              d }Y d }~nd }~ww xY w|r|d9v rZt'          d:           t7          j        ||d;z             |d<k    r,t7          j         |           t7          j        ||d=z             np|d>k    rjt'          d?           	 dd l!} n=# tD          $ r0 | #                    | $                    d@dA                     dd l!} Y nw xY wt7          j%        ||dBz             i |dC<   |d         |dC         d<   |d         |dC         d<   	 tM          j'        g dD                                          }!|!                                |dC         dE<   n#  Y nxY w|dk    sd%v rD|                    d#          5 }t          j(        ||dFG           d d d            n# 1 swxY w Y   d%vrd S t          ||           t          dHdI          5 }"|"                    dJ           d}#|d
z                      dK          )                                D ]=}$|"                    dL|$z             |#dz  }#|#dMz  dk    r|"                    dN           >|#dMz  r|"                    dO           |"                    dP           d d d            d S # 1 swxY w Y   d S )QNBUILD_SIGNATUREzMarlin/Configuration.hzMarlin/Configuration_adv.hPROJECT_BUILD_DIRPIOENV r   
   zmarlin_config.jsonzmc.zip__INITIAL_HASH)run_preprocessor/z\(+(\s*-*\s*_.*)\)+r
          __()CONFIGURATION_EMBEDDINGCONFIG_EXPORTBOARD_BOARD_INFO_NAME_NAMECUSTOM_MACHINE_NAME_T_DECLAREDDETAILED_BUILD_VERSIONSTRING_DISTRIBUTION_DATEc                 @    	 t          |                    S #  Y dS xY w)Nr   )int)keydefiness    r   tryintz'compute_build_signature.<locals>.tryint   s*    
gcl


!!s    zGenerating config.ini ...z
config.inir&   )CONFIGURATION_H_VERSIONCONFIGURATION_ADV_H_VERSIONrC   zconfig:basiczconfig:advanced)zConfiguration.hzConfiguration_adv.hrP   z%Y-%m-%d at %H:%M:%Sz
{0:40}{1}
zG#
# Marlin Firmware
# config.ini - Options to apply before the build
#
z# Generated by Marlin build on r   z#
z[config:base]
ini_use_configz = allini_config_versz = z
[z]
on   zError: )rU      zGenerating schema.json ...zschema.jsonrV   zschema_grouped.json   zGenerating schema.yml ...z"$PYTHONEXE -m pip install "pyyaml"z%Installing YAML for schema.yml exportz
schema.ymlVERSION)gitdescribez--match=NeVeRmAtChz--alwaysGIT_REF),:)
separatorszMarlin/src/mczip.hwbs   #ifndef NO_CONFIGURATION_EMBEDDING_WARNING
  #warning "Generated file 'mc.zip' is embedded (Define NO_CONFIGURATION_EMBEDDING_WARNING to suppress this warning.)"
#endif
const unsigned char mc_zip[] PROGMEM = {
 r   s    0x%02X,   s   
    
s   };
)*r   r$   r   jsonloadr1   preprocessorr9   r   r   recompiler   decodejoinlenmatch
startswithendswithprintr   nowstrftimer.   formatsortedlowerschemaextract	Exceptionstr	dump_jsongroup_optionsyamlImportErrorExecuteVerboseAction	dump_yaml
subprocesscheck_outputdumpr   )&envfiles_to_keep
build_pathhashesheadermarlin_json
marlin_zipinfileconfr9   complete_cfgconf_definesall_definesrr   key_valrM   valueresolved_definesdatarO   config_dump
config_inioutfileignorefilegrpvers	dt_stringini_fmtvalconf_schemaexcry   curverresult_filecountbrN   s&                                        @r   compute_build_signaturer   3   s
   & ,-IK3*+S];;  - -Vv&&qt,,&&008# V
)F

4
&&+z***
       &              $ +*****  %%  0 0VF##'+(/,v||C  $%%Z&''  - -T HNN##%%++C00'qz388GABBK00u# 	XX\\c!A#h$&&CZZC3JJ WWU^^ e**,"'#,,
 
#g	-	-G1K1K&  ' 'S^^H #):":":\\' s&;;;\\-    8:TVVVV "#,3 	   V$v,,  . .S . .f	\&!!!(-DL.
     vo&&
 1#$$$L(*s >wW6!/GXZZ7
+
,4|~~&&'=>>97
== 6	555	6
    nn%x001 nn&d55	6    > >v MM%'&/)E1222d6l## > >6L%++DDfc1BcmmGNN399;;<<===>	>'> > > > > > > > > > > > > > >> 1!!;;	   SXX	;;;;;;  = W	
&'''
[*}"<===b+&&&k:0E#EFFF
 	q	
%&&&[[[[   [[""*-     [[[[[ [*|";<<< i-=>V-Wi)*/?@Z/[i+,"#X#X#XYY__aa&%}}$y/)$
 11W<< 39T7z22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 	"W,,& {J''' %% 4   %!''--2244  a[1_%%%A:5bjAoof
RZ UG                 s   C  (2B4C  (C  4B88C  ;B8<C   CEP((P,/P,;Q 
R!Q??R=T 7T<;T<?AW W	+XXX B/[<<\ \ )rs   r~   re   rb   r   r   pathlibr   r   r$   r+   r1   r    r   r   <module>r      s     ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !            	
 	
 	
      I I Ia a a a ar   