Skip to content
Snippets Groups Projects
Commit f119cd66 authored by Christoph Grüninger's avatar Christoph Grüninger
Browse files

Merge branch 'p/muething/FS1303-vcsetup-submodule-support'

parents b3bd3c0d f6cad156
No related branches found
No related tags found
No related merge requests found
......@@ -45,7 +45,7 @@ canonicalname(){
fdir="`canonicalname \"$fdir\"`"
echo "$fdir/$fname"
fi
# if this is a directory, then create an absolute
# if this is a directory, then create an absolute
# directory name and we are done
if test -d "$file"; then
(cd "$file"; pwd)
......@@ -126,7 +126,7 @@ build_module() {
# disable usage of opts file
if test "x$DUNE_OPTS_FILE" != "x"; then
echo "WARNING: commandline parameters will overwrite setting in opts file \"$DUNE_OPTS_FILE\""
fi
fi
fi
# skip command delimiter
......@@ -146,7 +146,7 @@ build_module() {
eval_control $runcommand $path/$CONTROL
); then eval echo "--- Failed to build \$NAME_${module} ---"; exit 1; fi
trap onfailure EXIT
eval echo "--- \$NAME_${module} done ---"
done
}
......@@ -246,7 +246,7 @@ for command in $COMMANDS; do
done
#
# default implementations for commands...
# default implementations for commands...
# these can be overwritten in the $CONTROL files
#
......@@ -325,7 +325,8 @@ run_default_vcsetup() {
eval "$CMD_FLAGS"
fi
if [ -d .git ]; then
# Check for both a file and a directory to cope with Git submodules
if [ -d .git -o -f .git ] ; then
# Read Whitespace-Hook setting from dune.module file
local SETUPGITHOOK="$($GREP -i "^[$BLANK]*Whitespace-Hook:" dune.module | cut -d ':' -f2 | eval $PARSER_TRIM | tr '[:upper:]' '[:lower:]')"
......@@ -333,33 +334,44 @@ run_default_vcsetup() {
if [ "x$SETUPGITHOOK" = "xyes" ]; then
# we have to install the Git whitespace hook
# The current Git repository might be a submodule, so we have to start by
# determining the location of the commit hook
if [ -f .git ] ; then
# submodule -> .git contains a pointer to the repository
GITHOOKPATH="$(sed 's/gitdir: //' < .git)/hooks/pre-commit"
else
# standard case, .git is the repository
GITHOOKPATH=.git/hooks/pre-commit
fi
if [ -n "$DISABLEWHITESPACEHOOK" ] ; then
# the user doesn't want the Git whitespace hook - deinstall it if necessary and warn the user
echo "WARNING: The current module wants to install the DUNE whitespace hook, but you have disabled the hook in your options!"
echo "WARNING: You will have to make sure that your commits don't introduce any trailing whitespace or indentation with tabs!"
echo "WARNING: Otherwise, your commits might be rejected when trying to push them to an official repository!"
if [ -e .git/hooks/pre-commit ]; then
if [ -e "$GITHOOKPATH" ]; then
# there is a pre-commit hook, check whether it is our whitespace hook
local HOOKTAG="$(head -n 2 .git/hooks/pre-commit | tail -n 1)"
local HOOKTAG="$(eval head -n 2 \"$GITHOOKPATH\" | tail -n 1)"
if [ "x$HOOKTAG" = "x# dune-git-whitespace-hook" ]; then
echo "--> Removing DUNE whitespace hook as requested by the user"
rm .git/hooks/pre-commit
rm "$GITHOOKPATH"
fi
fi
else
# standard handling of Git whitespace hook
if [ ! -e .git/hooks/pre-commit ]; then
if [ ! -e "$GITHOOKPATH" ]; then
# there is no hook yet, we can safely install ours
echo "--> Installing Git pre-commit hook to enforce whitespace policy"
cp -p $PREFIX_DIR/bin/git-whitespace-hook .git/hooks/pre-commit
cp -p "$PREFIX_DIR/bin/git-whitespace-hook" "$GITHOOKPATH"
else
# there is already a hook, check whether it is our whitespace hook
local HOOKTAG="$(head -n 2 .git/hooks/pre-commit | tail -n 1)"
local HOOKTAG="$(eval head -n 2 \"$GITHOOKPATH\" | tail -n 1)"
if [ "x$HOOKTAG" = "x# dune-git-whitespace-hook" ]; then
if [ $PREFIX_DIR/bin/git-whitespace-hook -nt .git/hooks/pre-commit ]; then
if [ "$PREFIX_DIR/bin/git-whitespace-hook" -nt "$GITHOOKPATH" ]; then
echo "--> Updating Git pre-commit hook with newer version"
cp -p $PREFIX_DIR/bin/git-whitespace-hook .git/hooks/pre-commit
cp -p "$PREFIX_DIR/bin/git-whitespace-hook" "$GITHOOKPATH"
fi
else
echo "WARNING: Existing pre-commit hook found!"
......@@ -405,7 +417,7 @@ run_default_vcsetup() {
fi
# Run custom setup scripts
if [ -d .git -o -d .svn -o -d CVS -o -f stamp-vc ]; then
if [ -d .git -o -f .git -o -d .svn -o -d CVS -o -f stamp-vc ]; then
if [ -d .vcsetup/run.d ]; then
for SCRIPT in .vcsetup/run.d/* ; do
if [ -x "$SCRIPT" ]; then
......@@ -474,7 +486,7 @@ run_default_autogen () {
else
echo Skipping dune-autogen
fi
else
else
echo Skipping dune-autogen because of CMake
fi
}
......@@ -483,7 +495,7 @@ run_default_configure () {
PARAMS="$CMD_FLAGS"
if test "x$USE_CMAKE" = "xyes" && test -e $(eval "echo \$PATH_$module")/CMakeLists.txt; then
LOCAL_USE_CMAKE=yes
else
else
LOCAL_USE_CMAKE=no
fi
echo "LOCAL_USE_CMAKE=$LOCAL_USE_CMAKE $(eval "echo \$PATH_$module")/CMakeLists.txt"
......@@ -747,11 +759,11 @@ while test $# -gt 0; do
exit 1
fi
;;
-h|--help)
-h|--help)
command=help
break
;;
-p|--print)
-p|--print)
command=print
break
;;
......@@ -1011,7 +1023,7 @@ EOF
fi
EOF
done
###
###
for mod in $SORTEDMODULES_SUGS; do
name=`eval echo \\$NAME_$mod`
MOD=`echo $mod | tr [:lower:] [:upper:]`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment