Building Tizen IVI for Freescale i.MX6

From Tizen Wiki
Jump to: navigation, search

######## Deprecated ########


This tutorial is based on Build Tizen with Yocto and the Yocto article at SolidRun wiki. For more information and guidelines related to Tizen:Common please visit HummingBoard.

Necessary Yocto Layers

The minimum set of layers and packages to build Tizen:Common or Tizen IVI for HummingBoard or Cubox-i using Yocto is:

  • Tizen
  • meta-fsl-arm
  • meta-fsl-arm-extra


Building Tizen for HummingBoard

Prepare Yocto Layers

Follow the instructions below to obtain Tizen:Common or Tizen IVI for HummungBoard (or Cubox):

  • Clone the git repository of Tizen for Yocto and enter its directory:
git clone git://review.tizen.org/scm/bb/tizen-distro tizen-distro-cubox
cd tizen-distro-cubox
  • Switch to the tizen-ivi branch if you are building Tizen IVI image (please skip this step for Tizen:Common):
git checkout tizen-ivi
  • Add Freescale layers:
git clone -b dizzy git://git.yoctoproject.org/meta-fsl-arm
git clone -b dizzy git://github.com/Freescale/meta-fsl-arm-extra.git
  • Create build directory
    • For Tizen:Common
      source ./tizen-common-init-build-env build
    • For Tizen IVI
      source ./tizen-ivi-init-build-env build

Configurations

Editing local.conf

Apply the following changes to conf/local.conf using your favorite text editor:

  • Change the machine to build packages for to cubox-i
    MACHINE ??= "cubox-i"
  • Add the following line build RPM packages from the Freescale layers:
    PACKAGE_CLASSES ?= "package_rpm"
  • Optionally add the following line to ensure that after building a package, all temporary files (including unpacked sources but *not* the downloaded tarballs or repositories) will be deleted to save lot of space:
    INHERIT += "rm_work"
  • Add the following line to accept the terms of the Freescale EULA:
    ACCEPT_FSL_EULA = "1"
  • Add the following line to enable certain restricted recipes, such as LAME and mp3 decoder, which are subject to licenses and/or royalties. Pay attention that this should not be used for production unless the legal situation with these restricted recipes is cleared!
    LICENSE_FLAGS_WHITELIST = "commercial"
  • Add the following line to disable X11 and to rely only on Wayland for Tizen:Common and Tizen IVI:
    DISTRO_FEATURES_remove = "x11"
  • Optionally change PARALLEL_MAKE and BB_NUMBER_THREADS to optimize the Yocto build depending on the hardware resources of your build machine. If you are unsure please leave the default configurations.
  • Add the following configurations to use RPM4 and to avoid warning for missing headers (rpmcb.h and mire.h) while building recipe meta/recipes-devtools/rpm/rpmresolve_1.0.bb:
PREFERRED_VERSION_rpm = "4.11.0.1"
PREFERRED_VERSION_rpm-native = "4.11.0.1"
RPMROOTFSDEPENDS_remove = "rpmresolve-native:do_populate_sysroot"
  • Optionally you may specify additional packages with IMAGE_INSTALL_append variable in local.conf. For example add the following line to include vim in the image:
IMAGE_INSTALL_append = " vim "

Editing bblayers.conf

Add Freescale layers to BBLAYERS at conf/bblayers.conf. Please note that paths should correspond to the directory structure on your build machine:

  /media/storage/TizenIVI/tizen-distro-cubox/meta-fsl-arm \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-fsl-arm-extra \

After the modification the content of the file should be similar to:

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "5"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /media/storage/TizenIVI/tizen-distro-cubox/meta \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-oe \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-multimedia \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-ruby \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-systemd \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-gnome \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-adaptation/meta \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-adaptation/meta-oe \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-common-base \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-common-share \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-common-devtools \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-common-demo \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-ivi \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-fsl-arm \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-fsl-arm-extra \
  "

