|
- from __future__ import absolute_import
-
- import os.path
- import tempfile
-
- from pip.utils import rmtree
-
-
- class BuildDirectory(object):
-
- def __init__(self, name=None, delete=None):
- # If we were not given an explicit directory, and we were not given an
- # explicit delete option, then we'll default to deleting.
- if name is None and delete is None:
- delete = True
-
- if name is None:
- # We realpath here because some systems have their default tmpdir
- # symlinked to another directory. This tends to confuse build
- # scripts, so we canonicalize the path by traversing potential
- # symlinks here.
- name = os.path.realpath(tempfile.mkdtemp(prefix="pip-build-"))
- # If we were not given an explicit directory, and we were not given
- # an explicit delete option, then we'll default to deleting.
- if delete is None:
- delete = True
-
- self.name = name
- self.delete = delete
-
- def __repr__(self):
- return "<{} {!r}>".format(self.__class__.__name__, self.name)
-
- def __enter__(self):
- return self.name
-
- def __exit__(self, exc, value, tb):
- self.cleanup()
-
- def cleanup(self):
- if self.delete:
- rmtree(self.name)
|