X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=meta-app-framework%2Fclasses%2Faglwgt.bbclass;h=1a769924be42381d4f10270839ac318d9ad7312c;hb=49bd9e1a1e787e308146e4e4a1cd320ddb7e7ece;hp=8a2c351e066eff4f9b2fd44d6f625fae959a2399;hpb=a42e4e02ed7b9bfba115e936ea4cb5278a04879e;p=AGL%2Fmeta-agl.git diff --git a/meta-app-framework/classes/aglwgt.bbclass b/meta-app-framework/classes/aglwgt.bbclass index 8a2c351e0..1a769924b 100644 --- a/meta-app-framework/classes/aglwgt.bbclass +++ b/meta-app-framework/classes/aglwgt.bbclass @@ -8,63 +8,127 @@ # The makefile needs to use wgtpkg-pack. # - # 'wgtpkg-pack' in af-main-native is required. DEPENDS_append = " af-main-native" # for bindings af-binder is required. DEPENDS_append = " af-binder" +# for bindings that use the cmake-apps-module +DEPENDS_append = " cmake-apps-module-native" + # for hal bindings genskel is required. DEPENDS_append = " af-binder-devtools-native" -EXTRA_OECMAKE_append_agl-ptest = " -DBUILD_TEST_WGT=TRUE" +# Set the default build type for cmake based projects +# NOTE: This can be removed after switching to using the autobuild +# script to do compilation +EXTRA_OECMAKE_append = " -DCMAKE_BUILD_TYPE=RELEASE" + +# FIXME: Remove once CMake+ninja issues are resolved +OECMAKE_GENERATOR = "Unix Makefiles" + +AGLWGT_EXTRA_BUILD_ARGS = 'VERBOSE=TRUE BUILD_ARGS="${PARALLEL_MAKE}"' + +# Only widgets with recipe names starting with agl-service- are +# assumed to have tests by default, set this to "true" to force +# building/packaging of the test widget for other widgets. +AGLWGT_HAVE_TESTS = "false" + +# Warning on missing test/debug/coverage packages disabled by default +# for now to reduce build output clutter. +AGLWGT_PACKAGE_WARN = "false" + +# There are some widgets with build issues wrt test/debug/coverage +# that are currently non-fatal but do not yield a widget, allow empty +# test and coverage packages for now to allow the build to proceed. +# This matches the default behavior for -dbg packages. +# +# NOTE: This should revisited after a round of autobuild script rework +# to address SPEC-3300. +ALLOW_EMPTY_${PN}-coverage = "1" +ALLOW_EMPTY_${PN}-debug = "1" +ALLOW_EMPTY_${PN}-test = "1" + do_aglwgt_package() { - cd ${B} - ${S}/conf.d/autobuild/agl/autobuild package BUILD_DIR=${B} DEST=${B}/package VERBOSE=TRUE || \ - make package || \ - ( bbwarn "Your makefile must support the 'make package' target" ; \ - bbwarn "and generate a .wgt file using wgtpack in the"; \ - bbwarn "subfolder ./package/ !" ; \ - bbwarn "Fix your package as it will not work within the SDK" ; \ - bbwarn "See: https://wiki.automotivelinux.org/troubleshooting/app-recipes" \ - ) + bldcmd=${S}/autobuild/agl/autobuild + if [ ! -x "$bldcmd" ]; then + bbfatal "Missing autobuild/agl/autobuild script" + fi + + cd ${B} + if ! $bldcmd package BUILD_DIR=${B} DEST=${B}/build-release ${AGLWGT_EXTRA_BUILD_ARGS}; then + bbwarn "Target: package failed" + fi + + mkdir -p ${S}/build-debug + cd ${S}/build-debug + if ! $bldcmd package-debug BUILD_DIR=${S}/build-debug DEST=${B}/build-debug ${AGLWGT_EXTRA_BUILD_ARGS}; then + bbwarn "Target: package-debug failed" + fi + + if echo ${BPN} | grep -q '^agl-service-' || [ "${AGLWGT_HAVE_TESTS}" = "true" ]; then + mkdir -p ${S}/build-test + cd ${S}/build-test + if ! $bldcmd package-test BUILD_DIR=${S}/build-test DEST=${B}/build-test ${AGLWGT_EXTRA_BUILD_ARGS}; then + bbwarn "Target: package-test failed" + fi + + mkdir -p ${S}/build-coverage + cd ${S}/build-coverage + if ! $bldcmd package-coverage BUILD_DIR=${S}/build-coverage DEST=${B}/build-coverage ${AGLWGT_EXTRA_BUILD_ARGS}; then + bbwarn "Target: package-coverage failed" + fi + fi } python () { d.setVarFlag('do_aglwgt_deploy', 'fakeroot', '1') } - POST_INSTALL_LEVEL ?= "10" POST_INSTALL_SCRIPT ?= "${POST_INSTALL_LEVEL}-${PN}.sh" EXTRA_WGT_POSTINSTALL ?= "" do_aglwgt_deploy() { - TEST_WGT="*-test.wgt" - if [ "${AGLWGT_AUTOINSTALL_${PN}}" = "0" ] - then - install -d ${D}/usr/AGL/apps/manualinstall - install -m 0644 ${B}/package/*.wgt ${D}/usr/AGL/apps/manualinstall + DEST=release + if [ "${AGLWGT_AUTOINSTALL_${PN}}" = "0" ]; then + DEST=manualinstall + fi + + if [ "$(find ${B}/build-release -name '*.wgt' -maxdepth 1)" ]; then + install -d ${D}/usr/AGL/apps/$DEST + install -m 0644 ${B}/build-release/*.wgt ${D}/usr/AGL/apps/$DEST/ else - install -d ${D}/usr/AGL/apps/autoinstall - install -m 0644 ${B}/package/*.wgt ${D}/usr/AGL/apps/autoinstall - - if [ "$(find ${D}/usr/AGL/apps/autoinstall -name ${TEST_WGT})" ] - then - install -d ${D}/usr/AGL/apps/testwgt - mv ${D}/usr/AGL/apps/autoinstall/*-test.wgt ${D}/usr/AGL/apps/testwgt - fi + bbfatal "no package found in widget directory" fi - APP_FILES="" - for file in ${D}/usr/AGL/apps/autoinstall/*.wgt;do - APP_FILES="${APP_FILES} $(basename $file)"; + for t in test debug coverage; do + if [ "$(find ${B}/build-${t} -name *-${t}.wgt -maxdepth 1)" ]; then + install -d ${D}/usr/AGL/apps/${t} + install -m 0644 ${B}/build-${t}/*-${t}.wgt ${D}/usr/AGL/apps/${t}/ + elif [ "${AGLWGT_PACKAGE_WARN}" = "true" ]; then + if [ "$t" != "test" -a "$t" != "coverage" ]; then + bbwarn "no package found in ${t} widget directory" + elif echo ${BPN} | grep -q '^agl-service-' || [ "${AGLWGT_HAVE_TESTS}" = "true" ]; then + bbwarn "no package found in ${t} widget directory" + fi + fi done - install -d ${D}/${sysconfdir}/agl-postinsts - cat > ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} < ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} <