Bug 1573435 - Use toolchain fetches for openh264 tasks. r=nalexander
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 13 Aug 2019 17:23:26 +0900
changeset 488145 874a06471c7ae2d9847ac3a1a9f562a16b903683
parent 488144 ef9aa40a25e1c69108af7f2b9a245db991953691
child 488146 84afd114aae980e01e7835779f26bfa78df151ea
push id36435
push usercbrindusan@mozilla.com
push dateThu, 15 Aug 2019 09:46:49 +0000
treeherdermozilla-central@0db07ff50ab5 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnalexander
bugs1573435
milestone70.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1573435 - Use toolchain fetches for openh264 tasks. r=nalexander Differential Revision: https://phabricator.services.mozilla.com/D41737
taskcluster/ci/openh264-plugin/kind.yml
testing/mozharness/configs/openh264/android-aarch64.py
testing/mozharness/configs/openh264/android-arm.py
testing/mozharness/configs/openh264/android-x86.py
testing/mozharness/configs/openh264/android-x86_64.py
testing/mozharness/configs/openh264/linux32.py
testing/mozharness/configs/openh264/linux64.py
testing/mozharness/configs/openh264/macosx64.py
testing/mozharness/configs/openh264/win32.py
testing/mozharness/configs/openh264/win64-aarch64.py
testing/mozharness/configs/openh264/win64.py
testing/mozharness/scripts/openh264_build.py
--- a/taskcluster/ci/openh264-plugin/kind.yml
+++ b/taskcluster/ci/openh264-plugin/kind.yml
@@ -4,17 +4,16 @@
 ---
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.openh264:transforms
-    - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 job-defaults:
     description: "Build OpenH264 plugin"
     treeherder:
         kind: build
         symbol: h264
@@ -40,20 +39,21 @@ jobs:
                   path: /builds/worker/workspace/build/openh264/artifacts
                   type: directory
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/linux32.py
             tooltool-downloads: public
-        toolchains:
-            - linux64-binutils
-            - linux64-clang
-            - linux64-nasm
+        fetches:
+            toolchain:
+                - linux64-binutils
+                - linux64-clang
+                - linux64-nasm
     linux64/opt:
         attributes:
             build_platform: linux64
             build_type: opt
         treeherder:
             platform: linux64/opt
         worker-type: b-linux
         worker:
@@ -63,20 +63,21 @@ jobs:
                   path: /builds/worker/workspace/build/openh264/artifacts
                   type: directory
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/linux64.py
             tooltool-downloads: public
-        toolchains:
-            - linux64-binutils
-            - linux64-clang
-            - linux64-nasm
+        fetches:
+            toolchain:
+                - linux64-binutils
+                - linux64-clang
+                - linux64-nasm
     macosx64/opt:
         attributes:
             build_platform: macosx64
             build_type: opt
         treeherder:
             platform: macosx64/opt
         worker-type: b-linux
         worker:
@@ -86,19 +87,20 @@ jobs:
                   path: /builds/worker/workspace/build/openh264/artifacts
                   type: directory
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/macosx64.py
             tooltool-downloads: internal
-        toolchains:
-            - linux64-cctools-port
-            - linux64-clang
+        fetches:
+            toolchain:
+                - linux64-cctools-port
+                - linux64-clang
     win32/opt:
         attributes:
             build_platform: win32
             build_type: opt
         treeherder:
             platform: win32/opt
         worker-type: b-win2012
         worker:
@@ -107,18 +109,19 @@ jobs:
                 - name: private/openh264
                   path: build/openh264/artifacts
                   type: directory
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/win32.py
-        toolchains:
-            - win64-clang-cl
+        fetches:
+            toolchain:
+                - win64-clang-cl
     win64/opt:
         attributes:
             build_platform: win64
             build_type: opt
         treeherder:
             platform: win64/opt
         worker-type: b-win2012
         worker:
@@ -127,18 +130,19 @@ jobs:
                 - name: private/openh264
                   path: build/openh264/artifacts
                   type: directory
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/win64.py
-        toolchains:
-            - win64-clang-cl
+        fetches:
+            toolchain:
+                - win64-clang-cl
     win64-aarch64/opt:
         attributes:
             build_platform: win64-aarch64
             build_type: opt
         treeherder:
             platform: win64-aarch64/opt
         worker-type: b-win2012
         worker:
