diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2013-05-21 03:18:38 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2013-05-21 03:18:38 (GMT) |
commit | 0677510290b863f1c9df060f162df333194c51ca (patch) | |
tree | 977c36118c046c26c453d58a373832da111624e5 | |
parent | 42771e769e8275dc74d6649ccaac60395026d696 (diff) |
Supplement e24c754fb67f2783711a2300e3bc9513fabfa440
-rw-r--r-- | sugar_network/node/obs.py | 25 | ||||
-rwxr-xr-x | tests/units/node/obs.py | 16 |
2 files changed, 19 insertions, 22 deletions
diff --git a/sugar_network/node/obs.py b/sugar_network/node/obs.py index 31f04b3..5359059 100644 --- a/sugar_network/node/obs.py +++ b/sugar_network/node/obs.py @@ -35,10 +35,6 @@ obs_presolve_project = Option( 'OBS project to use with packagekit-backend-presolve', default='presolve') -_PRESOLVE_REPO_MAP = { - 'OLPC': 'Fedora', - } - _logger = logging.getLogger('node.obs') _client = None _repos = {} @@ -60,13 +56,14 @@ def resolve(repo, arch, names): def presolve(aliases, dst_path): for repo in _get_repos(obs_presolve_project.value): - alias = aliases.get(_PRESOLVE_REPO_MAP[repo['distributor_id']]) + # Presolves make sense only for XO, thus, for Fedora + alias = aliases.get('Fedora') if not alias: continue - binaries = alias['binary'] - while binaries: - names = binaries.pop() + names = alias['binary'] + while names: + names = names.pop() presolves = [] try: for arch in repo['arches']: @@ -82,7 +79,7 @@ def presolve(aliases, dst_path): binaries = [] for pkg in response.findall('binary'): binaries.append(dict(pkg.items())) - presolves.append((package, arch, binaries)) + presolves.append((package, binaries)) except Exception: exception(_logger, 'Failed to presolve %r on %s', names, repo['name']) @@ -96,10 +93,12 @@ def presolve(aliases, dst_path): os.makedirs(dst_dir) result = {} - for package, arch, binaries in presolves: - info = result.setdefault(package, {}) - files = info[arch] = [] + for package, binaries in presolves: + files = [] for binary in binaries: + arch = binary.pop('arch') + if not files: + result.setdefault(package, {})[arch] = files url = binary.pop('url') filename = binary['path'] = basename(url) path = join(dst_dir, filename) @@ -143,8 +142,6 @@ def _get_repos(project): repos = _repos[project] = [] for repo in _request('GET', ['build', project]).findall('entry'): repo = repo.get('name') - if '-' not in repo: - continue arches = _request('GET', ['build', project, repo]) repos.append({ 'distributor_id': repo.split('-', 1)[0], diff --git a/tests/units/node/obs.py b/tests/units/node/obs.py index 6c7788d..532ba4e 100755 --- a/tests/units/node/obs.py +++ b/tests/units/node/obs.py @@ -54,7 +54,7 @@ class ObsTest(tests.Test): 'package': 'pkg1', }}, [ '<resolve>', - ' <binary name="pygame" url="http://pkg1.prm" />', + ' <binary name="pygame" url="http://pkg1.prm" arch="arch"/>', '</resolve>', ], ), @@ -66,7 +66,7 @@ class ObsTest(tests.Test): 'package': 'pkg2', }}, [ '<resolve>', - ' <binary name="pygame" url="http://pkg2.prm" />', + ' <binary name="pygame" url="http://pkg2.prm" arch="arch"/>', '</resolve>', ], ), @@ -96,8 +96,8 @@ class ObsTest(tests.Test): 'exclude': 'sugar', }}, [ '<resolve>', - ' <binary name="pkg1-1" url="http://pkg1-1.prm" />', - ' <binary name="pkg1-2" url="http://pkg1-2.prm" />', + ' <binary name="pkg1-1" url="http://pkg1-1.prm" arch="arch"/>', + ' <binary name="pkg1-2" url="http://pkg1-2.prm" arch="arch"/>', '</resolve>', ], ), @@ -111,8 +111,8 @@ class ObsTest(tests.Test): 'exclude': 'sugar', }}, [ '<resolve>', - ' <binary name="pkg2-1" url="http://pkg2-1.prm" />', - ' <binary name="pkg2-2" url="http://pkg2-2.prm" />', + ' <binary name="pkg2-1" url="http://pkg2-1.prm" arch="arch"/>', + ' <binary name="pkg2-2" url="http://pkg2-2.prm" arch="arch"/>', '</resolve>', ], ), @@ -128,14 +128,14 @@ class ObsTest(tests.Test): }, '.') self.assertEqual({ - 'i586': [ + 'arch': [ {'path': 'pkg1-1.prm', 'name': 'pkg1-1'}, {'path': 'pkg1-2.prm', 'name': 'pkg1-2'}, ], }, json.load(file('packages/presolve:OLPC-11.3.1/pkg1'))) self.assertEqual({ - 'i586': [ + 'arch': [ {'path': 'pkg2-1.prm', 'name': 'pkg2-1'}, {'path': 'pkg2-2.prm', 'name': 'pkg2-2'}, ], |