diff options
Diffstat (limited to 'poky/meta/classes/fs-uuid.bbclass')
-rw-r--r-- | poky/meta/classes/fs-uuid.bbclass | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/poky/meta/classes/fs-uuid.bbclass b/poky/meta/classes/fs-uuid.bbclass new file mode 100644 index 0000000000..9b53dfba7a --- /dev/null +++ b/poky/meta/classes/fs-uuid.bbclass @@ -0,0 +1,24 @@ +# 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 |