1# 2# Copyright OpenEmbedded Contributors 3# 4# SPDX-License-Identifier: MIT 5# 6 7# Extract UUID from ${ROOTFS}, which must have been built 8# by the time that this function gets called. Only works 9# on ext file systems and depends on tune2fs. 10def get_rootfs_uuid(d): 11 import subprocess 12 rootfs = d.getVar('ROOTFS') 13 output = subprocess.check_output(['tune2fs', '-l', rootfs], text=True) 14 for line in output.split('\n'): 15 if line.startswith('Filesystem UUID:'): 16 uuid = line.split()[-1] 17 bb.note('UUID of %s: %s' % (rootfs, uuid)) 18 return uuid 19 bb.fatal('Could not determine filesystem UUID of %s' % rootfs) 20 21# Replace the special <<uuid-of-rootfs>> inside a string (like the 22# root= APPEND string in a syslinux.cfg or systemd-boot entry) with the 23# actual UUID of the rootfs. Does nothing if the special string 24# is not used. 25def replace_rootfs_uuid(d, string): 26 UUID_PLACEHOLDER = '<<uuid-of-rootfs>>' 27 if UUID_PLACEHOLDER in string: 28 uuid = get_rootfs_uuid(d) 29 string = string.replace(UUID_PLACEHOLDER, uuid) 30 return string 31