forked from mirrors/gecko-dev
		
	Vendoring wheels has three benefits: * There's far less files, so Firefox checkouts will be smaller. * It works around `zipp` not allowing `pip install` from extracted source `tar.gz` files. Now, we should be able to use the pip resolver against vendored packages, which will be needed for future mach virtualenv work. * `./mach vendor python` takes far less time to execute. Since we need the raw Python to be available to add to the `sys.path`, we extract the wheels before putting them in tree. Due to the structure of some wheels being less nested than of a source `tar.gz`, `common_virtualenv_packages` needed to be adjusted accordingly. `install_pip_package()` had to be tweaked as well since you can't `pip install` an extracted wheel. So, we "re-bundle" the wheel before installing from a vendored package. Replace python packages with wheels where possible This contains the vendoring changes caused by the last patch. For reviewing, there's a couple things to note: * A bunch of files are deleted, since there's generally less files in a wheel than in a source archive. * There's a new `.dist-info` directory for each extracted wheel, so expect roughly 5 or 6 new files for each wheel'd package. * There should be no source code changes other than moves from package names changing from having `-` to having `_`. Differential Revision: https://phabricator.services.mozilla.com/D116512
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# coding: utf-8
 | 
						|
from __future__ import absolute_import, division, print_function, unicode_literals
 | 
						|
 | 
						|
import contextlib
 | 
						|
import logging
 | 
						|
import sys
 | 
						|
 | 
						|
from . import click
 | 
						|
 | 
						|
# Initialise the builtin logging module for other component using it.
 | 
						|
# Ex: pip
 | 
						|
logging.basicConfig()
 | 
						|
 | 
						|
 | 
						|
class LogContext(object):
 | 
						|
    stream = sys.stderr
 | 
						|
 | 
						|
    def __init__(self, verbosity=0, indent_width=2):
 | 
						|
        self.verbosity = verbosity
 | 
						|
        self.current_indent = 0
 | 
						|
        self._indent_width = indent_width
 | 
						|
 | 
						|
    def log(self, message, *args, **kwargs):
 | 
						|
        kwargs.setdefault("err", True)
 | 
						|
        prefix = " " * self.current_indent
 | 
						|
        click.secho(prefix + message, *args, **kwargs)
 | 
						|
 | 
						|
    def debug(self, *args, **kwargs):
 | 
						|
        if self.verbosity >= 1:
 | 
						|
            self.log(*args, **kwargs)
 | 
						|
 | 
						|
    def info(self, *args, **kwargs):
 | 
						|
        if self.verbosity >= 0:
 | 
						|
            self.log(*args, **kwargs)
 | 
						|
 | 
						|
    def warning(self, *args, **kwargs):
 | 
						|
        kwargs.setdefault("fg", "yellow")
 | 
						|
        self.log(*args, **kwargs)
 | 
						|
 | 
						|
    def error(self, *args, **kwargs):
 | 
						|
        kwargs.setdefault("fg", "red")
 | 
						|
        self.log(*args, **kwargs)
 | 
						|
 | 
						|
    def _indent(self):
 | 
						|
        self.current_indent += self._indent_width
 | 
						|
 | 
						|
    def _dedent(self):
 | 
						|
        self.current_indent -= self._indent_width
 | 
						|
 | 
						|
    @contextlib.contextmanager
 | 
						|
    def indentation(self):
 | 
						|
        """
 | 
						|
        Increase indentation.
 | 
						|
        """
 | 
						|
        self._indent()
 | 
						|
        try:
 | 
						|
            yield
 | 
						|
        finally:
 | 
						|
            self._dedent()
 | 
						|
 | 
						|
 | 
						|
log = LogContext()
 |