diff options
author | Norbert Thiebaud <nthiebaud@gmail.com> | 2011-11-16 06:12:09 -0600 |
---|---|---|
committer | Norbert Thiebaud <nthiebaud@gmail.com> | 2011-11-16 06:18:53 -0600 |
commit | cb70868bdae30e01323afeb7cc6021a6b10003f0 (patch) | |
tree | a10ca5ca10df21f30246f61a2326275f7f58af70 | |
parent | 1d5aaeacfce983bf7a4a7c1f056fd21ac730b8e8 (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-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile.in | 4 | ||||
-rwxr-xr-x | build_env.in | 11 | ||||
-rw-r--r-- | configure.in | 7 | ||||
-rwxr-xr-x | solenv/bin/lo_find_src_root | 23 | ||||
-rwxr-xr-x | solenv/bin/lo_proxy_start | 31 |
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 + |