summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2017-03-25 02:06:39 -0700
committerGabe Black <gabeblack@google.com>2017-03-26 17:33:57 +0000
commited44b7f6e2e6e737eda6a305afc50d3f958736b1 (patch)
tree692d9a24b4d968814398da933e7ec574bae580c7 /SConstruct
parent03ea796a7906b70a30f61f8cb4a5b6d79ca65589 (diff)
downloadgem5-ed44b7f6e2e6e737eda6a305afc50d3f958736b1.tar.xz
scons: Detect and remove broken git hook symlinks.
When installing a git hook, it's possible for the hook to not "exist" if it's actually a symlink which points to a file that doesn't exist. Trying to create a new symlink in its place without first removing the old one causes a build failure in these cases. If the hook doesn't "exist" but is still a link, that means it's actually a broken link and should be deleted by the hook installation function before any new symlink is created. Change-Id: I59aa51feb5bd74ca33e51e89cde2ceabeb41bd76 Reviewed-on: https://gem5-review.googlesource.com/2540 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'SConstruct')
-rwxr-xr-xSConstruct4
1 files changed, 4 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct
index b4ab0bfb9..4593fdd4b 100755
--- a/SConstruct
+++ b/SConstruct
@@ -393,6 +393,10 @@ def install_git_style_hooks():
print "Warning: Can't install %s, hook already exists." % hook_name
return
+ if hook.islink():
+ print "Warning: Removing broken symlink for hook %s." % hook_name
+ os.unlink(hook.get_abspath())
+
if not git_hooks.exists():
mkdir(git_hooks.get_abspath())