@ -18,6 +18,7 @@ maintained in modules in addition to what is available in the main Zephyr tree.
'''
'''
import argparse
import argparse
import hashlib
import os
import os
import re
import re
import subprocess
import subprocess
@ -131,6 +132,9 @@ mapping:
MODULE_YML_PATH = PurePath ( ' zephyr/module.yml ' )
MODULE_YML_PATH = PurePath ( ' zephyr/module.yml ' )
# Path to the blobs folder
# Path to the blobs folder
MODULE_BLOBS_PATH = PurePath ( ' zephyr/blobs ' )
MODULE_BLOBS_PATH = PurePath ( ' zephyr/blobs ' )
BLOB_PRESENT = ' A '
BLOB_NOT_PRESENT = ' D '
BLOB_OUTDATED = ' M '
schema = yaml . safe_load ( METADATA_SCHEMA )
schema = yaml . safe_load ( METADATA_SCHEMA )
@ -225,6 +229,34 @@ def process_settings(module, meta):
return out_text
return out_text
def get_blob_status ( path , sha256 ) :
if not path . is_file ( ) :
return BLOB_NOT_PRESENT
with path . open ( ' rb ' ) as f :
m = hashlib . sha256 ( )
m . update ( f . read ( ) )
if sha256 . lower ( ) == m . hexdigest ( ) :
return BLOB_PRESENT
else :
return BLOB_OUTDATED
def process_blobs ( module , meta ) :
blobs = [ ]
mblobs = meta . get ( ' blobs ' , None )
if not mblobs :
return blobs
blobs_path = Path ( module ) / MODULE_BLOBS_PATH
for blob in mblobs :
blob [ ' module ' ] = meta . get ( ' name ' , None )
blob [ ' abspath ' ] = blobs_path / Path ( blob [ ' path ' ] )
blob [ ' status ' ] = get_blob_status ( blob [ ' abspath ' ] , blob [ ' sha256 ' ] )
blobs . append ( blob )
return blobs
def kconfig_snippet ( meta , path , kconfig_file = None ) :
def kconfig_snippet ( meta , path , kconfig_file = None ) :
name = meta [ ' name ' ]
name = meta [ ' name ' ]
name_sanitized = meta [ ' name-sanitized ' ]
name_sanitized = meta [ ' name-sanitized ' ]