Merge "feature/agl-ci-*: include agl-pipewire instead of agl-audio-4a-framework"
[AGL/meta-agl.git] / scripts / .aglsetup_genconfig.bash
index b0d24e5..c4dde42 100755 (executable)
@@ -51,11 +51,11 @@ function debug() { [[ $DEBUG == 1 ]] && echo "DEBUG: $@" >&2; return 0;}
 info "------------ $SCRIPT: Starting"
 
 #compute AGL_REPOSITORIES
-AGL_REPOSITORIES=$(for x in $(ls -d $METADIR/*/templates/{machine,feature}); do echo $(basename $(dirname $(dirname $x))); done | sort -u)
+AGL_REPOSITORIES=$(for x in $(ls -d $METADIR/meta-ag*/templates/{machine,feature} $METADIR/bsp/*/templates/machine); do echo $(basename $(dirname $(dirname $x))); done | sort -u)
 
 function list_machines() {
-       for x in $@; do
-               for y in $(ls -d $METADIR/$x/templates/machine/* 2>/dev/null); do
+       for a in $@; do
+               for y in $(ls -d $METADIR/{.,bsp}/$a/templates/machine/* 2>/dev/null); do
                        echo $(basename $y)
                done
        done
@@ -78,7 +78,7 @@ function validate_machines() {
        list_all_machines | sort | uniq -c | while read cnt machine; do
                [[ $cnt == 1 ]] && continue
                info "Machine $machine found in the following repositories:"
-               for x in $(ls -d $METADIR/*/templates/machine/$machine); do
+               for x in $(ls -d $METADIR/*/templates/machine/$machine $METADIR/bsp/*/templates/machine/$machine ); do
                        info "   - $x"
                done
                error "Multiple machine templates are not allowed"
@@ -104,7 +104,7 @@ function validate_features() {
        list_all_features | sort | uniq -c | while read cnt feature; do
                [[ $cnt == 1 ]] && continue;
                info "Feature $feature found in the following repositories:"
-               for x in $(ls -d $METADIR/*/templates/feature/$feature); do
+               for x in $(ls -d $METADIR/*/templates/feature/$feature ); do
                        info "   - $x"
                done
                error "Multiple feature templates are not allowed"
@@ -115,8 +115,10 @@ function validate_features() {
 function find_machine_dir() {
        machine=$1
        for x in $AGL_REPOSITORIES; do
-               dir=$METADIR/$x/templates/machine/$machine
-               [[ -d $dir ]] && { echo $dir; return 0; }
+               dirs=$(ls -d $METADIR/{.,bsp}/$x/templates/machine/$machine)
+               for dir in $dirs; do
+                   [[ -d $dir ]] && { echo $dir; return 0; }
+               done
        done
        return 1
 }
@@ -302,6 +304,8 @@ BUILDDIR=$DEFAULT_BUILDDIR
 SETUPSCRIPT=
 FORCE=
 RPMREVISION=
+SETUP_MANIFEST=aglsetup.manifest
+
 while true; do
        case "$1" in
                -m|--machine)      MACHINE=$2; shift 2;;
@@ -371,11 +375,11 @@ function genconfig() {
        # step 1: run usual OE setup to generate conf dir
        export TEMPLATECONF=$(cd $SCRIPTDIR/../templates/base && pwd -P)
        debug "running oe-init-build-env with TEMPLATECONF=$TEMPLATECONF"
-       info "   Running $METADIR/poky/oe-init-build-env"
+       info "   Running $METADIR/external/poky/oe-init-build-env"
        info "   Templates dir: $TEMPLATECONF"
 
        CURDIR=$(pwd -P)
-       . $METADIR/poky/oe-init-build-env $BUILDDIR >/dev/null
+       . $METADIR/external/poky/oe-init-build-env $BUILDDIR >/dev/null
        cd $CURDIR
 
        # step 2: concatenate other remaining fragments coming from base
@@ -407,6 +411,12 @@ function genconfig() {
                append_fragment $BUILDDIR/conf/local.conf $file
                verbose "      + $file"
        done
+       # special fragment to call distro-manifest-generator.sh from 
+       # meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb
+       append_fragment $BUILDDIR/conf/local.conf /dev/stdin "# generated by $(realpath $BASH_SOURCE)" <<-EOF
+               DISTRO_SETUP_MANIFEST = "$(realpath -Ls $BUILDDIR)/$SETUP_MANIFEST"
+               DISTRO_MANIFEST_GENERATOR = "$(dirname $(realpath $BASH_SOURCE))/distro-manifest-generator.sh"
+       EOF
 
        FRAGMENTS_SETUP=$(sed 's/ /\n/g' <<<$FRAGMENTS_SETUP | sort)
        debug "setup fragments: $FRAGMENTS_SETUP"
@@ -455,6 +465,8 @@ EOF
        $BUILDDIR/conf/setup.* \
        $BUILDDIR/conf/*.log
 
+####### step 1: generate configuration file #######
+
 if [[ -f $BUILDDIR/conf/local.conf || -f $BUILDDIR/conf/bblayers.conf ]]; then
        info "Configuration files already exist:"
        for x in $BUILDDIR/conf/local.conf $BUILDDIR/conf/bblayers.conf; do
@@ -466,11 +478,48 @@ else
        genconfig
 fi
 
+####### step 2: generate aglsetup.manifest #######
+
+infon "Generating setup manifest: $BUILDDIR/$SETUP_MANIFEST ... "
+for x in /etc/os-release /usr/lib/os-release; do
+       [[ -f $x ]] && . $x
+done
+FEATURES_md5=$(echo $FEATURES|md5sum -|awk '{print $1;}')
+cat <<EOF >$BUILDDIR/$SETUP_MANIFEST
+# ----------------------------------------------
+# This fragment has been generated by $SCRIPT at setup time
+
+# distro name
+DIST_DISTRO_NAME="AGL"
+
+# target machine as passed to $SCRIPT
+DIST_MACHINE="$MACHINE"
+
+# features as resolved by $SCRIPT
+DIST_FEATURES="$FEATURES"
+DIST_FEATURES_MD5="${FEATURES_md5}"
+
+# build host information deduced from os-release
+DIST_BUILD_HOST="$(id -un)@$(hostname -f || hostname || hostname -s)"
+DIST_BUILD_OS="${PRETTY_NAME:-${NAME} ${VERSION} [COMPUTED]}"
+
+# meta directory
+DIST_METADIR="$METADIR"
+
+# timestamp
+DIST_SETUP_TS="$(date -u +%Y%m%d_%H%M%S_%Z)"
+
+# ------------ end of $SCRIPT fragment --------
+EOF
+info "OK"
+
+####### step 3: generate agl-init-build-env #######
+
 # always generate setup script in builddir: it can be sourced later manually without re-running the setup
 infon "Generating setup file: $BUILDDIR/agl-init-build-env ... "
 
 cat <<EOF >$BUILDDIR/agl-init-build-env
-. $METADIR/poky/oe-init-build-env $BUILDDIR
+. $METADIR/external/poky/oe-init-build-env $BUILDDIR
 if [ -n "\$DL_DIR" ]; then
        BB_ENV_EXTRAWHITE="\$BB_ENV_EXTRAWHITE DL_DIR"
 fi
@@ -482,6 +531,8 @@ unset TEMPLATECONF
 EOF
 info "OK"
 
+####### step 4: generate output script #######
+
 # finally, generate output script if requested by caller
 if [[ -n "$SETUPSCRIPT" ]]; then
        debug "generating setupscript in $SETUPSCRIPT"