Replace soong script with a symlink

bootstrap.bash creates a soong script in the output directory using
build/soong/soong.in.  This requires a manual rebootstrap any time
soong.in changes.  Instead, have bootstrap.bash symlink
build/soong/soong.bash to soong in the output directory, and create
a file called .soong.bootstrap in the output directory that contains
the variables that bootstrap.bash sets.

Change-Id: I5e6e54c2e8bdde876941e2e082f9ba177c757cbf
This commit is contained in:
Colin Cross 2015-03-25 14:09:02 -07:00
parent 82df943c5a
commit f7531f1a21
3 changed files with 15 additions and 7 deletions

View file

@ -27,8 +27,8 @@ fi
if [[ $# -eq 0 ]]; then
sed -e "s|@@SrcDir@@|${SRCDIR}|" \
-e "s|@@PrebuiltOS@@|${PREBUILTOS}|" \
${SRCDIR}/build/soong/soong.in > soong
chmod 0770 soong
${SRCDIR}/build/soong/soong.bootstrap.in > .soong.bootstrap
ln -sf ${SRCDIR}/build/soong/soong.bash soong
fi
${SRCDIR}/build/blueprint/bootstrap.bash "$@"

16
soong.in → soong.bash Normal file → Executable file
View file

@ -3,10 +3,18 @@
# Determine the build directory location based on the location of this script.
BPBUILD="${BASH_SOURCE[0]}"
BUILDDIR=`dirname "${BASH_SOURCE[0]}"`
BOOTSTRAP=${BUILDDIR}/.soong.bootstrap
# The source directory path and operating system will get written to
# .soong.bootstrap by the bootstrap script.
if [ ! -f ${BUILDDIR}/${BOOTSTRAP} ]; then
echo "Error: soong script must be located in a directory created by bootstrap.bash"
exit 1
fi
source ${BUILDDIR}/.soong.bootstrap
# The source directory path and operating system will get substituted in by
# the bootstrap script.
SRCDIR_IN=@@SrcDir@@
if [[ ${SRCDIR_IN:0:1} == '/' ]]; then
# SRCDIR_IN is an absolute path
SRCDIR=${SRCDIR_IN}
@ -15,8 +23,6 @@ else
SRCDIR=${BUILDDIR}/${SRCDIR_IN}
fi
PREBUILTOS=@@PrebuiltOS@@
# Let Blueprint know that the Ninja we're using performs multiple passes that
# can regenerate the build manifest.
export BLUEPRINT_NINJA_HAS_MULTIPASS=1

2
soong.bootstrap.in Normal file
View file

@ -0,0 +1,2 @@
SRCDIR_IN=@@SrcDir@@
PREBUILTOS=@@PrebuiltOS@@