[game-data-packager] 07/08: Move most of GameData._populate_package into Package.__init__
Simon McVittie
smcv at debian.org
Thu Nov 3 00:03:55 UTC 2016
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to branch master
in repository game-data-packager.
commit 1bd5c72ff516702e9ccc3aae870e31807eae4073
Author: Simon McVittie <smcv at debian.org>
Date: Wed Nov 2 23:59:57 2016 +0000
Move most of GameData._populate_package into Package.__init__
---
game_data_packager/__init__.py | 117 +--------------------------------
game_data_packager/data.py | 145 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 146 insertions(+), 116 deletions(-)
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 5afde86..7f7171a 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -31,7 +31,7 @@ import zipfile
import yaml
from .build import (PackagingTask)
-from .data import (FileGroup, Package, PackageRelation, WantedFile)
+from .data import (FileGroup, Package, WantedFile)
from .paths import (DATADIR, USE_VFS)
from .util import ascii_safe
from .version import (GAME_PACKAGE_VERSION)
@@ -428,15 +428,6 @@ class GameData(object):
return (size_min, size_max)
def _populate_package(self, package, d):
- for k in ('expansion_for', 'expansion_for_ext', 'longname', 'symlinks', 'install_to',
- 'description',
- 'rip_cd', 'architecture', 'aliases', 'better_versions', 'langs', 'mutually_exclusive',
- 'copyright', 'engine', 'lang', 'component', 'section', 'disks',
- 'steam', 'gog', 'dotemu', 'origin', 'url_misc', 'wiki', 'copyright_notice',
- 'short_description', 'long_description', 'empty'):
- if k in d:
- setattr(package, k, d[k])
-
if isinstance(package.engine, dict):
if isinstance(self.engine, dict):
for k in self.engine:
@@ -444,78 +435,9 @@ class GameData(object):
else:
package.engine.setdefault('generic', self.engine)
- if isinstance(package.install_to, dict):
- package.install_to.setdefault('generic',
- package.default_install_to)
-
- if 'better_version' in d:
- assert 'better_versions' not in d
- package.better_versions = set([d['better_version']])
-
- for rel in package.relations:
- if rel in d:
- related = d[rel]
-
- if isinstance(related, (str, dict)):
- related = [related]
- else:
- assert isinstance(related, list)
-
- for x in related:
- pr = PackageRelation(x)
- # Fedora doesn't handle alternatives, everything must
- # be handled with virtual packages. Assume the same is
- # true for everything except dpkg.
- assert not pr.alternatives, pr
-
- if pr.contextual:
- for context, specific in pr.contextual.items():
- assert (context == 'deb' or
- not specific.alternatives), pr
-
- if pr.package == 'libjpeg.so.62':
- # we can't really translate versions for libjpeg,
- # since it could be either libjpeg6b or libjpeg-turbo
- assert pr.version is None
-
- package.relations[rel].append(pr)
-
- for port in ('debian', 'rpm', 'arch', 'fedora', 'mageia', 'suse'):
- assert port not in d, 'use {deb: foo-dfsg, generic: foo} syntax'
-
assert self.copyright or package.copyright, package.name
- assert package.component in ('main', 'contrib', 'non-free', 'local')
- assert package.component == 'local' or 'license' in d
- assert package.section in ('games', 'doc'), 'unsupported'
- assert type(package.langs) is list
- assert type(package.mutually_exclusive) is bool
-
- for rel, related in package.relations.items():
- for pr in related:
- packages = set()
- if pr.contextual:
- for p in pr.contextual.values():
- packages.add(p.package)
- elif pr.alternatives:
- for p in pr.alternatives:
- packages.add(p.package)
- else:
- packages.add(pr.package)
- assert package.name not in packages, \
- "%s should not be in its own %s set" % (package.name, rel)
-
- if 'install_to' in d and isinstance(d['install_to'], str):
- assert d['install_to'] != package.default_install_to, \
- "install_to for %s is extraneous" % package.name
if 'demo_for' in d:
- if package.disks is None:
- package.disks = 1
- if type(d['demo_for']) is str:
- package.demo_for.add(d['demo_for'])
- else:
- package.demo_for |= set(d['demo_for'])
- assert package.name != d['demo_for'], "a game can't be a demo for itself"
if not package.longname:
package.longname = self.longname + ' (demo)'
else:
@@ -527,43 +449,6 @@ class GameData(object):
if package.mutually_exclusive:
assert package.demo_for or package.better_versions or package.relations['provides']
- if 'expansion_for' in d:
- if package.disks is None:
- package.disks = 1
- assert package.name != d['expansion_for'], \
- "a game can't be an expansion for itself"
- if 'demo_for' in d:
- raise AssertionError("%r can't be both a demo of %r and an " +
- "expansion for %r" % (package.name, d.demo_for,
- d.expansion_for))
-
- if 'install' in d:
- for filename in d['install']:
- package.install.add(filename)
-
- if 'optional' in d:
- assert isinstance(d['optional'], list), package.name
- for filename in d['optional']:
- package.optional.add(filename)
-
- if 'doc' in d:
- assert isinstance(d['doc'], list), package.name
- for filename in d['doc']:
- package.optional.add(filename)
-
- if 'license' in d:
- assert isinstance(d['license'], list), package.name
- for filename in d['license']:
- package.optional.add(filename)
-
- if 'version' in d:
- package.version = d['version'] + '+' + GAME_PACKAGE_VERSION
-
- if 'rip_cd' in d:
- package.data_type = 'music'
- elif package.section == 'doc':
- package.data_type = 'documentation'
-
def _populate_files(self, d, **kwargs):
if d is None:
return
diff --git a/game_data_packager/data.py b/game_data_packager/data.py
index d5eb613..043832c 100644
--- a/game_data_packager/data.py
+++ b/game_data_packager/data.py
@@ -528,6 +528,151 @@ class Package(object):
# archives actually used to built a package
self.used_sources = set()
+ for k in (
+ 'aliases',
+ 'architecture',
+ 'better_versions',
+ 'component',
+ 'copyright',
+ 'copyright_notice',
+ 'description',
+ 'disks',
+ 'dotemu',
+ 'empty',
+ 'engine',
+ 'expansion_for',
+ 'expansion_for_ext',
+ 'gog',
+ 'install_to',
+ 'lang',
+ 'langs',
+ 'long_description',
+ 'longname',
+ 'mutually_exclusive',
+ 'origin',
+ 'rip_cd',
+ 'section',
+ 'short_description',
+ 'steam',
+ 'symlinks',
+ 'url_misc',
+ 'wiki',
+ ):
+ if k in data:
+ setattr(self, k, data[k])
+
+ if 'better_version' in data:
+ assert 'better_versions' not in data
+ self.better_versions = set([data['better_version']])
+
+ for rel in self.relations:
+ if rel in data:
+ related = data[rel]
+
+ if isinstance(related, (str, dict)):
+ related = [related]
+ else:
+ assert isinstance(related, list)
+
+ for x in related:
+ pr = PackageRelation(x)
+ # Fedora doesn't handle alternatives, everything must
+ # be handled with virtual packages. Assume the same is
+ # true for everything except dpkg.
+ assert not pr.alternatives, pr
+
+ if pr.contextual:
+ for context, specific in pr.contextual.items():
+ assert (context == 'deb' or
+ not specific.alternatives), pr
+
+ if pr.package == 'libjpeg.so.62':
+ # we can't really translate versions for libjpeg,
+ # since it could be either libjpeg6b or libjpeg-turbo
+ assert pr.version is None
+
+ self.relations[rel].append(pr)
+
+ for port in ('debian', 'rpm', 'arch', 'fedora', 'mageia', 'suse'):
+ assert port not in data, 'use {deb: foo-dfsg, generic: foo} syntax'
+
+ assert self.component in ('main', 'contrib', 'non-free', 'local')
+ assert self.component == 'local' or 'license' in data
+ assert self.section in ('games', 'doc'), 'unsupported'
+ assert type(self.langs) is list
+ assert type(self.mutually_exclusive) is bool
+
+ for rel, related in self.relations.items():
+ for pr in related:
+ packages = set()
+ if pr.contextual:
+ for p in pr.contextual.values():
+ packages.add(p.package)
+ elif pr.alternatives:
+ for p in pr.alternatives:
+ packages.add(p.package)
+ else:
+ packages.add(pr.package)
+ assert self.name not in packages, \
+ "%s should not be in its own %s set" % (self.name, rel)
+
+ if isinstance(self.install_to, dict):
+ self.install_to.setdefault('generic',
+ self.default_install_to)
+
+ if 'install_to' in data and isinstance(data['install_to'], str):
+ assert data['install_to'] != self.default_install_to, \
+ "install_to for %s is extraneous" % self.name
+
+ if 'demo_for' in data:
+ if self.disks is None:
+ self.disks = 1
+ if type(data['demo_for']) is str:
+ self.demo_for.add(data['demo_for'])
+ else:
+ self.demo_for |= set(data['demo_for'])
+ assert self.name != data['demo_for'], "a game can't be a demo for itself"
+
+ if self.mutually_exclusive:
+ assert self.demo_for or self.better_versions or self.relations['provides']
+
+ if 'expansion_for' in data:
+ if self.disks is None:
+ self.disks = 1
+ assert self.name != data['expansion_for'], \
+ "a game can't be an expansion for itself"
+ if 'demo_for' in data:
+ raise AssertionError("%r can't be both a demo of %r and an " +
+ "expansion for %r" % (self.name, data.demo_for,
+ data.expansion_for))
+
+ if 'install' in data:
+ for filename in data['install']:
+ self.install.add(filename)
+
+ if 'optional' in data:
+ assert isinstance(data['optional'], list), self.name
+ for filename in data['optional']:
+ self.optional.add(filename)
+
+ if 'doc' in data:
+ assert isinstance(data['doc'], list), self.name
+ for filename in data['doc']:
+ self.optional.add(filename)
+
+ if 'license' in data:
+ assert isinstance(data['license'], list), self.name
+ for filename in data['license']:
+ self.optional.add(filename)
+
+ if 'version' in data:
+ self.version = data['version'] + '+' + GAME_PACKAGE_VERSION
+
+ if 'rip_cd' in data:
+ self.data_type = 'music'
+ elif self.section == 'doc':
+ self.data_type = 'documentation'
+
@property
def aliases(self):
return self._aliases
--
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