<div dir="ltr">Hi Sean,<div><br></div><div>Looks like this is breaking builds in Green Dragon (and locally for me from master branch). Can you take a look at the failures here?</div><div><br></div><div><a href="http://lab.llvm.org:8080/green/view/LLDB/job/lldb_build_test/26076/console">http://lab.llvm.org:8080/green/view/LLDB/job/lldb_build_test/26076/console</a><br></div><div><br></div><div>Thanks!</div><div>-Tim</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 22, 2017 at 2:57 PM, Sean Callanan via lldb-commits <span dir="ltr"><<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: spyffe<br>
Date: Wed Feb 22 16:57:59 2017<br>
New Revision: 295897<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=295897&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=295897&view=rev</a><br>
Log:<br>
Changed builld-llvm.py to use .json files<br>
<br>
LLDB has many branches in a variety of repositories.<br>
The build-script.py file is subtly different for each set.<br>
This is unnecessary and causes merge headaches.<br>
<br>
This patch makes build-llvm.py consult a directory full<br>
of .json files, each one of which matches a particular<br>
branch using a regular expression.<br>
<br>
Differential revision: <a href="https://reviews.llvm.org/D30275" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D30275</a><br>
<br>
Added:<br>
    lldb/trunk/scripts/Xcode/repo.<wbr>py<br>
    lldb/trunk/scripts/Xcode/<wbr>repos/<br>
    lldb/trunk/scripts/Xcode/<wbr>repos/svn-trunk.json<br>
Modified:<br>
    lldb/trunk/scripts/Xcode/<wbr>build-llvm.py<br>
<br>
Modified: lldb/trunk/scripts/Xcode/<wbr>build-llvm.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Xcode/build-llvm.py?rev=295897&r1=295896&r2=295897&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lldb/trunk/scripts/<wbr>Xcode/build-llvm.py?rev=<wbr>295897&r1=295896&r2=295897&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/scripts/Xcode/<wbr>build-llvm.py (original)<br>
+++ lldb/trunk/scripts/Xcode/<wbr>build-llvm.py Wed Feb 22 16:57:59 2017<br>
@@ -6,6 +6,7 @@ import fnmatch<br>
 import os<br>
 import platform<br>
 import re<br>
+import repo<br>
 import subprocess<br>
 import sys<br>
<br>
@@ -17,42 +18,38 @@ from lldbbuild import *<br>
 def LLVM_HASH_INCLUDES_DIFFS():<br>
     return False<br>
<br>
-# The use of "x = "..."; return x" here is important because tooling looks for<br>
-# it with regexps.  Only change how this works if you know what you are doing.<br>
-<br>
-<br>
-def LLVM_REF():<br>
-    llvm_ref = "master"<br>
-    return llvm_ref<br>
-<br>
-<br>
-def CLANG_REF():<br>
-    clang_ref = "master"<br>
-    return clang_ref<br>
-<br>
 # For use with Xcode-style builds<br>
<br>
+def process_vcs(vcs):<br>
+    return {<br>
+        "svn": VCS.svn,<br>
+        "git": VCS.git<br>
+    }[vcs]<br>
+<br>
+def process_root(name):<br>
+    return {<br>
+        "llvm": llvm_source_path(),<br>
+        "clang": clang_source_path(),<br>
+        "ninja": ninja_source_path()<br>
+    }[name]<br>
+<br>
+def process_repo(r):<br>
+    return {<br>
+        'name': r["name"],<br>
+        'vcs': process_vcs(r["vcs"]),<br>
+        'root': process_root(r["name"]),<br>
+        'url': r["url"],<br>
+        'ref': r["ref"]<br>
+    }<br>
<br>
 def XCODE_REPOSITORIES():<br>
-    return [<br>
-        {'name': "llvm",<br>
-         'vcs': VCS.git,<br>
-         'root': llvm_source_path(),<br>
-         'url': "<a href="http://llvm.org/git/llvm.git" rel="noreferrer" target="_blank">http://llvm.org/git/llvm.git</a>"<wbr>,<br>
-         'ref': LLVM_REF()},<br>
-<br>
-        {'name': "clang",<br>
-         'vcs': VCS.git,<br>
-         'root': clang_source_path(),<br>
-         'url': "<a href="http://llvm.org/git/clang.git" rel="noreferrer" target="_blank">http://llvm.org/git/clang.git</a><wbr>",<br>
-         'ref': CLANG_REF()},<br>
-<br>
-        {'name': "ninja",<br>
-         'vcs': VCS.git,<br>
-         'root': ninja_source_path(),<br>
-         'url': "<a href="https://github.com/ninja-build/ninja.git" rel="noreferrer" target="_blank">https://github.com/ninja-<wbr>build/ninja.git</a>",<br>
-         'ref': "master"}<br>
-    ]<br>
+    identifier = repo.identifier()<br>
+    if identifier == None:<br>
+        sys.exit("Couldn't identify the current branch")<br>
+    set = repo.find(identifier)<br>
+    if set == None:<br>
+        sys.exit("Couldn't find a repository set for the current branch")<br>
+    return [process_repo(r) for r in set]<br>
<br>
<br>
 def get_c_compiler():<br>
