From 1ac5c704bb4b7fd72d9e382ccf23f4d186da0f86 Mon Sep 17 00:00:00 2001 From: Stephane Desneux Date: Thu, 23 Jun 2016 16:00:59 +0000 Subject: add layer meta-app-framework meta-app-framework is a layer containing the AGL App Framework recipes 4 new layers are added for application framework: * meta-intel-iot-security/meta-security-smack * meta-intel-iot-security/meta-security-framework * meta-agl/meta-agl-security * meta-agl/meta-app-framework Configuration file changes to support AppFw: * activation of Smack and Cynara * modify the tar command to be used to support Smack extended attributes Change-Id: Idc8abdc8869787feb4b534ee45bf7b5d3dde3632 Signed-off-by: Stephane Desneux --- .../recipes-core/af-binder/af-binder_1.0.bb | 73 +++++++++++++++++ .../af-main/Hack-to-allow-the-debugging.patch | 29 +++++++ .../recipes-core/af-main/af-main_1.0.bb | 95 ++++++++++++++++++++++ .../packagegroup-agl-app-framework-examples.bb | 16 ++++ .../packagegroup-agl-app-framework.bb | 17 ++++ .../packagegroup-agl-core-security.bbappend | 9 ++ .../packagegroups/packagegroup-agl-core.bbappend | 3 + .../web-runtime/web-runtime/web-runtime | 2 + .../web-runtime/web-runtime/web-runtime-webkit.qml | 13 +++ .../web-runtime/web-runtime/web-runtime.qml | 13 +++ .../recipes-core/web-runtime/web-runtime_0.1.bb | 34 ++++++++ 11 files changed, 304 insertions(+) create mode 100644 meta-app-framework/recipes-core/af-binder/af-binder_1.0.bb create mode 100644 meta-app-framework/recipes-core/af-main/af-main/Hack-to-allow-the-debugging.patch create mode 100644 meta-app-framework/recipes-core/af-main/af-main_1.0.bb create mode 100644 meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb create mode 100644 meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb create mode 100644 meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend create mode 100644 meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core.bbappend create mode 100755 meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime create mode 100644 meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml create mode 100644 meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml create mode 100644 meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb (limited to 'meta-app-framework/recipes-core') diff --git a/meta-app-framework/recipes-core/af-binder/af-binder_1.0.bb b/meta-app-framework/recipes-core/af-binder/af-binder_1.0.bb new file mode 100644 index 000000000..4fcff66e7 --- /dev/null +++ b/meta-app-framework/recipes-core/af-binder/af-binder_1.0.bb @@ -0,0 +1,73 @@ +SUMMARY = "HTTP REST interface to automotive backends for HTML5 UI support" +DESCRIPTION = "Automotive-Framework-Binder Daemon provides a HTTP REST \ +interface to various automotive-oriented plugins (sound, radio...), \ +allowing HTML5 UIs to send platform-specific requests in a secure way." +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/app-framework-binder" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +DEPENDS = "file json-c libmicrohttpd systemd util-linux" +DEPENDS += "alsa-lib glib-2.0 gssdp gupnp gupnp-av pulseaudio" + +SRC_URI_git = "git://gerrit.automotivelinux.org/gerrit/src/app-framework-binder;protocol=https;branch=1.0" +SRC_URI_files = "" +SRC_URI = "${SRC_URI_git} \ + ${SRC_URI_files} \ + " + +SRCREV = "897aa6a130eab1eb716fcc13e650fb5833a7ce32" +S = "${WORKDIR}/git" + +inherit cmake pkgconfig + +FILES_${PN} += "${datadir}" + +############################################# +# setup meta package +############################################# +PACKAGES += "${PN}-meta" +ALLOW_EMPTY_${PN}-meta = "1" + +############################################# +# setup sample plugin packages +############################################# +PACKAGES_DYNAMIC = "${PN}-plugin-*" + +python populate_packages_prepend () { + afb_libdir = d.expand('${libdir}/afb') + postinst = d.getVar('plugin_postinst', True) + pkgs = [] + pkgs_dbg = [] + + pkgs += do_split_packages(d, afb_libdir, '(.*)-api\.so$', d.expand('${PN}-plugin-%s'), 'AFB plugin for %s', postinst=postinst, extra_depends=d.expand('${PN}')) + pkgs += do_split_packages(d, afb_libdir, '(.*(?!-api))\.so$', d.expand('${PN}-plugin-%s'), 'AFB plugin for %s', postinst=postinst, extra_depends=d.expand('${PN}')) + + pkgs_dbg += do_split_packages(d, oe.path.join(afb_libdir, ".debug"), '(.*)-api\.so$', d.expand('${PN}-plugin-%s-dbg'), 'AFB plugin for %s, debug info', postinst=postinst, extra_depends=d.expand('${PN}')) + pkgs_dbg += do_split_packages(d, oe.path.join(afb_libdir, ".debug"), '(.*(?!-api))\.so$', d.expand('${PN}-plugin-%s-dbg'), 'AFB plugin for %s, debug info', postinst=postinst, extra_depends=d.expand('${PN}')) + + metapkg = d.getVar('PN', True) + '-meta' + d.setVar('RDEPENDS_' + metapkg, ' '.join(pkgs)) +} + +############################################# +# setup libafbwsc package +############################################# +PACKAGES =+ "libafbwsc libafbwsc-dev libafbwsc-dbg" + +FILES_libafbwsc = "\ + ${libdir}/libafbwsc.so.* \ +" +FILES_libafbwsc-dev = "\ + ${includedir}/afb/afb-wsj1.h \ + ${includedir}/afb/afb-ws-client.h \ + ${bindir}/afb-client-demo \ + ${libdir}/libafbwsc.so \ + ${libdir}/pkgconfig/libafbwsc.pc \ +" +FILES_libafbwsc-dbg = "\ + ${libdir}/.debug/libafbwsc.so.* \ + ${bindir}/.debug/afb-client-demo \ +" +RDEPENDS_libafbwsc-dbg += "${PN}-dbg libafbwsc-dev" + diff --git a/meta-app-framework/recipes-core/af-main/af-main/Hack-to-allow-the-debugging.patch b/meta-app-framework/recipes-core/af-main/af-main/Hack-to-allow-the-debugging.patch new file mode 100644 index 000000000..44e8bce1e --- /dev/null +++ b/meta-app-framework/recipes-core/af-main/af-main/Hack-to-allow-the-debugging.patch @@ -0,0 +1,29 @@ +From a4fbfb88f1b7c4f4287d9279767220fae80d26da Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Bollo?= +Date: Thu, 21 Jan 2016 15:07:29 +0100 +Subject: [PATCH] Hack to allow the debugging + +This is a temporarily fix to continue debugging +afm-main. This should be removed later. + +Change-Id: I2f10f0cb1fce2ee30bd0754ad2e7bc8e2f6513aa +--- + conf/afm-user-daemon.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conf/afm-user-daemon.conf b/conf/afm-user-daemon.conf +index 801c7ae..98a3152 100644 +--- a/conf/afm-user-daemon.conf ++++ b/conf/afm-user-daemon.conf +@@ -25,7 +25,7 @@ + + + +- ++ + + + +-- +2.1.4 + diff --git a/meta-app-framework/recipes-core/af-main/af-main_1.0.bb b/meta-app-framework/recipes-core/af-main/af-main_1.0.bb new file mode 100644 index 000000000..a29b071ac --- /dev/null +++ b/meta-app-framework/recipes-core/af-main/af-main_1.0.bb @@ -0,0 +1,95 @@ +# NOTE: using libcap-native and setcap in install doesn't work +# NOTE: there is no SYSTEMD_USER_SERVICE_... +# NOTE: maybe setting afm_name to agl-framework is cleaner but has implications +# NOTE: there is a hack of security for using groups and dbus (to be checked) +# NOTE: using ZIP programs creates directories with mode 777 (very bad) + +inherit cmake pkgconfig useradd systemd + +SUMMARY = "AGL Framework Main part" +DESCRIPTION = "\ +This is a core framework component for managing \ +applications, widgets, and components. \ +" + +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/app-framework-main" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI_git = "git://gerrit.automotivelinux.org/gerrit/src/app-framework-main;protocol=https;branch=1.0" +SRC_URI_files = "" +SRC_URI = "${SRC_URI_git} \ + ${SRC_URI_files} \ + " + +SRCREV = "d0fdae3af6998efdce4c6ba0c5d650898c9c5b27" + +SECTION = "base" + +S = "${WORKDIR}/git" + +DEPENDS = "openssl libxml2 xmlsec1 systemd libzip json-c security-manager libcap-native af-binder" + +afm_name = "afm" +afm_confdir = "${sysconfdir}/${afm_name}" +afm_datadir = "${datadir}/${afm_name}" +afb_plugin_dir = "${libdir}/afb" + +EXTRA_OECMAKE = "\ + -DUSE_LIBZIP=1 \ + -DUSE_SIMULATION=0 \ + -Dafm_name=${afm_name} \ + -Dafm_confdir=${afm_confdir} \ + -Dafm_datadir=${afm_datadir} \ + -DUNITDIR_USER=${systemd_user_unitdir} \ + -DUNITDIR_SYSTEM=${systemd_system_unitdir} \ +" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} = "-g ${afm_name} -d ${afm_datadir} -r ${afm_name}" +GROUPADD_PARAM_${PN} = "-r ${afm_name}" + +SYSTEMD_SERVICE_${PN} = "afm-system-daemon.service" +SYSTEMD_AUTO_ENABLE = "enable" + +FILES_${PN} += "\ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/afm-user-daemon.service', '', d)} \ +" + +RDEPENDS_${PN}_append_smack = " smack-userspace" +DEPENDS_append_smack = " smack-userspace-native" + +# short hack here +SRC_URI += " file://Hack-to-allow-the-debugging.patch" + +do_install_append() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + mkdir -p ${D}${sysconfdir}/systemd/user/default.target.wants + ln -sf ${systemd_user_unitdir}/afm-user-daemon.service ${D}${sysconfdir}/systemd/user/default.target.wants + fi +} + +pkg_postinst_${PN}() { + mkdir -p $D${afm_datadir}/applications $D${afm_datadir}/icons + setcap cap_mac_override,cap_dac_override=ie $D${bindir}/afm-system-daemon + setcap cap_mac_override,cap_mac_admin,cap_setgid=ie $D${bindir}/afm-user-daemon +} + +pkg_postinst_${PN}_smack() { + mkdir -p $D${afm_datadir}/applications $D${afm_datadir}/icons + chown ${afm_name}:${afm_name} $D${afm_datadir} $D${afm_datadir}/applications $D${afm_datadir}/icons + chsmack -a 'System::Shared' -t $D${afm_datadir} $D${afm_datadir}/applications $D${afm_datadir}/icons + setcap cap_mac_override,cap_dac_override=ie $D${bindir}/afm-system-daemon + setcap cap_mac_override,cap_mac_admin,cap_setgid=ie $D${bindir}/afm-user-daemon +} + +PACKAGES =+ "${PN}-afbplugin ${PN}-afbplugin-dbg" +FILES_${PN}-afbplugin = " ${afb_plugin_dir}/afm-main-plugin.so " +FILES_${PN}-afbplugin-dbg = " ${afb_plugin_dir}/.debug/afm-main-plugin.so " + +PACKAGES =+ "${PN}-tools ${PN}-tools-dbg" +FILES_${PN}-tools = "${bindir}/wgtpkg-*" +FILES_${PN}-tools-dbg = "${bindir}/.debug/wgtpkg-*" + +BBCLASSEXTEND = "native nativesdk" + diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb new file mode 100644 index 000000000..e95b7548b --- /dev/null +++ b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb @@ -0,0 +1,16 @@ +SUMMARY = "AGL Application Framework examples" +DESCRIPTION = "The set of examples associated to the AGL Application Framework" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-app-framework-examples \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + afm-client \ + afb-client \ + " diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb new file mode 100644 index 000000000..c5b4b5366 --- /dev/null +++ b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb @@ -0,0 +1,17 @@ +SUMMARY = "AGL Application Framework core packages" +DESCRIPTION = "The set of packages required by the AGL Application Framework" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-app-framework \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + af-binder \ + af-main \ + web-runtime \ + " diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend new file mode 100644 index 000000000..0c9efe465 --- /dev/null +++ b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core-security.bbappend @@ -0,0 +1,9 @@ +RDEPENDS_${PN} += "\ + xmlsec1 \ + cynara \ + dbus-cynara \ + security-manager \ + security-manager-policy \ + agl-users \ + " + diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core.bbappend b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core.bbappend new file mode 100644 index 000000000..ad09e5ddf --- /dev/null +++ b/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-core.bbappend @@ -0,0 +1,3 @@ +RDEPENDS_${PN} += "\ + packagegroup-agl-app-framework \ + " diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime new file mode 100755 index 000000000..ca712e155 --- /dev/null +++ b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/bin/qt5/qmlscene "$1" /usr/bin/web-runtime-webkit.qml diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml new file mode 100644 index 000000000..d18b672cd --- /dev/null +++ b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime-webkit.qml @@ -0,0 +1,13 @@ +import QtQuick 2.1 +import QtQuick.Controls 1.1 +import QtWebKit 3.0 + +ApplicationWindow { + width: 1024 + height: 768 + visible: true + WebView { + url: Qt.application.arguments[1] + anchors.fill: parent + } +} diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml new file mode 100644 index 000000000..afe8a77d0 --- /dev/null +++ b/meta-app-framework/recipes-core/web-runtime/web-runtime/web-runtime.qml @@ -0,0 +1,13 @@ +import QtQuick 2.1 +import QtQuick.Controls 1.1 +import QtWebEngine 1.1 + +ApplicationWindow { + width: 1024 + height: 768 + visible: true + WebEngineView { + url: Qt.application.arguments[1] + anchors.fill: parent + } +} diff --git a/meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb b/meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb new file mode 100644 index 000000000..9df4dff2d --- /dev/null +++ b/meta-app-framework/recipes-core/web-runtime/web-runtime_0.1.bb @@ -0,0 +1,34 @@ +inherit allarch + +SUMMARY = "Provides the 'web-runtime' command" +DESCRIPTION = "The command 'web-runtime' is an abstraction that allows to " + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "\ + file://web-runtime;md5sum=00cdb6980e03cf8c8f7d60dd978c61d7 \ + file://web-runtime.qml;md5sum=5d6a379e9b7e5654319e5ba638824a58 \ + file://web-runtime-webkit.qml;md5sum=4daf9df39078634c27a7923d37e82e3d \ +" + +RDEPENDS_${PN} = "qtwebkit-qmlplugins" + +do_configure() { + : +} + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/web-runtime ${D}${bindir}/web-runtime + install -m 0644 ${WORKDIR}/web-runtime.qml ${D}${bindir}/web-runtime.qml + install -m 0644 ${WORKDIR}/web-runtime-webkit.qml ${D}${bindir}/web-runtime-webkit.qml +} + +do_install_append_rcar-gen2() { + # workaround for porter board: force the use of libEGL provided by mesa at runtime + # otherwise, the proprietary libEGL is used and a problem then occurs due to a missing EGL function + sed -i 's|^\(exec /usr/bin/qt5/qmlscene\)|LD_PRELOAD=/usr/lib/libEGL.so \1|g' ${D}${bindir}/web-runtime +} + + -- cgit 1.2.3-korg