示例#1
0
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
示例#2
0
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
示例#3
0
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)
示例#4
0
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")