
    5d'                     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         HD:\Marlin\Marlin-2.1.2.1\buildroot\share\PlatformIO\scripts\signature.pyextract_definesr      s    X''',,..44T::A
A  

!9	!!qrr""((**BHHRUOOOH    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    qvvd|| r   r   )hashlibsha256r   iterupdate	hexdigest)r   sha256_hash
byte_blockr   s      @r   get_file_sha256sumr$      s    .""K	ht		 +3333C88 	+ 	+Jz****	++ + + + + + + + + + + + + + +   """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)arcnamecompress_typer)   )zipfileZipFile	ZIP_BZIP2write)r   
storednameoutpathzipfs       r   compress_filer3   *   s    	#73DTU	V	V	V cZ^

8Zw?P`a
bbbc c c c c c c c c c c c c c c c c c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            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          |d	|           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*    	ws|$$$	11s    zGenerating config.ini ...z
config.inir&   )CONFIGURATION_H_VERSIONCONFIGURATION_ADV_H_VERSIONrE   zconfig:basiczconfig:advanced)zConfiguration.hzConfiguration_adv.hrR   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: )rW      zGenerating schema.json ...zschema.jsonrX   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loadr3   preprocessorr;   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confr;   complete_cfgconf_definesall_definesrr   key_valrO   valueresolved_definesdatarQ   config_dump
config_inioutfileignorefilegrpvers	dt_stringini_fmtvalconf_schemaexcr{   curverresult_filecountbrP   s&                                        @r   compute_build_signaturer   3   s:
   C /0LNMc-.H>>J F 3 3$V,,QrT2233Kh&J 	69V$$D$%//k+?LLL	 	 	 	 	 	 	 	/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 .-----##C((L LK 6 6!&))w.5V\\#&&r*++

)**A G 3 3 qrr(..""))++11#66QZ'!""+!6!6U s88a<<C!H,,#::#** 775>> 	 #E

2uu
 &00Ow4N4N  - ->>(## 	/@(@(@<<   	S,A%A%A<<&& 	k&>@Z$\\\\ !( D#D	  V   : :" 	: 	:Fl6***$4S$9VS!	:
     &))K
 a)***,.
__S!! 	PW`F*8PaccG45D //0FGGI#GMM BIAAA	B
   $$ ..!18<<= ..!2L$LLAA	B    P P$$T** egfo5=>>>!$v,// P PC&((&*6l3&72&=&=dd4<PSCTgnnSYY[[%#+&N&NOOOP	P'	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P> a	 .**KK 	 	 	)c#hh&'''KKKKKK	  	I g%%2333 j=.HIII"$$(555$[*?T2TUUU
 !!1222 KKKK"      KK 1 1<?! !     KKKKK   j<.GHHH DO0@AY0ZDO,-2BC]2^DO./()^)^)^__eegg%+]]__Y	""
 a4??c"" 	<gIdG
;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< %// +3Z@@@ 
"4	(	( #K=	
 	
 	
 x'--d3388:: 	* 	*AkAo...QJErzQ!!&)))2: 	%e$$$'"""# # # # # # # # # # # # # # # # # #s   C (3B5C )C 5B99C <B9=C CEP))P-0P-<Q 
R!R  R>T 7T=<T= AW W
,XXXB/[>>\\)ru   r   rg   rd   r   r   pathlibr   r   r$   r,   r3   r    r   r   <module>r      s     ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !            	 	 	# # # c c ca# a# a# a# a#r   