Package: autopkgtest
Version: 4.3
Severity: minor
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu artful ubuntu-patch

On my system I have a mixture of arch-qualified (deb) and not-arch-qualified
(deb-src) lines in sources.list.  This results in 'autopkgtest
--apt-pocket=proposed=src:perl' trying to create files with names like
'/etc/apt/preferences.d/autopkgtest-http://archive.ubuntu.com/ubuntu-proposed'.

It's not obvious to me why the sed script in question behaves this way, but
it appears that e.g. this line is matching when it shouldn't and resulting
in the broken output:

  deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu artful-updates main

This can be resolved with a two-pass sed script, first ignoring the [] field
and then applying the rest of the rules to extract the series name.

Thanks for considering the patch.

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slanga...@ubuntu.com                                     vor...@debian.org
diff -Nru autopkgtest-4.3ubuntu1/lib/adt_testbed.py 
autopkgtest-4.3ubuntu2/lib/adt_testbed.py
--- autopkgtest-4.3ubuntu1/lib/adt_testbed.py   2017-01-11 03:34:09.000000000 
-0800
+++ autopkgtest-4.3ubuntu2/lib/adt_testbed.py   2017-07-31 17:23:27.000000000 
-0700
@@ -1176,7 +1176,7 @@
 
         # get release name
         script = 'SRCS=$(ls /etc/apt/sources.list 
/etc/apt/sources.list.d/*.list 2>/dev/null|| true); '
-        script += '''REL=$(sed -rn '/^(deb|deb-src) 
.*(ubuntu.com|debian.org|ftpmaster|file:\/\/\/tmp\/testarchive)/ { s/^[^ ]+ 
+(\[.*\] *)?[^ ]* +([^ -]+) +.*$/\\2/p}' $SRCS | head -n1); '''
+        script += '''REL=$(sed -rn '/^(deb|deb-src) 
.*(ubuntu.com|debian.org|ftpmaster|file:\/\/\/tmp\/testarchive)/ { s/\[.*\] 
+//; s/^[^ ]+ +[^ ]* +([^ -]+) +.*$/\\1/p }' $SRCS | head -n1); '''
 
         script += 'mkdir -p /etc/apt/preferences.d; '
         script += 'PKGS="%s"; ' % ' '.join(binpkgs)

Reply via email to