virtualenv: avoid to reinstall applibs except if requirements changed
This commit is contained in:
parent
5db8675ea3
commit
8affd6f743
1 changed files with 19 additions and 0 deletions
|
@ -310,10 +310,23 @@ class Buildozer(object):
|
|||
requirements = [x for x in requirements if x not in
|
||||
target_available_packages]
|
||||
|
||||
# did we already installed the libs ?
|
||||
if exists(self.applibs_dir) and \
|
||||
self.state.get('cache.applibs', '') == requirements:
|
||||
self.debug('Application requirements already installed, pass')
|
||||
return
|
||||
|
||||
# recreate applibs
|
||||
self.rmdir(self.applibs_dir)
|
||||
self.mkdir(self.applibs_dir)
|
||||
|
||||
# ok now check the availability of all requirements
|
||||
for requirement in requirements:
|
||||
self._install_application_requirement(requirement)
|
||||
|
||||
# everything goes as expected, save this state!
|
||||
self.state['cache.applibs'] = requirements
|
||||
|
||||
def _install_application_requirement(self, module):
|
||||
self._ensure_virtualenv()
|
||||
self.debug('Install requirement {} in virtualenv'.format(module))
|
||||
|
@ -355,6 +368,12 @@ class Buildozer(object):
|
|||
self.debug('Create directory {0}'.format(dn))
|
||||
makedirs(dn)
|
||||
|
||||
def rmdir(self, dn):
|
||||
if not exists(dn):
|
||||
return
|
||||
self.debug('Remove directory and subdirectory {}'.format(dn))
|
||||
rmtree(dn)
|
||||
|
||||
def file_exists(self, *args):
|
||||
return exists(join(*args))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue