blob: 225b02f964cf188df03fbb17e0ba02728a5dc2ff [file] [log] [blame]
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001From ee05e55e84b53f4bb0d0baba13ca47a8f84b7cb4 Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Wed, 30 Sep 2015 01:12:52 -0700
4Subject: [PATCH] smart:cache.py: getPackages() matches name + arch
5
6It only matched name ony in the past, for example:
7smart install busybox (matched)
8but:
9smart install busybox@core2_64 (didn't match)
10
11The installation is very slow when no match since it would seach all the
12packages in the repo
13This patch makes it match both.
14
15Upstream-Status: Pending
16
17Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
18---
19 smart/cache.py | 3 ++-
20 smart/ccache.c | 9 ++++++++-
21 2 files changed, 10 insertions(+), 2 deletions(-)
22
23diff --git a/smart/control.py b/smart/control.py
24index d44abe7..f23a604 100644
25--- a/smart/control.py
26+++ b/smart/control.py
27@@ -876,9 +876,13 @@ class Control(object):
28 objects = []
29
30 # If we find packages with exactly the given
31- # name or name-version, use them.
32- for pkg in self._cache.getPackages(s):
33- if pkg.name == s or "%s-%s" % (pkg.name, pkg.version) == s:
34+ # name, name-version, or name@arch, use them.
35+ s_name = s
36+ if "@" in s:
37+ s_name = s.split("@")[0]
38+ for pkg in self._cache.getPackages(s_name):
39+ if pkg.name == s or "%s-%s" % (pkg.name, pkg.version) == s \
40+ or "%s@%s" % (pkg.name, pkg.version.split('@')[1]) == s:
41 objects.append((1.0, pkg))
42
43 if not objects: