mini_buildd.package module

class mini_buildd.package.Changelog(file: Optional[Union[bytes, str, IO[str], Iterable[str], Iterable[bytes]]] = None, max_blocks: Optional[int] = None, allow_empty_author: bool = False, strict: bool = False, encoding: str = 'utf-8')

Bases: Changelog

Changelog class with some extra functions.

>>> cl = Changelog(mini_buildd.fopen("test-data/changelog"), max_blocks=100)
>>> cl.find_first_not("mini-buildd@buildd.intra")
('Stephan Sürken <absurd@debian.org>', '1.0.0-2')
>>> cl = Changelog(mini_buildd.fopen("test-data/changelog.ported"), max_blocks=100)
>>> cl.find_first_not("mini-buildd@buildd.intra")
('Stephan Sürken <absurd@debian.org>', '1.0.0-2')
>>> cl = Changelog(mini_buildd.fopen("test-data/changelog.oneblock"), max_blocks=100)
>>> cl.find_first_not("mini-buildd@buildd.intra")
('Stephan Sürken <absurd@debian.org>', '1.0.1-1~')
>>> cl = Changelog(mini_buildd.fopen("test-data/changelog.oneblock.ported"), max_blocks=100)
>>> cl.find_first_not("mini-buildd@buildd.intra")
('Mini Buildd <mini-buildd@buildd.intra>', '1.0.1-1~')
find_first_not(author)

Find (author,version+1) of the first changelog block not by given author.

class mini_buildd.package.DebianVersion(version: Optional[Union[str, BaseVersion]])

Bases: Version

classmethod stamp()
classmethod stamp_regex(stamp=None)
gen_internal_rebuild()

Generate an ‘internal rebuild’ version.

If the version is not already a rebuild version, just append the rebuild appendix, otherwise replace the old one. For example:

1.2.3 -> 1.2.3+rebuilt20130215100453
1.2.3+rebuilt20130215100453 -> 1.2.3+rebuilt20130217120517

Code samples:

>>> regex = rf"^1\.2\.3\+rebuilt{DebianVersion.stamp_regex()}$"
>>> bool(re.match(regex, DebianVersion("1.2.3").gen_internal_rebuild()))
True
>>> bool(re.match(regex, DebianVersion("1.2.3+rebuilt20130215100453").gen_internal_rebuild()))
True
gen_external_port(default_version)

Generate an ‘external port’ version.

This currently just appends the given default version appendix. For example:

1.2.3 -> 1.2.3~test60+1

gen_internal_port(from_mandatory_version_regex, to_default_version)

Generate an ‘internal port’ version.

Tests for the (recommended) Default layout:

>>> sid_regex = r"~testSID\+[1-9]"
>>> sid_default = "~testSID+1"
>>> sid_exp_regex = r"~testSID\+0"
>>> sid_exp_default = "~testSID+0"
>>> wheezy_regex = r"~test70\+[1-9]"
>>> wheezy_default = "~test70+1"
>>> wheezy_exp_regex = r"~test70\+0"
>>> wheezy_exp_default = "~test70+0"
>>> squeeze_regex = r"~test60\+[1-9]"
>>> squeeze_default = "~test60+1"
>>> squeeze_exp_regex = r"~test60\+0"
>>> squeeze_exp_default = "~test60+0"

sid->wheezy ports:

>>> DebianVersion("1.2.3-1~testSID+1").gen_internal_port(sid_regex, wheezy_default)
'1.2.3-1~test70+1'
>>> DebianVersion("1.2.3-1~testSID+4").gen_internal_port(sid_regex, wheezy_default)
'1.2.3-1~test70+4'
>>> DebianVersion("1.2.3-1~testSID+4fud15").gen_internal_port(sid_regex, wheezy_default)
'1.2.3-1~test70+4fud15'
>>> DebianVersion("1.2.3-1~testSID+0").gen_internal_port(sid_exp_regex, wheezy_exp_default)
'1.2.3-1~test70+0'
>>> DebianVersion("1.2.3-1~testSID+0exp2").gen_internal_port(sid_exp_regex, wheezy_exp_default)
'1.2.3-1~test70+0exp2'

wheezy->squeeze ports:

>>> DebianVersion("1.2.3-1~test70+1").gen_internal_port(wheezy_regex, squeeze_default)
'1.2.3-1~test60+1'
>>> DebianVersion("1.2.3-1~test70+4").gen_internal_port(wheezy_regex, squeeze_default)
'1.2.3-1~test60+4'
>>> DebianVersion("1.2.3-1~test70+4fud15").gen_internal_port(wheezy_regex, squeeze_default)
'1.2.3-1~test60+4fud15'
>>> DebianVersion("1.2.3-1~test70+0").gen_internal_port(wheezy_exp_regex, squeeze_exp_default)
'1.2.3-1~test60+0'
>>> DebianVersion("1.2.3-1~test70+0exp2").gen_internal_port(wheezy_exp_regex, squeeze_exp_default)
'1.2.3-1~test60+0exp2'

No version restrictions: just add default version

>>> DebianVersion("1.2.3-1").gen_internal_port(".*", "~port+1")
'1.2.3-1~port+1'
class mini_buildd.package.TemplatePackage(template)

Bases: TmpDir

Copies a package template into a temporary directory (under ‘package/’).

property dsc
class mini_buildd.package.KeyringPackage

Bases: TemplatePackage

class mini_buildd.package.TestPackage(template, auto_ports=None)

Bases: TemplatePackage

mini_buildd.package.port(source, from_diststr, to_diststr, version=None, options=None)
mini_buildd.package.port_ext(dsc_url, to_diststr, options=None, allow_unauthenticated=False)
mini_buildd.package.upload_template_package(template_package, diststr)

Portext macro. Used for keyring_packages and test_packages.