aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-core
diff options
context:
space:
mode:
authorStephane Desneux <stephane.desneux@iot.bzh>2018-11-21 22:04:28 +0000
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2018-11-23 19:18:02 +0000
commit7d027fc6280a9ffe234736a38c8aed32243a4dd6 (patch)
treef5b933afc9649f69bea86650873fd48350ab2fc8 /meta-agl-profile-core
parent0998dd12e5d6e4cf5471b97fe2150b56303358ac (diff)
distro-manifest-generator: add support for JSON output formatguppy_6.99.1guppy/6.99.16.99.1
Distro build manifest is easier to parse if output is made in a structured format. Adding JSON output format will allow bindings to read information more easily. The files created are now: On target: * /etc/platform-info/build (shell format) * /etc/platform-info/build.json (JSON format) In image deploy dir (.../tmp/deploy/images/$MACHINE/): * build-info (shell format) * build-info.json (JSON format) In sdk deploy dir (.../tmp/deploy/sdk/): * poky-agl-<version details>.build-info (shell format) * poky-agl-<version details>.build-info.json (JSON format) Bug-AGL: SPEC-720, SPEC-1917 Change-Id: If45d2c5dd96b15ce790aa7f7f97c24f119ad117b Signed-off-by: Stephane Desneux <stephane.desneux@iot.bzh>
Diffstat (limited to 'meta-agl-profile-core')
-rw-r--r--meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb107
1 files changed, 66 insertions, 41 deletions
diff --git a/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb b/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb
index 0ef48b272..a3b341230 100644
--- a/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb
+++ b/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb
@@ -1,30 +1,69 @@
SUMMARY = "Distribution build manifest"
-DESCRIPTION = "The /etc/platform-build-info file contains build manifest (SPEC-720)."
+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"
+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"
-do_compilestep1 () {
+# 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
- outfile=${B}/platform-build-info
+ outfile=${B}/build-info
if [ -x "${DISTRO_MANIFEST_GENERATOR}" -a -f "${DISTRO_SETUP_MANIFEST}" ]; then
- ${DISTRO_MANIFEST_GENERATOR} ${DISTRO_SETUP_MANIFEST} deploy >${outfile}-deploy
- rc1=$?
- ${DISTRO_MANIFEST_GENERATOR} ${DISTRO_SETUP_MANIFEST} target >${outfile}-target
- rc2=$?
- ${DISTRO_MANIFEST_GENERATOR} ${DISTRO_SETUP_MANIFEST} sdk >${outfile}-sdk
- rc=$?
-
- if [ "$rc1" -ne 0 -o "$rc2" -ne 0 -o "$rc3" -ne 0 ]; then
- rc=98
- fi
+ 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 -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."
@@ -48,30 +87,9 @@ do_compilestep1 () {
return $rc
}
-# borrowed to os-release.bb (output format is very close)
-python do_compilestep2 () {
- import shutil
- with open(d.expand('${B}/platform-build-info-deploy'),'a') as f:
- for field in d.getVar('BUILD_MANIFEST_FIELDS_DEPLOY').split():
- value=d.getVar(field)
- if value:
- f.write('DIST_BB_{0}="{1}"\n'.format(field,value))
-
- with open(d.expand('${B}/platform-build-info-target'),'a') as f:
- for field in d.getVar('BUILD_MANIFEST_FIELDS_TARGET').split():
- value=d.getVar(field)
- if value:
- f.write('DIST_BB_{0}="{1}"\n'.format(field,value))
-
- with open(d.expand('${B}/platform-build-info-sdk'),'a') as f:
- for field in d.getVar('BUILD_MANIFEST_FIELDS_SDK').split():
- value=d.getVar(field)
- if value:
- f.write('DIST_BB_{0}="{1}"\n'.format(field,value))
-}
-do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}"
-do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}"
-do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}"
+do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}"
+do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}"
+do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}"
# combine the two steps
python do_compile() {
@@ -81,12 +99,19 @@ python do_compile() {
do_install () {
# install in target dir
- install -d ${D}${sysconfdir}
- install -m 0644 platform-build-info-target ${D}${sysconfdir}/platform-build-info
+ 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 platform-build-info-deploy ${DEPLOY_DIR_IMAGE}/platform-build-info
+ 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