<br>
Added: lldb/trunk/scripts/Xcode/repo.<wbr>py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Xcode/repo.py?rev=295897&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lldb/trunk/scripts/<wbr>Xcode/repo.py?rev=295897&view=<wbr>auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/scripts/Xcode/repo.<wbr>py (added)<br>
+++ lldb/trunk/scripts/Xcode/repo.<wbr>py Wed Feb 22 16:57:59 2017<br>
@@ -0,0 +1,33 @@<br>
+import json<br>
+import os<br>
+import re<br>
+import subprocess<br>
+<br>
+def identifier():<br>
+       try:<br>
+               svn_output = subprocess.check_output(["svn"<wbr>, "info", "--show-item", "url"], stderr=subprocess.STDOUT).<wbr>rstrip()<br>
+               return svn_output<br>
+       except:<br>
+               pass<br>
+       try:<br>
+               git_remote_and_branch = subprocess.check_output(["git"<wbr>, "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]).rstrip()<br>
+               git_remote = git_remote_and_branch.split("/<wbr>")[0]<br>
+               git_branch = "/".join(git_remote_and_<wbr>branch.split("/")[1:])<br>
+               git_url = subprocess.check_output(["git"<wbr>, "remote", "get-url", git_remote]).rstrip()<br>
+               return git_url + ":" + git_branch<br>
+       except:<br>
+               pass<br>
+       return None<br>
+<br>
+def find(identifier):<br>
+       dir = os.path.dirname(os.path.<wbr>realpath(__file__))<br>
+       repos_dir = os.path.join(dir, "repos")<br>
+       json_regex = re.compile(r"^.*.json$")<br>
+       override_path = os.path.join(repos_dir, "OVERRIDE.json")<br>
+       if os.path.isfile(override_path):<br>
+               override_set = json.load(open(override_path))<br>
+               return override_set["repos"]<br>
+       for set in [json.load(open(os.path.join(<wbr>repos_dir, f))) for f in filter(json_regex.match, os.listdir(repos_dir))]:<br>
+               if re.match(set["regexp"], identifier):<br>
+                       return set["repos"]<br>
+       return None<br>
<br>
Added: lldb/trunk/scripts/Xcode/<wbr>repos/svn-trunk.json<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Xcode/repos/svn-trunk.json?rev=295897&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lldb/trunk/scripts/<wbr>Xcode/repos/svn-trunk.json?<wbr>rev=295897&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/scripts/Xcode/<wbr>repos/svn-trunk.json (added)<br>
+++ lldb/trunk/scripts/Xcode/<wbr>repos/svn-trunk.json Wed Feb 22 16:57:59 2017<br>
@@ -0,0 +1,19 @@<br>
+{<br>
+    "regexp" : ".*llvm\\.org.*",<br>
+    "repos" : [<br>
+        {"name": "llvm",<br>
+         "vcs": "git",<br>
+         "url": "<a href="http://llvm.org/git/llvm.git" rel="noreferrer" target="_blank">http://llvm.org/git/llvm.git</a>"<wbr>,<br>
+         "ref": "master"},<br>
+<br>
+        {"name": "clang",<br>
+         "vcs": "git",<br>
+         "url": "<a href="http://llvm.org/git/clang.git" rel="noreferrer" target="_blank">http://llvm.org/git/clang.git</a><wbr>",<br>
+         "ref": "master"},<br>
+<br>
+        {"name": "ninja",<br>
+         "vcs": "git",<br>
+         "url": "<a href="https://github.com/ninja-build/ninja.git" rel="noreferrer" target="_blank">https://github.com/ninja-<wbr>build/ninja.git</a>",<br>
+         "ref": "master"}<br>
+    ]<br>
+}<br>
<br>
<br>
______________________________<wbr>_________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@lists.llvm.org">lldb-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/lldb-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Tim <<a href="mailto:penryu@gmail.com" target="_blank">penryu@gmail.com</a>></div>
</div>