diff options
| author | Paride Legovini <paride@ubuntu.com> | 2022-12-06 19:46:15 +0100 |
|---|---|---|
| committer | Paride Legovini <paride@ubuntu.com> | 2022-12-06 19:46:15 +0100 |
| commit | c92df58ae5f3bc55aa58bbfb93ca60cb38b2615c (patch) | |
| tree | 11836f0d5d1177d691cfeada1e510f40885ce55e | |
| parent | f7b890b057c274398ff2cb45cce1629678c8f4e2 (diff) | |
Pin pockets with Pin-Priority: 500
Ubuntu is switching to NotAutomatic: yes for the proposed pocket:
the change is already operative on >= Lunar and under consideration
for older stable releases. This means that by default packages from
-proposed won't be installed unless explicitly requested.
The change is meant to make it easier for end users to keep -proposed
enabled (for SRU verification or individual package installation)
without manually adding a pin to avoid pulling in all of -proposed.
However when running autopkgtests with --apt-pocket=proposed we do want
to pull in all the pocket, so let's always give it Pin-Priority: 500.
This is similar to what Launchpad does with the buildds.
Note: This change does not really treat -proposed in a special way:
any pocket will get Pin-Priority: 500. It makes sense to keep the tool
behavior consistent, and we're not aware of cases where this could be
cause issues.
| -rw-r--r-- | lib/adt_testbed.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/lib/adt_testbed.py b/lib/adt_testbed.py index d2991eb..9f92b2b 100644 --- a/lib/adt_testbed.py +++ b/lib/adt_testbed.py @@ -347,15 +347,22 @@ class Testbed: ''' % (pocket, pocket, pocket) self.check_exec(['sh', '-ec', script]) - # create apt pinning for --apt-pocket with package list + # create apt pinning for --apt-pocket for pocket in self.add_apt_pockets: # do we have a package list? - try: + pkglist = '' + if '=' in pocket: (pocket, pkglist) = pocket.split('=', 1) - except ValueError: - continue - self._create_apt_pinning_for_packages(self._get_default_release() + '-' + pocket, pkglist, - [self._get_default_release() + '-updates']) + + # set priority for the specified pocket. + # this is useful to override NotAutomatic: yes. + self._create_apt_pinning_for_pocket(self._get_default_release() + '-' + pocket) + + # set priorities for individual packages if specified + if pkglist: + self._create_apt_pinning_for_packages(self._get_default_release() + '-' + pocket, pkglist, + [self._get_default_release() + '-updates']) + if self.add_apt_releases: get_mirror_and_components = ''' sed -rn 's/^(deb|deb-src) +(\\[.*\\] *)?((http|https|file):[^ ]*) +([^ ]+) +(.*)$/\\2\\3 \\6/p' \\ @@ -1332,6 +1339,14 @@ Description: satisfy autopkgtest test dependencies # helper methods # + def _create_apt_pinning_for_pocket(self, release): + '''Create apt pinning for --apt-pocket=pocket[=pkglist] with + Pin-Priority: 500 to undo the effect of NotAutomatic: yes''' + + script = 'printf "Package: *\\nPin: release a=%(release)s\\nPin-Priority: 500\\n" > /etc/apt/preferences.d/autopkgtest-%(release)s-baseline; ' % \ + {'release': release} + self.check_exec(['sh', '-ec', script]) + def _create_apt_pinning_for_packages(self, release, pkglist, default_releases=[]): '''Create apt pinning for --apt-pocket=pocket=pkglist and --pin-packages=release=pkglist''' |
