Looks like some regressions may have crept back relative previous versions of the patch?
- dubious indent in do_install() - .pak files being installed as executables - dev-so INSANE_SKIP shouldn't be requied On Mon, Apr 27, 2015 at 9:44 AM, Khem Raj <raj.k...@gmail.com> wrote: > CEF is a framework to embed chromium based browsers into other > applications > > Change-Id: Ieabae43042101331f67cf6e673391f6fe320561f > Signed-off-by: pnandyala <pavan.nandy...@lnttechservices.com> > Signed-off-by: knagabhirava <kalyankumar.nagabhir...@lnttechservices.com> > Signed-off-by: Zoltan Kuscsik <zoltan.kusc...@linaro.org> > Signed-off-by: Khem Raj <raj.k...@gmail.com> > --- > .../cef3/01_get_svn_version_from_LASTCHANGE.patch | 25 ++ > recipes-browser/chromium/cef3_280796.bb | 50 ++++ > recipes-browser/chromium/chromium.inc | 251 > +++++++-------------- > recipes-browser/chromium/chromium_40.0.2214.91.bb | 163 +++++++++++++ > 4 files changed, 320 insertions(+), 169 deletions(-) > create mode 100644 > recipes-browser/chromium/cef3/01_get_svn_version_from_LASTCHANGE.patch > create mode 100644 recipes-browser/chromium/cef3_280796.bb > > diff --git > a/recipes-browser/chromium/cef3/01_get_svn_version_from_LASTCHANGE.patch > b/recipes-browser/chromium/cef3/01_get_svn_version_from_LASTCHANGE.patch > new file mode 100644 > index 0000000..61f88b4 > --- /dev/null > +++ b/recipes-browser/chromium/cef3/01_get_svn_version_from_LASTCHANGE.patch > @@ -0,0 +1,25 @@ > +diff --git a/cef/tools/make_version_header.py > b/cef/tools/make_version_header.py > +index 84d49f5..395c2cf 100644 > +--- a/cef/tools/make_version_header.py > ++++ b/cef/tools/make_version_header.py > +@@ -64,6 +64,8 @@ def write_svn_header(header, chrome_version, cef_version, > cpp_header_dir): > + revision = svn.get_revision() > + elif git.is_checkout('.'): > + revision = git.get_svn_revision() > ++ elif os.path.isfile("../build/util/LASTCHANGE"): > ++ revision = > open("../build/util/LASTCHANGE").read().split("=")[1].strip() > + else: > + raise Exception('Not a valid checkout') > + > +diff --git a/cef/tools/revision.py b/cef/tools/revision.py > +index 1d94602..eb89e3b 100644 > +--- a/cef/tools/revision.py > ++++ b/cef/tools/revision.py > +@@ -16,6 +16,8 @@ if os.path.exists(os.path.join('.', '.svn')): > + sys.stdout.write(svn.get_revision()) > + elif os.path.exists(os.path.join('.', '.git')): > + sys.stdout.write(git.get_svn_revision()) > ++elif os.path.isfile("../build/util/LASTCHANGE"): > ++ revision = open("../build/util/LASTCHANGE").read().split("=")[1].strip() > + else: > + raise Exception('Not a valid checkout') > diff --git a/recipes-browser/chromium/cef3_280796.bb > b/recipes-browser/chromium/cef3_280796.bb > new file mode 100644 > index 0000000..9ca5810 > --- /dev/null > +++ b/recipes-browser/chromium/cef3_280796.bb > @@ -0,0 +1,50 @@ > +DESCRIPTION = "Chromium Embedded Framework" > + > +include chromium.inc > + > +RDEPENDS_${PN} += "pango cairo fontconfig pciutils pulseaudio freetype > fontconfig-utils" > + > +SRCREV_tools = "99bcb0e676eb396bcf8e1af3903aa4b578aeeee0" > +SRCREV_cef = "bbad53dfca9f98dddcb31a590410fece0a4f0234" > +SRCREV_egl = "a5b81b7617ba6757802b9b5f8c950034d5f961ec" > +SRCREV_FORMAT = "cef_egl_tools" > + > +SRC_URI = > "http://people.linaro.org/~zoltan.kuscsik/chromium-browser/chromium_rev_${PV}.tar.xz > \ > + > git://github.com/kuscsik/chromiumembedded.git;protocol=https;destsuffix=src/cef;branch=aura;name=cef > \ > + > git://github.com/kuscsik/ozone-egl.git;protocol=https;destsuffix=src/ui/ozone/platform/egl;branch=master;name=egl > \ > + > git://chromium.googlesource.com/chromium/tools/depot_tools.git;protocol=https;destsuffix=depot_tools;branch=master;name=tools > \ > + file://01_get_svn_version_from_LASTCHANGE.patch \ > + " > +SRC_URI[md5sum] = "9efbb50283b731042e62b9bd5e312b2f" > +SRC_URI[sha256sum] = > "f608e97dadf6ea4d885b24fd876896d46840fa39bf743ea2025075aee9fb348d" > + > +S = "${WORKDIR}/chromium_rev_${PV}" > + > +do_fetch[vardeps] += "SRCREV_FORMAT SRCREV_cef SRCREV_egl SRCREV_tools" > + > +GYP_ARCH_DEFINES_armv7a = " target_arch=arm arm_float_abi=hard" > +GYP_ARCH_DEFINES_i586 = " target_arch=ia32" > + > +export GYP_GENERATORS="ninja" > +export BUILD_TARGET_ARCH="${TARGET_ARCH}" > +export GYP_DEFINES="${GYP_ARCH_DEFINES} > release_extra_cflags='-Wno-error=unused-local-typedefs' sysroot=''" > + > +do_configure_append() { > + export PATH=${WORKDIR}/depot_tools:"$PATH" > + # End of LD Workaround > + #----------------------- > + # Configure cef > + #------------------------ > + cd cef > + ./cef_create_projects.sh -I ${BUILD_TARGET_ARCH}_ozone.gypi --depth > ../ > + cd - > +} > + > +# Workaround to disable qa_configure > +do_qa_configure() { > + echo "do_qa_configure" > +} > + > +do_compile() { > + ninja -C out/${CHROMIUM_BUILD_TYPE} cefsimple > +} > diff --git a/recipes-browser/chromium/chromium.inc > b/recipes-browser/chromium/chromium.inc > index ad976f9..96d16fa 100644 > --- a/recipes-browser/chromium/chromium.inc > +++ b/recipes-browser/chromium/chromium.inc > @@ -1,114 +1,14 @@ > -# Recipe files have to perform the following tasks after including this file: > -# 1) Add patches to SRC_URI. Version specific patches should be contained in > a > -# "chromium-XX" subdirectory, where XX is the major version. There are > also > -# patches that are shared amongst versions but may one day no longer be > -# needed (like unistd2.patch). These do not belong in such a subdirectory, > -# but still need to be explicitely be added. Do NOT add ozone-wayland > patches > -# to SRC_URI here! > -# 2) Add md5sum and sha256sum hashes of the tarball. > -# 3) Add ozone-wayland patches to the OZONE_WAYLAND_EXTRA_PATCHES variable. > -# The rule with the chromium-XX subdirectory also applies here. > -# 4) Set the OZONE_WAYLAND_GIT_BRANCH and OZONE_WAYLAND_GIT_SRCREV values. > -# 5) Optionally, set values for these variables: > -# * OZONE_WAYLAND_PATCH_FILE_GLOB > -# * CHROMIUM_X11_DEPENDS > -# * CHROMIUM_X11_GYP_DEFINES > -# * CHROMIUM_WAYLAND_DEPENDS > -# * CHROMIUM_WAYLAND_GYP_DEFINES > - > -DESCRIPTION = "Chromium browser" > LICENSE = "BSD" > -DEPENDS = "xz-native pciutils pulseaudio cairo nss zlib-native libav > libgnome-keyring cups ninja-native gconf libexif pango libdrm" > -SRC_URI = "\ > - http://gsdview.appspot.com/chromium-browser-official/${P}.tar.xz \ > - file://include.gypi \ > - file://oe-defaults.gypi \ > - ${@bb.utils.contains('PACKAGECONFIG', 'component-build', > 'file://component-build.gypi', '', d)} \ > - file://google-chrome \ > - file://google-chrome.desktop \ > -" > - > -# PACKAGECONFIG explanations: > -# > -# * use-egl : Without this packageconfig, the Chromium build will use GLX > for creating an OpenGL context in X11, > -# and regular OpenGL for painting operations. Neither are > desirable on embedded platforms. With this > -# packageconfig, EGL and OpenGL ES 2.x are used instead. On by > default. > -# > -# * disable-api-keys-info-bar : This disables the info bar that warns: > "Google API keys are missing". With some > -# builds, missing API keys are considered OK, > so the bar needs to go. > -# Off by default. > -# > -# * component-build : Enables component build mode. By default, all of > Chromium (with the exception of FFmpeg) > -# is linked into one big binary. The linker step > requires at least 8 GB RAM. Component mode > -# was created to facilitate development and testing, > since with it, there is not one big > -# binary; instead, each component is linked to a > separate shared object. > -# Use component mode for development, testing, and in > case the build machine is not a 64-bit > -# one, or has less than 8 GB RAM. Off by default. > -# > -# * ignore-lost-context : There is a flaw in the HTML Canvas specification. > When the canvas' backing store is > -# some kind of hardware resource like an OpenGL > texture, this resource might get lost. > -# In case of OpenGL textures, this happens when the > OpenGL context gets lost. The canvas > -# should then be repainted, but nothing in the > Canvas standard reflects that. > -# This packageconfig is to be used if the underlying > OpenGL (ES) drivers do not lose > -# the context, or if losing the context is > considered okay (note that canvas contents can > -# vanish then). Off by default. > -# > -# * impl-side-painting : This is a new painting mechanism. Still in > development stages, it can improve performance. > -# See > http://www.chromium.org/developers/design-documents/impl-side-painting for > more. > -# Off by default. > - > -# conditionally add ozone-wayland and its patches to the Chromium sources > - > -ENABLE_X11 = "${@base_contains('DISTRO_FEATURES', 'x11', '1', '0', d)}" > -# only enable Wayland if X11 isn't already enabled > -ENABLE_WAYLAND = "${@base_contains('DISTRO_FEATURES', 'x11', '0', \ > - base_contains('DISTRO_FEATURES', 'wayland', '1', \ > - '0', d),d)}" > - > -# variable for extra ozone-wayland patches, typically extended by BSP layer > .bbappends > -# IMPORTANT: do not simply add extra ozone-wayland patches to the SRC_URI in > a > -# .bbappend, since the base ozone-wayland patches need to be applied first > (see below) > - > -OZONE_WAYLAND_EXTRA_PATCHES = " " > - > -OZONE_WAYLAND_GIT_DESTSUFFIX = "ozone-wayland-git" > -OZONE_WAYLAND_GIT_BRANCH = "" > -OZONE_WAYLAND_GIT_SRCREV = "" > -SRC_URI += "${@base_conditional('ENABLE_WAYLAND', '1', > 'git://github.com/01org/ozone-wayland.git;destsuffix=${OZONE_WAYLAND_GIT_DESTSUFFIX};branch=${OZONE_WAYLAND_GIT_BRANCH};rev=${OZONE_WAYLAND_GIT_SRCREV}', > '', d)}" > -OZONE_WAYLAND_PATCH_FILE_GLOB = "*.patch" > - > -do_unpack[postfuncs] += "${@base_conditional('ENABLE_WAYLAND', '1', > 'copy_ozone_wayland_files', '', d)}" > -do_patch[prefuncs] += "${@base_conditional('ENABLE_WAYLAND', '1', > 'add_ozone_wayland_patches', '', d)}" > - > -copy_ozone_wayland_files() { > - # ozone-wayland sources must be placed in an "ozone" > - # subdirectory in ${S} in order for the .gyp build > - # scripts to work > - cp -r ${WORKDIR}/ozone-wayland-git ${S}/ozone > -} > - > -python add_ozone_wayland_patches() { > - import glob > - srcdir = d.getVar('S', True) > - # find all ozone-wayland patches and add them to SRC_URI > - upstream_patches_dir = srcdir + "/ozone/patches" > - upstream_patches = glob.glob(upstream_patches_dir + "/" + > d.getVar('OZONE_WAYLAND_PATCH_FILE_GLOB', True)) > - upstream_patches.sort() > - for upstream_patch in upstream_patches: > - d.appendVar('SRC_URI', ' file://' + upstream_patch) > - # then, add the extra patches to SRC_URI order matters; > - # extra patches may depend on the base ozone-wayland ones > - d.appendVar('SRC_URI', ' ' + d.getVar('OZONE_WAYLAND_EXTRA_PATCHES')) > -} > - > +DEPENDS = "xz-native pciutils pulseaudio cairo nss zlib-native libav cups > ninja-native gconf libexif pango libdrm" > > -# include.gypi exists only for armv6 and armv7a and there isn't something > like COMPATIBLE_ARCH afaik > COMPATIBLE_MACHINE = "(-)" > COMPATIBLE_MACHINE_i586 = "(.*)" > COMPATIBLE_MACHINE_x86-64 = "(.*)" > COMPATIBLE_MACHINE_armv6 = "(.*)" > COMPATIBLE_MACHINE_armv7a = "(.*)" > > +export CHROMIUM_BUILD_TYPE="Release" > + > inherit gettext > > PACKAGECONFIG ??= "use-egl" > @@ -117,43 +17,7 @@ PACKAGECONFIG ??= "use-egl" > # automatically and silently fall back to GLX > PACKAGECONFIG[use-egl] = ",,virtual/egl virtual/libgles2" > > -EXTRA_OEGYP = " \ > - -Dangle_use_commit_id=0 \ > - -Dclang=0 \ > - -Dhost_clang=0 \ > - -Ddisable_fatal_linker_warnings=1 \ > - ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', > '-Dlinux_use_gold_binary=0', d)} \ > - ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', > '-Dlinux_use_gold_flags=0', d)} \ > - -I ${WORKDIR}/oe-defaults.gypi \ > - -I ${WORKDIR}/include.gypi \ > - ${@bb.utils.contains('PACKAGECONFIG', 'component-build', '-I > ${WORKDIR}/component-build.gypi', '', d)} \ > - -f ninja \ > -" > -ARMFPABI_armv7a = "${@bb.utils.contains('TUNE_FEATURES', > 'callconvention-hard', 'arm_float_abi=hard', 'arm_float_abi=softfp', d)}" > - > -CHROMIUM_EXTRA_ARGS ?= " \ > - ${@bb.utils.contains('PACKAGECONFIG', 'use-egl', '--use-gl=egl', '', > d)} \ > - ${@bb.utils.contains('PACKAGECONFIG', 'ignore-lost-context', > '--gpu-no-context-lost', '', d)} \ > - ${@bb.utils.contains('PACKAGECONFIG', 'impl-side-painting', > '--enable-gpu-rasterization --enable-impl-side-painting', '', d)} \ > -" > - > -GYP_DEFINES = "${ARMFPABI} > release_extra_cflags='-Wno-error=unused-local-typedefs' sysroot=''" > - > -# These are present as their own variables, since they have changed between > versions > -# a few times in the past already; making them variables makes it easier to > handle that > -CHROMIUM_X11_DEPENDS = "xextproto gtk+ libxi libxss" > -CHROMIUM_X11_GYP_DEFINES = "" > -CHROMIUM_WAYLAND_DEPENDS = "wayland libxkbcommon" > -CHROMIUM_WAYLAND_GYP_DEFINES = "use_ash=1 use_aura=1 chromeos=0 use_ozone=1" > - > -python() { > - if d.getVar('ENABLE_X11', True) == '1': > - d.appendVar('DEPENDS', ' %s ' % d.getVar('CHROMIUM_X11_DEPENDS', > True)) > - d.appendVar('GYP_DEFINES', ' %s ' % > d.getVar('CHROMIUM_X11_GYP_DEFINES', True)) > - if d.getVar('ENABLE_WAYLAND', True) == '1': > - d.appendVar('DEPENDS', ' %s ' % d.getVar('CHROMIUM_WAYLAND_DEPENDS', > True)) > - d.appendVar('GYP_DEFINES', ' %s ' % > d.getVar('CHROMIUM_WAYLAND_GYP_DEFINES', True)) > -} > +GYP_DEFINES += "${ARMFPABI} > release_extra_cflags='-Wno-error=unused-local-typedefs' sysroot=''" > > do_configure() { > cd ${S} > @@ -164,54 +28,103 @@ do_configure() { > CXX="${CXX}" export CXX > CC_host="${BUILD_CC}" export CC_host > CXX_host="${BUILD_CXX}" export CXX_host > - build/gyp_chromium --depth=. ${EXTRA_OEGYP} > -} > - > -do_compile() { > - # build with ninja > - ninja -C ${S}/out/Release chrome chrome_sandbox > } > > do_install() { > install -d ${D}${bindir} > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/cefsimple" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/cefsimple > ${D}${bindir} > + fi > + if [ -f "${WORKDIR}/google-chrome" ]; then > install -m 0755 ${WORKDIR}/google-chrome ${D}${bindir}/ > - > - # Add extra command line arguments to google-chrome script by > modifying > - # the dummy "CHROME_EXTRA_ARGS" line > - sed -i > "s/^CHROME_EXTRA_ARGS=\"\"/CHROME_EXTRA_ARGS=\"${CHROMIUM_EXTRA_ARGS}\"/" > ${D}${bindir}/google-chrome > - > + fi > install -d ${D}${datadir}/applications > + if [ -f "${WORKDIR}/google-chrome.desktop" ]; then > install -m 0644 ${WORKDIR}/google-chrome.desktop > ${D}${datadir}/applications/ > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/icudtl.dat" ]; then > + install -m 0644 ${B}/out/${CHROMIUM_BUILD_TYPE}/icudtl.dat > ${D}${bindir} > + fi > + install -d ${D}${libdir} > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/libcef.so" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/lib/libcef.so > ${D}${libdir} > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/libosmesa.so" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/libosmesa.so > ${D}${libdir} > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/libffmpegsumo.so" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/libffmpegsumo.so > ${D}${libdir} > + fi > + install -d ${D}${bindir}/chrome > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/chrome" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/chrome > ${D}${bindir}/chrome/chrome > + fi > + > + #Chromium *.pak files > > - install -d ${D}${bindir}/chrome/ > - install -m 0755 ${S}/out/Release/chrome ${D}${bindir}/chrome/chrome > - install -m 0644 ${S}/out/Release/resources.pak ${D}${bindir}/chrome/ > - install -m 0644 ${S}/out/Release/icudtl.dat ${D}${bindir}/chrome/ > - install -m 0644 ${S}/out/Release/content_resources.pak > ${D}${bindir}/chrome/ > - install -m 0644 ${S}/out/Release/keyboard_resources.pak > ${D}${bindir}/chrome/ > - install -m 0644 ${S}/out/Release/chrome_100_percent.pak > ${D}${bindir}/chrome/ > - install -m 0644 ${S}/out/Release/product_logo_48.png > ${D}${bindir}/chrome/ > - install -m 0755 ${S}/out/Release/libffmpegsumo.so > ${D}${bindir}/chrome/ > - > - # Always adding this libdir (not just with component builds), because > the > - # LD_LIBRARY_PATH line in the google-chromium script refers to it > - install -d ${D}${libdir}/chrome/ > - if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'component-build', > 'component-build', '', d)}" ]; then > - install -m 0755 ${S}/out/Release/lib/*.so > ${D}${libdir}/chrome/ > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/content_resources.pak" ]; > then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/content_resources.pak > ${D}${bindir}/chrome > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/keyboard_resources.pak" ]; > then > + install -m 0755 > ${B}/out/${CHROMIUM_BUILD_TYPE}/keyboard_resources.pak ${D}${bindir}/chrome > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/chrome_100_percent.pak" ]; > then > + install -m 0755 > ${B}/out/${CHROMIUM_BUILD_TYPE}/chrome_100_percent.pak ${D}${bindir}/chrome > fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/product_logo_48.png" ]; then > + install -m 0644 ${S}/out/${CHROMIUM_BUILD_TYPE}/product_logo_48.png > ${D}${bindir}/chrome/ > + fi > + > + # CEF *.pak files > + > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/cef_100_percent.pak" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/cef_100_percent.pak > ${D}${bindir}/chrome > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/cef_200_percent.pak" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/cef_200_percent.pak > ${D}${bindir}/chrome > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/cef_resources.pak" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/cef_resources.pak > ${D}${bindir}/chrome > + fi > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/cef.pak" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/cef.pak > ${D}${bindir}/chrome > + fi > + install -d ${D}${bindir}/chrome/locales > + install -m 0644 ${B}/out/${CHROMIUM_BUILD_TYPE}/locales/en-US.pak > ${D}${bindir}/chrome/locales > + > > install -d ${D}${sbindir} > - install -m 4755 ${S}/out/Release/chrome_sandbox > ${D}${sbindir}/chrome-devel-sandbox > + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/chrome_sandbox" ]; then > + install -m 4755 ${B}/out/${CHROMIUM_BUILD_TYPE}/chrome_sandbox > ${D}${sbindir}/chrome-devel-sandbox > + fi > + > + # take care of yocto-way libraries naming (versions) > + cd ${D}${libdir} > + for library in $(find -type f -name '*.so'); do > + startDir="$(pwd)" > + cd "$(dirname "$library")" > + rm -f "$library.0.0.1" > + mv "$library" "$library.0.0.1" > + ln -sf "$library.0.0.1" "$library.0.0" > + ln -sf "$library.0.0" "$library.0" > + ln -sf "$library.0" "$library" > + cd "$startDir" > + done > > - install -d ${D}${bindir}/chrome/locales/ > - install -m 0644 ${S}/out/Release/locales/en-US.pak > ${D}${bindir}/chrome/locales > } > > + > FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome > ${datadir}/applications ${sbindir}/ ${libdir}/chrome/" > FILES_${PN}-dbg += "${bindir}/chrome/.debug/ ${libdir}/chrome/.debug/" > > PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src" > > +INSANE_SKIP_${PN} = "dev-so ldflags" > +FILES_SOLIBSDEV = "" > +FILES_${PN} += "${bindir} ${bindir}/chrome/ ${libdir}" > +FILES_${PN} += "${bindir}/chrome/*.pak" > +FILES_${PN} += "${bindir}/chrome/locales/*.pak" > +FILES_${PN}-dbg += "${bindir}/chrome/.debug/ ${libdir}/.debug/" > > > > diff --git a/recipes-browser/chromium/chromium_40.0.2214.91.bb > b/recipes-browser/chromium/chromium_40.0.2214.91.bb > index d0ff07d..3a5108e 100644 > --- a/recipes-browser/chromium/chromium_40.0.2214.91.bb > +++ b/recipes-browser/chromium/chromium_40.0.2214.91.bb > @@ -1,4 +1,82 @@ > +# Recipe files have to perform the following tasks after including this file: > +# 1) Add patches to SRC_URI. Version specific patches should be contained in > a > +# "chromium-XX" subdirectory, where XX is the major version. There are > also > +# patches that are shared amongst versions but may one day no longer be > +# needed (like unistd2.patch). These do not belong in such a subdirectory, > +# but still need to be explicitely be added. Do NOT add ozone-wayland > patches > +# to SRC_URI here! > +# 2) Add md5sum and sha256sum hashes of the tarball. > +# 3) Add ozone-wayland patches to the OZONE_WAYLAND_EXTRA_PATCHES variable. > +# The rule with the chromium-XX subdirectory also applies here. > +# 4) Set the OZONE_WAYLAND_GIT_BRANCH and OZONE_WAYLAND_GIT_SRCREV values. > +# 5) Optionally, set values for these variables: > +# * OZONE_WAYLAND_PATCH_FILE_GLOB > +# * CHROMIUM_X11_DEPENDS > +# * CHROMIUM_X11_GYP_DEFINES > +# * CHROMIUM_WAYLAND_DEPENDS > +# * CHROMIUM_WAYLAND_GYP_DEFINES > + > +DESCRIPTION = "Chromium browser" > +DEPENDS += "libgnome-keyring" > include chromium.inc > +SRC_URI = "\ > + http://gsdview.appspot.com/chromium-browser-official/${P}.tar.xz \ > + file://include.gypi \ > + file://oe-defaults.gypi \ > + ${@bb.utils.contains('PACKAGECONFIG', 'component-build', > 'file://component-build.gypi', '', d)} \ > + file://google-chrome \ > + file://google-chrome.desktop \ > +" > +# > +# * use-egl : Without this packageconfig, the Chromium build will use GLX > for creating an OpenGL context in X11, > +# and regular OpenGL for painting operations. Neither are > desirable on embedded platforms. With this > +# packageconfig, EGL and OpenGL ES 2.x are used instead. On by > default. > +# > +# * disable-api-keys-info-bar : This disables the info bar that warns: > "Google API keys are missing". With some > +# builds, missing API keys are considered OK, > so the bar needs to go. > +# Off by default. > +# > +# * component-build : Enables component build mode. By default, all of > Chromium (with the exception of FFmpeg) > +# is linked into one big binary. The linker step > requires at least 8 GB RAM. Component mode > +# was created to facilitate development and testing, > since with it, there is not one big > +# binary; instead, each component is linked to a > separate shared object. > +# Use component mode for development, testing, and in > case the build machine is not a 64-bit > +# one, or has less than 8 GB RAM. Off by default. > +# > +# * ignore-lost-context : There is a flaw in the HTML Canvas specification. > When the canvas' backing store is > +# some kind of hardware resource like an OpenGL > texture, this resource might get lost. > +# In case of OpenGL textures, this happens when the > OpenGL context gets lost. The canvas > +# should then be repainted, but nothing in the > Canvas standard reflects that. > +# This packageconfig is to be used if the underlying > OpenGL (ES) drivers do not lose > +# the context, or if losing the context is > considered okay (note that canvas contents can > +# vanish then). Off by default. > +# > +# * impl-side-painting : This is a new painting mechanism. Still in > development stages, it can improve performance. > +# See > http://www.chromium.org/developers/design-documents/impl-side-painting for > more. > +# Off by default. > + > +# conditionally add ozone-wayland and its patches to the Chromium sources > + > +ENABLE_X11 = "${@base_contains('DISTRO_FEATURES', 'x11', '1', '0', d)}" > +# only enable Wayland if X11 isn't already enabled > +ENABLE_WAYLAND = "${@base_contains('DISTRO_FEATURES', 'x11', '0', \ > + base_contains('DISTRO_FEATURES', 'wayland', '1', \ > + '0', d),d)}" > + > +# variable for extra ozone-wayland patches, typically extended by BSP layer > .bbappends > +# IMPORTANT: do not simply add extra ozone-wayland patches to the SRC_URI in > a > +# .bbappend, since the base ozone-wayland patches need to be applied first > (see below) > + > +OZONE_WAYLAND_EXTRA_PATCHES = " " > + > +OZONE_WAYLAND_GIT_DESTSUFFIX = "ozone-wayland-git" > +OZONE_WAYLAND_GIT_BRANCH = "" > +OZONE_WAYLAND_GIT_SRCREV = "" > +SRC_URI += "${@base_conditional('ENABLE_WAYLAND', '1', > 'git://github.com/01org/ozone-wayland.git;destsuffix=${OZONE_WAYLAND_GIT_DESTSUFFIX};branch=${OZONE_WAYLAND_GIT_BRANCH};rev=${OZONE_WAYLAND_GIT_SRCREV}', > '', d)}" > +OZONE_WAYLAND_PATCH_FILE_GLOB = "*.patch" > + > +do_unpack[postfuncs] += "${@base_conditional('ENABLE_WAYLAND', '1', > 'copy_ozone_wayland_files', '', d)}" > +do_patch[prefuncs] += "${@base_conditional('ENABLE_WAYLAND', '1', > 'add_ozone_wayland_patches', '', d)}" > > LIC_FILES_CHKSUM = "file://LICENSE;md5=537e0b52077bf0a616d0a0c8a79bc9d5" > SRC_URI += "\ > @@ -30,3 +108,88 @@ python() { > if bb.utils.contains('PACKAGECONFIG', 'component-build', True, > False, d): > bb.fatal("Chromium 40 Wayland version cannot be built in > component-mode") > } > + > +copy_ozone_wayland_files() { > + # ozone-wayland sources must be placed in an "ozone" > + # subdirectory in ${S} in order for the .gyp build > + # scripts to work > + cp -r ${WORKDIR}/ozone-wayland-git ${S}/ozone > +} > + > +python add_ozone_wayland_patches() { > + import glob > + srcdir = d.getVar('S', True) > + # find all ozone-wayland patches and add them to SRC_URI > + upstream_patches_dir = srcdir + "/ozone/patches" > + upstream_patches = glob.glob(upstream_patches_dir + "/" + > d.getVar('OZONE_WAYLAND_PATCH_FILE_GLOB', True)) > + upstream_patches.sort() > + for upstream_patch in upstream_patches: > + d.appendVar('SRC_URI', ' file://' + upstream_patch) > + # then, add the extra patches to SRC_URI order matters; > + # extra patches may depend on the base ozone-wayland ones > + d.appendVar('SRC_URI', ' ' + d.getVar('OZONE_WAYLAND_EXTRA_PATCHES')) > +} > + > +EXTRA_OEGYP = " \ > + -Dangle_use_commit_id=0 \ > + -Dclang=0 \ > + -Dhost_clang=0 \ > + -Ddisable_fatal_linker_warnings=1 \ > + ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', > '-Dlinux_use_gold_binary=0', d)} \ > + ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', > '-Dlinux_use_gold_flags=0', d)} \ > + -I ${WORKDIR}/oe-defaults.gypi \ > + -I ${WORKDIR}/include.gypi \ > + ${@bb.utils.contains('PACKAGECONFIG', 'component-build', '-I > ${WORKDIR}/component-build.gypi', '', d)} \ > + -f ninja \ > +" > +ARMFPABI_armv7a = "${@bb.utils.contains('TUNE_FEATURES', > 'callconvention-hard', 'arm_float_abi=hard', 'arm_float_abi=softfp', d)}" > + > +CHROMIUM_EXTRA_ARGS ?= " \ > + ${@bb.utils.contains('PACKAGECONFIG', 'use-egl', '--use-gl=egl', '', > d)} \ > + ${@bb.utils.contains('PACKAGECONFIG', 'ignore-lost-context', > '--gpu-no-context-lost', '', d)} \ > + ${@bb.utils.contains('PACKAGECONFIG', 'impl-side-painting', > '--enable-gpu-rasterization --enable-impl-side-painting', '', d)} \ > +" > + > +GYP_DEFINES += "${ARMFPABI} > release_extra_cflags='-Wno-error=unused-local-typedefs' sysroot=''" > + > +# These are present as their own variables, since they have changed between > versions > +# a few times in the past already; making them variables makes it easier to > handle that > +CHROMIUM_X11_DEPENDS = "xextproto gtk+ libxi libxss" > +CHROMIUM_X11_GYP_DEFINES = "" > +CHROMIUM_WAYLAND_DEPENDS = "wayland libxkbcommon" > +CHROMIUM_WAYLAND_GYP_DEFINES = "use_ash=1 use_aura=1 chromeos=0 use_ozone=1" > + > +python() { > + if d.getVar('ENABLE_X11', True) == '1': > + d.appendVar('DEPENDS', ' %s ' % d.getVar('CHROMIUM_X11_DEPENDS', > True)) > + d.appendVar('GYP_DEFINES', ' %s ' % > d.getVar('CHROMIUM_X11_GYP_DEFINES', True)) > + if d.getVar('ENABLE_WAYLAND', True) == '1': > + d.appendVar('DEPENDS', ' %s ' % d.getVar('CHROMIUM_WAYLAND_DEPENDS', > True)) > + d.appendVar('GYP_DEFINES', ' %s ' % > d.getVar('CHROMIUM_WAYLAND_GYP_DEFINES', True)) > +} > + > +do_configure_append() { > + > + build/gyp_chromium --depth=. ${EXTRA_OEGYP} > + > +} > + > +do_compile() { > + # build with ninja > + ninja -C ${S}/out/${CHROMIUM_BUILD_TYPE} chrome chrome_sandbox > +} > + > + > +do_install_append() { > + > + # Add extra command line arguments to google-chrome script by > modifying > + # the dummy "CHROME_EXTRA_ARGS" line > + sed -i > "s/^CHROME_EXTRA_ARGS=\"\"/CHROME_EXTRA_ARGS=\"${CHROMIUM_EXTRA_ARGS}\"/" > ${D}${bindir}/google-chrome > + > + # Always adding this libdir (not just with component builds), because > the > + # LD_LIBRARY_PATH line in the google-chromium script refers to it > + install -d ${D}${libdir}/chrome/ > + if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'component-build', > 'component-build', '', d)}" ]; then > + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/lib/*.so > ${D}${libdir}/chrome/ > + fi > +} > -- > 2.1.4 > > -- > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel