X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=meta-app-framework%2Fclasses%2Faglwgt.bbclass;h=1a769924be42381d4f10270839ac318d9ad7312c;hb=49bd9e1a1e787e308146e4e4a1cd320ddb7e7ece;hp=734e979c5e522fc6803f0afe4b1cedf93c4c5869;hpb=2a3bbd117220b55682f95dd527f9971f3efdcd82;p=AGL%2Fmeta-agl.git diff --git a/meta-app-framework/classes/aglwgt.bbclass b/meta-app-framework/classes/aglwgt.bbclass index 734e979c5..1a769924b 100644 --- a/meta-app-framework/classes/aglwgt.bbclass +++ b/meta-app-framework/classes/aglwgt.bbclass @@ -8,30 +8,165 @@ # 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" + +# 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} - 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() { - install -d ${D}/usr/AGL/apps - install -m 0644 ${B}/package/*.wgt ${D}/usr/AGL/apps/ + 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 + bbfatal "no package found in widget directory" + fi + + 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 + + if [ "${AGLWGT_AUTOINSTALL_${PN}}" != "0" ]; then + # For now assume autoinstall of the release versions + rm -rf ${D}/usr/AGL/apps/autoinstall + ln -sf release ${D}/usr/AGL/apps/autoinstall + + APP_FILES="" + for file in ${D}/usr/AGL/apps/autoinstall/*.wgt; do + APP_FILES="${APP_FILES} $(basename $file)"; + done + install -d ${D}/${sysconfdir}/agl-postinsts + cat > ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} <