BBLAYERS_NON_REMOVABLE ?= " \
  /media/storage/TizenIVI/tizen-distro-cubox/meta \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-oe \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-multimedia \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-ruby \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-systemd \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-openembedded/meta-gnome \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-adaptation-oe-core \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-adaptation-meta-oe \
  /media/storage/TizenIVI/tizen-distro-cubox/meta-tizen/meta-tizen-common-base \
  "

Workaround

As of the moment numerous workarounds (and very dirty hacks) have to be applied to build successfully Tizen image with Yocto for HummingBoard. All of them will be described here and hopefully over the time the procedure will significantly improved and most of the changes will be merged with upstream of Tizen for Yocto.

Disable MESA

  • Modify meta/recipes-graphics/mesa/mesa.inc as follows:
@@ -35,8 +35,8 @@ PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc"
 PACKAGECONFIG[wayland] = ",,wayland"
 
 DRIDRIVERS = "swrast"
-DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915"
-DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915"
+DRIDRIVERS_append_x86 = ",radeon,r200,nouveau"
+DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau"
 PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm"
 PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence"
  • Apply the following changes to meta-tizen/meta-tizen-common-base/recipes-image/images/tizen-core-image-minimal.bb:
@@ -29,16 +29,16 @@ CORE_IMAGE_BASE_INSTALL += "tlm"
 CORE_IMAGE_BASE_INSTALL += "${TLMCONFIG}"
 
 
-CORE_IMAGE_BASE_INSTALL += "mesa-megadriver"
-CORE_IMAGE_BASE_INSTALL += "libegl-gallium"
-CORE_IMAGE_BASE_INSTALL += "libegl-mesa"
-CORE_IMAGE_BASE_INSTALL += "libgbm"
-CORE_IMAGE_BASE_INSTALL += "libgbm-gallium"
-CORE_IMAGE_BASE_INSTALL += "mesa-driver-pipe-swrast"
-CORE_IMAGE_BASE_INSTALL += "mesa-driver-pipe-vmwgfx"
-CORE_IMAGE_BASE_INSTALL += "mesa-driver-pipe-i915"
-CORE_IMAGE_BASE_INSTALL += "libgles1-mesa"
-CORE_IMAGE_BASE_INSTALL += "libgles2-mesa"
+#CORE_IMAGE_BASE_INSTALL += "mesa-megadriver"
+#CORE_IMAGE_BASE_INSTALL += "libegl-gallium"
+#CORE_IMAGE_BASE_INSTALL += "libegl-mesa"
+#CORE_IMAGE_BASE_INSTALL += "libgbm"
+#CORE_IMAGE_BASE_INSTALL += "libgbm-gallium"
+#CORE_IMAGE_BASE_INSTALL += "mesa-driver-pipe-swrast"
+#CORE_IMAGE_BASE_INSTALL += "mesa-driver-pipe-vmwgfx"
+#CORE_IMAGE_BASE_INSTALL += "mesa-driver-pipe-i915"
+#CORE_IMAGE_BASE_INSTALL += "libgles1-mesa"
+#CORE_IMAGE_BASE_INSTALL += "libgles2-mesa"
 CORE_IMAGE_BASE_INSTALL += "gum-utils"
 CORE_IMAGE_BASE_INSTALL += "meta-common"
 CORE_IMAGE_BASE_INSTALL += "pam
@@ -6,24 +6,24 @@ SRC_URI += "file://0001-intel:-FixinitialMakeCurrentfordrawablesofmultiscreens.p
 # Enabling gallium-llvm creates a dependency on llvm.
 # meta-openembedded provides that.
 
-PACKAGECONFIG_append = " gallium"
-PACKAGECONFIG_append = " gallium-egl"
-PACKAGECONFIG_append = " gallium-gbm"
-PACKAGECONFIG_append = " gallium-llvm"
+#PACKAGECONFIG_append = " gallium"
+#PACKAGECONFIG_append = " gallium-egl"
+#PACKAGECONFIG_append = " gallium-gbm"
+#PACKAGECONFIG_append = " gallium-llvm"
 
