예제 #1
0
파일: ide.py 프로젝트: ubuntu/ubuntu-make
 def parse_download_link(self, line, in_download):
     """Parse RStudio download links"""
     url = None
     checksum = None
     if int(get_current_distro_version().split('.')[0]) < 18 or \
        int(get_current_distro_version(distro_name="debian").split('.')[0]) < 9:
         ubuntu_version = 'xenial'
     elif int(
             get_current_distro_version(
                 distro_name="debian").split('.')[0]) == 9:
         ubuntu_version = "debian9"
     else:
         ubuntu_version = 'bionic'
     if '-debian.tar.gz' in line:
         p = re.search(
             r'href=\"([^<]*{}.*-debian\.tar\.gz)\"'.format(ubuntu_version),
             line)
         with suppress(AttributeError):
             url = p.group(1)
             in_download = True
     if in_download and 'title="SHA-256"' in line:
         p = re.search('data-content="(.*)">', line)
         with suppress(AttributeError):
             checksum = p.group(1)
     return ((url, checksum), in_download)
예제 #2
0
 def is_installable(self):
     """Return if the framework can be installed on that arch"""
     if self.only_for_removal:
         return False
     try:
         if len(self.only_on_archs) > 0:
             # we have some restricted archs, check we support it
             current_arch = get_current_arch()
             if current_arch not in self.only_on_archs:
                 logger.debug(
                     "{} only supports {} archs and you are on {}.".format(
                         self.name, self.only_on_archs, current_arch))
                 return False
         if self.only_ubuntu:
             # set framework installable only on ubuntu
             if get_current_distro_id() != "ubuntu":
                 return False
         if len(self.only_ubuntu_version) > 0:
             current_version = get_current_distro_version()
             if current_version not in self.only_ubuntu_version:
                 logger.debug(
                     "{} only supports {} and you are on {}.".format(
                         self.name, self.only_ubuntu_version,
                         current_version))
                 return False
         if not RequirementsHandler().is_bucket_available(
                 self.packages_requirements):
             return False
     except:
         logger.error(
             "An error occurred when detecting platform, don't register {}".
             format(self.name))
         return False
     return True
예제 #3
0
    def get_metadata_and_check_license(self, result):
        """Download files to download + license and check it"""
        logger.debug("Parse download metadata")

        error_msg = result[self.download_page].error
        if error_msg:
            logger.error("An error occurred while downloading {}: {}".format(
                self.download_page, error_msg))
            UI.return_main_screen(status_code=1)
        in_download = False
        sig_url = None
        for line in result[self.download_page].buffer:
            line_content = line.decode()
            (new_sig_url,
             in_download) = self.parse_download_link(line_content, in_download)
            if str(new_sig_url) > str(sig_url):
                # Avoid fetching development snapshots
                if 'DEVELOPMENT-SNAPSHOT' not in new_sig_url:
                    tmp_release = re.search("ubuntu(.....).tar",
                                            new_sig_url).group(1)
                    if tmp_release <= get_current_distro_version():
                        sig_url = new_sig_url
        if not sig_url:
            logger.error("Download page changed its syntax or is not parsable")
            UI.return_main_screen(status_code=1)

        DownloadCenter(urls=[
            DownloadItem(sig_url, None),
            DownloadItem(self.asc_url, None)
        ],
                       on_done=self.check_gpg_and_start_download,
                       download=False)
예제 #4
0
 def parse_download_link(self, line, in_download):
     """Parse RStudio download links"""
     url = None
     checksum = None
     if get_current_distro_version().split('.')[0] < "18" or \
        get_current_distro_version(name="debian") < "9":
         ubuntu_version = 'trusty'
     elif get_current_distro_version(name="debian") == "9":
         ubuntu_version = "debian9"
     else:
         ubuntu_version = 'bionic'
     if '-debian.tar.gz' in line:
         p = re.search(
             r'href=\"([^<]*{}.*-debian\.tar\.gz)\"'.format(ubuntu_version),
             line)
         with suppress(AttributeError):
             url = p.group(1)
             in_download = True
     if in_download and '<td><code>' in line:
         p = re.search('<td><code>(.*)</code></td>', line)
         with suppress(AttributeError):
             checksum = p.group(1)
     return ((url, checksum), in_download)
예제 #5
0
 def ubuntu_version(self):
     if get_current_distro_version().split('.')[0] < "18":
         return('xenial')
     else:
         return('bionic')