iOS: Use JSON for GN configuration instead of MB + remove symbols.

This aligns with how the ios recipe module is used in Chromium.
It should prevent breakages like one we had recently.

It also means we're no longer setting symbol_level=1 explicitly.
The default is 0 (no symbols), which is now what's being used.

Also move all the directories containing JSON files into
tools-webrtc/ios/bots to make it clearer (and more similar to
Chromium).

BUG=webrtc:7140, webrtc:7161
NOTRY=True

Review-Url: https://codereview.webrtc.org/2688103002
Cr-Commit-Position: refs/heads/master@{#16633}
diff --git a/tools-webrtc/mb/mb.py b/tools-webrtc/mb/mb.py
index 49f681f..ea72198 100755
--- a/tools-webrtc/mb/mb.py
+++ b/tools-webrtc/mb/mb.py
@@ -33,8 +33,8 @@
 from collections import OrderedDict
 
 SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
-CHROMIUM_SRC_DIR = os.path.dirname(os.path.dirname(SCRIPT_DIR))
-sys.path = [os.path.join(CHROMIUM_SRC_DIR, 'build')] + sys.path
+SRC_DIR = os.path.dirname(os.path.dirname(SCRIPT_DIR))
+sys.path = [os.path.join(SRC_DIR, 'build')] + sys.path
 
 import gn_helpers
 
@@ -46,7 +46,7 @@
 
 class MetaBuildWrapper(object):
   def __init__(self):
-    self.chromium_src_dir = CHROMIUM_SRC_DIR
+    self.src_dir = SRC_DIR
     self.default_config = os.path.join(SCRIPT_DIR, 'mb_config.pyl')
     self.default_isolate_map = os.path.join(SCRIPT_DIR, 'gn_isolate_map.pyl')
     self.executable = sys.executable
@@ -619,7 +619,7 @@
   def ReadIOSBotConfig(self):
     if not self.args.master or not self.args.builder:
       return {}
-    path = self.PathJoin(self.chromium_src_dir, 'ios', 'build', 'bots',
+    path = self.PathJoin(self.src_dir, 'tools-webrtc', 'ios',
                          self.args.master, self.args.builder + '.json')
     if not self.Exists(path):
       return {}
@@ -921,7 +921,7 @@
           '--isolate',
           self.ToSrcRelPath('%s/%s.isolate' % (build_dir, target)),
         ],
-        'dir': self.chromium_src_dir,
+        'dir': self.src_dir,
         'version': 1,
       },
       isolate_path + 'd.gen.json',
@@ -966,7 +966,7 @@
     else:
       subdir, exe = 'win', 'gn.exe'
 
-    gn_path = self.PathJoin(self.chromium_src_dir, 'buildtools', subdir, exe)
+    gn_path = self.PathJoin(self.src_dir, 'buildtools', subdir, exe)
     return [gn_path, subcommand, path] + list(args)
 
 
@@ -1137,7 +1137,7 @@
     return cmdline, extra_files
 
   def ToAbsPath(self, build_path, *comps):
