scons: Automatically install the git style hook
Add a check in the main SConscript that installs the git pre-commit hook in util/ if git is used. Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Curtis Dunham <curtis.dunham@arm.com> [andreas.sandberg@arm.com: Cleanups suggested by Steve] Reviewed-by: Steve Reinhardt <steve.reinhardt@amd.com> --HG-- extra : rebase_source : 4b805cdd74bc5442a65abf8a62e3e341f352c04e
This commit is contained in:
parent
5f9c0f8a24
commit
588ecad919
1 changed files with 36 additions and 6 deletions
42
SConstruct
42
SConstruct
|
@ -1,6 +1,6 @@
|
||||||
# -*- mode:python -*-
|
# -*- mode:python -*-
|
||||||
|
|
||||||
# Copyright (c) 2013, 2015 ARM Limited
|
# Copyright (c) 2013, 2015, 2016 ARM Limited
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# The license below extends only to copyright in the software and shall
|
# The license below extends only to copyright in the software and shall
|
||||||
|
@ -260,13 +260,18 @@ main.AppendENVPath('PYTHONPATH', extra_python_paths)
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
hgdir = main.root.Dir(".hg")
|
hgdir = main.root.Dir(".hg")
|
||||||
|
gitdir = main.root.Dir(".git")
|
||||||
|
|
||||||
mercurial_style_message = """
|
|
||||||
|
style_message = """
|
||||||
You're missing the gem5 style hook, which automatically checks your code
|
You're missing the gem5 style hook, which automatically checks your code
|
||||||
against the gem5 style rules on hg commit and qrefresh commands. This
|
against the gem5 style rules on hg commit and qrefresh commands. This
|
||||||
script will now install the hook in your .hg/hgrc file.
|
script will now install the hook in your %s.
|
||||||
Press enter to continue, or ctrl-c to abort: """
|
Press enter to continue, or ctrl-c to abort: """
|
||||||
|
|
||||||
|
mercurial_style_message = style_message % ".hg/hgrc file"
|
||||||
|
git_style_message = style_message % ".git/hooks/ directory"
|
||||||
|
|
||||||
mercurial_style_upgrade_message = """
|
mercurial_style_upgrade_message = """
|
||||||
Your Mercurial style hooks are not up-to-date. This script will now
|
Your Mercurial style hooks are not up-to-date. This script will now
|
||||||
try to automatically update them. A backup of your hgrc will be saved
|
try to automatically update them. A backup of your hgrc will be saved
|
||||||
|
@ -293,9 +298,13 @@ hook. It is important.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Check for style hook and prompt for installation if it's not there.
|
# Check for style hook and prompt for installation if it's not there.
|
||||||
# Skip this if --ignore-style was specified, there's no .hg dir to
|
# Skip this if --ignore-style was specified, there's no interactive
|
||||||
# install a hook in, or there's no interactive terminal to prompt.
|
# terminal to prompt, or no recognized revision control system can be
|
||||||
if not GetOption('ignore_style') and hgdir.exists() and sys.stdin.isatty():
|
# found.
|
||||||
|
ignore_style = GetOption('ignore_style') or not sys.stdin.isatty()
|
||||||
|
|
||||||
|
# Try wire up Mercurial to the style hooks
|
||||||
|
if not ignore_style and hgdir.exists():
|
||||||
style_hook = True
|
style_hook = True
|
||||||
style_hooks = tuple()
|
style_hooks = tuple()
|
||||||
hgrc = hgdir.File('hgrc')
|
hgrc = hgdir.File('hgrc')
|
||||||
|
@ -359,6 +368,27 @@ if not GetOption('ignore_style') and hgdir.exists() and sys.stdin.isatty():
|
||||||
print "Error updating", hgrc_path
|
print "Error updating", hgrc_path
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Try to wire up git to the style hooks
|
||||||
|
git_pre_commit_hook = gitdir.File("hooks/pre-commit")
|
||||||
|
if not ignore_style and gitdir.exists() and not git_pre_commit_hook.exists():
|
||||||
|
git_style_script = File("util/git-pre-commit.py")
|
||||||
|
|
||||||
|
print git_style_message,
|
||||||
|
try:
|
||||||
|
raw_input()
|
||||||
|
except:
|
||||||
|
print "Input exception, exiting scons.\n"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
rel_style_script = os.path.relpath(
|
||||||
|
git_style_script.get_abspath(),
|
||||||
|
git_pre_commit_hook.Dir(".").get_abspath())
|
||||||
|
os.symlink(rel_style_script, git_pre_commit_hook.get_abspath())
|
||||||
|
except:
|
||||||
|
print "Error updating git pre-commit hook"
|
||||||
|
raise
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
###################################################
|
###################################################
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in a new issue