@@ -147,18 +151,19 @@ jobs:
                 - name: private/openh264
                   path: build/openh264/artifacts
                   type: directory
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/win64-aarch64.py
-        toolchains:
-            - win64-clang-cl
+        fetches:
+            toolchain:
+                - win64-clang-cl
     android-api-16/opt:
         attributes:
             build_platform: android-arm
             build_type: opt
         treeherder:
             platform: android-api-16/opt
         worker-type: b-linux
         worker:
@@ -172,21 +177,22 @@ jobs:
         repo: https://github.com/dminor/openh264.git
         revision: 42954cf0fe8a2bdc97fdc180462a3eaefceb035f
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/android-arm.py
             tooltool-downloads: internal
-        toolchains:
-            - android-ndk-linux
-            - android-sdk-linux
-            - linux64-clang
-            - linux64-nasm
+        fetches:
+            toolchain:
+                - android-ndk-linux
+                - android-sdk-linux
+                - linux64-clang
+                - linux64-nasm
     android-aarch64/opt:
         attributes:
             build_platform: android-aarch64
             build_type: opt
         treeherder:
             platform: android-5-0-aarch64/opt
         worker-type: b-linux
         worker:
@@ -200,21 +206,22 @@ jobs:
         repo: https://github.com/dminor/openh264.git
         revision: 42954cf0fe8a2bdc97fdc180462a3eaefceb035f
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/android-aarch64.py
             tooltool-downloads: internal
-        toolchains:
-            - android-ndk-linux
-            - android-sdk-linux
-            - linux64-clang
-            - linux64-nasm
+        fetches:
+            toolchain:
+                - android-ndk-linux
+                - android-sdk-linux
+                - linux64-clang
+                - linux64-nasm
     android-x86/opt:
         attributes:
             build_platform: android-x86
             build_type: opt
         treeherder:
             platform: android-4-2-x86/opt
         worker-type: b-linux
         worker:
@@ -228,21 +235,22 @@ jobs:
         repo: https://github.com/dminor/openh264.git
         revision: 42954cf0fe8a2bdc97fdc180462a3eaefceb035f
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/android-x86.py
             tooltool-downloads: internal
-        toolchains:
-            - android-ndk-linux
-            - android-sdk-linux
-            - linux64-clang
-            - linux64-nasm
+        fetches:
+            toolchain:
+                - android-ndk-linux
+                - android-sdk-linux
+                - linux64-clang
+                - linux64-nasm
     android-x86_64/opt:
         attributes:
             build_platform: android-x86_64
             build_type: opt
         treeherder:
             platform: android-5-0-x86_64/opt
         worker-type: b-linux
         worker:
@@ -256,13 +264,14 @@ jobs:
         repo: https://github.com/dminor/openh264.git
         revision: 42954cf0fe8a2bdc97fdc180462a3eaefceb035f
         run:
             using: mozharness
             script: mozharness/scripts/openh264_build.py
             config:
                 - openh264/android-x86_64.py
             tooltool-downloads: internal
-        toolchains:
-            - android-ndk-linux
-            - android-sdk-linux
-            - linux64-clang
-            - linux64-nasm
+        fetches:
+            toolchain:
+                - android-ndk-linux
+                - android-sdk-linux
+                - linux64-clang
+                - linux64-nasm
--- a/testing/mozharness/configs/openh264/android-aarch64.py
+++ b/testing/mozharness/configs/openh264/android-aarch64.py
@@ -25,13 +25,14 @@ config = {
     },
     'dump_syms_binary': 'dump_syms',
     'arch': 'aarch64',
     'min_sdk': 21,
     'operating_system': 'android',
     'partial_env': {
         'CXXFLAGS': '-stdlib=libstdc++',
         'LDFLAGS': '-stdlib=libstdc++',
-        'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
-                 '%(abs_work_dir)s/src/clang/bin:'
-                 '%(abs_work_dir)s/src/nasm:%(PATH)s'),
+        'PATH': ('{MOZ_FETCHES_DIR}/android-sdk-linux/tools:'
+                 '{MOZ_FETCHES_DIR}/clang/bin:'
+                 '{MOZ_FETCHES_DIR}/nasm:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
 }
