[game-data-packager] 01/05: Convert lgeneral to Python/YAML style
Simon McVittie
smcv at debian.org
Sat Jan 17 18:15:37 UTC 2015
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 cac6d722e8059601bf5974f346a028d70b245847
Author: Simon McVittie <smcv at debian.org>
Date: Sat Jan 17 17:22:09 2015 +0000
Convert lgeneral to Python/YAML style
---
.../lgeneral-data-nonfree.control.in | 0
.../lgeneral-data-nonfree.copyright | 2 +-
data/lgeneral.yaml | 33 +++++++
etc/lgeneral-mirrors | 1 +
lib/game_data_packager/__init__.py | 2 +-
lib/game_data_packager/games/lgeneral.py | 72 ++++++++++++++
lib/lgeneral-mirrors | 1 -
supported/lgeneral | 103 +--------------------
8 files changed, 109 insertions(+), 105 deletions(-)
diff --git a/lgeneral-data-nonfree/DEBIAN/control b/data/lgeneral-data-nonfree.control.in
similarity index 100%
rename from lgeneral-data-nonfree/DEBIAN/control
rename to data/lgeneral-data-nonfree.control.in
diff --git a/lgeneral-data-nonfree/copyright.in b/data/lgeneral-data-nonfree.copyright
similarity index 92%
rename from lgeneral-data-nonfree/copyright.in
rename to data/lgeneral-data-nonfree.copyright
index 6301d19..69a6eb8 100644
--- a/lgeneral-data-nonfree/copyright.in
+++ b/data/lgeneral-data-nonfree.copyright
@@ -1,4 +1,4 @@
-The PACKAGE package was generated using game-data-packager.
+The lgeneral-data-nonfree package was generated using game-data-packager.
Copyright © 2008-2013 Jonathan Dowland <jmtd at debian.org>.
The files under "/usr/share/games/lgeneral" are user-supplied
diff --git a/data/lgeneral.yaml b/data/lgeneral.yaml
new file mode 100644
index 0000000..92ff7e7
--- /dev/null
+++ b/data/lgeneral.yaml
@@ -0,0 +1,33 @@
+%YAML 1.2
+---
+shortname: lgeneral
+longname: LGeneral
+
+help_text: |
+ Data from Panzer General can be downloaded automatically.
+ You can skip the download by providing pg-data.tar.gz.
+
+packages:
+ lgeneral-data-nonfree:
+ longname: Panzer General data for LGeneral
+ type: full
+ install_to: usr/share/games/lgeneral
+ # pg-data.tar.gz is not actually needed, but it's small, and putting it
+ # in the .deb means we can easily repack it if lgc-pg changes
+ #
+ # The actual game files are converted by lgc-pg, in Python code.
+ install:
+ - pg-data.tar.gz
+
+files:
+ pg-data.tar.gz:
+ size: 410476
+ md5: 40c4be23f60d1dc732aabe13b58fc5e3
+ sha1: 2f7a63f0a8efc3215e5e61ec6b513b7d8ee3c32b
+ sha256: cc6fa5d263d1d5824d706517958b1bb09b405ba0ed21e63e4a4d38e2727d7a04
+ download:
+ lgeneral-mirrors:
+ path: .
+
+...
+# vim:set sw=2 sts=2 et:
diff --git a/etc/lgeneral-mirrors b/etc/lgeneral-mirrors
new file mode 100644
index 0000000..2920430
--- /dev/null
+++ b/etc/lgeneral-mirrors
@@ -0,0 +1 @@
+http://sourceforge.net/projects/lgeneral/files/lgeneral-data
diff --git a/lib/game_data_packager/__init__.py b/lib/game_data_packager/__init__.py
index a0c5875..f3d0e15 100644
--- a/lib/game_data_packager/__init__.py
+++ b/lib/game_data_packager/__init__.py
@@ -1543,7 +1543,7 @@ class GameData(object):
build_demos=args.demo)
except NoPackagesPossible:
logger.error('Unable to complete any packages.')
- if self.unpack_failed and self.missing_tools:
+ if self.missing_tools:
# we already logged warnings about the files as they came up
self.log_missing_tools()
raise SystemExit(1)
diff --git a/lib/game_data_packager/games/lgeneral.py b/lib/game_data_packager/games/lgeneral.py
new file mode 100644
index 0000000..d51f962
--- /dev/null
+++ b/lib/game_data_packager/games/lgeneral.py
@@ -0,0 +1,72 @@
+#!/usr/bin/python3
+# vim:set fenc=utf-8:
+#
+# Copyright © 2015 Simon McVittie <smcv at debian.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 2
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# You can find the GPL license text on a Debian system under
+# /usr/share/common-licenses/GPL-2.
+
+import logging
+import os
+import shutil
+import subprocess
+
+from .. import (GameData, NoPackagesPossible)
+from ..util import (mkdir_p, which)
+
+logger = logging.getLogger('game-data-packager.games.lgeneral')
+
+class LGeneralGameData(GameData):
+ def add_parser(self, parsers, base_parser):
+ parser = super(LGeneralGameData, self).add_parser(parsers, base_parser)
+ parser.add_argument('-f', action='append', dest='paths',
+ metavar='pg-data.tar.gz', help='Path to pg-data.tar.gz')
+ parser.add_argument('-w', dest='download', action='store_true',
+ help='Download pg-data.tar.gz (done automatically ' +
+ 'if necessary)')
+ return parser
+
+ def prepare_packages(self, packages, build_demos=False):
+ # don't bother even trying if it isn't going to work
+ if which('lgc-pg') is None:
+ logger.error('The "lgc-pg" tool is required for this package.')
+ raise NoPackagesPossible()
+
+ ready = super(LGeneralGameData, self).prepare_packages(packages,
+ build_demos=build_demos)
+
+ # would have raised an exception if not
+ assert self.packages['lgeneral-data-nonfree'] in ready
+ return ready
+
+ def fill_dest_dir(self, package, destdir):
+ assert package.name == 'lgeneral-data-nonfree'
+ if not super(LGeneralGameData, self).fill_dest_dir(package, destdir):
+ return False
+
+ installdir = os.path.join(destdir, 'usr/share/games/lgeneral')
+ unpackdir = os.path.join(self.get_workdir(), 'tmp', 'pg-data.tar.gz.d')
+
+ for d in ('gfx/flags', 'gfx/terrain', 'gfx/units', 'maps/pg',
+ 'nations', 'scenarios/pg', 'sounds/pg', 'units'):
+ mkdir_p(os.path.join(installdir, d))
+
+ shutil.unpack_archive(
+ os.path.join(installdir, 'pg-data.tar.gz'),
+ unpackdir,
+ 'gztar')
+
+ subprocess.check_call(['lgc-pg', '-s', unpackdir + '/pg-data/',
+ '-d', installdir + '/'])
+
+ return True
+
+GAME_DATA_SUBCLASS = LGeneralGameData
diff --git a/lib/lgeneral-mirrors b/lib/lgeneral-mirrors
deleted file mode 100644
index da94ab7..0000000
--- a/lib/lgeneral-mirrors
+++ /dev/null
@@ -1 +0,0 @@
-http://sourceforge.net/projects/lgeneral/files/lgeneral-data/pg-data.tar.gz
diff --git a/supported/lgeneral b/supported/lgeneral
index 3946fae..9619639 100644
--- a/supported/lgeneral
+++ b/supported/lgeneral
@@ -3,105 +3,4 @@
SHORTNAME=lgeneral
LONGNAME="LGeneral"
-TGZSUM=40c4be23f60d1dc732aabe13b58fc5e3
-
-lgeneral_usage() {
- echo "game-data-packager ${SHORTNAME} arguments:"
- printf "\tgame-data-packager ${SHORTNAME} [ -f path ] | [ -w ]
-\t\t-f file\t\tpath to your tar.gz compressed Panzer General DAT directory\n\
-\t\t-w\t\tfetch compressed pg-data.tar.gz from the web\n"
-}
-
-verify_args() {
- case $# in
- 0)
- lgeneral_usage
- exit 0
- ;;
- 1)
- if [ "$1" != "-w" ]; then
- usage >&2
- lgeneral_usage >&2
- exit 1
- fi
- downloadtgz
- ;;
- 2)
- if [ "$1" != "-f" ]; then
- usage >&2
- lgeneral_usage >&2
- exit 1
- fi
- downloaded=false
- lgeneraltgz="$2"
- ;;
- *)
- usage >&2
- lgeneral_usage >&2
- exit 1
- ;;
- esac
-}
-
-lgeneralmirrors=$LIBDIR/lgeneral-mirrors
-
-downloadtgz() {
- dest="$WORKDIR/pg-data.tar.gz"
- mirror=$(grep -v ^# "$lgeneralmirrors" | sort -R | head -n1)
- for try in $mirror; do
- if wget --progress=dot --directory-prefix "$WORKDIR" -c "$try"
- then
- lgeneraltgz="$dest"
- downloaded=true
- return
- fi
- done
- die "error: could not find pg-data.tar.gz at our chosen mirror"
-}
-
-DEBBASE="lgeneral-data-nonfree_${GAME_PACKAGE_VERSION}_all.deb"
-DEB="$DATADIR/$DEBBASE"
-
-go() {
- verify_args "$@"
- require_program lgc-pg lgc-pg
-
- TGZFILE=`unravel "$lgeneraltgz"`
-
- verify_file "$TGZFILE"
-
- verify_md5sum_alternatives "$TGZFILE" "$TGZSUM" \
- "warning: checksum is not what we expected"
-
- OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE"
- cp -p "$DEB" "$OUTFILE"
- oldpwd=`pwd`
- cd "$WORKDIR"
-
- # create directory structure required by lgc-pg
- mkdir -p lgeneral/gfx/flags \
- lgeneral/gfx/terrain \
- lgeneral/gfx/units \
- lgeneral/maps/pg \
- lgeneral/nations \
- lgeneral/scenarios/pg \
- lgeneral/sounds/pg \
- lgeneral/units
-
- # extract pg-data and convert to lgeneral's native file format
- tar xfz "$TGZFILE" pg-data
- lgc-pg -s pg-data/ -d lgeneral/
-
- slipstream_dir "$OUTFILE" "usr/share/games/" "lgeneral/"
-
- if [ "$downloaded" = "true" ]; then
- rm "$TGZFILE"
- rm -rf pg-data/
- rm -rf lgeneral/
- elif [ "$downloaded" = "false" ]; then
- rm -rf pg-data/
- rm -rf lgeneral/
- fi
-
- cd "$oldpwd"
-}
+. $LIBDIR/via-python
--
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