blob: 823cc28a1f980b095aa294c47e9a93bc31938147 (
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
|
SUMMARY = "Distribution build manifest"
DESCRIPTION = "The folder /etc/platform-info contains build manifest (SPEC-720)."
LICENSE = "MIT"
# information distributed by the package is machine specific
PACKAGE_ARCH = "${MACHINE_ARCH}"
# dependencies of ${DISTRO_MANIFEST_GENERATOR}
DEPENDS = "coreutils-native bash-native git-native gawk-native sed-native jq-native"
# force a rebuild everytime a build is started
do_compile[nostamp] = "1"
# borrowed to os-release.bb (output format is very close)
python do_compilestep1 () {
import shutil
with open(d.expand('${B}/bbinfo-deploy'),'w') as f:
allkeys=[]
for field in d.getVar('BUILD_MANIFEST_FIELDS_DEPLOY').split():
key='DIST_BB_{0}'.format(field)
allkeys.append(key)
value=d.getVar(field)
if value:
f.write('{0}="{1}"\n'.format(key,value))
f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[deploy]="%s"' % ' '.join(allkeys))
with open(d.expand('${B}/bbinfo-target'),'w') as f:
allkeys=[]
for field in d.getVar('BUILD_MANIFEST_FIELDS_TARGET').split():
key='DIST_BB_{0}'.format(field)
allkeys.append(key)
value=d.getVar(field)
if value:
f.write('{0}="{1}"\n'.format(key,value))
f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[target]="%s"' % ' '.join(allkeys))
with open(d.expand('${B}/bbinfo-sdk'),'w') as f:
allkeys=[]
for field in d.getVar('BUILD_MANIFEST_FIELDS_SDK').split():
key='DIST_BB_{0}'.format(field)
allkeys.append(key)
value=d.getVar(field)
if value:
f.write('{0}="{1}"\n'.format(key,value))
f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[sdk]="%s"' % ' '.join(allkeys))
}
do_compilestep2 () {
rc=99
timestamp=${DATETIME}
outfile=${B}/build-info
if [ -x "${DISTRO_MANIFEST_GENERATOR}" -a -f "${DISTRO_SETUP_MANIFEST}" ]; then
rc=0
for format in bash json; do
if [ "$format" = "json" ]; then
ext=".json"
else
ext=""
fi
for mode in deploy target sdk; do
${DISTRO_MANIFEST_GENERATOR} -m $mode -f $format -t $timestamp -s ${B}/bbinfo-${mode} ${DISTRO_SETUP_MANIFEST} >${outfile}-${mode}${ext}
rc=$?
if [ $rc -ne 0 ]; then
break
fi
done
done
else
if [ -z "${DISTRO_MANIFEST_GENERATOR}" ]; then
echo "The name of the generation script is not defined."
elif [ ! -f "${DISTRO_MANIFEST_GENERATOR}" ]; then
echo "Generation script ${DISTRO_MANIFEST_GENERATOR} is missing."
elif [ ! -x "${DISTRO_MANIFEST_GENERATOR}" ]; then
echo "Generation script ${DISTRO_MANIFEST_GENERATOR} isn't executable."
fi
if [ -z "${DISTRO_SETUP_MANIFEST}" ]; then
echo "The name of the data file is not defined."
elif [ ! -f "${DISTRO_SETUP_MANIFEST}" ]; then
echo "Data file ${DISTRO_SETUP_MANIFEST} is missing."
fi
echo "You can try to rerun aglsetup.sh to solve that issue."
echo "You can also try to source agl-init-build-env instead of oe-init-build-env."
fi
if [ "$rc" -ne 0 ]; then
echo "distro-build-manifest generation failed."
fi
return $rc
}
do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}"
do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}"
do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}"
# avoid errors "ERROR: When reparsing .../distro-build-manifest/distro-build-manifest.bb.do_compile, the basehash value changed from .... to .... . The metadata is not deterministic and this needs to be fixed."
do_compilestep2[vardepsexclude] = "DATETIME"
# combine the two steps
python do_compile() {
bb.build.exec_func("do_compilestep1",d)
bb.build.exec_func("do_compilestep2",d)
}
do_install () {
# install in target dir
install -d ${D}${sysconfdir}/platform-info
install -m 0644 build-info-target ${D}${sysconfdir}/platform-info/build
install -m 0644 build-info-target.json ${D}${sysconfdir}/platform-info/build.json
# also copy in deploy dir
install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 build-info-deploy ${DEPLOY_DIR_IMAGE}/build-info
install -m 0644 build-info-deploy.json ${DEPLOY_DIR_IMAGE}/build-info.json
# copy into sdk deploy dir
install -d ${DEPLOY_DIR}/sdk
install -m 0644 build-info-sdk ${DEPLOY_DIR}/sdk/${SDK_NAME}.build-info
install -m 0644 build-info-sdk.json ${DEPLOY_DIR}/sdk/${SDK_NAME}.build-info.json
# and copy to nativesdk package
# TODO
}
# list of variables to add to the various manifests
# smalles one is 'target', then 'deploy' and finally 'sdk'
BUILD_MANIFEST_FIELDS_TARGET = "\
MACHINE_ARCH \
MACHINEOVERRIDES \
MACHINE_FEATURES \
DISTRO_CODENAME \
DISTRO_FEATURES \
DISTRO_BRANCH_VERSION_TAG \
AGLVERSION \
AGL_BRANCH \
AGLRELEASETYPE \
"
BUILD_MANIFEST_FIELDS_DEPLOY = "\
${BUILD_MANIFEST_FIELDS_TARGET} \
DISTRO \
DISTRO_VERSION \
DISTROOVERRIDES \
TUNE_FEATURES \
TUNE_PKGARCH \
ALL_MULTILIB_PACKAGE_ARCHS \
"
BUILD_MANIFEST_FIELDS_SDK = "\
${BUILD_MANIFEST_FIELDS_DEPLOY} \
HOST_SYS \
TARGET_SYS \
TARGET_VENDOR \
SDK_ARCH \
SDK_VENDOR \
SDK_VERSION \
SDK_OS \
"
# dont exec useless tasks
do_fetch[noexec] = "1"
do_unpack[noexec] = "1"
do_patch[noexec] = "1"
do_configure[noexec] = "1"
|