summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorParide Legovini <paride@ubuntu.com>2022-12-06 19:46:15 +0100
committerParide Legovini <paride@ubuntu.com>2022-12-06 19:46:15 +0100
commitc92df58ae5f3bc55aa58bbfb93ca60cb38b2615c (patch)
tree11836f0d5d1177d691cfeada1e510f40885ce55e
parentf7b890b057c274398ff2cb45cce1629678c8f4e2 (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.py27
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'''