poky-init-build-env: Breakup the environment script

Break up the scripts/poky-env-internal into two parts:
  1) Chunk that is sourced and sets up the environment
  2) Chunk that is executed and configures the build directory

OEROOT configuration was moved into the initial poky-init-build-env script.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
This commit is contained in:
Mark Hatle 2010-11-24 16:25:28 -06:00 committed by Richard Purdie
parent 9975c00c1a
commit 86b6b09337
3 changed files with 129 additions and 94 deletions

View File

@ -24,6 +24,12 @@ if [ "x$0" = "x./poky-init-build-env" ]; then
elif [ "x$BASH_SOURCE" = "x" ]; then
echo "Error: You are not running a Bash shell. Please use Bash or add support for your shell to the init scripts"
else
. `dirname $BASH_SOURCE`/scripts/poky-env-internal
OEROOT="`dirname $BASH_SOURCE`"
OEROOT=`readlink -f "$OEROOT"`
export OEROOT
. $OEROOT/scripts/poky-env-internal
$OEROOT/scripts/poky-setup-builddir
unset OEROOT
[ -n "$BUILDDIR" ] && cd $BUILDDIR
fi

View File

@ -18,9 +18,11 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# scripts/ is a sub-directory of OEROOT, we use readlink to get the full path
SCRIPTPATH=`readlink -f "$BASH_SOURCE"`
OEROOT="`dirname $SCRIPTPATH`/../"
# It is assumed OEROOT is already defined when this is called
if [ -z "$OEROOT" ]; then
echo >&2 "Error: OEROOT is not defined!"
return
fi
if [ "x$BDIR" = "x" ]; then
if [ "x$1" = "x" ]; then
@ -36,109 +38,23 @@ else
fi
unset BDIR
mkdir -p $BUILDDIR/conf
if ! (test -w "$BUILDDIR"); then
echo >&2 "Error: Cannot write to $BUILDDIR, perhaps try sourcing with a writable path? i.e. . poky-init-build-env ~/my-build"
return
fi
BITBAKEDIR="$OEROOT/bitbake$BBEXTRA/"
PATH="${OEROOT}/scripts:$BITBAKEDIR/bin/:$PATH"
# Remove any symlinks from paths
BITBAKEDIR=`readlink -f "$BITBAKEDIR"`
BUILDDIR=`readlink -f "$BUILDDIR"`
OEROOT=`readlink -f "$OEROOT"`
cd "$BUILDDIR"
if ! (test -d "$BITBAKEDIR" && test -d "$BUILDDIR"); then
echo >&2 "Error: Not all directories exist! Did you run this script in poky directory?"
if ! (test -d "$BITBAKEDIR"); then
echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist! Did you source the script in the poky directory?"
return
fi
#
# $POKYCONF can point to a directory for the template local.conf & bblayers.conf
#
if [ "x" != "x$POKYCONF" ]; then
if ! (test -d "$POKYCONF"); then
# Allow POKYCONF=meta-xyz/conf as a shortcut
if [ -d "$OEROOT/$POKYCONF" ]; then
POKYCONF="$OEROOT/$POKYCONF"
fi
if ! (test -d "$POKYCONF"); then
echo >&2 "Error: '$POKYCONF' must be a directory containing local.conf & bblayers.conf"
return
fi
fi
POKYLAYERCONF="$POKYCONF/bblayers.conf"
POKYLOCALCONF="$POKYCONF/local.conf"
fi
if [ "x" = "x$POKYLOCALCONF" ]; then
POKYLOCALCONF="$OEROOT/meta/conf/local.conf.sample"
fi
if ! (test -r "$BUILDDIR/conf/local.conf"); then
cat <<EOM
You had no conf/local.conf file. Poky has created this configuration file for
you with some default values. You may wish to edit it to use a different MACHINE
(target hardware) or enable parallel build options to take advantage of multiple
cores for example. See the file for more information as common configuration
options are commented.
Also, for more information see the Poky handbook:
http://pokylinux.org/doc/poky-handbook.html
EOM
cp -f $POKYLOCALCONF $BUILDDIR/conf/local.conf
fi
if [ "x" = "x$POKYLAYERCONF" ]; then
POKYLAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
fi
if ! (test -r "$BUILDDIR/conf/bblayers.conf"); then
cat <<EOM
You had no conf/bblayers.conf file. Poky has created this configuration file for
you with some default values. To add additional metadata layers into your
configuration please add entries to this file.
For more information see the Poky handbook:
http://pokylinux.org/doc/poky-handbook.html
EOM
# Put the abosolute path to the layers in bblayers.conf so we can run
# bitbake without the init script after the first run
sed "s|##POKYBASE##|$OEROOT|g" $POKYLAYERCONF > $BUILDDIR/conf/bblayers.conf
fi
# Prevent disturbing a new GIT clone in same console
unset POKYLOCALCONF
unset POKYLAYERCONF
PATH="${OEROOT}/scripts:$BITBAKEDIR/bin/:$PATH"
unset BITBAKEDIR
unset OEROOT
# Used by the poky-qemu script
export BUILDDIR
export PATH
# Stop multi byte characters breaking the patcher stuff - This is for Redhat / Fedora people really
export LANG=C
export BB_ENV_EXTRAWHITE="MACHINE DISTRO POKYMODE POKYLIBC http_proxy ftp_proxy https_proxy all_proxy ALL_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY SDKMACHINE BB_NUMBER_THREADS GIT_PROXY_COMMAND PSEUDO_DISABLED"
cat <<EOM
### Shell environment set up for Poky builds. ###
You can now run 'bitbake <target>'
Common targets are:
poky-image-minimal
poky-image-sato
meta-toolchain
meta-toolchain-sdk
You can also run generated qemu images with a command like 'poky-qemu qemux86'
EOM