-DRIDRIVERSTIZEN = "swrast"
-DRIDRIVERSTIZEN_append_x86 = ",i965,i915"
-DRIDRIVERSTIZEN_append_x86-64 = ",i965,i915"
-PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERSTIZEN}, --disable-dri, dri2proto libdrm"
+#DRIDRIVERSTIZEN = "swrast"
+#DRIDRIVERSTIZEN_append_x86 = ",i965,i915"
+#DRIDRIVERSTIZEN_append_x86-64 = ",i965,i915"
+#PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERSTIZEN}, --disable-dri, dri2proto libdrm"
 
 
-GALLIUMDRIVERSTIZEN_append = ",i915"
+#GALLIUMDRIVERSTIZEN_append = ",i915"
 
-GALLIUMDRIVERSTIZEN = "swrast"
-GALLIUMDRIVERSTIZEN_LLVM33 = ""
-GALLIUMDRIVERSTIZEN_LLVM33_ENABLED = "${@base_version_less_or_equal('MESA_LLVM_RELEASE', '3.2', False, len('${GALLIUMDRIVERSTIZEN_LLVM33}') > 0, d)}"
-GALLIUMDRIVERSTIZEN_LLVM = "svga,"
-GALLIUMDRIVERSTIZEN_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERSTIZEN_LLVM}', '', d)}"
-GALLIUMDRIVERSTIZEN_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERSTIZEN_LLVM}', '', d)}"
+#GALLIUMDRIVERSTIZEN = "swrast"
+#GALLIUMDRIVERSTIZEN_LLVM33 = ""
+#GALLIUMDRIVERSTIZEN_LLVM33_ENABLED = "${@base_version_less_or_equal('MESA_LLVM_RELEASE', '3.2', False, len('${GALLIUMDRIVERSTIZEN_LLVM33}') > 0, d)}"
+#GALLIUMDRIVERSTIZEN_LLVM = "svga,"
+#GALLIUMDRIVERSTIZEN_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERSTIZEN_LLVM}', '', d)}"
+#GALLIUMDRIVERSTIZEN_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERSTIZEN_LLVM}', '', d)}"
 # keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers
-PACKAGECONFIG[gallium]      = "--with-gallium-drivers=${GALLIUMDRIVERSTIZEN}, --without-gallium-drivers"
\ No newline at end of file
+#PACKAGECONFIG[gallium]      = "--with-gallium-drivers=${GALLIUMDRIVERSTIZEN}, --without-gallium-drivers"

Adjust Crosswalk Recipes

  • Apply the following changes to meta-tizen/meta-tizen-common-share/recipes-crosswalk/crosswalk/crosswalk-thirdparty.inc:
@@ -60,6 +60,8 @@ DEPENDS_append_class-native = " bison-native"
 DEPENDS_append_class-target = " bison-native"
 DEPENDS += "pciutils"
 DEPENDS += "binutils"
