wic: improve getting syslinux path

Used wic-tools STAGING_DATADIR if syslinux can't be found
in default bootimg_dir.

(From OE-Core rev: 79a935cfc86ffce6f4b4f328b90337de36ba6dbb)

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ed Bartosh 2017-03-22 15:42:31 +02:00 committed by Richard Purdie
parent 5c04e37140
commit fa10b24950
1 changed files with 27 additions and 24 deletions

View File

@ -43,6 +43,21 @@ class BootimgPcbiosPlugin(SourcePlugin):
name = 'bootimg-pcbios' name = 'bootimg-pcbios'
@classmethod
def _get_syslinux_dir(cls, bootimg_dir):
"""
Get path to syslinux from either default bootimg_dir
or wic-tools STAGING_DIR.
"""
for path in (bootimg_dir, get_bitbake_var("STAGING_DATADIR", "wic-tools")):
if not path:
continue
syslinux_dir = os.path.join(path, 'syslinux')
if os.path.exists(syslinux_dir):
return syslinux_dir
raise WicError("Couldn't find syslinux directory, exiting")
@classmethod @classmethod
def do_install_disk(cls, disk, disk_name, creator, workdir, oe_builddir, def do_install_disk(cls, disk, disk_name, creator, workdir, oe_builddir,
bootimg_dir, kernel_dir, native_sysroot): bootimg_dir, kernel_dir, native_sysroot):
@ -50,11 +65,11 @@ class BootimgPcbiosPlugin(SourcePlugin):
Called after all partitions have been prepared and assembled into a Called after all partitions have been prepared and assembled into a
disk image. In this case, we install the MBR. disk image. In this case, we install the MBR.
""" """
mbrfile = "%s/syslinux/" % bootimg_dir syslinux_dir = cls._get_syslinux_dir(bootimg_dir)
if creator.ptable_format == 'msdos': if creator.ptable_format == 'msdos':
mbrfile += "mbr.bin" mbrfile = os.path.join(syslinux_dir, "mbr.bin")
elif creator.ptable_format == 'gpt': elif creator.ptable_format == 'gpt':
mbrfile += "gptmbr.bin" mbrfile = os.path.join(syslinux_dir, "gptmbr.bin")
else: else:
raise WicError("Unsupported partition table: %s" % raise WicError("Unsupported partition table: %s" %
creator.ptable_format) creator.ptable_format)
@ -140,19 +155,7 @@ class BootimgPcbiosPlugin(SourcePlugin):
'prepares' the partition to be incorporated into the image. 'prepares' the partition to be incorporated into the image.
In this case, prepare content for legacy bios boot partition. In this case, prepare content for legacy bios boot partition.
""" """
def _has_syslinux(dirname): syslinux_dir = cls._get_syslinux_dir(bootimg_dir)
if dirname:
syslinux = "%s/syslinux" % dirname
if os.path.exists(syslinux):
return True
return False
if not _has_syslinux(bootimg_dir):
bootimg_dir = get_bitbake_var("STAGING_DATADIR", "wic-tools")
if not bootimg_dir:
raise WicError("Couldn't find STAGING_DATADIR, exiting")
if not _has_syslinux(bootimg_dir):
raise WicError("Please build syslinux first")
staging_kernel_dir = kernel_dir staging_kernel_dir = kernel_dir
@ -160,14 +163,14 @@ class BootimgPcbiosPlugin(SourcePlugin):
cmds = ("install -m 0644 %s/bzImage %s/vmlinuz" % cmds = ("install -m 0644 %s/bzImage %s/vmlinuz" %
(staging_kernel_dir, hdddir), (staging_kernel_dir, hdddir),
"install -m 444 %s/syslinux/ldlinux.sys %s/ldlinux.sys" % "install -m 444 %s/ldlinux.sys %s/ldlinux.sys" %
(bootimg_dir, hdddir), (syslinux_dir, hdddir),
"install -m 0644 %s/syslinux/vesamenu.c32 %s/vesamenu.c32" % "install -m 0644 %s/vesamenu.c32 %s/vesamenu.c32" %
(bootimg_dir, hdddir), (syslinux_dir, hdddir),
"install -m 444 %s/syslinux/libcom32.c32 %s/libcom32.c32" % "install -m 444 %s/libcom32.c32 %s/libcom32.c32" %
(bootimg_dir, hdddir), (syslinux_dir, hdddir),
"install -m 444 %s/syslinux/libutil.c32 %s/libutil.c32" % "install -m 444 %s/libutil.c32 %s/libutil.c32" %
(bootimg_dir, hdddir)) (syslinux_dir, hdddir))
for install_cmd in cmds: for install_cmd in cmds:
exec_cmd(install_cmd) exec_cmd(install_cmd)