X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=meta-agl-profile-core%2Frecipes-core%2Fdistro-build-manifest%2Fdistro-build-manifest.bb;h=a3b341230e65f16792bc07717f0ce9cb19d31f50;hb=refs%2Ftags%2Fguppy_6.99.1;hp=e421738889f10f68b4b98ebec3a1047c66efae74;hpb=8230effc9f8e39e95a7364eb38b53aad910d139f;p=AGL%2Fmeta-agl.git 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 e42173888..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,62 +1,95 @@ 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 () { - rc=99 - outfile=${B}/platform-build-info - if [ -f "${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 - fi - - if [ "$rc" -ne 0 ]; then - echo "distro-build-manifest generation failed." - fi - return $rc -} - # borrowed to os-release.bb (output format is very close) -python do_compilestep2 () { +python do_compilestep1 () { import shutil - with open(d.expand('${B}/platform-build-info-deploy'),'a') as f: + 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('DIST_BB_{0}="{1}"\n'.format(field,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}/platform-build-info-target'),'a') as f: + 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('DIST_BB_{0}="{1}"\n'.format(field,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}/platform-build-info-sdk'),'a') as f: + 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('DIST_BB_{0}="{1}"\n'.format(field,value)) + f.write('{0}="{1}"\n'.format(key,value)) + f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[sdk]="%s"' % ' '.join(allkeys)) } -do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}" -do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}" -do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}" + +do_compilestep2 () { + rc=99 + 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 -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}" # combine the two steps python do_compile() { @@ -66,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