summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorTom Zanussi <tom.zanussi@linux.intel.com>2016-07-12 16:50:03 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-01-31 14:38:32 +0000
commit66d08e0fdad5deb0d5228a0fadb1a1ef5d0142cc (patch)
tree0cf212338616759660db5c025e1bf81f3c6056cb /scripts
parent62310b3726cbbbd34da74f90e7de92ad831aa297 (diff)
downloadpoky-66d08e0fdad5deb0d5228a0fadb1a1ef5d0142cc.tar.gz
wic: Look for image artifacts in a common location
Rather than have each image type look for artifacts in image-specific locations, move towards having them look for artifacts in a common location, in this case DEPLOY_DIR_IMAGE Use the existing deploy.bbclass to have the bootloaders put their binaries in DEPLOY_DIR_IMAGE and then wic will find them and place them in the image (From OE-Core rev: 1c8acea91e775b1b6f8b25e774aaba3e790fc59b) Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-efi.py39
-rw-r--r--scripts/lib/wic/plugins/source/isoimage-isohybrid.py18
2 files changed, 43 insertions, 14 deletions
diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py
index 305e910d6a..74a1557f91 100644
--- a/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -42,7 +42,7 @@ class BootimgEFIPlugin(SourcePlugin):
42 name = 'bootimg-efi' 42 name = 'bootimg-efi'
43 43
44 @classmethod 44 @classmethod
45 def do_configure_grubefi(cls, hdddir, creator, cr_workdir): 45 def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params):
46 """ 46 """
47 Create loader-specific (grub-efi) config 47 Create loader-specific (grub-efi) config
48 """ 48 """
@@ -82,7 +82,7 @@ class BootimgEFIPlugin(SourcePlugin):
82 cfg.close() 82 cfg.close()
83 83
84 @classmethod 84 @classmethod
85 def do_configure_systemdboot(cls, hdddir, creator, cr_workdir): 85 def do_configure_systemdboot(cls, hdddir, creator, cr_workdir, source_params):
86 """ 86 """
87 Create loader-specific systemd-boot/gummiboot config 87 Create loader-specific systemd-boot/gummiboot config
88 """ 88 """
@@ -98,6 +98,19 @@ class BootimgEFIPlugin(SourcePlugin):
98 loader_conf += "default boot\n" 98 loader_conf += "default boot\n"
99 loader_conf += "timeout %d\n" % bootloader.timeout 99 loader_conf += "timeout %d\n" % bootloader.timeout
100 100
101 initrd = source_params.get('initrd')
102
103 if initrd:
104 # obviously we need to have a common common deploy var
105 bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
106 if not bootimg_dir:
107 msger.error("Couldn't find DEPLOY_DIR_IMAGE, exiting\n")
108
109 cp_cmd = "cp %s/%s %s" % (bootimg_dir, initrd, hdddir)
110 exec_cmd(cp_cmd, True)
111 else:
112 msger.debug("Ignoring missing initrd")
113
101 msger.debug("Writing systemd-boot config %s/hdd/boot/loader/loader.conf" \ 114 msger.debug("Writing systemd-boot config %s/hdd/boot/loader/loader.conf" \
102 % cr_workdir) 115 % cr_workdir)
103 cfg = open("%s/hdd/boot/loader/loader.conf" % cr_workdir, "w") 116 cfg = open("%s/hdd/boot/loader/loader.conf" % cr_workdir, "w")
@@ -127,6 +140,9 @@ class BootimgEFIPlugin(SourcePlugin):
127 boot_conf += "options LABEL=Boot root=%s %s\n" % \ 140 boot_conf += "options LABEL=Boot root=%s %s\n" % \
128 (creator.rootdev, bootloader.append) 141 (creator.rootdev, bootloader.append)
129 142
143 if initrd:
144 boot_conf += "initrd /%s\n" % initrd
145
130 msger.debug("Writing systemd-boot config %s/hdd/boot/loader/entries/boot.conf" \ 146 msger.debug("Writing systemd-boot config %s/hdd/boot/loader/entries/boot.conf" \
131 % cr_workdir) 147 % cr_workdir)
132 cfg = open("%s/hdd/boot/loader/entries/boot.conf" % cr_workdir, "w") 148 cfg = open("%s/hdd/boot/loader/entries/boot.conf" % cr_workdir, "w")
@@ -148,9 +164,9 @@ class BootimgEFIPlugin(SourcePlugin):
148 164
149 try: 165 try:
150 if source_params['loader'] == 'grub-efi': 166 if source_params['loader'] == 'grub-efi':
151 cls.do_configure_grubefi(hdddir, creator, cr_workdir) 167 cls.do_configure_grubefi(hdddir, creator, cr_workdir, source_params)
152 elif source_params['loader'] == 'systemd-boot': 168 elif source_params['loader'] == 'systemd-boot':
153 cls.do_configure_systemdboot(hdddir, creator, cr_workdir) 169 cls.do_configure_systemdboot(hdddir, creator, cr_workdir, source_params)
154 else: 170 else:
155 msger.error("unrecognized bootimg-efi loader: %s" % source_params['loader']) 171 msger.error("unrecognized bootimg-efi loader: %s" % source_params['loader'])
156 except KeyError: 172 except KeyError:
@@ -167,9 +183,9 @@ class BootimgEFIPlugin(SourcePlugin):
167 In this case, prepare content for an EFI (grub) boot partition. 183 In this case, prepare content for an EFI (grub) boot partition.
168 """ 184 """
169 if not bootimg_dir: 185 if not bootimg_dir:
170 bootimg_dir = get_bitbake_var("HDDDIR") 186 bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
171 if not bootimg_dir: 187 if not bootimg_dir:
172 msger.error("Couldn't find HDDDIR, exiting\n") 188 msger.error("Couldn't find DEPLOY_DIR_IMAGE, exiting\n")
173 # just so the result notes display it 189 # just so the result notes display it
174 creator.set_bootimg_dir(bootimg_dir) 190 creator.set_bootimg_dir(bootimg_dir)
175 191
@@ -181,17 +197,20 @@ class BootimgEFIPlugin(SourcePlugin):
181 (staging_kernel_dir, hdddir) 197 (staging_kernel_dir, hdddir)
182 exec_cmd(install_cmd) 198 exec_cmd(install_cmd)
183 199
200
184 try: 201 try:
185 if source_params['loader'] == 'grub-efi': 202 if source_params['loader'] == 'grub-efi':
186 shutil.copyfile("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, 203 shutil.copyfile("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir,
187 "%s/grub.cfg" % cr_workdir) 204 "%s/grub.cfg" % cr_workdir)
188 cp_cmd = "cp %s/EFI/BOOT/* %s/EFI/BOOT" % (bootimg_dir, hdddir) 205 for mod in [x for x in os.listdir(bootimg_dir) if x.startswith("grub-efi-")]:
189 exec_cmd(cp_cmd, True) 206 cp_cmd = "cp %s/%s %s/EFI/BOOT/%s" % (bootimg_dir, mod, hdddir, mod[9:])
207 exec_cmd(cp_cmd, True)
190 shutil.move("%s/grub.cfg" % cr_workdir, 208 shutil.move("%s/grub.cfg" % cr_workdir,
191 "%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir) 209 "%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir)
192 elif source_params['loader'] == 'systemd-boot': 210 elif source_params['loader'] == 'systemd-boot':
193 cp_cmd = "cp %s/EFI/BOOT/* %s/EFI/BOOT" % (bootimg_dir, hdddir) 211 for mod in [x for x in os.listdir(bootimg_dir) if x.startswith("systemd-")]:
194 exec_cmd(cp_cmd, True) 212 cp_cmd = "cp %s/%s %s/EFI/BOOT/%s" % (bootimg_dir, mod, hdddir, mod[8:])
213 exec_cmd(cp_cmd, True)
195 else: 214 else:
196 msger.error("unrecognized bootimg-efi loader: %s" % source_params['loader']) 215 msger.error("unrecognized bootimg-efi loader: %s" % source_params['loader'])
197 except KeyError: 216 except KeyError:
diff --git a/scripts/lib/wic/plugins/source/isoimage-isohybrid.py b/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
index a637ce5025..b54a2290d8 100644
--- a/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
+++ b/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
@@ -249,6 +249,7 @@ class IsoImagePlugin(SourcePlugin):
249 part.rootfs_dir = rootfs_dir 249 part.rootfs_dir = rootfs_dir
250 250
251 # Prepare rootfs.img 251 # Prepare rootfs.img
252 hdd_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
252 img_iso_dir = get_bitbake_var("ISODIR") 253 img_iso_dir = get_bitbake_var("ISODIR")
253 rootfs_img = "%s/rootfs.img" % img_iso_dir 254 rootfs_img = "%s/rootfs.img" % img_iso_dir
254 if not os.path.isfile(rootfs_img): 255 if not os.path.isfile(rootfs_img):
@@ -278,10 +279,19 @@ class IsoImagePlugin(SourcePlugin):
278 if os.path.isfile(part.source_file): 279 if os.path.isfile(part.source_file):
279 os.remove(part.source_file) 280 os.remove(part.source_file)
280 281
281 # Prepare initial ramdisk 282 # Support using a different initrd other than default
282 initrd = "%s/initrd" % img_iso_dir 283 if source_params.get('initrd'):
283 if not os.path.isfile(initrd): 284 initrd = source_params['initrd']
284 initrd = cls._build_initramfs_path(rootfs_dir, cr_workdir) 285 if not hdd_dir:
286 msger.error("Couldn't find DEPLOY_DIR_IMAGE, exiting\n")
287 cp_cmd = "cp %s/%s %s" % (hdd_dir, initrd, cr_workdir)
288 else:
289 # Prepare initial ramdisk
290 initrd = "%s/initrd" % hdd_dir
291 if not os.path.isfile(initrd):
292 initrd = "%s/initrd" % img_iso_dir
293 if not os.path.isfile(initrd):
294 initrd = cls._build_initramfs_path(rootfs_dir, cr_workdir)
285 295
286 install_cmd = "install -m 0644 %s %s/initrd" \ 296 install_cmd = "install -m 0644 %s %s/initrd" \
287 % (initrd, isodir) 297 % (initrd, isodir)