> On Apr 27, 2015, at 1:33 PM, Andre McCurdy <[email protected]> wrote: > > 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 >
Thanks for bringing it up. I will send a followup to fix it incrementally. > > On Mon, Apr 27, 2015 at 9:44 AM, Khem Raj <[email protected]> wrote: >> CEF is a framework to embed chromium based browsers into other >> applications >> >> Change-Id: Ieabae43042101331f67cf6e673391f6fe320561f >> Signed-off-by: pnandyala <[email protected]> >> Signed-off-by: knagabhirava <[email protected]> >> Signed-off-by: Zoltan Kuscsik <[email protected]> >> Signed-off-by: Khem Raj <[email protected]> >> --- >> .../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 >> [email protected] >> http://lists.openembedded.org/mailman/listinfo/openembedded-devel > -- > _______________________________________________ > Openembedded-devel mailing list > [email protected] > http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
