diff options
Diffstat (limited to 'meta/classes-recipe/fs-uuid.bbclass')
-rw-r--r-- | meta/classes-recipe/fs-uuid.bbclass | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/meta/classes-recipe/fs-uuid.bbclass b/meta/classes-recipe/fs-uuid.bbclass new file mode 100644 index 0000000000..a9e7eb8c67 --- /dev/null +++ b/meta/classes-recipe/fs-uuid.bbclass @@ -0,0 +1,30 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +# 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 |