mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

Also, write to it only if it does not already exist. As discussed here[1], reading from templateconf.cfg serves no purpose: it exists only if the build directory has already been initialized, and so the scripts will not change anything in the build directory anyway. My adjustment is to keep the file however; it is useful as a pointer to the original template, which can be utilized by config management tools in the future. [1] https://lists.openembedded.org/g/openembedded-architecture/topic/template_handling_in_oe_core/93968540 (From OE-Core rev: bcfaeb8ed503ce1a5add3ec882f0e0c3bccfd3d2) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
128 lines
4.0 KiB
Bash
Executable File
128 lines
4.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# OE Build Environment Setup Script
|
|
#
|
|
# Copyright (C) 2006-2011 Linux Foundation
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
|
|
die() {
|
|
echo Error: "$@" >&2
|
|
exit 1
|
|
}
|
|
|
|
[ -n "$BUILDDIR" ] || die "The build directory (BUILDDIR) must be set!"
|
|
|
|
if [ "$1" = '--help' ] || [ "$1" = '-h' ]; then
|
|
echo 'Usage: oe-setup-builddir'
|
|
echo ''
|
|
echo "OpenEmbedded setup-builddir - setup build directory $BUILDDIR"
|
|
echo ''
|
|
exit 2
|
|
fi
|
|
|
|
mkdir -p "$BUILDDIR/conf"
|
|
|
|
[ -d "$BUILDDIR" ] || die "The build directory ($BUILDDIR) does not exist!"
|
|
[ -w "$BUILDDIR" ] ||
|
|
die "Cannot write to $BUILDDIR, perhaps try sourcing with a writable path? i.e. . oe-init-build-env ~/my-build"
|
|
|
|
# Attempting removal of sticky,setuid bits from BUILDDIR, BUILDDIR/conf
|
|
chmod -st "$BUILDDIR" 2>/dev/null || echo "WARNING: unable to chmod $BUILDDIR"
|
|
chmod -st "$BUILDDIR/conf" 2>/dev/null || echo "WARNING: unable to chmod $BUILDDIR/conf"
|
|
|
|
cd "$BUILDDIR" || die "Failed to change directory to $BUILDDIR!"
|
|
|
|
. "$OEROOT/.templateconf"
|
|
|
|
# Keep the original TEMPLATECONF before possibly prefixing it with $OEROOT below.
|
|
ORG_TEMPLATECONF=$TEMPLATECONF
|
|
|
|
#
|
|
# $TEMPLATECONF can point to a directory for the template local.conf & bblayers.conf
|
|
#
|
|
if [ -n "$TEMPLATECONF" ]; then
|
|
if [ ! -d "$TEMPLATECONF" ]; then
|
|
# Allow TEMPLATECONF=meta-xyz/conf as a shortcut
|
|
if [ -d "$OEROOT/$TEMPLATECONF" ]; then
|
|
TEMPLATECONF="$OEROOT/$TEMPLATECONF"
|
|
fi
|
|
[ -d "$TEMPLATECONF" ] ||
|
|
die "TEMPLATECONF value points to nonexistent directory '$TEMPLATECONF'"
|
|
fi
|
|
templatesdir=$(python3 -c "import sys; print(sys.argv[1].strip('/').split('/')[-2])" "$TEMPLATECONF")
|
|
if [ "$templatesdir" != templates ] || [ ! -f "$TEMPLATECONF/../../layer.conf" ]; then
|
|
die "TEMPLATECONF value (which is $TEMPLATECONF) must point to meta-some-layer/conf/templates/template-name"
|
|
fi
|
|
OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
|
|
OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
|
|
OECORENOTESCONF="$TEMPLATECONF/conf-notes.txt"
|
|
fi
|
|
|
|
unset SHOWYPDOC
|
|
if [ -z "$OECORELOCALCONF" ]; then
|
|
OECORELOCALCONF="$OEROOT/meta/conf/local.conf.sample"
|
|
fi
|
|
if [ ! -r "$BUILDDIR/conf/local.conf" ]; then
|
|
cat <<EOM
|
|
You had no conf/local.conf file. This configuration file has therefore been
|
|
created for you from $OECORELOCALCONF
|
|
You may wish to edit it to, for example, select a different MACHINE (target
|
|
hardware).
|
|
|
|
EOM
|
|
cp -f "$OECORELOCALCONF" "$BUILDDIR/conf/local.conf"
|
|
SHOWYPDOC=yes
|
|
fi
|
|
|
|
if [ -z "$OECORELAYERCONF" ]; then
|
|
OECORELAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
|
|
fi
|
|
if [ ! -r "$BUILDDIR/conf/bblayers.conf" ]; then
|
|
cat <<EOM
|
|
You had no conf/bblayers.conf file. This configuration file has therefore been
|
|
created for you from $OECORELAYERCONF
|
|
To add additional metadata layers into your configuration please add entries
|
|
to conf/bblayers.conf.
|
|
|
|
EOM
|
|
|
|
# Put the absolute path to the layers in bblayers.conf so we can run
|
|
# bitbake without the init script after the first run.
|
|
# ##COREBASE## is deprecated as its meaning was inconsistent, but continue
|
|
# to replace it for compatibility.
|
|
sed -e "s|##OEROOT##|$OEROOT|g" \
|
|
-e "s|##COREBASE##|$OEROOT|g" \
|
|
"$OECORELAYERCONF" > "$BUILDDIR/conf/bblayers.conf"
|
|
SHOWYPDOC=yes
|
|
fi
|
|
|
|
# Prevent disturbing a new GIT clone in same console
|
|
unset OECORELOCALCONF
|
|
unset OECORELAYERCONF
|
|
|
|
# Ending the first-time run message. Show the YP Documentation banner.
|
|
if [ -n "$SHOWYPDOC" ]; then
|
|
cat <<EOM
|
|
The Yocto Project has extensive documentation about OE including a reference
|
|
manual which can be found at:
|
|
https://docs.yoctoproject.org
|
|
|
|
For more information about OpenEmbedded see the website:
|
|
https://www.openembedded.org/
|
|
|
|
EOM
|
|
# unset SHOWYPDOC
|
|
fi
|
|
|
|
if [ -z "$OECORENOTESCONF" ]; then
|
|
OECORENOTESCONF="$OEROOT/meta/conf/conf-notes.txt"
|
|
fi
|
|
[ ! -r "$OECORENOTESCONF" ] || cat "$OECORENOTESCONF"
|
|
unset OECORENOTESCONF
|
|
|
|
if [ ! -f "$BUILDDIR/conf/templateconf.cfg" ]; then
|
|
echo "$ORG_TEMPLATECONF" >"$BUILDDIR/conf/templateconf.cfg"
|
|
fi
|