mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 01:57:13 +02:00
Fix file locking of package installer // Issue #1594
This commit is contained in:
@ -680,39 +680,39 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
silent=False,
|
silent=False,
|
||||||
after_update=False,
|
after_update=False,
|
||||||
force=False):
|
force=False):
|
||||||
name, requirements, url = self.parse_pkg_uri(name, requirements)
|
|
||||||
package_dir = self.get_package_dir(name, requirements, url)
|
|
||||||
|
|
||||||
# avoid circle dependencies
|
|
||||||
if not self.INSTALL_HISTORY:
|
|
||||||
self.INSTALL_HISTORY = []
|
|
||||||
history_key = "%s-%s-%s" % (name, requirements or "", url or "")
|
|
||||||
if history_key in self.INSTALL_HISTORY:
|
|
||||||
return package_dir
|
|
||||||
self.INSTALL_HISTORY.append(history_key)
|
|
||||||
|
|
||||||
if package_dir and force:
|
|
||||||
self.uninstall(package_dir)
|
|
||||||
package_dir = None
|
|
||||||
|
|
||||||
if not package_dir or not silent:
|
|
||||||
msg = "Installing " + click.style(name, fg="cyan")
|
|
||||||
if requirements:
|
|
||||||
msg += " @ " + requirements
|
|
||||||
self.print_message(msg)
|
|
||||||
if package_dir:
|
|
||||||
if not silent:
|
|
||||||
click.secho(
|
|
||||||
"{name} @ {version} is already installed".format(
|
|
||||||
**self.load_manifest(package_dir)),
|
|
||||||
fg="yellow")
|
|
||||||
return package_dir
|
|
||||||
|
|
||||||
pkg_dir = None
|
pkg_dir = None
|
||||||
# interprocess lock
|
# interprocess lock
|
||||||
with LockFile(self.package_dir):
|
with LockFile(self.package_dir):
|
||||||
self.cache_reset()
|
self.cache_reset()
|
||||||
|
|
||||||
|
name, requirements, url = self.parse_pkg_uri(name, requirements)
|
||||||
|
package_dir = self.get_package_dir(name, requirements, url)
|
||||||
|
|
||||||
|
# avoid circle dependencies
|
||||||
|
if not self.INSTALL_HISTORY:
|
||||||
|
self.INSTALL_HISTORY = []
|
||||||
|
history_key = "%s-%s-%s" % (name, requirements or "", url or "")
|
||||||
|
if history_key in self.INSTALL_HISTORY:
|
||||||
|
return package_dir
|
||||||
|
self.INSTALL_HISTORY.append(history_key)
|
||||||
|
|
||||||
|
if package_dir and force:
|
||||||
|
self.uninstall(package_dir)
|
||||||
|
package_dir = None
|
||||||
|
|
||||||
|
if not package_dir or not silent:
|
||||||
|
msg = "Installing " + click.style(name, fg="cyan")
|
||||||
|
if requirements:
|
||||||
|
msg += " @ " + requirements
|
||||||
|
self.print_message(msg)
|
||||||
|
if package_dir:
|
||||||
|
if not silent:
|
||||||
|
click.secho(
|
||||||
|
"{name} @ {version} is already installed".format(
|
||||||
|
**self.load_manifest(package_dir)),
|
||||||
|
fg="yellow")
|
||||||
|
return package_dir
|
||||||
|
|
||||||
if url:
|
if url:
|
||||||
pkg_dir = self._install_from_url(
|
pkg_dir = self._install_from_url(
|
||||||
name, url, requirements, track=True)
|
name, url, requirements, track=True)
|
||||||
|
Reference in New Issue
Block a user