class Codenames(Base): name = 'codenames' def __init__(self): super(Codenames, self).__init__() self.debian_info = DebianDistroInfo() self.ubuntu_info = UbuntuDistroInfo() self.settings = None def define_settings(self, settings): self.settings = settings def suite_to_codename(self, distro): suite = self.debian_info.codename(distro, datetime.date.today()) if not suite: return distro return suite def was_oldstable(self, limit): suite = self.suite_to_codename(self.settings['distribution']) # this check is only for debian if not self.debian_info.valid(suite): return False return suite == self.debian_info.old(limit) def was_stable(self, limit): suite = self.suite_to_codename(self.settings['distribution']) # this check is only for debian if not self.debian_info.valid(suite): return False return suite == self.debian_info.stable(limit) def kernel_package(self): packages = [] if self.settings['no-kernel'] or self.settings['kernel-package']: return packages if self.settings['arch'] == 'i386': # wheezy (which became oldstable on 2015-04-25) used '486' if self.was_oldstable(datetime.date(2015, 4, 26)): kernel_arch = '486' # jessie (which became oldstable on 2017-06-17) used '586' elif self.was_oldstable(datetime.date(2017, 6, 18)): kernel_arch = '586' else: kernel_arch = '686' elif self.settings['arch'] == 'armhf': kernel_arch = 'armmp' elif self.settings['arch'] == 'ppc64el': kernel_arch = 'powerpc64le' else: kernel_arch = self.settings['arch'] packages.append('linux-image-%s' % kernel_arch) return packages
class Codenames(Base): name = 'codenames' def __init__(self): super(Codenames, self).__init__() self.debian_info = DebianDistroInfo() self.ubuntu_info = UbuntuDistroInfo() self.settings = None def define_settings(self, settings): self.settings = settings def suite_to_codename(self, distro): suite = self.debian_info.codename(distro, datetime.date.today()) if not suite: return distro return suite def was_oldstable(self, limit): suite = self.suite_to_codename(self.settings['distribution']) # this check is only for debian if not self.debian_info.valid(suite): return False return suite == self.debian_info.old(limit) def was_stable(self, limit): suite = self.suite_to_codename(self.settings['distribution']) # this check is only for debian if not self.debian_info.valid(suite): return False return suite == self.debian_info.stable(limit) def kernel_package(self): packages = [] if self.settings['no-kernel'] or self.settings['kernel-package']: return packages if self.settings['arch'] == 'i386': # wheezy (which became oldstable on 04/25/2015) used '486' if self.was_oldstable(datetime.date(2015, 4, 26)): kernel_arch = '486' else: kernel_arch = '586' elif self.settings['arch'] == 'armhf': kernel_arch = 'armmp' elif self.settings['arch'] == 'ppc64el': kernel_arch = 'powerpc64le' else: kernel_arch = self.settings['arch'] packages.append('linux-image-%s' % kernel_arch) return packages
def get_ubuntu_delta_changelog(srcpkg): ''' Download the Ubuntu changelog and extract the entries since the last sync from Debian. ''' archive = Distribution('ubuntu').getArchive() spph = archive.getPublishedSources(source_name=srcpkg.getPackageName(), exact_match=True, pocket='Release') debian_info = DebianDistroInfo() topline = re.compile(r'^(\w%(name_chars)s*) \(([^\(\) \t]+)\)' r'((\s+%(name_chars)s+)+)\;' % {'name_chars': '[-+0-9a-z.]'}, re.IGNORECASE) delta = [] for record in spph: changes_url = record.changesFileUrl() if changes_url is None: # Native sync break try: response, body = Http().request(changes_url) except HttpLib2Error as e: Logger.error(str(e)) break if response.status != 200: Logger.error("%s: %s %s", changes_url, response.status, response.reason) break changes = Changes(Http().request(changes_url)[1]) for line in changes['Changes'].splitlines(): line = line[1:] m = topline.match(line) if m: distribution = m.group(3).split()[0].split('-')[0] if debian_info.valid(distribution): break if line.startswith(u' '): delta.append(line) else: continue break return '\n'.join(delta)
def get_ubuntu_delta_changelog(srcpkg): ''' Download the Ubuntu changelog and extract the entries since the last sync from Debian. ''' changelog = Changelog(srcpkg.getChangelog()) if changelog is None: return u'' delta = [] debian_info = DebianDistroInfo() for block in changelog: distribution = block.distributions.split()[0].split('-')[0] if debian_info.valid(distribution): break delta += [ unicode(change) for change in block.changes() if change.strip() ] return u'\n'.join(delta)
class DebianDistroInfoTestCase(unittest.TestCase): """TestCase object for distro_info.DebianDistroInfo""" #pylint: disable=C0103 def setUp(self): self._distro_info = DebianDistroInfo() self._date = datetime.date(2011, 1, 10) #pylint: enable=C0103 def test_all(self): """Test: List all known Debian distributions.""" all_distros = set(["buzz", "rex", "bo", "hamm", "slink", "potato", "woody", "sarge", "etch", "lenny", "squeeze", "sid", "experimental"]) self.assertEqual(all_distros - set(self._distro_info.all), set()) def test_devel(self): """Test: Get latest development Debian distribution.""" self.assertEqual(self._distro_info.devel(self._date), "sid") def test_old(self): """Test: Get old (stable) Debian distribution.""" self.assertEqual(self._distro_info.old(self._date), "etch") def test_stable(self): """Test: Get latest stable Debian distribution.""" self.assertEqual(self._distro_info.stable(self._date), "lenny") def test_supported(self): """Test: List all supported Debian distribution.""" self.assertEqual(self._distro_info.supported(self._date), ["lenny", "squeeze", "sid", "experimental"]) def test_testing(self): """Test: Get latest testing Debian distribution.""" self.assertEqual(self._distro_info.testing(self._date), "squeeze") def test_valid(self): """Test: Check for valid Debian distribution.""" self.assertTrue(self._distro_info.valid("sid")) self.assertTrue(self._distro_info.valid("stable")) self.assertFalse(self._distro_info.valid("foobar")) def test_unsupported(self): """Test: List all unsupported Debian distribution.""" unsupported = ["buzz", "rex", "bo", "hamm", "slink", "potato", "woody", "sarge", "etch"] self.assertEqual(self._distro_info.unsupported(self._date), unsupported) def test_codename(self): """Test: Codename decoding""" self.assertIsNone(self._distro_info.codename('foobar')) self.assertEqual(self._distro_info.codename('testing', self._date), self._distro_info.testing(self._date)) def test_codename_result(self): """Test: Check result set to codename.""" self.assertEqual(self._distro_info.old(self._date, "codename"), "etch") self.assertEqual(self._distro_info.devel(self._date, result="codename"), "sid") def test_fullname(self): """Test: Check result set to fullname.""" self.assertEqual(self._distro_info.stable(self._date, "fullname"), 'Debian 5.0 "Lenny"') result = self._distro_info.testing(self._date, result="fullname") self.assertEqual(result, 'Debian 6.0 "Squeeze"') def test_release(self): """Test: Check result set to release.""" self.assertEqual(self._distro_info.devel(self._date, "release"), "") self.assertEqual(self._distro_info.testing(self._date, "release"), "6.0") self.assertEqual(self._distro_info.stable(self._date, result="release"), "5.0")