# Extract UUID from ${ROOTFS}, which must have been built 
 | 
# by the time that this function gets called. Only works 
 | 
# on ext file systems and depends on tune2fs. 
 | 
def get_rootfs_uuid(d): 
 | 
    import subprocess 
 | 
    rootfs = d.getVar('ROOTFS') 
 | 
    output = subprocess.check_output(['tune2fs', '-l', rootfs]) 
 | 
    for line in output.split('\n'): 
 | 
        if line.startswith('Filesystem UUID:'): 
 | 
            uuid = line.split()[-1] 
 | 
            bb.note('UUID of %s: %s' % (rootfs, uuid)) 
 | 
            return uuid 
 | 
    bb.fatal('Could not determine filesystem UUID of %s' % rootfs) 
 | 
  
 | 
# Replace the special <<uuid-of-rootfs>> inside a string (like the 
 | 
# root= APPEND string in a syslinux.cfg or systemd-boot entry) with the 
 | 
# actual UUID of the rootfs. Does nothing if the special string 
 | 
# is not used. 
 | 
def replace_rootfs_uuid(d, string): 
 | 
    UUID_PLACEHOLDER = '<<uuid-of-rootfs>>' 
 | 
    if UUID_PLACEHOLDER in string: 
 | 
        uuid = get_rootfs_uuid(d) 
 | 
        string = string.replace(UUID_PLACEHOLDER, uuid) 
 | 
    return string 
 |