summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2011-11-16 06:12:09 -0600
committerNorbert Thiebaud <nthiebaud@gmail.com>2011-11-16 06:18:53 -0600
commitcb70868bdae30e01323afeb7cc6021a6b10003f0 (patch)
treea10ca5ca10df21f30246f61a2326275f7f58af70
parent1d5aaeacfce983bf7a4a7c1f056fd21ac730b8e8 (diff)
add utility script and build_env to avoid sourcing Env.Host.sh
The goal is to able to do partial build without having to source Env.Host.sh into one's environment There is 2 way to use this: 1/ copy the scripts lo_find_src_root and lo_proxy_start somewhere in your PATH, and then you can add alias build='lo_proxy_start build' alias deliver='lo_proxy_start deliver' in your .bashrc at that point you can use build and deliver anywhere in the source tree without the need to source anything. This allow you to switch from one source tree to another. the proper SRC_ROOT will be determined automatically based on the current working directory 2/ source build_env build_env only source the bare minimum to allow build and make to work for the associated source tree. If you want to work in a diffrent tree, you need to resource
-rw-r--r--.gitignore1
-rw-r--r--Makefile.in4
-rwxr-xr-xbuild_env.in11
-rw-r--r--configure.in7
-rwxr-xr-xsolenv/bin/lo_find_src_root23
-rwxr-xr-xsolenv/bin/lo_proxy_start31
6 files changed, 74 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore
index 1886dd283801..3fc92e476dec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,6 +45,7 @@
/aclocal.m4
/autom4te.cache
/autogen.lastrun
+/build_env
/ChangeLog
/config.guess
/config.log
diff --git a/Makefile.in b/Makefile.in
index 24a73b79d089..716aad7ce2f9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -86,9 +86,9 @@ ifeq (@BUILD_DMAKE@,YES)
-test -f dmake/Makefile && $(MAKE) -C dmake distclean
endif
rm -rf Env.Host.sh Makefile aclocal.m4 autogen.lastrun autom4te.cache \
- bin/repo-list config.log config.status configure \
+ bin/repo-list build_env config.log config.status configure \
desktop/scripts/soffice.sh ooo.lst post_download post_download.log \
- set_soenv set_soenv.last set_soenv.stamp src.downloaded warn
+ set_soenv set_soenv.last set_soenv.stamp src.downloaded warn
clean: clean-host clean-build
diff --git a/build_env.in b/build_env.in
new file mode 100755
index 000000000000..bf1ace6985dc
--- /dev/null
+++ b/build_env.in
@@ -0,0 +1,11 @@
+
+if hash lo_proxy_start 2>&- ; then
+ base_alias="lo_proxy_start"
+else
+ base_alias="@SRC_ROOT@/solenv/bin/lo_proxy_start"
+fi
+
+alias build="$base_alias build"
+alias deliver="$base_alias deliver"
+
+unset base_alias
diff --git a/configure.in b/configure.in
index 19beb9ae6c8b..17df05396acc 100644
--- a/configure.in
+++ b/configure.in
@@ -40,9 +40,14 @@ AC_SUBST(CROSS_COMPILING)
if test "$build_os" = "cygwin"; then
EXEEXT_FOR_BUILD=.exe
+ SRC_ROOT=`pwd`
+ SRC_ROOT=`cygpath -d "$SRC_ROOT"`
+ SRC_ROOT=`cygpath -u "$SRC_ROOT"`
else
EXEEXT_FOR_BUILD=
+ SRC_ROOT=`pwd`
fi
+AC_SUBST(SRC_ROOT)
AC_SUBST(EXEEXT_FOR_BUILD)
cat /dev/null > warn
@@ -9548,7 +9553,7 @@ else
echo > set_soenv.last
fi
-AC_CONFIG_FILES([ooo.lst set_soenv Makefile bin/repo-list desktop/scripts/soffice.sh])
+AC_CONFIG_FILES([ooo.lst set_soenv Makefile bin/repo-list desktop/scripts/soffice.sh build_env])
AC_OUTPUT
# make sure this is executable
diff --git a/solenv/bin/lo_find_src_root b/solenv/bin/lo_find_src_root
new file mode 100755
index 000000000000..a91c84759822
--- /dev/null
+++ b/solenv/bin/lo_find_src_root
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+#
+# (c) 2011 Norbert Thiebaud. License : GPLv3
+#
+# try to locate the SRC_ROOT based on the working directory
+# we search for first Repository.mk
+# in the current directoyr or its parent, all teh way to /
+# Ths is a heuristic. it works 'most of the times
+# but it could give false positive if you try hard enough
+#
+
+current=$(pwd)
+
+while [ "${current}" != "/" ] ; do
+ if [ -f ${current}/.src_root ] ; then
+ echo "${current}"
+ exit 0;
+ fi
+ current=$(dirname "${current}")
+done
+
+echo "Error cannot determine SRC_ROOT" 1>&2
+exit 1;
diff --git a/solenv/bin/lo_proxy_start b/solenv/bin/lo_proxy_start
new file mode 100755
index 000000000000..67dcabf5c18a
--- /dev/null
+++ b/solenv/bin/lo_proxy_start
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+bin_dir=$(dirname $0)
+action=$(basename $0)
+
+if [ "$action" = "lo_proxy_start" ] ; then
+ action=$1
+ shift
+fi
+
+if [ -z "$SRC_ROOT" ] ; then
+ SRC_ROOT=$($bin_dir/lo_find_src_root) || exit 1
+fi
+if [ -z "$SOLARINC" ] ; then
+ if [ -e "$SRC_ROOT/config.mk" ] ; then
+ . "$SRC_ROOT/config.mk"
+ fi
+ if [ -e "$SRC_ROOT/Env.Host.sh" ] ; then
+ . "$SRC_ROOT/Env.Host.sh"
+ fi
+fi
+
+if [ -e $SRC_ROOT/solenv/bin/$action.pl ] ; then
+ $SRC_ROOT/solenv/bin/$action.pl "$@"
+elif [ -e $SRC_ROOT/solenv/bin/$action.sh ] ; then
+ $SRC_ROOT/solenv/bin/$action.sh "$@"
+else
+ echo "$action.[pl|sh] not found" 2>&1
+ exit 1
+fi
+