From 9b90b34f8492632a5c054a16f21e60f2b1fd69a1 Mon Sep 17 00:00:00 2001 From: James Thomas Date: Tue, 22 Jul 2014 18:17:12 +0100 Subject: Add support for device trees --- system-version-manager/system-version-manager | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'system-version-manager/system-version-manager') diff --git a/system-version-manager/system-version-manager b/system-version-manager/system-version-manager index abb3e52..cdf453b 100755 --- a/system-version-manager/system-version-manager +++ b/system-version-manager/system-version-manager @@ -168,6 +168,9 @@ class SystemVersionManager(object): kernel_args += ('root=UUID=%s ' % self.device_uuid) else: kernel_args += ('root=%s ' % self.device) + if 'DTB_PATH' in deployment_config: + f.write('devicetree /systems/%s/dtb\n' % system) + kernel_args += deployment_config.get('KERNEL_ARGS', '') f.write('append %s\n' % kernel_args) os.rename(temp_config, config) @@ -243,6 +246,10 @@ class SystemVersionManager(object): self.status(msg="Installing the initramfs") self._install_initramfs(deployment_config['INITRAMFS_PATH'], version_root) + if 'DTB_PATH' in deployment_config: + self.status(msg="Installing the device tree") + self._install_dtb(deployment_config['DTB_PATH'], + version_root) except Exception as e: # We are not controlling if deleting the suvolume fails @@ -266,6 +273,18 @@ class SystemVersionManager(object): shutil.copy2(try_path, kernel_dest) break + def _install_dtb(self, dtb_path, version_root): + '''Install the devicetree outside of 'orig' or 'run' subvolumes + + This code is kind of duplicated in morphlib/writeexts.py. + + ''' + self.status(msg='Installing devicetree') + self.status(msg='Device tree path=%s' % dtb_path) + dtb_dest = os.path.join(version_root, 'dtb') + try_path = os.path.join(version_root, 'run', dtb_path) + shutil.copy2(try_path, dtb_dest) + def _install_initramfs(self, initramfs_path, version_root): '''Install the initramfs outside of 'orig' or 'run' subvolumes -- cgit v1.2.1