mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-31 10:37:13 +02:00
Improve package caching for PkgManager
This commit is contained in:
@ -261,7 +261,6 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
_INSTALLED_CACHE = {}
|
_INSTALLED_CACHE = {}
|
||||||
|
|
||||||
def __init__(self, package_dir, repositories=None):
|
def __init__(self, package_dir, repositories=None):
|
||||||
self._INSTALLED_CACHE = {}
|
|
||||||
self.repositories = repositories
|
self.repositories = repositories
|
||||||
self.package_dir = package_dir
|
self.package_dir = package_dir
|
||||||
if not isdir(self.package_dir):
|
if not isdir(self.package_dir):
|
||||||
@ -272,10 +271,6 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
def manifest_name(self):
|
def manifest_name(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def reset_cache():
|
|
||||||
BasePkgManager._INSTALLED_CACHE = {}
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def download(url, dest_dir, sha1=None):
|
def download(url, dest_dir, sha1=None):
|
||||||
fd = FileDownloader(url, dest_dir)
|
fd = FileDownloader(url, dest_dir)
|
||||||
@ -289,6 +284,10 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
fu = FileUnpacker(source_path, dest_dir)
|
fu = FileUnpacker(source_path, dest_dir)
|
||||||
return fu.start()
|
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):
|
def print_message(self, message, nl=True):
|
||||||
click.echo("%s: %s" % (self.__class__.__name__, message), nl=nl)
|
click.echo("%s: %s" % (self.__class__.__name__, message), nl=nl)
|
||||||
|
|
||||||
|
@ -26,17 +26,17 @@ import semantic_version
|
|||||||
from platformio import app, exception, util
|
from platformio import app, exception, util
|
||||||
from platformio.managers.package import BasePkgManager, PackageManager
|
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):
|
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__(
|
BasePkgManager.__init__(
|
||||||
self,
|
self, package_dir or PLATFORMS_DIR, repositories)
|
||||||
join(util.get_home_dir(), "platforms"),
|
|
||||||
["http://dl.platformio.org/platforms/manifest.json"]
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def manifest_name(self):
|
def manifest_name(self):
|
||||||
@ -84,7 +84,7 @@ class PlatformManager(BasePkgManager):
|
|||||||
deppkgs[pkgname] = set()
|
deppkgs[pkgname] = set()
|
||||||
deppkgs[pkgname].add(pkgmanifest['version'])
|
deppkgs[pkgname].add(pkgmanifest['version'])
|
||||||
|
|
||||||
pm = PackageManager(PACKAGE_DIR)
|
pm = PackageManager(PACKAGES_DIR)
|
||||||
for manifest in pm.get_installed():
|
for manifest in pm.get_installed():
|
||||||
if manifest['name'] not in names:
|
if manifest['name'] not in names:
|
||||||
continue
|
continue
|
||||||
@ -315,7 +315,7 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin):
|
|||||||
self._manifest = util.load_json(manifest_path)
|
self._manifest = util.load_json(manifest_path)
|
||||||
|
|
||||||
self.pm = PackageManager(
|
self.pm = PackageManager(
|
||||||
PACKAGE_DIR, self._manifest.get("packageRepositories"))
|
PACKAGES_DIR, self._manifest.get("packageRepositories"))
|
||||||
|
|
||||||
self._verbose = False
|
self._verbose = False
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user