113
scripts/poky-setup-builddir Executable file
View File

@ -0,0 +1,113 @@
#!/bin/sh
# Poky Build Enviroment Setup Script
#
# Copyright (C) 2006-2007 OpenedHand Ltd.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
if [ -z "$BUILDDIR" ]; then
echo >&2 "Error: The build directory (BUILDDIR) must be set!"
exit 1
fi
mkdir -p $BUILDDIR/conf
if ! (test -d "$BUILDDIR"); then
echo >&2 "Error: The builddir ($BUILDDIR) does not exist!"
exit 1
fi
if ! (test -w "$BUILDDIR"); then
echo >&2 "Error: Cannot write to $BUILDDIR, perhaps try sourcing with a writable path? i.e. . poky-init-build-env ~/my-build"
exit 1
fi
cd "$BUILDDIR"
#
# $POKYCONF can point to a directory for the template local.conf & bblayers.conf
#
if [ "x" != "x$POKYCONF" ]; then
if ! (test -d "$POKYCONF"); then
# Allow POKYCONF=meta-xyz/conf as a shortcut
if [ -d "$OEROOT/$POKYCONF" ]; then
POKYCONF="$OEROOT/$POKYCONF"
fi
if ! (test -d "$POKYCONF"); then
echo >&2 "Error: '$POKYCONF' must be a directory containing local.conf & bblayers.conf"
return
fi
fi
POKYLAYERCONF="$POKYCONF/bblayers.conf"
POKYLOCALCONF="$POKYCONF/local.conf"
fi
if [ "x" = "x$POKYLOCALCONF" ]; then
POKYLOCALCONF="$OEROOT/meta/conf/local.conf.sample"
fi
if ! (test -r "$BUILDDIR/conf/local.conf"); then
cat <<EOM
You had no conf/local.conf file. Poky has created this configuration file for
you with some default values. You may wish to edit it to use a different MACHINE
(target hardware) or enable parallel build options to take advantage of multiple
cores for example. See the file for more information as common configuration
options are commented.
Also, for more information see the Poky handbook:
http://pokylinux.org/doc/poky-handbook.html
EOM
cp -f $POKYLOCALCONF $BUILDDIR/conf/local.conf
fi
if [ "x" = "x$POKYLAYERCONF" ]; then
POKYLAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
fi
if ! (test -r "$BUILDDIR/conf/bblayers.conf"); then
cat <<EOM
You had no conf/bblayers.conf file. Poky has created this configuration file for
you with some default values. To add additional metadata layers into your
configuration please add entries to this file.
For more information see the Poky handbook:
http://pokylinux.org/doc/poky-handbook.html
EOM
# Put the abosolute path to the layers in bblayers.conf so we can run
# bitbake without the init script after the first run
sed "s|##POKYBASE##|$OEROOT|g" $POKYLAYERCONF > $BUILDDIR/conf/bblayers.conf
fi
# Prevent disturbing a new GIT clone in same console
unset POKYLOCALCONF
unset POKYLAYERCONF
cat <<EOM
### Shell environment set up for Poky builds. ###
You can now run 'bitbake <target>'
Common targets are:
poky-image-minimal
poky-image-sato
meta-toolchain
meta-toolchain-sdk
You can also run generated qemu images with a command like 'poky-qemu qemux86'
EOM