title: Building Yocto image for DragonBoard 410c, how to build Chromium
body: <p>How to generate an image with Sato and Chromium for the <a href="https://developer.qualcomm.com/hardware/dragonboard-410c" rel="nofollow">DragonBoard 410c</a>? </p>
  
  <p>Starting from the <a href="https://github.com/ndechesne/qcom-oe-manifest" rel="nofollow">qcom-oe-manifest</a> referred in the <a href="https://github.com/96boards/documentation/wiki/Dragonboard-410c-OpenEmbedded-and-Yocto" rel="nofollow">Dragonboard-410c-OpenEmbedded-and-Yocto documentation</a></p>
  
  <p>What is the correct/proper way to add Sato desktop and Chromium to this base config?</p>
  
  <p>What's I have done:</p>
  
  <ul>
  <li>Added <code>x11-base x11-sato</code> to <strong>IMAGE_FEATURES</strong></li>
  <li>Added <code>chromium alsa-utils lsb</code> to <strong>CORE_IMAGE_BASE_INSTALL</strong></li>
  </ul>
  
  <h2>my-image.bb</h2>
  
  <pre><code>/oe-qcom-yocto/sources$ more ./meta-rpb/recipes-samples/images/my-image.bb
  
  SUMMARY = "Basic console image"
  
  IMAGE_FEATURES += "x11-base x11-sato splash package-management ssh-server-dropbear hwcodecs"
  
  LICENSE = "MIT"
  
  inherit core-image distro_features_check extrausers
  
  # let's make sure we have a good image..
  REQUIRED_DISTRO_FEATURES = "pam systemd"
  
  CORE_IMAGE_BASE_INSTALL += " \
      chromium alsa-utils lsb \
      coreutils gptfdisk kernel-modules connman 96boards-tools \
  "
  
  EXTRA_USERS_PARAMS = "\
  useradd -p '' linaro; \
  "
  </code></pre>
  
  <p>Then running <code>bitbake -v</code></p>
  
  <h2>chromium was skipped: incompatible with machine dragonboard-410c</h2>
  
  <pre><code>~/oe-qcom-yocto/build-jethro$  bitbake -v my-image
  
  
  NOTE: Started PRServer with DBfile: /home/joel/oe-qcom-yocto/build-jethro/cache/prserv.sqlite3, IP: 127.0.0.1, PORT: 51063, PID: 1432
  Loading cache: 100% |############################################################################################################################################################################| ETA:  00:00:00
  Loaded 2948 entries from dependency cache.
  NOTE: Resolving any missing task queue dependencies
  NOTE: selecting pigz-native to satisfy gzip-native due to PREFERRED_PROVIDERS
  NOTE: selecting pseudo-native to satisfy virtual/fakeroot-native due to PREFERRED_PROVIDERS
  NOTE: selecting linux-linaro-qcomlt to satisfy virtual/kernel due to PREFERRED_PROVIDERS
  NOTE: selecting opkg-native to satisfy opkg-native due to PREFERRED_PROVIDERS
  NOTE: selecting opkg-utils-native to satisfy virtual/update-alternatives-native due to PREFERRED_PROVIDERS
  ERROR: Nothing RPROVIDES 'chromium' (but /home/joel/oe-qcom-yocto/build-jethro/conf/../../sources/meta-rpb/recipes-samples/images/my-image.bb RDEPENDS on or otherwise requires it)
  ERROR: chromium was skipped: incompatible with machine dragonboard-410c (not in COMPATIBLE_MACHINE)
  NOTE: Runtime target 'chromium' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['chromium']
  NOTE: Target 'my-image' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['my-image', 'chromium']
  ERROR: Required build target 'my-image' has no buildable providers.
  Missing or unbuildable dependency chain was: ['my-image', 'chromium']
  
  Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
  </code></pre>
  
  <h2>Added <code>dragonboard-410c</code> to <code>COMPATIBLE_MACHINE</code> - new ERROR</h2>
  
  <pre><code>...
  NOTE: selecting gettext to satisfy virtual/gettext due to PREFERRED_PROVIDERS
  ERROR: Nothing PROVIDES 'libav' (but /home/joel/oe-qcom-yocto/build-jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium_40.0.2214.91.bb DEPENDS on or otherwise requires it)
  ERROR: libav was skipped: because it has a restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
  NOTE: Target 'libav' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['libav']
  NOTE: Runtime target 'chromium' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['chromium', 'libav']
  NOTE: Target 'my-image' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['my-image', 'chromium', 'libav']
  ERROR: Required build target 'my-image' has no buildable providers.
  Missing or unbuildable dependency chain was: ['my-image', 'chromium', 'libav']
  </code></pre>
  
  <h2>UPDATE</h2>
  
  <p>Added <code>LICENSE_FLAGS_WHITELIST = "commercial"</code> at the end of <code>build_jethro/conf/local.conf</code> file and it's building my image</p>
  
  <h3>ERROR: Fetcher failure: Unable to find file file://include.gypi anywhere.</h3>
  
  <pre><code>WARNING: Failed to fetch URL file://include.gypi, attempting MIRRORS if available
  ERROR: Fetcher failure: Unable to find file file://include.gypi anywhere. The paths that were searched were:
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium-40.0.2214.91/rpb
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium/rpb
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/files/rpb
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium-40.0.2214.91/aarch64
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium/aarch64
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/files/aarch64
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium-40.0.2214.91/dragonboard-410c
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium/dragonboard-410c
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/files/dragonboard-410c
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium-40.0.2214.91/aarch64
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium/aarch64
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/files/aarch64
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium-40.0.2214.91/
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium/
      /home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/files/
      /home/joel/oe-qcom-yocto/sources/downloads
  ERROR: Function failed: Fetcher failure for URL: 'file://include.gypi'. Unable to fetch URL from any source.
  ERROR: Logfile of failure stored in: /home/joel/oe-qcom-yocto/build_jethro/tmp-rpb-glibc/work/aarch64-oe-linux/chromium/40.0.2214.91-r0/temp/log.do_fetch.10845
  ERROR: Task 197 (/home/joel/oe-qcom-yocto/build_jethro/conf/../../sources/meta-browser/recipes-browser/chromium/chromium_40.0.2214.91.bb, do_fetch) failed with exit code '1'
  </code></pre>
  
  <code>include.gypi</code> in the Chromium recipe
  
  <pre><code>joel@linux-Lenovo-G50-70:~/oe-qcom-yocto/sources$ grep -r "include.gypi" *
  meta-browser/recipes-browser/chromium/chromium_40.0.2214.91.bb:        file://include.gypi \
  meta-browser/recipes-browser/chromium/chromium_40.0.2214.91.bb: -I ${WORKDIR}/include.gypi \
  </code></pre>
  
  <h3>Added <code>aarch64</code></h3>
  
  <p>Created <code>meta-browser/recipes-browser/chromium/chromium/aarch64</code> folder and added <code>include.gypi</code> and <code>oe-defaults.gypi</code> as recommended by LightenS</p>
  
  include.gypi
  
  <pre><code>meta-browser/recipes-browser/chromium/chromium/aarch64$ more include.gypi
  
  {
    'variables': {
      'target_arch': 'arm64',
      'use_allocator': 0,
      'use_xkbcommon': 1,
       'v8_use_external_startup_data' : 0,
       'v8_use_snapshot' : 'false',
    }, 
  }
  </code></pre>
  
  oe-defaults.gypi
  
  <pre><code>meta-browser/recipes-browser/chromium/chromium/aarch64$ more oe-defaults.gypi
  
  {
    'variables': {
      'use_system_bzip2': 1,
      'disable_nacl': 1,
      'proprietary_codecs': 1,
      'v8_use_snapshot': 1,
      'ffmpeg_branding' : 'Chrome',
      'use_system_ffmpeg': 0,
      'linux_link_kerberos': 0,
      'use_kerberos': 0,
      'use_cups': 0,
      'use_gnome_keyring': 0,
      'linux_link_gnome_keyring': 0
    }, 
  }
  </code></pre>
  
  <h2>NEW Issue</h2>
  
  <pre><code> [301/16647] CXX obj/breakpad/src/client/linux/minidump_writer/breakpad_client.linux_ptrace_dumper.o
  | 
  | [301/16647] CXX obj/breakpad/src/client/linux/minidump_writer/breakpad_client.linux_ptrace_dumper.o
  | FAILED: aarch64-oe-linux-g++  --sysroot=/home/joel/oe-qcom-yocto/build_jethro/tmp-rpb-glibc/sysroots/dragonboard-410c -MMD -MF obj/breakpad/src/client/linux/dump_writer_common/breakpad_client.thread_info.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DNO_TCMALLOC -DDISABLE_NACL -DCHROMIUM_BUILD -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DUSE_XI2_MT=2 -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DCLD2_DATA_SOURCE=static -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_MANAGED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DENABLE_LOAD_COMPLETION_HACKS=1 -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I../../breakpad/src -I../../breakpad/src/client -I../../breakpad/src/third_party/linux/include -I../.. -I../../breakpad -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -Wno-format -Wno-unused-result -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -Wno-error=unused-local-typedefs -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wno-deprecated -std=gnu++11 -Wno-narrowing -Wno-literal-suffix  -c ../../breakpad/src/client/linux/dump_writer_common/thread_info.cc -o obj/breakpad/src/client/linux/dump_writer_common/breakpad_client.thread_info.o
  | In file included from ../../breakpad/src/client/linux/dump_writer_common/thread_info.cc:30:0:
  | ../../breakpad/src/client/linux/dump_writer_common/thread_info.h:69:23: error: field 'regs' has incomplete type 'google_breakpad::user_pt_regs'
  |    struct user_pt_regs regs;
  |                        ^
  | ../../breakpad/src/client/linux/dump_writer_common/thread_info.h:69:10: note: forward declaration of 'struct google_breakpad::user_pt_regs'
  |    struct user_pt_regs regs;
  |           ^
  | ../../breakpad/src/client/linux/dump_writer_common/thread_info.h:70:28: error: field 'fpregs' has incomplete type 'google_breakpad::user_fpsimd_state'
  |    struct user_fpsimd_state fpregs;
  |                             ^
  | ../../breakpad/src/client/linux/dump_writer_common/thread_info.h:70:10: note: forward declaration of 'struct google_breakpad::user_fpsimd_state'
  |    struct user_fpsimd_state fpregs;
  |
  </code></pre>