# 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', True) 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 <> inside a string (like the # root= APPEND string in a syslinux.cfg or gummiboot 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 = '<>' if UUID_PLACEHOLDER in string: uuid = get_rootfs_uuid(d) string = string.replace(UUID_PLACEHOLDER, uuid) return string