[Dev] refreshing "Tizen on Yocto"

Patrick Ohly patrick.ohly at intel.com
Wed Jan 28 17:07:05 GMT 2015


I have a tentative update for tizen-distro and meta-tizen ready, such
that the content matches the current "Tizen IVI". Updating recipes had
not been done for more than a month.

I'm publishing what I have in a sandbox for review and with the hope
that others can help find and fix issues before including in the "tizen"

      * "sandbox/pohly/tizen-next" - proposed updates to "tizen" branch
      * "sandbox/pohly/tizen-merged" - same content, but including full
        history (see below)
      * "upstream" - new branch with unmodified output from spec2yocto

      * "sandbox/pohly/tizen-next" - "tizen-next" from meta-tizen
        imported. Use this for test builds.

scm/bb/tizen (includes spec2yocto):
      * various changes submitted for review in Gerrit, start with

Known issues are:
      * bashisms in recipes derived from .spec files. Developers are
        adding those back to .spec files faster than we can add fixes,
        so I suggest that we accept the bash dependency for now. If you
        are on a distro with /bin/sh -> dash instead of bash,
        replace /bin/sh with /bin/bash in
        meta-tizen/bitbake/lib/bb/build.py. I'm in favor of shipping a
        tizen-distro with such a change applied.
      * The refreshed tlm recipe does not build the ivi config package
        required by tizen-ivi images, breaking the image building. I'm
        working on it, but the latest rebuild is still running, while I
        am running out of time today.
      * When doing incremental builds, I ran into situations where
        do_package_rpm failed because rpmbuild was passed a --buildroot
        "package" directory which did not exist. A "bitbake -c
        cleansstate" of the affected package works around the issue, but
        this is something which needs to be investigated because it
        slows down development quite a bit.
      * The 32 bit kernel for x86 does not build (BYT-99). Xavier is
        currently testing a fix which is not included yet.
      * Some recipes have additional and unwanted host dependencies:
              * rpm-native needs the "autopoint" command (under
                investigation by Saul)
              * swing needs pcre-config installed, but does not use it
                (potential fix posted to oe-core mailing list, see "swig
                + pcre-config")

Part of my work was to consolidate all configuration files for
spec2yocto in the scm/bb/tizen and then updating it to convert .spec
files from the Tizen IVI profile.

I also reviewed the list of pending .spec fixes, sometimes removing
merged or obsolete ones, sometimes updating the proposed change (some of
you may have seen the Gerrit review request caused by that). This needs
to be done before each spec2yocto refresh, otherwise we risk missing
changes made to Tizen in the meantime.

Because Tizen IVI is currently in deep freeze, it and Tizen Common have
diverged. To replicate that in "Tizen on Yocto", we either would have to
start maintaining different branches in meta-tizen and tizen-distro or
revise our recipe directory layout. Both implies doing the work of
updating and validating recipes twice, which we don't have time and
resources for at the moment.

The goal now is to release recipes matching the upcoming Tizen IVI
release and deal with Tizen Common later. The implication is that only
tizen-ivi-init-build-env and Tizen IVI images are supported.

Out-dated, unused and thus untested recipes were removed.

I have changed the process of updating recipes a bit. Previously,
spec2yocto was run, build failures were fixed, and then the new files
were committed instead of the old ones. As Ulf noticed, problems that
had already been fixed reappeared because the fix was overwritten

The new approach is that I keep the output of spec2yocto in a "upstream"
branch. The new "tizen-merged" branch contains these auto-generated
recipes plus all modifications, in separate commits. "upstream" gets
merged into "tizen-merged" after updating recipes there, followed by all
necessary build fixes. This should make it a lot more transparent what
is being done.

Merge conflicts are expected, but having them visible is better than the
silent breakage that happened before: I ran into several cases where
entire do_install or do_compile scripts were copied into -extraconf.inc
files (which do not get overwritten by spec2yocto) and then modified
there, without a change history. When updating the auto-generated .inc
file, there was no merge conflict, but building failed because
do_install/do_compile no longer matched revised code. Worse, there may
be packages where compilation worked but did not include fixes made in
the upstream .spec file.

Bottom line is that I suggest to use -extraconf.inc like a .bbappend
file: modifying some variables or package configs is okay, duplicating
lots of code is not. Modify the .inc files instead.

Because the "tizen-merged" branch has a complex history which cannot be
handled when copying into tizen-distro, the last step once
"tizen-merged" is stable consists of applying the "tizen..tizen-merged"
diff to the "tizen" branch. I find it useful to list the commits going
into that diff. Beware that "tizen-merged" must include all commits from
"tizen" at that point, otherwise those changes get undone!

I've done this refresh twice now and it worked okay.

Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.

More information about the Dev mailing list