Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-05-21 03:18:38 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-05-21 03:18:38 (GMT)
commit0677510290b863f1c9df060f162df333194c51ca (patch)
tree977c36118c046c26c453d58a373832da111624e5
parent42771e769e8275dc74d6649ccaac60395026d696 (diff)
Supplement e24c754fb67f2783711a2300e3bc9513fabfa440
-rw-r--r--sugar_network/node/obs.py25
-rwxr-xr-xtests/units/node/obs.py16
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'},
],