7bcd6ecea6
As the code was moved from the Makefile.inc to a separate file in
commit 9ab8ae6a
(util/gitconfig: Make gitconfig a bash script),`$(MAKE)`
was replaced by `remake`, introducing dependency on this tool which is
basically a `make` with debugging capabilities. Many developers don't
have `remake` installed, leading to pre-commit hooks being not executed
properly. Apparently this was an unintentional change.
Furthermore, special treatment of `make` tool via the `%MAKE%`
substitution performed during hooks' deployment is still desired. Use
case is calling `remake gitconfig` to set `remake` as the `make` tool in
the hooks. To accomplish this, add a parameter that is passed from the
Makefile.inc to gitconfig.sh.
Change-Id: Ia78e06567b904b342dc9b7778569201fe02e6897
Signed-off-by: Alex Thiessen <alex.thiessen.de+coreboot@gmail.com>
Reviewed-on: https://review.coreboot.org/23096
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Martin Roth <martinroth@google.com>
71 lines
2.4 KiB
Bash
Executable file
71 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
##
|
|
## This file is part of the coreboot project.
|
|
##
|
|
## Copyright (C) 2011 secunet Security Networks AG
|
|
##
|
|
## This program is free software; you can redistribute it and/or modify
|
|
## it under the terms of the GNU General Public License as published by
|
|
## the Free Software Foundation; version 2 of the License.
|
|
##
|
|
## This program is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU General Public License for more details.
|
|
##
|
|
|
|
# In the hooks, use the same `make` tool as used when running `make gitconfig`,
|
|
# e.g. `remake gitconfig` will set `remake` to be run by the hooks.
|
|
MAKE="${1:-make}"
|
|
|
|
if ! { cdup="$(git rev-parse --show-cdup 2>/dev/null)" && [ -z "${cdup}" ]; }
|
|
then
|
|
echo "Error: Not in root of a git repository"
|
|
exit 1
|
|
fi
|
|
coreboot_hooks=$(git rev-parse --git-path hooks)
|
|
mkdir -p "${coreboot_hooks}"
|
|
for hook in commit-msg pre-commit ; do
|
|
if [ util/gitconfig/${hook} -nt "${coreboot_hooks}/${hook}" ] \
|
|
|| [ ! -x "${coreboot_hooks}/${hook}" ]
|
|
then
|
|
sed -e "s,%MAKE%,${MAKE},g" util/gitconfig/$hook \
|
|
> "${coreboot_hooks}/${hook}"
|
|
chmod +x "${coreboot_hooks}/${hook}"
|
|
fi
|
|
done
|
|
# Now set up the hooks for 3rdparty/
|
|
for submodule in 3rdparty/blobs libhwbase libgfxinit; do
|
|
hooks=$(git -C "$(git config --file .gitmodules --get \
|
|
submodule.${submodule}.path)" rev-parse --git-path hooks)
|
|
if [ -d "${hooks}" ]; then
|
|
if [ util/gitconfig/commit-msg -nt "${hooks}/commit-msg" ] \
|
|
|| [ ! -x "${hooks}/commit-msg" ]
|
|
then
|
|
sed -e "s,%MAKE%,${MAKE},g" util/gitconfig/commit-msg \
|
|
> "${hooks}/commit-msg"
|
|
chmod +x "${hooks}/commit-msg"
|
|
fi
|
|
fi
|
|
done
|
|
for d in 3rdparty/{blobs,libhwbase,libgfxinit}; do
|
|
if [ -d $d ]; then
|
|
(cd $d || exit 1
|
|
git config remote.origin.push HEAD:refs/for/master)
|
|
fi
|
|
done
|
|
|
|
git config remote.origin.push HEAD:refs/for/master
|
|
git config alias.sup "!git submodule update --remote --rebase && \
|
|
git submodule update --init --checkout"
|
|
|
|
git config alias.sup-destroy "!git submodule deinit --all --force; \
|
|
git submodule update --init --checkout"
|
|
|
|
{ git config --includes user.name && \
|
|
git config --includes user.email; } >/dev/null || \
|
|
{ printf "Please configure your name and email in git:\n\n\
|
|
git config --global user.name \"Your Name Comes Here\"\n\
|
|
git config --global user.email your.email@example.com\n"; \
|
|
exit 1; }
|