diff options
16 files changed, 282 insertions, 58 deletions
@@ -52,7 +52,8 @@ Distribution and other platforms for In-Vehicle Infotainment system. `meta-agl` is a layer which contains AGL common and middleware packages. > meta-agl/meta-agl -`meta-agl-bsp` is a layer which contains required packages to boot AGL distribution on an emulated machine(QEMU). +`meta-agl-bsp` is a layer which contains required packages to boot AGL +distribution on an emulated machine(QEMU). > meta-agl/meta-agl-bsp Packagegroups @@ -60,29 +61,28 @@ Packagegroups AGL package group design: -These are the top-level packagegroups for AGL Distribution. -> packagegroup-agl-core (minimal packages to boot system) -> packagegroup-agl-ivi (middlewares for AGL IVI) -> packagegroup-ivi-common (common packages to AGL and others) - -Each package group can contain sub-package groups like these. -> packagegroup-agl-core-multimedia -> packagegroup-agl-core-connectivity -> ... -> packagegroup-agl-ivi-multimedia -> packagegroup-agl-ivi-connectivity -> ... -> packagegroup-ivi-common-multimedia -> packagegroup-ivi-common-connectivity - -The recipe for `packagegroup-ivi-common-*.bb` will contain common packages to -AGL Distribution(meta-agl) and other In-Vehicle Infotainment system(e.g. meta-ivi and meta-tizen). -> directory: meta-agl/meta-ivi-common/recipes-core/packagegroups -> recipes : packagegroup-ivi-common-[subsystem].bb - -The "packagegroups-agl-ivi-*" will contain AGL specific middleware packages. -> directory: meta-agl/meta-agl/recipes-ivi/packagegroups -> recipes : packagegroup-agl-ivi-[subsystem].bb +* packagegroup-agl-core* + +These are for making image ``agl-image-minimal`` which is small image just +capable of allowing a device to boot. + +Subsystem should maintain packagegroup-agl-core-[subsystem].bb which should +hold sufficient packages to build ``agl-image-minimal``. + +* packagegroup-agl-ivi* + +These are for making image ``agl-image-ivi`` which is baseline for IVI profile +of AGL distro. 'Baseline' means Service Layer and Operating System Layer defined +in AGL Spec v1.0. I think this is the same as GENIVI baseline. +All packages which belong to AppHMI and Application Framework should be put +into ``meta-agl-demo``. + +* packagegroup-ivi-common* + +These are for picking up some packages from GENIVI/Tizen/Others. The layer of +``meta-ivi-common`` has no image to build, all packagegroups are aggregated +to ``packagegrou-ivi-common-core' and it is included by images, +``agl-image-ivi.bb`` and ``agl-demo-platform.bb``. Supported Machine ----------------- diff --git a/meta-agl/recipes-ivi/images/agl-image-ivi.bb b/meta-agl/recipes-ivi/images/agl-image-ivi.bb index 950b27a4f..9754906b5 100644 --- a/meta-agl/recipes-ivi/images/agl-image-ivi.bb +++ b/meta-agl/recipes-ivi/images/agl-image-ivi.bb @@ -1,8 +1,8 @@ SUMMARY = "A basic system of AGL distribution of IVI profile" -require recipes-ivi/images/agl-image-ivi.inc +require ${PN}.inc IMAGE_INSTALL_append = "\ packagegroup-agl-core \ packagegroup-agl-ivi \ - packagegroup-ivi-common \ + packagegroup-ivi-common-core \ " diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-automotive.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-automotive.bb index ef4766e34..a623abded 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-automotive.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-automotive.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-automotive \ + packagegroup-ivi-common-core-automotive \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-connectivity.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-connectivity.bb index 4236a54d9..2453c3cb0 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-connectivity.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-connectivity.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-connectivity \ + packagegroup-ivi-common-core-connectivity \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-graphics.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-graphics.bb index f50767236..01a7e0dc3 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-graphics.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-graphics.bb @@ -6,11 +6,12 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-graphics \ + packagegroup-ivi-common-core-graphics \ " ALLOW_EMPTY_${PN} = "1" RDEPENDS_${PN} += "\ weston weston-examples \ + wayland-ivi-extension \ " diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-kernel.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-kernel.bb index 9d6cbc83e..14e5f4347 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-kernel.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-kernel.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-kernel \ + packagegroup-ivi-common-core-kernel \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-multimedia.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-multimedia.bb index bd6ad26c5..87ff66a26 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-multimedia.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-multimedia.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-multimedia \ + packagegroup-ivi-common-core-multimedia \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-navi-lbs.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-navi-lbs.bb index 45d3179e2..63c27348c 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-navi-lbs.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-navi-lbs.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-navi-lbs \ + packagegroup-ivi-common-core-navi-lbs \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-os-commonlibs.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-os-commonlibs.bb index de077db4c..eb7df8de2 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-os-commonlibs.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-os-commonlibs.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-os-commonlibs \ + packagegroup-ivi-common-core-os-commonlibs \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-security.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-security.bb index 61fe22ebb..b7c15399b 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-security.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-security.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-security \ + packagegroup-ivi-common-core-security \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-speech-services.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-speech-services.bb index f934e840c..72105ee3a 100644 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-speech-services.bb +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core-speech-services.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit packagegroup PACKAGES = "\ - packagegroup-ivi-common-speech-services \ + packagegroup-ivi-common-core-speech-services \ " ALLOW_EMPTY_${PN} = "1" diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core.bb new file mode 100644 index 000000000..b3cff10a6 --- /dev/null +++ b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common-core.bb @@ -0,0 +1,23 @@ +SUMMARY = "The middlewares for AGL IVI profile" +DESCRIPTION = "A set of packagegroups which contain common packages required by AGL Distribution" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-ivi-common-core \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-ivi-common-core-automotive \ + packagegroup-ivi-common-core-connectivity \ + packagegroup-ivi-common-core-graphics \ + packagegroup-ivi-common-core-multimedia \ + packagegroup-ivi-common-core-navi-lbs \ + packagegroup-ivi-common-core-os-commonlibs \ + packagegroup-ivi-common-core-speech-services \ + packagegroup-ivi-common-core-security \ + packagegroup-ivi-common-core-kernel \ + " diff --git a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common.bb b/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common.bb deleted file mode 100644 index 70d0facf6..000000000 --- a/meta-ivi-common/recipes-core/packagegroups/packagegroup-ivi-common.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "A set of packagegroups which contain common packages required by AGL Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-ivi-common \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-ivi-common-automotive \ - packagegroup-ivi-common-connectivity \ - packagegroup-ivi-common-graphics \ - packagegroup-ivi-common-multimedia \ - packagegroup-ivi-common-navi-lbs \ - packagegroup-ivi-common-os-commonlibs \ - packagegroup-ivi-common-speech-services \ - packagegroup-ivi-common-security \ - packagegroup-ivi-common-kernel \ - " diff --git a/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch b/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch new file mode 100644 index 000000000..7239f1fb2 --- /dev/null +++ b/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch @@ -0,0 +1,202 @@ +From fb66405f4f8ee200a443e22d3b4f56a0e917f785 Mon Sep 17 00:00:00 2001 +From: Manuel Bachmann <mbc@iot.bzh> +Date: Wed, 30 Sep 2015 05:22:25 +0200 +Subject: [PATCH] Backport to Wayland/Weston 1.9.0 > 1.5.0. + +Downgrade requirements to Wayland/Weston 1.9.0 > 1.5.0. + +"wl_display_roundtrip_queue()" did not exist at the time, +so just use the wrapper functions instead. + +Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh> +--- + .../ilmClient/src/ilm_client_wayland_platform.c | 15 ++----- + .../ilmControl/src/ilm_control_wayland_platform.c | 52 +++++++++++++++++++--- + protocol/CMakeLists.txt | 4 +- + weston-ivi-shell/CMakeLists.txt | 4 +- + 4 files changed, 53 insertions(+), 22 deletions(-) + +diff --git a/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c b/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c +index 55b1621..8730616 100644 +--- a/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c ++++ b/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c +@@ -61,7 +61,6 @@ struct ilm_client_context { + struct wl_registry *registry; + struct wl_compositor *compositor; + struct ivi_application *ivi_application; +- struct wl_event_queue *queue; + + struct wl_list list_surface; + +@@ -167,12 +166,6 @@ destroy_client_resouses(void) + ctx->ivi_application = NULL; + } + +- if (ctx->queue) +- { +- wl_event_queue_destroy(ctx->queue); +- ctx->queue = NULL; +- } +- + if (ctx->registry) + { + wl_registry_destroy(ctx->registry); +@@ -203,21 +196,19 @@ init_client(void) + + wl_list_init(&ctx->list_surface); + +- ctx->queue = wl_display_create_queue(ctx->display); + ctx->registry = wl_display_get_registry(ctx->display); + if (ctx->registry == NULL) { +- wl_event_queue_destroy(ctx->queue); + fprintf(stderr, "Failed to get registry\n"); + return; + } + +- wl_proxy_set_queue((void*)ctx->registry, ctx->queue); + if (wl_registry_add_listener(ctx->registry, + ®istry_client_listener, ctx)) { + fprintf(stderr, "Failed to add registry listener\n"); + return; + } +- wl_display_roundtrip_queue(ctx->display, ctx->queue); ++ wl_display_dispatch(ctx->display); ++ wl_display_roundtrip(ctx->display); + + if ((ctx->display == NULL) || (ctx->ivi_application == NULL)) { + fprintf(stderr, "Failed to connect display at ilm_client\n"); +@@ -239,7 +230,7 @@ get_client_instance(void) + exit(0); + } + +- wl_display_roundtrip_queue(ctx->display, ctx->queue); ++ wl_display_roundtrip(ctx->display); + + return ctx; + } +diff --git a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c +index 8910df5..61bdfc5 100644 +--- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c ++++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c +@@ -76,6 +76,46 @@ struct screen_context { + struct ilm_control_context *ctx; + }; + ++static void roundtrip_done(void *data, struct wl_callback *callback, ++ uint32_t serial) ++{ ++ (void) serial; ++ ++ *(int *)data = 1; ++ ++ wl_callback_destroy(callback); ++} ++ ++static struct wl_callback_listener roundtrip_listener = {roundtrip_done}; ++ ++int display_roundtrip_queue(struct wl_display *display, ++ struct wl_event_queue *queue) ++{ ++ int done = 0; ++ int ret = 0; ++ struct wl_callback *callback = wl_display_sync(display); ++ ++ if (! callback) ++ { ++ return -1; ++ } ++ ++ wl_proxy_set_queue((void *)callback, queue); ++ wl_callback_add_listener(callback, &roundtrip_listener, &done); ++ ++ while (ret != -1 && !done) ++ { ++ ret = wl_display_dispatch_queue(display, queue); ++ } ++ ++ if (ret == -1 && !done) ++ { ++ wl_callback_destroy(callback); ++ } ++ ++ return ret; ++} ++ + static inline void lock_context(struct ilm_control_context *ctx) + { + pthread_mutex_lock(&ctx->mutex); +@@ -1304,11 +1344,11 @@ init_control(void) + + if ( + // first level objects; ivi_controller +- wl_display_roundtrip_queue(wl->display, wl->queue) == -1 || ++ display_roundtrip_queue(wl->display, wl->queue) == -1 || + // second level object: ivi_controller_surfaces/layers +- wl_display_roundtrip_queue(wl->display, wl->queue) == -1 || ++ display_roundtrip_queue(wl->display, wl->queue) == -1 || + // third level objects: ivi_controller_surfaces/layers properties +- wl_display_roundtrip_queue(wl->display, wl->queue) == -1) ++ display_roundtrip_queue(wl->display, wl->queue) == -1) + { + fprintf(stderr, "Failed to initialize wayland connection: %s\n", strerror(errno)); + return -1; +@@ -1349,7 +1389,7 @@ ilmErrorTypes impl_sync_and_acquire_instance(struct ilm_control_context *ctx) + + lock_context(ctx); + +- if (wl_display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) == -1) { ++ if (display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) == -1) { + int err = wl_display_get_error(ctx->wl.display); + fprintf(stderr, "Error communicating with wayland: %s\n", strerror(err)); + unlock_context(ctx); +@@ -2454,7 +2494,7 @@ ilm_getPropertiesOfSurface(t_ilm_uint surfaceID, + // request statistics for surface + ivi_controller_surface_send_stats(ctx_surf->controller); + // force submission +- int ret = wl_display_roundtrip_queue(ctx->wl.display, ctx->wl.queue); ++ int ret = display_roundtrip_queue(ctx->wl.display, ctx->wl.queue); + + // If we got an error here, there is really no sense + // in returning the properties as something is fundamentally +@@ -2567,7 +2607,7 @@ ilm_commitChanges(void) + if (ctx->wl.controller != NULL) { + ivi_controller_commit_changes(ctx->wl.controller); + +- if (wl_display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) != -1) ++ if (display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) != -1) + { + returnValue = ILM_SUCCESS; + } +diff --git a/protocol/CMakeLists.txt b/protocol/CMakeLists.txt +index 6842131..207b8f1 100644 +--- a/protocol/CMakeLists.txt ++++ b/protocol/CMakeLists.txt +@@ -22,8 +22,8 @@ cmake_minimum_required (VERSION 2.6) + project(ivi-extension-protocol) + + find_package(PkgConfig REQUIRED) +-pkg_check_modules(WAYLAND_CLIENT wayland-client>=1.9.0 REQUIRED) +-pkg_check_modules(WAYLAND_SERVER wayland-server>=1.9.0 REQUIRED) ++pkg_check_modules(WAYLAND_CLIENT wayland-client>=1.5.0 REQUIRED) ++pkg_check_modules(WAYLAND_SERVER wayland-server>=1.5.0 REQUIRED) + + find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner) + +diff --git a/weston-ivi-shell/CMakeLists.txt b/weston-ivi-shell/CMakeLists.txt +index c2664df..927e3f5 100644 +--- a/weston-ivi-shell/CMakeLists.txt ++++ b/weston-ivi-shell/CMakeLists.txt +@@ -23,8 +23,8 @@ cmake_minimum_required (VERSION 2.6) + project(ivi-controller) + + find_package(PkgConfig REQUIRED) +-pkg_check_modules(WAYLAND_SERVER wayland-server>=1.9.0 REQUIRED) +-pkg_check_modules(WESTON weston>=1.9.0 REQUIRED) ++pkg_check_modules(WAYLAND_SERVER wayland-server>=1.5.0 REQUIRED) ++pkg_check_modules(WESTON weston>=1.5.0 REQUIRED) + pkg_check_modules(PIXMAN pixman-1 REQUIRED) + + GET_TARGET_PROPERTY(IVI_EXTENSION_INCLUDE_DIRS ivi-extension-protocol INCLUDE_DIRECTORIES) +-- +1.8.3.1 + diff --git a/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension_1.5.0.bb b/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension_1.5.0.bb new file mode 100644 index 000000000..56bb560ad --- /dev/null +++ b/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension_1.5.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "Wayland IVI Extension" +DESCRIPTION = "GENIVI Layer Management API based on Wayland IVI Extension" +HOMEPAGE = "http://projects.genivi.org/wayland-ivi-extension" +BUGTRACKER = "http://bugs.genivi.org/enter_bug.cgi?product=Wayland%20IVI%20Extension" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=176cedb32f48dd58f07e0c1c717b3ea4" + +DEPENDS = "weston" + +SRC_URI = "git://git.projects.genivi.org/${PN}.git \ + file://apply_weston-1.5.x.patch \ + " +SRCREV = "8f0874b606b8e2a9385af947728905735bad3939" + +S = "${WORKDIR}/git" + +inherit cmake autotools + +FILES_${PN} += "${libdir}/weston/*" +FILES_${PN}-dbg += "${libdir}/weston/.debug/*" diff --git a/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/weston.ini.ivi-shell b/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/weston.ini.ivi-shell index ad6f19a77..982ab8789 100644 --- a/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/weston.ini.ivi-shell +++ b/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/weston.ini.ivi-shell @@ -3,6 +3,7 @@ shell=ivi-shell.so [ivi-shell] ivi-module=hmi-controller.so +#ivi-module=hmi-controller.so,ivi-controller.so ivi-shell-user-interface=/usr/lib/weston/weston-ivi-shell-user-interface #developermode=true |