Improve package caching for PkgManager

This commit is contained in:
Ivan Kravets
2016-07-19 23:49:50 +03:00
parent 1029233ec7
commit 30733e8376
2 changed files with 12 additions and 13 deletions

View File

@ -261,7 +261,6 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
_INSTALLED_CACHE = {}
def __init__(self, package_dir, repositories=None):
self._INSTALLED_CACHE = {}
self.repositories = repositories
self.package_dir = package_dir
if not isdir(self.package_dir):
@ -272,10 +271,6 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
def manifest_name(self):
raise NotImplementedError()
@staticmethod
def reset_cache():
BasePkgManager._INSTALLED_CACHE = {}
@staticmethod
def download(url, dest_dir, sha1=None):
fd = FileDownloader(url, dest_dir)
@ -289,6 +284,10 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
fu = FileUnpacker(source_path, dest_dir)
return fu.start()
def reset_cache(self):
if self.package_dir in BasePkgManager._INSTALLED_CACHE:
del BasePkgManager._INSTALLED_CACHE[self.package_dir]
def print_message(self, message, nl=True):
click.echo("%s: %s" % (self.__class__.__name__, message), nl=nl)

View File

@ -26,17 +26,17 @@ import semantic_version
from platformio import app, exception, util
from platformio.managers.package import BasePkgManager, PackageManager
PACKAGE_DIR = join(util.get_home_dir(), "packages")
PLATFORMS_DIR = join(util.get_home_dir(), "platforms")
PACKAGES_DIR = join(util.get_home_dir(), "packages")
class PlatformManager(BasePkgManager):
def __init__(self):
def __init__(self, package_dir=None, repositories=None):
if not repositories:
repositories = ["http://dl.platformio.org/platforms/manifest.json"]
BasePkgManager.__init__(
self,
join(util.get_home_dir(), "platforms"),
["http://dl.platformio.org/platforms/manifest.json"]
)
self, package_dir or PLATFORMS_DIR, repositories)
@property
def manifest_name(self):
@ -84,7 +84,7 @@ class PlatformManager(BasePkgManager):
deppkgs[pkgname] = set()
deppkgs[pkgname].add(pkgmanifest['version'])
pm = PackageManager(PACKAGE_DIR)
pm = PackageManager(PACKAGES_DIR)
for manifest in pm.get_installed():
if manifest['name'] not in names:
continue
@ -315,7 +315,7 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin):
self._manifest = util.load_json(manifest_path)
self.pm = PackageManager(
PACKAGE_DIR, self._manifest.get("packageRepositories"))
PACKAGES_DIR, self._manifest.get("packageRepositories"))
self._verbose = False