Revert of Added virtualenv for depot_tools (patchset #10 id:180001 of https://chromiumcodereview.appspot.com/1200843003/)

Reason for revert:
Doesn't work, virtualenv is missing in depot_tools checkout.

Original issue's description:
> Added virtualenv for depot_tools
>
> R=pgervais@chromium.org
> BUG=503067
> TEST=tested on Mac, Windows and Linux bots
>
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=295811

TBR=pgervais@chromium.org,sergiyb@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=503067

Review URL: https://codereview.chromium.org/1202843005.

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@295813 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/.gitignore b/.gitignore
index a242c60..4db19bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,6 +46,3 @@
 /tests/subversion_config/servers
 /tests/svn/
 /tests/svnrepo/
-
-# Ignore virtualenv created during bootstrapping.
-/ENV
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 41c56d3..2877144 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -22,8 +22,7 @@
       r'^python[0-9]*_bin[\/\\].+',
       r'^site-packages-py[0-9]\.[0-9][\/\\].+',
       r'^svn_bin[\/\\].+',
-      r'^testing_support[\/\\]_rietveld[\/\\].+',
-      r'^bootstrap[\/\\].+']
+      r'^testing_support[\/\\]_rietveld[\/\\].+']
   if os.path.exists('.gitignore'):
     with open('.gitignore') as fh:
       lines = [l.strip() for l in fh.readlines()]
diff --git a/bootstrap/.gitignore b/bootstrap/.gitignore
deleted file mode 100644
index fcbfa83..0000000
--- a/bootstrap/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-BUILD_ENV
-wheelhouse
-virtualenv
diff --git a/bootstrap/bootstrap.py b/bootstrap/bootstrap.py
deleted file mode 100755
index df14e85..0000000
--- a/bootstrap/bootstrap.py
+++ /dev/null
@@ -1,226 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import argparse
-import contextlib
-import glob
-import logging
-import os
-import shutil
-import subprocess
-import sys
-import tempfile
-
-from util import STORAGE_URL, OBJECT_URL, LOCAL_STORAGE_PATH, LOCAL_OBJECT_URL
-from util import read_deps, merge_deps, print_deps, platform_tag
-
-LOGGER = logging.getLogger(__name__)
-
-# /path/to/infra
-ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-
-PYTHON_BAT_WIN = '@%~dp0\\..\\Scripts\\python.exe %*'
-
-
-class NoWheelException(Exception):
-  def __init__(self, name, version, build, source_sha):
-    super(NoWheelException, self).__init__(
-        'No matching wheel found for (%s==%s (build %s_%s))' %
-        (name, version, build, source_sha))
-
-
-def check_pydistutils():
-  if os.path.exists(os.path.expanduser('~/.pydistutils.cfg')):
-    print >> sys.stderr, '\n'.join([
-      '',
-      '',
-      '=========== ERROR ===========',
-      'You have a ~/.pydistutils.cfg file, which interferes with the ',
-      'infra virtualenv environment. Please move it to the side and bootstrap ',
-      'again. Once infra has bootstrapped, you may move it back.',
-      '',
-      'Upstream bug: https://github.com/pypa/virtualenv/issues/88/',
-      ''
-    ])
-    sys.exit(1)
-
-
-def ls(prefix):
-  from pip._vendor import requests  # pylint: disable=E0611
-  data = requests.get(STORAGE_URL, params=dict(
-      prefix=prefix,
-      fields='items(name,md5Hash)'
-  )).json()
-  entries = data.get('items', [])
-  for entry in entries:
-    entry['md5Hash'] = entry['md5Hash'].decode('base64').encode('hex')
-    entry['local'] = False
-  # Also look in the local cache
-  entries.extend([
-    {'name': fname, 'md5Hash': None, 'local': True}
-    for fname in glob.glob(os.path.join(LOCAL_STORAGE_PATH,
-                                        prefix.split('/')[-1] + '*'))])
-  return entries
-
-
-def sha_for(deps_entry):
-  if 'rev' in deps_entry:
-    return deps_entry['rev']
-  else:
-    return deps_entry['gs'].split('.')[0]
-
-
-def get_links(deps):
-  import pip.wheel  # pylint: disable=E0611
-  plat_tag = platform_tag()
-
-  links = []
-
-  for name, dep in deps.iteritems():
-    version, source_sha = dep['version'] , sha_for(dep)
-    prefix = 'wheels/{}-{}-{}_{}'.format(name, version, dep['build'],
-                                         source_sha)
-    generic_link = None
-    binary_link = None
-    local_link = None
-
-    for entry in ls(prefix):
-      fname = entry['name'].split('/')[-1]
-      md5hash = entry['md5Hash']
-      wheel_info = pip.wheel.Wheel.wheel_file_re.match(fname)
-      if not wheel_info:
-        LOGGER.warn('Skipping invalid wheel: %r', fname)
-        continue
-
-      if pip.wheel.Wheel(fname).supported():
-        if entry['local']:
-          link = LOCAL_OBJECT_URL.format(entry['name'])
-          local_link = link
-          continue
-        else:
-          link = OBJECT_URL.format(entry['name'], md5hash)
-        if fname.endswith('none-any.whl'):
-          if generic_link:
-            LOGGER.error(
-              'Found more than one generic matching wheel for %r: %r',
-              prefix, dep)
-            continue
-          generic_link = link
-        elif plat_tag in fname:
-          if binary_link:
-            LOGGER.error(
-              'Found more than one binary matching wheel for %r: %r',
-              prefix, dep)
-            continue
-          binary_link = link
-
-    if not binary_link and not generic_link and not local_link:
-      raise NoWheelException(name, version, dep['build'], source_sha)
-
-    links.append(local_link or binary_link or generic_link)
-
-  return links
-
-
-@contextlib.contextmanager
-def html_index(links):
-  tf = tempfile.mktemp('.html')
-  try:
-    with open(tf, 'w') as f:
-      print >> f, '<html><body>'
-      for link in links:
-        print >> f, '<a href="%s">wat</a>' % link
-      print >> f, '</body></html>'
-    yield tf
-  finally:
-    os.unlink(tf)
-
-
-def install(deps):
-  bin_dir = 'Scripts' if sys.platform.startswith('win') else 'bin'
-  pip = os.path.join(sys.prefix, bin_dir, 'pip')
-
-  links = get_links(deps)
-  with html_index(links) as ipath:
-    requirements = []
-    # TODO(iannucci): Do this as a requirements.txt
-    for name, deps_entry in deps.iteritems():
-      if not deps_entry.get('implicit'):
-        requirements.append('%s==%s' % (name, deps_entry['version']))
-    subprocess.check_call(
-        [pip, 'install', '--no-index', '--download-cache',
-         os.path.join(ROOT, '.wheelcache'), '-f', ipath] + requirements)
-
-
-def activate_env(env, deps):
-  if hasattr(sys, 'real_prefix'):
-    LOGGER.error('Already activated environment!')
-    return
-
-  print 'Activating environment: %r' % env
-  assert isinstance(deps, dict)
-
-  manifest_path = os.path.join(env, 'manifest.pyl')
-  cur_deps = read_deps(manifest_path)
-  if cur_deps != deps:
-    print '  Removing old environment: %r' % cur_deps
-    shutil.rmtree(env, ignore_errors=True)
-    cur_deps = None
-
-  if cur_deps is None:
-    check_pydistutils()
-
-    print '  Building new environment'
-    # Add in bundled virtualenv lib
-    sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'virtualenv'))
-    import virtualenv  # pylint: disable=F0401
-    virtualenv.create_environment(
-        env, search_dirs=virtualenv.file_search_dirs())
-
-  print '  Activating environment'
-  # Ensure hermeticity during activation.
-  os.environ.pop('PYTHONPATH', None)
-  bin_dir = 'Scripts' if sys.platform.startswith('win') else 'bin'
-  activate_this = os.path.join(env, bin_dir, 'activate_this.py')
-  execfile(activate_this, dict(__file__=activate_this))
-
-  if cur_deps is None:
-    print '  Installing deps'
-    print_deps(deps, indent=2, with_implicit=False)
-    install(deps)
-    virtualenv.make_environment_relocatable(env)
-    with open(manifest_path, 'wb') as f:
-      f.write(repr(deps) + '\n')
-
-  # Create bin\python.bat on Windows to unify path where Python is found.
-  if sys.platform.startswith('win'):
-    bin_path = os.path.join(env, 'bin')
-    if not os.path.isdir(bin_path):
-      os.makedirs(bin_path)
-    python_bat_path = os.path.join(bin_path, 'python.bat')
-    if not os.path.isfile(python_bat_path):
-      with open(python_bat_path, 'w') as python_bat_file:
-        python_bat_file.write(PYTHON_BAT_WIN)
-
-  print 'Done creating environment'
-
-
-def main(args):
-  parser = argparse.ArgumentParser()
-  parser.add_argument('--deps-file', '--deps_file', action='append',
-                      help='Path to deps.pyl file (may be used multiple times)')
-  parser.add_argument('env_path',
-                      help='Path to place environment (default: %(default)s)',
-                      default='ENV')
-  opts = parser.parse_args(args)
-
-  deps = merge_deps(opts.deps_file)
-  activate_env(opts.env_path, deps)
-
-
-if __name__ == '__main__':
-  logging.basicConfig()
-  LOGGER.setLevel(logging.DEBUG)
-  sys.exit(main(sys.argv[1:]))
diff --git a/bootstrap/deps.pyl b/bootstrap/deps.pyl
deleted file mode 100644
index c6236d4..0000000
--- a/bootstrap/deps.pyl
+++ /dev/null
@@ -1,15 +0,0 @@
-#vim: ft=python:
-{
-  'wheel': {
-    'version': '0.24.0',
-    'build': '0',
-    'gs': 'c02262299489646af253067e8136c060a93572e3.tar.gz',
-  },
-
-  'protobuf': {
-    'version': '2.6.0',
-    'build': '0',
-    'repo': 'external/github.com/google/protobuf',
-    'rev': '629a556879cc84e0f52546f0484b65b72ce44fe8',
-  },
-}
diff --git a/bootstrap/util.py b/bootstrap/util.py
deleted file mode 100644
index d64b142..0000000
--- a/bootstrap/util.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import ast
-import contextlib
-import os
-import platform
-import shutil
-import sys
-import tempfile
-
-
-ROOT = os.path.dirname(os.path.abspath(__file__))
-WHEELHOUSE = os.path.join(ROOT, 'wheelhouse')
-
-BUCKET = 'chrome-python-wheelhouse'
-STORAGE_URL = 'https://www.googleapis.com/storage/v1/b/{}/o'.format(BUCKET)
-OBJECT_URL = 'https://storage.googleapis.com/{}/{{}}#md5={{}}'.format(BUCKET)
-LOCAL_OBJECT_URL = 'file://{}'
-
-LOCAL_STORAGE_PATH = os.path.join(ROOT, 'wheelhouse_cache')
-
-SOURCE_URL = 'gs://{}/sources/{{}}'.format(BUCKET)
-WHEELS_URL = 'gs://{}/wheels/'.format(BUCKET)
-
-
-class DepsConflictException(Exception):
-  def __init__(self, name):
-    super(DepsConflictException, self).__init__(
-        'Package \'%s\' is defined twice in deps.pyl' % name)
-
-
-def platform_tag():
-  if sys.platform.startswith('linux'):
-    return '_{0}_{1}'.format(*platform.linux_distribution())
-  return ''
-
-
-def print_deps(deps, indent=1, with_implicit=True):
-  for dep, entry in deps.iteritems():
-    if not with_implicit and entry.get('implicit'):
-      continue
-    print '  ' * indent + '%s: %r' % (dep, entry)
-  print
-
-
-@contextlib.contextmanager
-def tempdir(*args, **kwargs):
-  tdir = None
-  try:
-    tdir = tempfile.mkdtemp(*args, **kwargs)
-    yield tdir
-  finally:
-    if tdir:
-      shutil.rmtree(tdir, ignore_errors=True)
-
-
-@contextlib.contextmanager
-def tempname(*args, **kwargs):
-  tmp = None
-  try:
-    tmp = tempfile.mktemp(*args, **kwargs)
-    yield tmp
-  finally:
-    if tmp:
-      try:
-        os.unlink(tmp)
-      except OSError:
-        pass
-
-
-def read_deps(path):
-  if os.path.exists(path):
-    with open(path, 'rb') as f:
-      return ast.literal_eval(f.read())
-
-
-def merge_deps(paths):
-  deps = {}
-  for path in paths:
-    d = read_deps(path)
-    for key in d:
-      if key in deps:
-        raise DepsConflictException(key)
-    deps.update(d)
-  return deps
diff --git a/update_depot_tools b/update_depot_tools
index 6ba2a9a..8528b8b 100755
--- a/update_depot_tools
+++ b/update_depot_tools
@@ -153,7 +153,3 @@
 fi
 
 find "$base_dir" -iname "*.pyc" -exec rm {} \;
-
-# Initialize/update virtualenv.
-cd $base_dir
-python -u ./bootstrap/bootstrap.py --deps_file bootstrap/deps.pyl ENV
diff --git a/update_depot_tools.bat b/update_depot_tools.bat
index 43bdbab..33fa40b 100644
--- a/update_depot_tools.bat
+++ b/update_depot_tools.bat
@@ -27,11 +27,6 @@
 :: Now clear errorlevel so it can be set by other programs later.

 set errorlevel=

 

-:: Initialize/update virtualenv.

-cd "%DEPOT_TOOLS_DIR%"

-python -u bootstrap\bootstrap.py --deps_file bootstrap\deps.pyl ENV

-if errorlevel 1 goto :EOF

-

 :: Shall skip automatic update?

 IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :EOF