--- a/testing/mozharness/configs/openh264/android-arm.py
+++ b/testing/mozharness/configs/openh264/android-arm.py
@@ -25,13 +25,14 @@ config = {
     },
     'dump_syms_binary': 'dump_syms',
     'arch': 'arm',
     'min_sdk': 16,
     'operating_system': 'android',
     'partial_env': {
         'CXXFLAGS': '-stdlib=libstdc++',
         'LDFLAGS': '-stdlib=libstdc++',
-        'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
-                 '%(abs_work_dir)s/src/clang/bin:'
-                 '%(abs_work_dir)s/src/nasm:%(PATH)s'),
+        'PATH': ('{MOZ_FETCHES_DIR}/android-sdk-linux/tools:'
+                 '{MOZ_FETCHES_DIR}/clang/bin:'
+                 '{MOZ_FETCHES_DIR}/nasm:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
 }
--- a/testing/mozharness/configs/openh264/android-x86.py
+++ b/testing/mozharness/configs/openh264/android-x86.py
@@ -26,13 +26,14 @@ config = {
     'avoid_avx2': True,
     'dump_syms_binary': 'dump_syms',
     'arch': 'x86',
     'min_sdk': 16,
     'operating_system': 'android',
     'partial_env': {
         'CXXFLAGS': '-stdlib=libstdc++',
         'LDFLAGS': '-stdlib=libstdc++',
-        'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
-                 '%(abs_work_dir)s/src/clang/bin:'
-                 '%(abs_work_dir)s/src/nasm:%(PATH)s'),
+        'PATH': ('{MOZ_FETCHES_DIR}/android-sdk-linux/tools:'
+                 '{MOZ_FETCHES_DIR}/clang/bin:'
+                 '{MOZ_FETCHES_DIR}/nasm:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
 }
--- a/testing/mozharness/configs/openh264/android-x86_64.py
+++ b/testing/mozharness/configs/openh264/android-x86_64.py
@@ -26,13 +26,14 @@ config = {
     'avoid_avx2': True,
     'dump_syms_binary': 'dump_syms',
     'arch': 'x86_64',
     'min_sdk': 16,
     'operating_system': 'android',
     'partial_env': {
         'CXXFLAGS': '-stdlib=libstdc++',
         'LDFLAGS': '-stdlib=libstdc++',
-        'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
-                 '%(abs_work_dir)s/src/clang/bin:'
-                 '%(abs_work_dir)s/src/nasm:%(PATH)s'),
+        'PATH': ('{MOZ_FETCHES_DIR}/android-sdk-linux/tools:'
+                 '{MOZ_FETCHES_DIR}/clang/bin:'
+                 '{MOZ_FETCHES_DIR}/nasm:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
 }
--- a/testing/mozharness/configs/openh264/linux32.py
+++ b/testing/mozharness/configs/openh264/linux32.py
@@ -14,13 +14,14 @@ config = {
         'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
         'python2.7': "python2.7",
     },
     'dump_syms_binary': 'dump_syms',
     'arch': 'x86',
     'avoid_avx2': True,
     'operating_system': 'linux',
     'partial_env': {
-        'PATH': ('%(abs_work_dir)s/src/clang/bin:'
-                 '%(abs_work_dir)s/src/binutils/bin:'
-                 '%(abs_work_dir)s/src/nasm:%(PATH)s'),
+        'PATH': ('{MOZ_FETCHES_DIR}/clang/bin:'
+                 '{MOZ_FETCHES_DIR}/binutils/bin:'
+                 '{MOZ_FETCHES_DIR}/nasm:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
 }
--- a/testing/mozharness/configs/openh264/linux64.py
+++ b/testing/mozharness/configs/openh264/linux64.py
@@ -14,13 +14,14 @@ config = {
         'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
         'python2.7': "python2.7",
     },
     'dump_syms_binary': 'dump_syms',
     'arch': 'x64',
     'avoid_avx2': True,
     'operating_system': 'linux',
     'partial_env': {
-        'PATH': ('%(abs_work_dir)s/src/clang/bin:'
-                 '%(abs_work_dir)s/src/binutils/bin:'
-                 '%(abs_work_dir)s/src/nasm:%(PATH)s'),
+        'PATH': ('{MOZ_FETCHES_DIR}/clang/bin:'
+                 '{MOZ_FETCHES_DIR}/binutils/bin:'
+                 '{MOZ_FETCHES_DIR}/nasm:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
 }
--- a/testing/mozharness/configs/openh264/macosx64.py
+++ b/testing/mozharness/configs/openh264/macosx64.py
@@ -15,20 +15,23 @@ config = {
         'python2.7': "python2.7",
     },
     'dump_syms_binary': 'dump_syms',
     'arch': 'x64',
     'use_yasm': True,
     'operating_system': 'darwin',
     'partial_env': {
         'CXXFLAGS': ('-target x86_64-apple-darwin '
-                     '-B %(abs_work_dir)s/src/cctools/bin '
+                     '-B {MOZ_FETCHES_DIR}/cctools/bin '
                      '-isysroot %(abs_work_dir)s/src/MacOSX10.11.sdk '
-                     '-mmacosx-version-min=10.11'),
+                     '-mmacosx-version-min=10.11'
+                     .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
         'LDFLAGS': ('-target x86_64-apple-darwin '
-                    '-B %(abs_work_dir)s/src/cctools/bin '
+                    '-B {MOZ_FETCHES_DIR}/cctools/bin '
                     '-isysroot %(abs_work_dir)s/src/MacOSX10.11.sdk '
-                    '-mmacosx-version-min=10.11'),
-        'PATH': '%(abs_work_dir)s/src/clang/bin/:%(PATH)s',
+                    '-mmacosx-version-min=10.11'
+                     .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
+        'PATH': ('{MOZ_FETCHES_DIR}/clang/bin/:%(PATH)s'
+                 .format(MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR'])),
     },
     "tooltool_servers": ['http://taskcluster/tooltool.mozilla-releng.net/'],
     "tooltool_url": 'http://taskcluster/tooltool.mozilla-releng.net/',
 }
--- a/testing/mozharness/configs/openh264/win32.py
+++ b/testing/mozharness/configs/openh264/win32.py
@@ -14,23 +14,23 @@ config = {
     'exes': {
         'gittool.py': [sys.executable, os.path.join(external_tools_path, 'gittool.py')],
         'python2.7': 'c:\\mozilla-build\\python\\python.exe',
     },
     'dump_syms_binary': 'dump_syms.exe',
     'arch': 'x86',
     'use_yasm': True,
     'partial_env': {
-        'PATH': ('%(abs_work_dir)s\\src\\clang\\bin\\;'
+        'PATH': ('{MOZ_FETCHES_DIR}\\clang\\bin\\;'
                  '{_VSPATH}\\VC\\bin\\Hostx64\\x64;%(PATH)s'
                  # 32-bit redist here for our dump_syms.exe
                  '{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
                  '{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
                  '{_VSPATH}/DIA SDK/bin'
-        ).format(_VSPATH=VSPATH),
+        ).format(_VSPATH=VSPATH, MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR']),
         'INCLUDES': (
             '-I{_VSPATH}\\VC\\include '
             '-I{_VSPATH}\\VC\\atlmfc\\include '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt '
         ).format(_VSPATH=VSPATH),
--- a/testing/mozharness/configs/openh264/win64-aarch64.py
+++ b/testing/mozharness/configs/openh264/win64-aarch64.py
@@ -15,24 +15,24 @@ config = {
         'gittool.py': [sys.executable, os.path.join(external_tools_path, 'gittool.py')],
         'python2.7': 'c:\\mozilla-build\\python\\python.exe',
     },
     'dump_syms_binary': 'dump_syms.exe',
     'arch': 'aarch64',
     'use_yasm': False,
     'partial_env': {
         'PATH': ('%(abs_work_dir)s\\openh264;'
-                 '%(abs_work_dir)s\\src\\clang\\bin\\;'
+                 '{MOZ_FETCHES_DIR}\\clang\\bin\\;'
                  '{_VSPATH}\\VC\\bin\\Hostx64\\arm64;'
                  '{_VSPATH}\\VC\\bin\\Hostx64\\x64;'
                  # 32-bit redist here for our dump_syms.exe
                  '{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
                  '{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
                  '{_VSPATH}/DIA SDK/bin;%(PATH)s;'
-        ).format(_VSPATH=VSPATH),
+        ).format(_VSPATH=VSPATH, MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR']),
         'INCLUDES': (
             '-I{_VSPATH}\\VC\\include '
             '-I{_VSPATH}\\VC\\atlmfc\\include '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt '
         ).format(_VSPATH=VSPATH),
--- a/testing/mozharness/configs/openh264/win64.py
+++ b/testing/mozharness/configs/openh264/win64.py
@@ -14,23 +14,23 @@ config = {
     'exes': {
         'gittool.py': [sys.executable, os.path.join(external_tools_path, 'gittool.py')],
         'python2.7': 'c:\\mozilla-build\\python\\python.exe',
     },
     'dump_syms_binary': 'dump_syms.exe',
     'arch': 'x64',
     'use_yasm': True,
     'partial_env': {
-        'PATH': ('%(abs_work_dir)s\\src\\clang\\bin\\;'
+        'PATH': ('{MOZ_FETCHES_DIR}\\clang\\bin\\;'
                  '{_VSPATH}\\VC\\bin\\Hostx64\\x64;%(PATH)s;'
                  # 32-bit redist here for our dump_syms.exe
                  '{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
                  '{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
                  '{_VSPATH}/DIA SDK/bin'
-        ).format(_VSPATH=VSPATH),
+        ).format(_VSPATH=VSPATH, MOZ_FETCHES_DIR=os.environ['MOZ_FETCHES_DIR']),
         'INCLUDES': (
             '-I{_VSPATH}\\VC\\include '
             '-I{_VSPATH}\\VC\\atlmfc\\include '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um '
             '-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt '
         ).format(_VSPATH=VSPATH),
--- a/testing/mozharness/scripts/openh264_build.py
+++ b/testing/mozharness/scripts/openh264_build.py
@@ -165,17 +165,16 @@ class OpenH264Build(TransferMixin, VCSSc
                 return 'openh264-win64-aarch64-{version}.zip'.format(
                     version=version)
             else:
                 return 'openh264-win{bits}-{version}.zip'.format(
                     version=version, bits=bits)
         self.fatal("can't determine platform")
 
     def query_make_params(self):
-        dirs = self.query_abs_dirs()
         retval = []
         if self.config['debug_build']:
             retval.append('BUILDTYPE=Debug')
 
         if self.config['avoid_avx2']:
             retval.append('HAVE_AVX2=false')
 
         if self.config['arch'] in ('x64', 'aarch64'):
@@ -189,17 +188,17 @@ class OpenH264Build(TransferMixin, VCSSc
                 if self.config['arch'] == 'x86':
                     retval.append("ARCH=x86")
                 elif self.config['arch'] == 'aarch64':
                     retval.append("ARCH=arm64")
                 else:
                     retval.append("ARCH=arm")
                 retval.append('TARGET=invalid')
                 retval.append('NDKLEVEL=%s' % self.config['min_sdk'])
-                retval.append('NDKROOT=%s/src/android-ndk' % dirs['abs_work_dir'])
+                retval.append('NDKROOT=%s/android-ndk' % os.environ['MOZ_FETCHES_DIR'])
                 retval.append('NDK_TOOLCHAIN_VERSION=clang')
             if self.config["operating_system"] == "darwin":
                 retval.append('OS=darwin')
 
         if self.config['use_yasm']:
             retval.append('ASM=yasm')
 
         if self._is_windows():
@@ -276,17 +275,17 @@ class OpenH264Build(TransferMixin, VCSSc
                                    parent_dir=openh264_dir)
                 self.chmod(os.path.join(openh264_dir, 'gas-preprocessor.pl'),
                            744)
 
                 # gas-preprocessor.pl expects cpp to exist
                 # os.symlink is not available on Windows until we switch to
                 # Python 3.
                 os.system('ln -s %s %s' % (
-                          os.path.join(dirs['abs_work_dir'], 'src', 'clang',
+                          os.path.join(os.environ['MOZ_FETCHES_DIR'], 'clang',
                                        'bin', 'clang.exe'),
                           os.path.join(openh264_dir, 'cpp')))
             return 0
 
         repos = [
             {'vcs': 'gittool', 'repo': repo, 'dest': repo_dir, 'revision': rev},
         ]