[OE-core] [PATCH RFC 01/18] fs-uuid.bbclass: rewrite get_fs_uuid function
California Sullivan
california.l.sullivan at intel.com
Tue Dec 19 22:58:14 UTC 2017
I couldn't find anywhere it was being used, and in trying to use it it
just spit out an error.
It now generates a random UUID and puts it in the deploy dir for
consumption.
Also use DISK_SIGNATURE_UUID for the replacement function, since that
is user-overridable.
Signed-off-by: California Sullivan <california.l.sullivan at intel.com>
---
meta/classes/fs-uuid.bbclass | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/meta/classes/fs-uuid.bbclass b/meta/classes/fs-uuid.bbclass
index 9b53dfba7ab..5a96054294e 100644
--- a/meta/classes/fs-uuid.bbclass
+++ b/meta/classes/fs-uuid.bbclass
@@ -1,16 +1,26 @@
+inherit deploy
+
# 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)
+ import os
+ import uuid
+ deploydir = d.getVar('DEPLOY_DIR_IMAGE')
+ bootfs_uuid_file = deploydir + "/bootfs-uuid"
+ uuid_str = "deadbeef-dead-beef-dead-beefdeadbeef"
+ if d.getVar('BUILD_REPRODUCIBLE_BINARIES', True) != "1":
+ if os.path.exists(bootfs_uuid_file):
+ with open(bootfs_uuid_file, "r+") as file:
+ uuid_str = file.read()
+ else:
+ # deploydir might not exist yet...creating it here could be bad?
+ if not os.path.exists(deploydir):
+ os.makedirs(deploydir)
+ uuid_str = str(uuid.uuid4())
+ with open(bootfs_uuid_file, "w") as file:
+ file.write(uuid_str)
+ return uuid_str
# Replace the special <<uuid-of-rootfs>> inside a string (like the
# root= APPEND string in a syslinux.cfg or systemd-boot entry) with the
@@ -19,6 +29,8 @@ def get_rootfs_uuid(d):
def replace_rootfs_uuid(d, string):
UUID_PLACEHOLDER = '<<uuid-of-rootfs>>'
if UUID_PLACEHOLDER in string:
- uuid = get_rootfs_uuid(d)
+ uuid = d.getVar('DISK_SIGNATURE_UUID', True)
string = string.replace(UUID_PLACEHOLDER, uuid)
return string
+
+DISK_SIGNATURE_UUID ?= "${@get_rootfs_uuid(d)}"
--
2.14.3
More information about the Openembedded-core
mailing list