blob: 1a769924be42381d4f10270839ac318d9ad7312c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
#
# aglwgt bbclass
#
# Jan-Simon Moeller, jsmoeller@linuxfoundation.org
#
# This class expects a "make package" target in the makefile
# which creates the wgt files in the package/ subfolder.
# 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() {
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() {
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} <<EOF
#!/bin/sh -e
for file in ${APP_FILES}; do
/usr/bin/afm-install install /usr/AGL/apps/autoinstall/\$file
done
sync
${EXTRA_WGT_POSTINSTALL}
EOF
chmod a+x ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT}
fi
}
do_install() {
}
addtask aglwgt_deploy before do_package after do_install
addtask aglwgt_package before do_aglwgt_deploy after do_compile
PACKAGES += "${PN}-test ${PN}-debug ${PN}-coverage"
FILES_${PN} += " \
/usr/AGL/apps/release/*.wgt \
/usr/AGL/apps/autoinstall \
/usr/AGL/apps/manualinstall \
${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} \
"
FILES_${PN}-test = "/usr/AGL/apps/test/*.wgt"
FILES_${PN}-debug = "/usr/AGL/apps/debug/*.wgt"
FILES_${PN}-coverage = "/usr/AGL/apps/coverage/*.wgt"
# Test widgets need the parent widget and the test framework
RDEPENDS_${PN}-test = "${PN} afb-test"
# Signature keys
# These are default keys for development purposes !
# Change it for production.
WGTPKG_AUTOSIGN_0_agl-sign-wgts ??= "${WORKDIR}/recipe-sysroot-native/usr/share/afm/keys/developer.key.pem:${WORKDIR}/recipe-sysroot-native/usr/share/afm/certs/developer.cert.pem"
WGTPKG_AUTOSIGN_1_agl-sign-wgts ??= "${WORKDIR}/recipe-sysroot-native/usr/share/afm/keys/platform.key.pem:${WORKDIR}/recipe-sysroot-native/usr/share/afm/certs/platform.cert.pem"
export WGTPKG_AUTOSIGN_0
export WGTPKG_AUTOSIGN_1
|