Octavio Galland has proposed merging 
~octagalland/ubuntu-qa-tools:uvt_repo_prioritize_local into 
ubuntu-qa-tools:master.

Commit message:
make uvt repo prioritize local repository

Requested reviews:
  Ubuntu Bug Control (ubuntu-bugcontrol)

For more details, see:
https://code.launchpad.net/~octagalland/ubuntu-qa-tools/+git/ubuntu-qa-tools/+merge/470446

When enabling the local repository with uvt, the user may have added other PPAs 
with priority pinning (e.g. Ubuntu Pro ppas). In that case we'd like to assign 
the highest existing priority to the local repo to ensure local packages take 
precedence during QA testing
-- 
Your team Ubuntu Bug Control is requested to review the proposed merge of 
~octagalland/ubuntu-qa-tools:uvt_repo_prioritize_local into 
ubuntu-qa-tools:master.
diff --git a/vm-tools/uvt b/vm-tools/uvt
index 36a3c31..b6e5636 100755
--- a/vm-tools/uvt
+++ b/vm-tools/uvt
@@ -20,6 +20,7 @@ import subprocess
 import sys
 import time
 import xml.etree.ElementTree as ET
+from urllib.parse import urlparse
 
 try:
     import distro_info
@@ -1154,16 +1155,25 @@ def vm_update_local_repo(vm_name, release, enable=True):
         return False
 
     sources_file = "/etc/apt/sources.list.d/uvt-repo.list"
+    preferences_file = "/etc/apt/preferences.d/uvt-test-repo"
+    repo_url = uvt_conf['vm_repo_url']
+    repo_host = urlparse(repo_url).netloc
 
     if enable == True:
         print("Enabling %s for %s" % (uvt_conf['vm_repo_url'], vm_name))
-        command = "bash -c 'echo -e \"deb %(repo_url)s %(release)s/\ndeb-src %(repo_url)s %(release)s/\" > %(sources)s'" \
-                   % { 'repo_url': uvt_conf['vm_repo_url'],
+        command = """bash -c '
+            echo -e \"Package: *\" > %(preferences)s &&
+            echo -e \"Pin: origin %(repo_host)s\" >> %(preferences)s &&
+            (cat /etc/apt/preferences.d/* | grep -e \"^Pin-Priority: [0-9]\\+$\" || echo \"Pin-Priority: 500\") | sort -r | head -n1 >> %(preferences)s &&
+            echo -e \"deb %(repo_url)s %(release)s/\ndeb-src %(repo_url)s %(release)s/\" > %(sources)s'""" \
+                   % { 'repo_url': repo_url,
                        'release': release,
-                       'sources': sources_file }
+                       'sources': sources_file,
+                       'preferences': preferences_file,
+                       'repo_host': repo_host }
     else:
         print("Disabling %s for %s" % (uvt_conf['vm_repo_url'], vm_name))
-        command = "rm -f %s" % sources_file
+        command = "rm -f %s %s" % (sources_file, preferences_file)
 
     result = vm_run_command(vm_name, command, root=True, force_keys=True)
     if result == True:
_______________________________________________
Mailing list: https://launchpad.net/~ubuntu-bugcontrol
Post to     : ubuntu-bugcontrol@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-bugcontrol
More help   : https://help.launchpad.net/ListHelp

Reply via email to