aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2015-03-25 14:09:02 -0700
committerColin Cross <ccross@android.com>2015-03-25 14:09:02 -0700
commitf7531f1a21aaa56ef53cb1714e954e487528109f (patch)
tree600dc39036442c0952a4446f6ebf7ea932e3c14b
parent82df943c5ae6214206875dd38af77ac54e780cfb (diff)
downloadbuild_soong-f7531f1a21aaa56ef53cb1714e954e487528109f.tar.gz
build_soong-f7531f1a21aaa56ef53cb1714e954e487528109f.tar.bz2
build_soong-f7531f1a21aaa56ef53cb1714e954e487528109f.zip
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
-rwxr-xr-xbootstrap.bash4
-rwxr-xr-x[-rw-r--r--]soong.bash (renamed from soong.in)16
-rw-r--r--soong.bootstrap.in2
3 files changed, 15 insertions, 7 deletions
diff --git a/bootstrap.bash b/bootstrap.bash
index 0aa073cc..ca0c0625 100755
--- a/bootstrap.bash
+++ b/bootstrap.bash
@@ -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 "$@"
diff --git a/soong.in b/soong.bash
index 51882db9..fc330d0b 100644..100755
--- a/soong.in
+++ b/soong.bash
@@ -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
diff --git a/soong.bootstrap.in b/soong.bootstrap.in
new file mode 100644
index 00000000..5d74567a
--- /dev/null
+++ b/soong.bootstrap.in
@@ -0,0 +1,2 @@
+SRCDIR_IN=@@SrcDir@@
+PREBUILTOS=@@PrebuiltOS@@