Hi

Op 25-05-2021 om 15:09 schreef Guillaume Champagne:
Le mar. 25 mai 2021 à 08:19, Ferry Toth <[email protected]> a écrit :
Adding Richard and Guillaume.
Hi,

it seems seems edison-image.bb sets ROOTFS as empty:
http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/tree/meta-intel-edison-distro/recipes-core/images/edison-image.bb#n17

so do_bootimg won't depend on ${PN}:do_image:${LIVE_ROOTFS_TYPE}. That
dependency would, I think, create the folder you mentioned.

Maybe the patch wrongly assumes that if ROOTFS is empty, we shouldn't
add a dependency on "do_image.${LIVE_ROOTFS_TYPE}" at all since It
looks like edison-image.bb still depends on
${PN}:do_image.${LIVE_ROOTFS_TYPE} even though ROOTFS is empty. I
haven't looked too much into why edison-image works this way.

It may well be a bug in meta-intel-edison. Although you are looking at the very, very old code.

So what we have now is: https://github.com/edison-fw/meta-intel-edison/blob/master/meta-intel-edison-distro/recipes-core/images/edison-image-minimal.bb

this generates a dir edison-image-1.0/hddimg/ containing: bzImage  initrd  ldlinux.sys  libcom32.c32  libutil.c32  syslinux.cfg  vesamenu.c32

and this should generate in dir deploy-edison-image-image-complete/ a file called edison-image-edison.hddimg

which it does without the patch. So would would I set rootfs to to make it work?

BTW It also generates a directory iso and associated iso image. Never understood why, we also set NOISO = "1"

Op 24-05-2021 om 14:39 schreef Ferry Toth:
Wow, that got messed up, let me retry.

Op 24-05-2021 om 14:19 schreef Ferry Toth:
Accidentally I refreshed poky and rebuilt. The image-live
(do_bootimg) fails when building hddimg with the following:

ERROR: edison-image-1.0-r0 do_bootimg: Error executing a python
function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this
exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
      0001:
  *** 0002:do_bootimg(d)
      0003:
File:
'/home/ferry/tmp/edison-intel/my/edison-morty/out/linux64/poky/meta/classes/image-live.bbclass',
lineno: 258, function: do_bootimg
      0254:    if d.getVar("PCBIOS") == "1":
      0255:        bb.build.exec_func('build_syslinux_cfg', d)
      0256:    if d.getVar("EFI") == "1":
      0257:        bb.build.exec_func('build_efi_cfg', d)
  *** 0258:    bb.build.exec_func('build_hddimg', d)
      0259:    bb.build.exec_func('build_iso', d)
      0260:    bb.build.exec_func('create_symlinks', d)
      0261:}
      0262:do_bootimg[subimages] = "hddimg iso"
File:
'/home/ferry/tmp/edison-intel/my/edison-morty/out/linux64/poky/bitbake/lib/bb/build.py',
lineno: 256, function: exec_func
      0252:    with bb.utils.fileslocked(lockfiles):
      0253:        if ispython:
      0254:            exec_func_python(func, d, runfile, cwd=adir)
      0255:        else:
  *** 0256:            exec_func_shell(func, d, runfile, cwd=adir)
      0257:
      0258:    try:
      0259:        curcwd = os.getcwd()
      0260:    except:
File:
'/home/ferry/tmp/edison-intel/my/edison-morty/out/linux64/poky/bitbake/lib/bb/build.py',
lineno: 503, function: exec_func_shell
      0499:    with open(fifopath, 'r+b', buffering=0) as fifo:
      0500:        try:
      0501:            bb.debug(2, "Executing shell function %s" % func)
      0502:            with open(os.devnull, 'r+') as stdin, logfile:
  *** 0503:                bb.process.run(cmd, shell=False,
stdin=stdin, log=logfile, extrafiles=[(fifo,readfifo)])
      0504:        except bb.process.ExecutionError as exe:
      0505:            # Find the backtrace that the shell trap generated
      0506:            backtrace_marker_regex = re.compile(r"WARNING:
Backtrace \(BB generated script\)")
      0507:            stdout_lines = (exe.stdout or "").split("\n")
File:
'/home/ferry/tmp/edison-intel/my/edison-morty/out/linux64/poky/bitbake/lib/bb/process.py',
lineno: 184, function: run
      0180:        if not stderr is None:
      0181:            stderr = stderr.decode("utf-8")
      0182:
      0183:    if pipe.returncode != 0:
  *** 0184:        raise ExecutionError(cmd, pipe.returncode, stdout,
stderr)
      0185:    return stdout, stderr
Exception: bb.process.ExecutionError: Execution of
'/home/ferry/tmp/edison-intel/my/edison-morty/out/linux64/build/tmp/work/edison-poky-linux/edison-image/1.0-r0/temp/run.build_hddimg.256530'
failed with exit code 1:
mkdosfs: unable to create
/home/ferry/tmp/edison-intel/my/edison-morty/out/linux64/build/tmp/work/edison-poky-linux/edison-image/1.0-r0/deploy-edison-image-image-complete/edison-image-edison-20210524113748.hddimg
mkfs.fat 4.1 (2017-01-24)
WARNING: exit code 1 from a shell command.

The reason is that the directory deploy-edison-image-image-complete
doesn't exist at the time mkdosfs want to write. However after
completing the remainder of image live the directory does exists.
Consequently, running bitbake a second time image-live succeeds.

I've tried various thing including expressly creating the directory
before mkdosfs, but nothing worked. It seems I don't understand how
it is supposed to work in the first place.

However, I managed to trace back the issue to this commit 91e4a1c1
"image-live.bbclass: optional depends when ROOTFS empty".

Reverting this resolves the issue.

Any idea what could be wrong?

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#53647): https://lists.yoctoproject.org/g/yocto/message/53647
Mute This Topic: https://lists.yoctoproject.org/mt/83049280/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to