author Nick Alexander <>
Wed, 19 Jul 2017 15:45:31 -0700
changeset 420463 23330f35f95778ef167c583ddd3e2c99e96198c2
parent 98529 f4157e8c410708d76703f19e4dfb61859bfe32d8
child 473816 fba6f974041a3d3c22ef95c44f6e4262e8e5c52f
permissions -rw-r--r--
Bug 1255227 - Part 2: Bootstrap and upload android-sdk-linux.tar.xz. r=dustin,sebastian Before this patch, we used the Gradle sdk-manager-plugin to download and install Android SDKs and other dependencies. This plugin is now deprecated; the main dependency downloading functionality has been incorporated into the Android-Gradle build plugin. Unfortunately, it's been incorporated into newer versions that in turn require newer toolchains than we currently support, so we can't use the new functionality immediately. Rather than replace sdk-manager-plugin with equivalent Gradle-based functionality, this ticket uses recently added bootstrap functionality to bootstrap the Android SDK during the dependencies task. It then _uses_ that SDK to run the dependency fetching task, _produces_ an android-sdk-linux.tar.xz, and then _uploads_ the new artifact as a private artifact, ready to be pushed into tooltool. This avoids engineers building this critical part of the toolchain locally themselves, and will also feed into ongoing work to push toolchain artifacts into build jobs in Task Cluster. MozReview-Commit-ID: B6FC0ugaCef

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at

Run a python script, adding extra directories to the python path.

def main(args):
    def usage():
        print >>sys.stderr, " -I directory [args...]"

    paths = []

    while True:
            arg = args[0]
        except IndexError:

        if arg == '-I':
                path = args.pop(0)
            except IndexError:


        if arg.startswith('-I'):


    script = args[0]

    sys.path[0:0] = [os.path.abspath(os.path.dirname(script))] + paths
    sys.argv = args
    sys.argc = len(args)

    frozenglobals['__name__'] = '__main__'
    frozenglobals['__file__'] = script

    execfile(script, frozenglobals)

# Freeze scope here ... why this makes things work I have no idea ...
frozenglobals = globals()

import sys, os

if __name__ == '__main__':