From 30733e837677b941c54806aae8b850b21f8ec006 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 19 Jul 2016 23:49:50 +0300 Subject: [PATCH] Improve package caching for PkgManager --- platformio/managers/package.py | 9 ++++----- platformio/managers/platform.py | 16 ++++++++-------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/platformio/managers/package.py b/platformio/managers/package.py index f0cec055..352c0d00 100644 --- a/platformio/managers/package.py +++ b/platformio/managers/package.py @@ -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) diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index 83402f0f..db7ea51a 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -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