[oe] [meta-browser][PATCH] cef3: Add recipe for Chromium Embedded Framework
Khem Raj
raj.khem at gmail.com
Wed Mar 11 02:33:27 UTC 2015
> On Mar 10, 2015, at 7:25 PM, Andre McCurdy <armccurdy at gmail.com> wrote:
>
> On Tue, Mar 10, 2015 at 6:52 PM, Khem Raj <raj.khem at gmail.com> wrote:
>> CEF is a framework to embed chromium based browsers into other
>> applications
>
> Nice to see this show up :-)
its a verbatim copy of a working version. I will send out a v2, but will wait for some more feedback if anyone has
>
>> Change-Id: I7cb987828837b3aef6e87aa9b9f73a8babe26a06
>> Signed-off-by: pnandyala <Pavan.Nandyala at LntTechservices.com>
>> Signed-off-by: knagabhirava <kalyankumar.nagabhirava at lnttechservices.com>
>> Signed-off-by: Zoltan Kuscsik <zoltan.kuscsik at linaro.org>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>> .../cef3/01_get_svn_version_from_LASTCHANGE.patch | 25 ++++
>> recipes-browser/chromium/cef3_280796.bb | 146 +++++++++++++++++++++
>> 2 files changed, 171 insertions(+)
>> 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..9834eac
>> --- /dev/null
>> +++ b/recipes-browser/chromium/cef3_280796.bb
>> @@ -0,0 +1,146 @@
>> +DESCRIPTION = "Chromium Embedded Framework"
>> +LICENSE = "BSD"
>> +
>> +# Based on Chromium dependencies
>> +DEPENDS = " \
>> + xz-native \
>> + pciutils \
>> + pulseaudio \
>> + xextproto \
>> + pango \
>> + cairo \
>> + nss \
>> + zlib-native \
>> + cups \
>> + ninja-native \
>> + gconf \
>> + libexif \
>> + libxkbcommon \
>> + fontconfig \
>> + libdrm \
>> + virtual/egl \
>> + virtual/libgles2 \
>> + "
>
> Is there a logic to this sorting order?
Not really, we could sort them though
>
>> +RDEPENDS_${PN} = " \
>> + pango \
>> + cairo \
>> + fontconfig \
>> + pciutils \
>> + pulseaudio \
>> + freetype \
>> + fontconfig-utils \
>> + "
>
> Same comment here.
consistent with above
>
>> +#Generic Fonts are needed
>> +
>> +COMPATIBLE_MACHINE = "(-)"
>> +COMPATIBLE_MACHINE_i586 = "(.*)"
>> +COMPATIBLE_MACHINE_x86-64 = "(.*)"
>> +COMPATIBLE_MACHINE_armv6 = "(.*)"
>> +COMPATIBLE_MACHINE_armv7a = "(.*)"
>> +
>> +SRC_URI = "http://people.linaro.org/~zoltan.kuscsik/chromium-browser/chromium_rev_${PV}.tar.xz"
>> +SRC_URI +="git://github.com/kuscsik/chromiumembedded.git;protocol=https;destsuffix=src/cef;branch=aura;name=cef"
>> +SRC_URI +="git://github.com/kuscsik/ozone-egl.git;protocol=https;destsuffix=src/ui/ozone/platform/egl;branch=master;name=egl"
>> +SRC_URI +="git://chromium.googlesource.com/chromium/tools/depot_tools.git;protocol=https;destsuffix=depot_tools;branch=master;name=tools"
>> +SRC_URI +="file://01_get_svn_version_from_LASTCHANGE.patch"
>> +
>> +SRCREV = "${AUTOREV}"
>> +SRCREV_cef ?= "${AUTOREV}"
>> +SRCREV_egl = "${AUTOREV}"
>
> Are AUTOREV versions allowed?
hmmm good catch.
>
>> +SRCREV_FORMAT = "default_cef_egl_tools"
>> +S = "${WORKDIR}/chromium_rev_${PV}"
>> +
>> +do_fetch[vardeps] += "SRCREV_FORMAT SRCREV_cef SRCREV_egl SRCREV_tools"
>> +
>> +SRC_URI[md5sum] = "9efbb50283b731042e62b9bd5e312b2f"
>> +SRC_URI[sha256sum] = "f608e97dadf6ea4d885b24fd876896d46840fa39bf743ea2025075aee9fb348d"
>> +
>> +export CHROMIUM_BUILD_TYPE="Release"
>> +
>> +GYP_ARCH_DEFINES_armv7a = " target_arch=arm arm_float_abi=hard"
>> +GYP_ARCH_DEFINES_i586 = " target_arch=ia32"
>
> Should there be a default GYP_ARCH_DEFINES for the other
> COMPATIBLE_MACHINEs, x86-64 and armv6?
No. They matched 1 to 1 IIRC
>
>> +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=''"
>> +
>> +inherit gettext
>> +
>> +do_configure() {
>> + # LD workaround taken from meta-browser
>> + # replace LD with CXX, to workaround a possible gyp issue?
>> + export PATH=${WORKDIR}/depot_tools:"$PATH"
>> + LD="${CXX}" export LD
>> + CC="${CC}" export CC
>> + CXX="${CXX}" export CXX
>> + CC_host="gcc" export CC_host
>> + CXX_host="g++" export CXX_host
>> + # End of LD Workaround
>> +
>> + #-----------------------
>> + # Configure and build cef
>> + #------------------------
>
> Confusing comment. If you build in the configure task, what happens
> below in the compile task?
yes will have to change
>
>> + 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
>> +}
>> +
>> +do_install() {
>> + install -d ${D}${bindir}
>> + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/cefsimple ${D}${bindir}
>> + if [ -f "${B}/out/${CHROMIUM_BUILD_TYPE}/icudtl.dat" ]; then
>> + install -m 0644 ${B}/out/${CHROMIUM_BUILD_TYPE}/icudtl.dat ${D}${bindir}
>> + fi
>
> Dubious indenting…
>
right
>> + install -d ${D}${libdir}
>> + install -m 0755 ${B}/out/${CHROMIUM_BUILD_TYPE}/lib/libcef.so ${D}${libdir}
>> + 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}/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
>
> What are .pak files? Do they need to be installed as executable?
they are resource files. They can be 0644
>
>> + install -d ${D}${bindir}/chrome/locales
>> + install -m 0644 ${B}/out/${CHROMIUM_BUILD_TYPE}/locales/en-US.pak ${D}${bindir}/chrome/locales
>> + # take care of 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"
>
> This only works correctly if sonames are given when the libraries are linked…
yes thats the expectation
>
>> + cd "$startDir"
>> + done
>> +
>> +}
>> +
>> +INSANE_SKIP_${PN} = "dev-so ldflags"
>> +FILES_SOLIBSDEV = ""
>
> See above. If sonames are correct then there should be no need to
> force the .so symlinks into the runtime package.
yes this should go.
More information about the Openembedded-devel
mailing list