예제 #1
0
    def _install_from_piorepo(self, name, requirements):
        pkg_dir = None
        pkgdata = None
        versions = None
        last_exc = None
        for versions in PackageRepoIterator(name, self.repositories):
            pkgdata = self.max_satisfying_repo_version(versions, requirements)
            if not pkgdata:
                continue
            try:
                pkg_dir = self._install_from_url(name, pkgdata["url"],
                                                 requirements,
                                                 pkgdata.get("sha1"))
                break
            except Exception as e:  # pylint: disable=broad-except
                last_exc = e
                click.secho("Warning! Package Mirror: %s" % e, fg="yellow")
                click.secho("Looking for another mirror...", fg="yellow")

        if versions is None:
            util.internet_on(raise_exception=True)
            raise exception.UnknownPackage(name +
                                           (". Error -> %s" %
                                            last_exc if last_exc else ""))
        if not pkgdata:
            raise exception.UndefinedPackageVersion(requirements or "latest",
                                                    util.get_systype())
        return pkg_dir
예제 #2
0
    def _install_from_piorepo(self, name, requirements):
        assert name.startswith("id="), name
        version = self.get_latest_repo_version(name, requirements)
        if not version:
            raise exception.UndefinedPackageVersion(requirements or "latest",
                                                    util.get_systype())
        dl_data = util.get_api_result("/lib/download/" + str(name[3:]),
                                      dict(version=version),
                                      cache_valid="30d")
        assert dl_data

        return self._install_from_url(
            name, dl_data['url'].replace("http://", "https://")
            if app.get_setting("enable_ssl") else dl_data['url'], requirements)
예제 #3
0
파일: lib.py 프로젝트: jakirkham/platformio
 def _install_from_piorepo(self, name, requirements):
     assert name.startswith("id=")
     version = self.get_latest_repo_version(name, requirements)
     if not version:
         raise exception.UndefinedPackageVersion(requirements or "latest",
                                                 util.get_systype())
     dl_data = util.get_api_result("/lib/download/" + str(name[3:]),
                                   dict(version=version))
     assert dl_data
     pkg_dir = None
     try:
         pkg_dir = self._install_from_url(
             name, dl_data['url'].replace("http://", "https://"),
             requirements)
     except exception.APIRequestError:
         pkg_dir = self._install_from_url(name, dl_data['url'],
                                          requirements)
     return pkg_dir