Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/dep/, pym/portage/tests/dep/
Date: Mon, 21 Sep 2015 20:15:56
Message-Id: 1442866416.d4966a381ee4577818bd972946647338046715b1.zmedico@gentoo
1 commit: d4966a381ee4577818bd972946647338046715b1
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon Sep 21 01:52:19 2015 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Mon Sep 21 20:13:36 2015 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=d4966a38
7
8 match_from_list: restrict =* to match only on version part boundaries (bug 560466)
9
10 Make the =* glob match only on boundaries between version parts, in order
11 to eliminate ambiguity (so that 1* does not match version 10). Only break
12 compatibility in cases where dependencies have been specified ambiguously.
13
14 X-Gentoo-Bug: 560466
15 X-Gentoo-Bug-url: https://bugs.gentoo.org/show_bug.cgi?id=560466
16 Acked-by: Brian Dolbec <dolsen <AT> gentoo.org>
17
18 pym/portage/dep/__init__.py | 7 ++++++-
19 pym/portage/tests/dep/test_match_from_list.py | 21 +++++++++++++++------
20 2 files changed, 21 insertions(+), 7 deletions(-)
21
22 diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py
23 index 0a13d9f..5dd1638 100644
24 --- a/pym/portage/dep/__init__.py
25 +++ b/pym/portage/dep/__init__.py
26 @@ -2250,7 +2250,12 @@ def match_from_list(mydep, candidate_list):
27 pkg.cp + "-" + xs[2],
28 pkg.cp + "-" + myver, 1)
29 if xcpv.startswith(mycpv_cmp):
30 - mylist.append(x)
31 + # =* glob matches only on boundaries between version parts,
32 + # so 1* does not match 10 (bug 560466).
33 + next_char = xcpv[len(mycpv_cmp):len(mycpv_cmp)+1]
34 + if (not next_char or next_char in '._-' or
35 + mycpv_cmp[-1].isdigit() != next_char.isdigit()):
36 + mylist.append(x)
37
38 elif operator == "~": # version, any revision, match
39 for x in candidate_list:
40
41 diff --git a/pym/portage/tests/dep/test_match_from_list.py b/pym/portage/tests/dep/test_match_from_list.py
42 index 75ac8fd..3080479 100644
43 --- a/pym/portage/tests/dep/test_match_from_list.py
44 +++ b/pym/portage/tests/dep/test_match_from_list.py
45 @@ -73,12 +73,21 @@ class Test_match_from_list(TestCase):
46 ("sys-apps/portage:0", [Package("=sys-apps/portage-045:0")], ["sys-apps/portage-045"]),
47 ("sys-apps/portage:0", [Package("=sys-apps/portage-045:1")], []),
48 ("=cat/pkg-1-r1*", ["cat/pkg-1_alpha1"], []),
49 - ("=cat/pkg-1-r1*", ["cat/pkg-1-r11"], ["cat/pkg-1-r11"]),
50 - ("=cat/pkg-1-r1*", ["cat/pkg-01-r11"], ["cat/pkg-01-r11"]),
51 - ("=cat/pkg-01-r1*", ["cat/pkg-1-r11"], ["cat/pkg-1-r11"]),
52 - ("=cat/pkg-01-r1*", ["cat/pkg-001-r11"], ["cat/pkg-001-r11"]),
53 - ("=sys-fs/udev-1*", ["sys-fs/udev-123"], ["sys-fs/udev-123"]),
54 - ("=sys-fs/udev-4*", ["sys-fs/udev-456"], ["sys-fs/udev-456"]),
55 + # =* glob matches only on boundaries between version parts,
56 + # so 1* does not match 10 (bug 560466).
57 + ("=cat/pkg-1.1*", ["cat/pkg-1.1-r1", "cat/pkg-1.10-r1"], ["cat/pkg-1.1-r1"]),
58 + ("=cat/pkg-1-r1*", ["cat/pkg-1-r11"], []),
59 + ("=cat/pkg-1_pre*", ["cat/pkg-1_pre1"], ["cat/pkg-1_pre1"]),
60 + ("=cat/pkg-1-r1*", ["cat/pkg-1-r1"], ["cat/pkg-1-r1"]),
61 + ("=cat/pkg-1-r11*", ["cat/pkg-1-r11"], ["cat/pkg-1-r11"]),
62 + ("=cat/pkg-1-r11*", ["cat/pkg-01-r11"], ["cat/pkg-01-r11"]),
63 + ("=cat/pkg-01-r11*", ["cat/pkg-1-r11"], ["cat/pkg-1-r11"]),
64 + ("=cat/pkg-01-r11*", ["cat/pkg-001-r11"], ["cat/pkg-001-r11"]),
65 + ("=sys-fs/udev-1*", ["sys-fs/udev-123", "sys-fs/udev-123-r1"], []),
66 + ("=sys-fs/udev-123*", ["sys-fs/udev-123"], ["sys-fs/udev-123"]),
67 + ("=sys-fs/udev-123*", ["sys-fs/udev-123-r1"], ["sys-fs/udev-123-r1"]),
68 + ("=sys-fs/udev-4*", ["sys-fs/udev-456", "sys-fs/udev-456-r1"], []),
69 + ("=sys-fs/udev-456*", ["sys-fs/udev-456"], ["sys-fs/udev-456"]),
70 ("*/*", ["sys-fs/udev-456"], ["sys-fs/udev-456"]),
71 ("*/*:0", ["sys-fs/udev-456:0"], ["sys-fs/udev-456:0"]),
72 ("*/*:1", ["sys-fs/udev-456:0"], []),