+DEPENDS += "openssl"
+DEPENDS += "libgpg-error"
 
 do_prep() {
  cd ${S}
@@ -141,6 +143,9 @@ do_compile() {
  # -> to unset sysroot value.
  # sysroot variable is automatically set for cross compilation to use arm-sysroot provided by Chromium project
  # sysroot usage is not needed, we need to use arm libraries from the virtualized environment.
+
+GYP_EXTRA_FLAGS="${GYP_EXTRA_FLAGS} -Dsysroot= "
+
  #
  # Crosswalk build fails if the fpu selected in the gcc option is different from neon in case of arm7 compilation
  # So force it.
@@ -152,6 +157,7 @@ do_compile() {
  # --no-parallel is added because chroot does not mount a /dev/shm, this will
  # cause python multiprocessing.SemLock error.
  export GYP_GENERATORS='ninja'
+ export GYP_DEFINES="$GYP_DEFINES arm_float_abi=hard"
  ./src/xwalk/gyp_xwalk src/xwalk/xwalk-thirdparty.gyp \
  --no-parallel \
  ${GYP_EXTRA_FLAGS} \
  • Apply the following changes to meta-tizen/meta-tizen-common-share/recipes-crosswalk/crosswalk/crosswalk.inc:
@@ -179,6 +179,9 @@ do_compile() {
  # -> to unset sysroot value.
  # sysroot variable is automatically set for cross compilation to use arm-sysroot provided by Chromium project
  # sysroot usage is not needed, we need to use arm libraries from the virtualized environment.
+
+ GYP_EXTRA_FLAGS="${GYP_EXTRA_FLAGS} -Dsysroot= "
+
  #
  # Crosswalk build fails if the fpu selected in the gcc option is different from neon in case of arm7 compilation
  # So force it.
@@ -189,6 +192,7 @@ do_compile() {
  # --no-parallel is added because chroot does not mount a /dev/shm, this will
  # cause python multiprocessing.SemLock error.
  export GYP_GENERATORS='ninja'
+ export GYP_DEFINES="$GYP_DEFINES arm_float_abi=hard"
  ./src/xwalk/gyp_xwalk src/xwalk/xwalk.gyp \
  --no-parallel \
  ${GYP_EXTRA_FLAGS} \
  • Apply the following patch to file meta-tizen/meta-tizen-common-share/recipes-crosswalk/crosswalk/files/fix-crosbuild.patch which will change the content of build/tmp-glibc/work/cortexa9hf-vfp-neon-oe-linux-gnueabi/crosswalk-thirdparty/11.40.277.0-r0/git/src/build/common.gypi and therefore the installation of packages g++-arm-linux-gnueabihf and gcc-arm-linux-gnueabihf on the build machine will be avoided. The patch is based on a change from meta-crosswalk upstream.
@@ -5824,8 +5825,8 @@
       # Set default ARM cross compiling on linux.  These can be overridden
       # using CC/CXX/etc environment variables.
       'make_global_settings': [
-        ['CC', '<!(which arm-linux-gnueabihf-gcc)'],
-        ['CXX', '<!(which arm-linux-gnueabihf-g++)'],
+        ['CC', '$(CC)'],
+        ['CXX', '$(CXX)'],
         ['CC.host', '<(host_cc)'],
         ['CXX.host', '<(host_cxx)'],
       ],
  • Change MESA_VERSION to 1.0.0 as wayland-egl depends on it at file build/tmp-glibc/work/cortexa9hf-vfp-neon-oe-linux-gnueabi/crosswalk-thirdparty/11.40.277.0-r0/git/src/ozone/wayland/wayland.gyp:
@@ -20,7 +20,7 @@
       'type': 'static_library',
       'variables': {
         'WAYLAND_VERSION': '1.4.0',
-        'MESA_VERSION': '9.1.3',
+        'MESA_VERSION': '1.0.0',
         'wayland_packages': [
           'egl >= <(MESA_VERSION)',
           'wayland-client >= <(WAYLAND_VERSION)',
  • Apply the same change to file build/tmp-glibc/work/cortexa9hf-vfp-neon-mx6qdl-oe-linux-gnueabi/crosswalk/11.40.277.0-r0/git/src/ozone/wayland/wayland.gyp.

These dirty fixes will solve the following issue:

Requested 'egl >= 9.1.3' but version of egl is 8.0
Requested 'wayland-egl >= 9.1.3' but version of wayland-egl is 1.0.0
gyp: Call to 'pkg-config --cflags "egl >= 9.1.3" "wayland-client >= 1.4.0" "wayland-cursor >= 1.4.0" "wayland-egl >= 9.1.3" xkbcommon' returned exit status 1. while loading dependencies of src/ozone/ozone_impl.gyp while loading dependencies of src/ui/ozone/ozone.gyp while loading dependencies of src/ui/gl/gl.gyp while loading dependencies of src/gpu/gpu.gyp while loading dependencies of src/cc/cc.gyp while loading dependencies of src/xwalk/xwalk-thirdparty.gyp while trying to load src/xwalk/xwalk-thirdparty.gyp
WARNING: exit code 1 from a shell command.

Adjust Graphics

  • Edit build/tmp-glibc/work/cortexa9hf-vfp-neon-mx6qdl-oe-linux-gnueabi/efl/1.9.3-r0/git/m4/evas_check_engine.m4 and apply the following change:
@@ -560,7 +560,7 @@ else
     gl_library="gl"
 fi
 
-PKG_CHECK_EXISTS([egl >= 7.10 ${gl_library} wayland-client >= 1.3.0 wayland-egl >= 9.2.0],
+PKG_CHECK_EXISTS([egl >= 7.10 ${gl_library} wayland-client >= 1.3.0 wayland-egl >= 1.0.0],
    [
     have_dep="yes"
     requirement="egl >= 7.10 ${gl_library} wayland-client wayland-egl"

This will fix the following issues with wayland-egl version:

configure:30021: $PKG_CONFIG --exists --print-errors "egl >= 7.10 ${gl_library} wayland-client >= 1.3.0 wayland-egl >= 9.2.0"
Requested 'wayland-egl >= 9.2.0' but version of wayland-egl is 1.0.0
  • Replace X11 type definitions with Wayland at build/tmp-glibc/sysroots/cubox-i/usr/include/EGL/eglvivante.h:
222,223c222,223
< #include <X11/Xlib.h>
< #include <X11/Xutil.h>
---
> /*#include <X11/Xlib.h>
> #include <X11/Xutil.h>*/
225c225
< typedef Display *   EGLNativeDisplayType;
---
> /*typedef Display *   EGLNativeDisplayType;
232c232,237
< #endif /* CUSTOM_PIXMAP */
---
> #endif *//* CUSTOM_PIXMAP */
> 
> /* Wayland types for client apps. */
> typedef struct wl_display *      EGLNativeDisplayType;
> typedef struct wl_egl_window *   EGLNativeWindowType;
> typedef struct wl_egl_pixmap *   EGLNativePixmapType;
244c249
< #error "Platform not recognized"
---
> /*#error "Platform not recognized"*/
247c252
< typedef void *  EGLNativeDisplayType;
---
> /*typedef void *  EGLNativeDisplayType;
249c254,259
< typedef void *  EGLNativePixmapType;
---
> typedef void *  EGLNativePixmapType;*/
> 
> /* Wayland types for client apps. */
> typedef struct wl_display *      EGLNativeDisplayType;
> typedef struct wl_egl_window *   EGLNativeWindowType;
> typedef struct wl_egl_pixmap *   EGLNativePixmapType;
  • Replace X11 type definitions with Wayland at build/tmp-glibc/sysroots/cubox-i/usr/include/HAL/gc_hal_eglplatform.h:
157,158c157,158
< #include <X11/Xlib.h>
< #include <X11/Xutil.h>
---
> /*#include <X11/Xlib.h>
> #include <X11/Xutil.h>*/
160c160
< typedef Display *   HALNativeDisplayType;
---
> /*typedef Display *   HALNativeDisplayType;
167c167,172
< #endif /* CUSTOM_PIXMAP */
---
> #endif *//* CUSTOM_PIXMAP */
> 
> /* Wayland types for client apps. */
> typedef struct wl_display *      HALNativeDisplayType;
> typedef struct wl_egl_window *   HALNativeWindowType;
> typedef struct wl_egl_pixmap *   HALNativePixmapType;
193c198
< #error "Platform not recognized"
---
> /*#error "Platform not recognized"*/
196c201
< typedef void *  HALNativeDisplayType;
---
> /*typedef void *  HALNativeDisplayType;
198c203,208
< typedef void *  HALNativePixmapType;
---
> typedef void *  HALNativePixmapType;*/
> 
> /* Wayland types for client apps. */
> typedef struct wl_display *      HALNativeDisplayType;
> typedef struct wl_egl_window *   HALNativeWindowType;
> typedef struct wl_egl_pixmap *   HALNativePixmapType;
  • Define struct _gcsWL_VIV_BUFFER and gcsWL_VIV_BUFFER at build/tmp-glibc/work/cortexa9hf-vfp-neon-mx6qdl-oe-linux-gnueabi/weston/1.6.0-r0/git/src/gal2d-renderer.c:
typedef struct _gcsWL_VIV_BUFFER
{
#ifdef WAYLAND_LEGACY_SUPPORT
   struct wl_buffer wl_buffer;
#else
   struct wl_resource *wl_buffer;
#endif
   gcoSURF surface;
   gctINT32 width, height;
} gcsWL_VIV_BUFFER;

Using this dirty hack the following error will be avoided:

src/gal2d-renderer.c:871:5: error: unknown type name 'gcsWL_VIV_BUFFER' 

Other

  • Append the following flag to line 220 at build/tmp-glibc/work/x86_64-linux/python-smartpm-native/1.4.1-r9/sysroot-destdir/home/leon/tizen-distro-cubox/build/tmp-glibc/sysroots/x86_64-linux/usr/lib/python2.7/site-packages/smart/backends/rpm/pm.py to avoid errors with packages "intended for a different operating system" and to force replacement of packages with conflicts. Please note that this issue has been discussed at Tizen dev mailing list in September 2014.
probfilter |= rpm.RPMPROB_FILTER_IGNOREOS
probfilter |= rpm.RPMPROB_FILTER_REPLACEPKG
probfilter |= rpm.RPMPROB_FILTER_REPLACEOLDFILES
probfilter |= rpm.RPMPROB_FILTER_REPLACENEWFILES
  • Append the following line to build/tmp-glibc/work/cortexa9hf-vfp-neon-oe-linux-gnueabi/sphinxbase/0.7-r0/git/src/libsphinxbase/lm/jsgf_parser.h:
#include jsgf_scanner.h

The workaround above should be prevent the following error:

| In file included from jsgf.c:47:0:
| jsgf_parser.h:101:14: error: unknown type name 'yyscan_t'
|  int yyparse (yyscan_t yyscanner, jsgf_t *jsgf);
|               ^
| In file included from jsgf_parser.y:46:0:
| jsgf_parser.h:101:14: error: unknown type name 'yyscan_t'
|  int yyparse (yyscan_t yyscanner, jsgf_t *jsgf);
|               ^
| Makefile:432: recipe for target 'jsgf_parser.lo' failed

Building

Launch a Yocto build with bitbake depending on your preferred Tizen image. The following options are available for Tizen IVI:

  • tizen-ivi-core-image
  • tizen-ivi-core-image-dev
  • tizen-ivi-ico-image
  • tizen-ivi-ico-image-dev
  • tizen-ivi-Modello-image
  • tizen-ivi-Modello-image-dev

For example run the following command to build Tizen IVI core image with development tools:

bitbake tizen-ivi-core-image-dev

Grab a cup of tea and patiently wait until the build is ready. While you are waiting you can help and improve this page :)

The generated u-boot loader, Linux kernel and Tizen image can be found at tmp-glibc/deploy/images/cubox-i/.

Troubleshooting

  • If you are experiencing issues with missing headers at recipe meta/recipes-devtools/rpm/rpmresolve_1.0.bb please make sure that you have appended the configuration to use RPM4 at conf/local.conf:
rpmresolve.c:34:19: fatal error: rpmcb.h: No such file or directory
 #include <rpmcb.h>

rpmresolve.c:37:18: fatal error: mire.h: No such file or directory
 #include <mire.h>
  • Installation of RPM packages with smart is done through script meta/lib/oe/package_manager.py

Installing Tizen Images

To boot and run Tizen image that has been built with Yocto for HummingBoard you should copy it to a microSD. Replace X with the corresponding letter of the microSD card and execute the commands below with root privileges to do it. Please note that all previous content of the microSD card will be wiped out.

sudo umount /dev/sdX*
sudo dd if=build/tmp-glibc/deploy/images/cubox-i/tizen-ivi-core-image-dev-cubox-i.sdcard of=/dev/sdX bs=4M conv=fsync
sync