#!/bin/bash
+find_and_ack_eula() {
+ # Handle EULA , if needed. This is a generic method to handle BSPs
+ # that might (or not) come with a EULA. If a machine has a EULA, we
+ # assume that its corresponding layers has conf/EULA/$MACHINE file
+ # with the EULA text, which we will display to the user and request
+ # for acceptance. If accepted, the variable ACCEPT_EULA_$MACHINE is
+ # set to 1 in local.conf, which can later be used by the BSP.
+ # If the env variable EULA_$MACHINE is set it is used by default,
+ # without prompting the user.
+ # FIXME: there is a potential issue if the same $MACHINE is set in more than one layer.. but we should assert that earlier
+ EULA=$(find $1 -print | grep "conf/eula/$MACHINE" | grep -v scripts | grep -v openembedded-core || true)
+ if [ -n "$EULA" ]; then
+ # remove '-' since we are constructing a bash variable name here
+ EULA_MACHINE="EULA_$(echo $MACHINE | sed 's/-//g')"
+ # NOTE: indirect reference / dynamic variable
+ if [ -n "${!EULA_MACHINE}" ]; then
+ # the EULA_$MACHINE variable is set in the environment, so we just configure
+ # ACCEPT_EULA_$MACHINE in local.conf
+ EULA_ACCEPT=${!EULA_MACHINE}
+ else
+ # so we need to ask user if he/she accepts the EULA:
+ cat <<EOF
+The BSP for $MACHINE depends on packages and firmware which are covered by an
+End User License Agreement (EULA). To have the right to use these binaries
+in your images, you need to read and accept the following...
+
+The firmware package can contains several types
+of firmware (depending on BSP):
+
+* bootloaders: the first stage bootloaders are proprietary for this
+ board, they are included in this firmware package.
+* firmware for the power management 'companion' core: on QCOM SoC some
+ power management features are implemented in a companion core , called
+ RPM, and not on the main CPU.
+* firmware for GPU, WLAN, DSP/GPS and video codecs. These firmware are
+ used by their respective linux drivers (DRM, wlan, v4l2, .. ) and are
+ loaded on-demand by the main CPU onto the various cores on the SoC.
+EOF
+
+ echo
+ REPLY=
+ while [ -z "$REPLY" ]; do
+ echo -n "Do you read the EULA ? (y/n) "
+ read REPLY
+ case "$REPLY" in
+ y|Y)
+ READ_EULA=1
+ ;;
+ n|N)
+ READ_EULA=0
+ ;;
+ *)
+ REPLY=
+ ;;
+ esac
+ done
+
+ if [ "$READ_EULA" == 1 ]; then
+ more -d ${EULA}
+ echo
+ REPLY=
+ while [ -z "$REPLY" ]; do
+ echo -n "Do you accept the EULA you just read? (y/n) "
+ read REPLY
+ case "$REPLY" in
+ y|Y)
+ echo "EULA has been accepted."
+ EULA_ACCEPT=1
+ ;;
+ n|N)
+ echo "EULA has not been accepted."
+ ;;
+ *)
+ REPLY=
+ ;;
+ esac
+ done
+ fi
+ fi
+ fi
+}
+
if [ -z $1 ]; then
echo -e "Usage: source envsetup.sh <board/device> [build dir]"
return 1
fi
MACHINE="$1"
+echo "MACHINE=$MACHINE"
-# set template conf for each <board/device>
-if [ -z "$TEMPLATECONF" ]; then
- TEMPLATECONF="$PWD/meta-agl-demo/templates/$MACHINE/conf"
-fi
+EULA_ACCEPT=0
case "$MACHINE" in
"porter")
TEMPLATECONF="$PWD/meta-renesas/meta-rcar-gen2/conf"
fi
;;
+ "porter-nogfx")
+ MACHINE="porter"
+ if [ ! -d "$TEMPLATECONF" ]; then
+ # set template conf for R-Car2 M2 Porter board
+ TEMPLATECONF="$PWD/meta-renesas/meta-rcar-gen2/conf"
+ fi
+ ;;
+ "raspberrypi3")
+ ;;
+ "raspberrypi2")
+ ;;
"intel-corei7-64")
;;
+ "minnowboard")
+ # alias for minnowboardmax
+ MACHINE="intel-corei7-64"
+ ;;
"qemux86")
;;
"qemux86-64")
;;
+ "dra7xx-evm")
+ ;;
+ "vayu")
+ # nickname for dra7xx-evm
+ MACHINE="dra7xx-evm"
+ ;;
+ "wandboard")
+ ;;
+ "dragonboard-410c")
+ find_and_ack_eula meta-qcom
+ ;;
*)
# nothing to do here
echo "WARN: '$MACHINE' is not tested by AGL Distro"
;;
esac
-echo "envsetup: Set '$1 as MACHINE."
+echo "TEMPALTECONF=$TEMPLATECONF"
+# set template conf for each <board/device>
+if [ -z "$TEMPLATECONF" ]; then
+ # lookup meta-agl-demo first
+ if [ -d "$PWD/meta-agl-demo/templates/$MACHINE/conf" ]; then
+ TEMPLATECONF="$PWD/meta-agl-demo/templates/$MACHINE/conf"
+ # lookup meta-agl 2nd
+ elif [ -d "$PWD/meta-agl/templates/$MACHINE/conf" ]; then
+ TEMPLATECONF="$PWD/meta-agl/templates/$MACHINE/conf"
+ fi
+fi
+echo "TEMPLATECONF=$TEMPLATECONF"
+
+echo "envsetup: Set '$1' as MACHINE."
export MACHINE
+# fallback
if [ ! -d "$TEMPLATECONF" ]; then
# Allow to use templates at meta-agl-demo/conf
TEMPLATECONF="$PWD/meta-agl-demo/conf"
export BB_ENV_EXTRAWHITE
unset TEMPLATECONF
+
+case "$EULA_ACCEPT" in
+ 1)
+ echo "" >> conf/local.conf
+ echo "# EULA" >> conf/local.conf
+ echo "ACCEPT_EULA_$MACHINE = \"1\"" >> conf/local.conf
+ ;;
+ *)
+ ;;
+esac