[game-data-packager] 01/01: multilang: better algorithm
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Tue Apr 14 17:56:22 UTC 2015
This is an automated email from the git hooks/post-receive script.
detiste-guest pushed a commit to branch master
in repository game-data-packager.
commit b66e4e6aa297201576669223d572c67a5f9a20d1
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Tue Apr 14 19:55:53 2015 +0200
multilang: better algorithm
---
game_data_packager/__init__.py | 43 +++++++++++++++++++++---------------------
game_data_packager/util.py | 7 +++++++
2 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 6639b94..5372336 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -52,6 +52,7 @@ from .util import (MEBIBYTE,
human_size,
is_installed,
prefered_lang,
+ lang_score,
which)
from .version import GAME_PACKAGE_VERSION
@@ -2339,27 +2340,6 @@ class GameData(object):
if not possible:
raise NoPackagesPossible()
- # keep only prefered language
- if len(possible) > 1:
- for lang in prefered_lang():
- for package in set(possible):
- if package.lang == lang:
- continue
- virtual = package.debian.get('provides')
- if not virtual:
- continue
- for other_package in possible:
- if other_package.name == package.name:
- continue
- other_virtual = other_package.debian.get('provides')
- if other_virtual != virtual:
- continue
- logger.info('discarding %s '
- 'because %s is prefered language',
- package.name, lang)
- possible.discard(package)
- break
-
ready = set()
for package in possible:
@@ -2395,13 +2375,34 @@ class GameData(object):
logger.debug('will not produce "%s" because we have '
'the full version "%s"', package.name, demo_for)
abort = True
+ if abort:
+ continue
for previous in ready:
if previous.debian.get('conflicts') == package.name:
logger.error('will not produce "%s" because it '
'conflicts with "%s"', package.name, previous.name)
abort = True
+ if abort:
+ continue
+ # keep only prefered language for this virtual package
+ virtual = package.debian.get('provides')
+ if virtual:
+ score = lang_score(package.lang)
+ for other_p in possible:
+ if other_p.name == package.name:
+ continue
+ other_virtual = other_p.debian.get('provides')
+ if other_virtual != virtual:
+ continue
+ other_score = lang_score(other_p.lang)
+ if score < other_score:
+ logger.info('will not produce "%s" '
+ 'because %s is prefered language',
+ package.name, other_p.lang)
+ abort = True
+ break
if abort:
continue
diff --git a/game_data_packager/util.py b/game_data_packager/util.py
index 691a517..a493cf8 100644
--- a/game_data_packager/util.py
+++ b/game_data_packager/util.py
@@ -104,3 +104,10 @@ def prefered_lang():
if 'en' not in lang_pref:
lang_pref.append('en')
return lang_pref
+
+def lang_score(lang):
+ langs = prefered_lang()
+ if lang not in langs:
+ return 0
+
+ return len(langs) - langs.index(lang)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git
More information about the Pkg-games-commits
mailing list