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