roomservice: support new manifest formats.

.repo/manifest.xml is no longer a symlink becuase apparently windows
developers need to use repo and windows needs admin for symlinks.

https: //gerrit.googlesource.com/git-repo/+/a269b1cb9dc21dfd598bfea3766206b606ad4589
Change-Id: I88ea0295133959136d7214f13a76b66d89dc88d4
diff --git a/build/tools/roomservice.py b/build/tools/roomservice.py
index 813d0b7..bf502a5 100755
--- a/build/tools/roomservice.py
+++ b/build/tools/roomservice.py
@@ -110,8 +110,21 @@
         if level and (not elem.tail or not elem.tail.strip()):
             elem.tail = i
 
-def get_default_revision():
+def get_manifest_path():
+    '''Find the current manifest path
+    In old versions of repo this is at .repo/manifest.xml
+    In new versions, .repo/manifest.xml includes an include
+    to some arbitrary file in .repo/manifests'''
+
     m = ElementTree.parse(".repo/manifest.xml")
+    try:
+        m.findall('default')[0]
+        return '.repo/manifest.xml'
+    except IndexError:
+        return ".repo/manifests/{}".format(m.find("include").get("name"))
+
+def get_default_revision():
+    m = ElementTree.parse(get_manifest_path())
     d = m.findall('default')[0]
     r = d.get('revision')
     return r.replace('refs/heads/', '').replace('refs/tags/', '')
@@ -142,7 +155,7 @@
 
     # Search in main manifest, too
     try:
-        lm = ElementTree.parse(".repo/manifest.xml")
+        lm = ElementTree.parse(get_manifest_path())
         lm = lm.getroot()
     except:
         lm = ElementTree.Element("manifest")