-    return self.PathJoin(self.chromium_src_dir,
+    return self.PathJoin(self.src_dir,
                          self.ToSrcRelPath(build_path),
                          *comps)
 
@@ -1145,7 +1145,7 @@
     """Returns a relative path from the top of the repo."""
     if path.startswith('//'):
       return path[2:].replace('/', self.sep)
-    return self.RelPath(path, self.chromium_src_dir)
+    return self.RelPath(path, self.src_dir)
 
   def ParseGYPConfigPath(self, path):
     rpath = self.ToSrcRelPath(path)
@@ -1433,12 +1433,12 @@
 
   def Call(self, cmd, env=None, buffer_output=True):
     if buffer_output:
-      p = subprocess.Popen(cmd, shell=False, cwd=self.chromium_src_dir,
+      p = subprocess.Popen(cmd, shell=False, cwd=self.src_dir,
                            stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                            env=env)
       out, err = p.communicate()
     else:
-      p = subprocess.Popen(cmd, shell=False, cwd=self.chromium_src_dir,
+      p = subprocess.Popen(cmd, shell=False, cwd=self.src_dir,
                            env=env)
       p.wait()
       out = err = ''
diff --git a/tools-webrtc/mb/mb_config.pyl b/tools-webrtc/mb/mb_config.pyl
index 623c1d3..c31ba19 100644
--- a/tools-webrtc/mb/mb_config.pyl
+++ b/tools-webrtc/mb/mb_config.pyl
@@ -20,13 +20,13 @@
   'masters': {
     'client.webrtc': {
       # iOS
-      'iOS32 Debug': 'ios_debug_static_bot_arm_device',
-      'iOS32 Release': 'ios_release_bot_arm_device',
-      'iOS64 Debug': 'ios_debug_static_bot_arm64_device',
-      'iOS64 Release': 'ios_release_bot_arm64_device',
-      'iOS32 Sim Debug (iOS 9.0)': 'ios_debug_static_bot_x86',
-      'iOS64 Sim Debug (iOS 9.0)': 'ios_debug_static_bot_x64',
-      'iOS64 Sim Debug (iOS 10.0)': 'ios_debug_static_bot_x64',
+      'iOS32 Debug': 'ios',
+      'iOS32 Release': 'ios',
+      'iOS64 Debug': 'ios',
+      'iOS64 Release': 'ios',
+      'iOS32 Sim Debug (iOS 9.0)': 'ios',
+      'iOS64 Sim Debug (iOS 9.0)': 'ios',
+      'iOS64 Sim Debug (iOS 10.0)': 'ios',
 
       # Mac
       'Mac64 Debug': 'debug_bot_x64',
@@ -105,13 +105,13 @@
     },
     'tryserver.webrtc': {
       # iOS
-      'ios_dbg': 'ios_debug_static_bot_arm_device',
-      'ios_rel': 'ios_release_bot_arm_device',
-      'ios_arm64_dbg': 'ios_debug_static_bot_arm64_device',
-      'ios_arm64_rel': 'ios_release_bot_arm64_device',
-      'ios32_sim_ios9_dbg': 'ios_debug_static_bot_x86',
-      'ios64_sim_ios9_dbg': 'ios_debug_static_bot_x64',
-      'ios64_sim_ios10_dbg': 'ios_debug_static_bot_x64',
+      'ios_dbg': 'ios',
+      'ios_rel': 'ios',
+      'ios_arm64_dbg': 'ios',
+      'ios_arm64_rel': 'ios',
+      'ios32_sim_ios9_dbg': 'ios',
+      'ios64_sim_ios9_dbg': 'ios',
+      'ios64_sim_ios10_dbg': 'ios',
 
       # Mac
       'mac_compile_dbg': 'debug_bot_x64',
@@ -178,26 +178,6 @@
   # A given config *may* be platform-specific but is not necessarily so (i.e.,
   #  we might have mac, win, and linux bots all using the 'release_bot' config).
   'configs': {
-    # iOS
-    'ios_debug_static_bot_arm64_device': [
-      'ios', 'gn', 'debug_static_bot', 'arm64', 'device'
-    ],
-    'ios_release_bot_arm64_device': [
-      'ios', 'gn', 'release_bot', 'arm64', 'device'
-    ],
-    'ios_debug_static_bot_arm_device': [
-      'ios', 'gn', 'debug_static_bot', 'arm', 'device'
-    ],
-    'ios_release_bot_arm_device': [
-      'ios', 'gn', 'release_bot', 'arm', 'device'
-    ],
-    'ios_debug_static_bot_x86': [
-      'ios', 'gn', 'debug_static_bot', 'x86'
-    ],
-    'ios_debug_static_bot_x64': [
-      'ios', 'gn', 'debug_static_bot', 'x64'
-    ],
-
     # Linux, Mac and Windows
     'gcc_release_bot_x64': [
       'gn', 'gcc', 'release_bot', 'x64'
@@ -245,6 +225,13 @@
       'memcheck', 'gn', 'openh264_release_bot', 'x64'
     ],
 
+    # iOS
+    # The 'ios' config is just used for auditing. iOS bots
+    # use the ios recipes and look up their GN arguments via files checked in
+    # under //tools-webrtc/ios/bots. It is an error to actually use one of these
+    # configs to generate the build files.
+    'ios': [ 'error'],
+
     # Windows
     'win_clang_debug_bot_x86': [
       'gn', 'clang', 'openh264_debug_bot', 'x86',
@@ -354,10 +341,6 @@
       'mixins': ['debug', 'static', 'minimal_symbols', 'goma'],
     },
 
-    'device': {
-      'gn_args': 'ios_enable_code_signing=false',
-    },
-
     # This mixin is used to force configs that use it to fail. It
     # is used in two cases: when we have bots that we haven't looked
     # at yet and don't know whether they need MB or not, and for bots
@@ -380,10 +363,6 @@
       'gn_args': 'use_goma=true',
     },
 
-    'ios': {
-      'gn_args': 'target_os="ios"',
-    },
-
     'libfuzzer': {
       'gn_args': 'use_libfuzzer=true',
     },
diff --git a/tools-webrtc/mb/mb_unittest.py b/tools-webrtc/mb/mb_unittest.py
index f5c5bc2..67e1d75 100755
--- a/tools-webrtc/mb/mb_unittest.py
+++ b/tools-webrtc/mb/mb_unittest.py
@@ -25,7 +25,7 @@
 
     # Override vars for test portability.
     if win32:
-      self.chromium_src_dir = 'c:\\fake_src'
+      self.src_dir = 'c:\\fake_src'
       self.default_config = 'c:\\fake_src\\tools-webrtc\\mb\\mb_config.pyl'
       self.default_isolate_map = ('c:\\fake_src\\testing\\buildbot\\'
                                   'gn_isolate_map.pyl')
@@ -33,7 +33,7 @@
       self.executable = 'c:\\python\\python.exe'
       self.sep = '\\'
     else:
-      self.chromium_src_dir = '/fake_src'
+      self.src_dir = '/fake_src'
       self.default_config = '/fake_src/tools-webrtc/mb/mb_config.pyl'
       self.default_isolate_map = '/fake_src/testing/buildbot/gn_isolate_map.pyl'
       self.executable = '/usr/bin/python'