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 c70220fd5d3676cb70f9cf2e3f9c596dfec1be10 Author: Alexandre Detiste <[email protected]> Date: Sun Nov 22 10:41:19 2015 +0100 port to SuSE: "Have a lot of fun..." --- Makefile | 3 +- data/heretic.yaml | 4 ++ data/hexen.yaml | 6 +++ data/strife.yaml | 2 + debian/rules | 3 ++ game_data_packager/__init__.py | 11 +++-- game_data_packager/build.py | 12 ++++- game_data_packager/util.py | 10 ++-- game_data_packager/{util_rpm.py => util_fedora.py} | 19 ++------ game_data_packager/util_rpm.py | 35 +------------- game_data_packager/util_suse.py | 53 ++++++++++++++++++++++ game_data_packager/version.py | 12 +++++ tools/game-data-packager.spec | 2 + 13 files changed, 113 insertions(+), 59 deletions(-) diff --git a/Makefile b/Makefile index ab456d4..1353e82 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,8 @@ GDP_MIRROR ?= localhost bindir := /usr/games PYFLAKES3 := $(shell if [ -x /usr/bin/pyflakes3 ] ; then echo pyflakes3 ; \ elif [ -x /usr/bin/pyflakes3k ] ; then echo pyflakes3k ; \ - else echo python3-pyflakes ; \ + elif [ -x /usr/bin/python3-pyflakes ] ; then echo python3-pyflakes ; \ + else ls -1 /usr/bin/pyflakes-python3.* | tail -n 1 ; \ fi) # some cherry picked games that: diff --git a/data/heretic.yaml b/data/heretic.yaml index 82a727a..6f10dbe 100644 --- a/data/heretic.yaml +++ b/data/heretic.yaml @@ -27,6 +27,8 @@ packages: steam: id: 2390 path: "common/Heretic Shadow of the Serpent Riders" + suse: + engine: chocolate-doom install: - heretic.wad @@ -36,6 +38,8 @@ packages: component: non-free debian: replaces: heretic-shareware-data + suse: + engine: chocolate-doom install: - heretic1.wad license: diff --git a/data/hexen.yaml b/data/hexen.yaml index f12ff5b..702a516 100644 --- a/data/hexen.yaml +++ b/data/hexen.yaml @@ -29,6 +29,8 @@ packages: steam: id: 2360 path: "common/Hexen" + suse: + engine: chocolate-doom install: - hexen.wad @@ -38,6 +40,8 @@ packages: debian: breaks: chocolate-doom (<< 2) replaces: hexen-deathkings-data + suse: + engine: chocolate-doom steam: id: 2370 path: "common/Hexen Deathkings of the Dark Citadel" @@ -50,6 +54,8 @@ packages: debian: replaces: hexen-demo-data breaks: chocolate-doom (<< 2.2.0) + suse: + engine: chocolate-doom demo_for: hexen-wad install: - hexendemo.wad diff --git a/data/strife.yaml b/data/strife.yaml index a5110b6..03a0f87 100644 --- a/data/strife.yaml +++ b/data/strife.yaml @@ -26,6 +26,8 @@ packages: steam: id: 317040 path: common/Strife + suse: + engine: chocolate-doom install: - strife1.wad - voices.wad diff --git a/debian/rules b/debian/rules index 1582b6b..e0cdddb 100755 --- a/debian/rules +++ b/debian/rules @@ -30,6 +30,7 @@ override_dh_install: dh_install echo 'GAME_PACKAGE_VERSION = """$(DEB_VERSION)"""' > debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/version.py echo 'FORMAT = "deb"' >> debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/version.py + echo 'DISTRO = "generic"' >> debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/version.py echo 'BINDIR = "usr/games"' >> debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/version.py echo 'ASSETS = "usr/share/games"' >> debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/version.py if dpkg-vendor --derives-from Ubuntu; then \ @@ -37,7 +38,9 @@ override_dh_install: fi install -D -m755 runtime/doom2-masterlevels.py debian/game-data-packager/usr/games/doom2-masterlevels rm -f debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/util_arch.py + rm -f debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/util_fedora.py rm -f debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/util_rpm.py + rm -f debian/game-data-packager/usr/share/games/game-data-packager/game_data_packager/util_suse.py override_dh_installdocs: dh_installdocs -XTODO diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py index 70aac8a..f5c427e 100644 --- a/game_data_packager/__init__.py +++ b/game_data_packager/__init__.py @@ -37,7 +37,7 @@ from .gog import run_gog_meta_mode from .paths import (DATADIR,USE_VFS) from .util import ascii_safe from .steam import run_steam_meta_mode -from .version import (GAME_PACKAGE_VERSION, FORMAT, ASSETS) +from .version import (GAME_PACKAGE_VERSION, DISTRO, ASSETS) logging.basicConfig() logger = logging.getLogger('game-data-packager') @@ -790,10 +790,11 @@ class GameData(object): if k in d: setattr(package, k, d[k]) - if FORMAT == 'rpm' and 'fedora' in d: - for k in ('engine', 'install_to', 'description'): - if k in d['fedora']: - setattr(package, k, d['fedora'][k]) + for port in ('arch', 'fedora', 'suse'): + if DISTRO == port and port in d: + for k in ('engine', 'install_to', 'description'): + if k in d[port]: + setattr(package, k, d[port][k]) assert self.copyright or package.copyright, package.name assert package.component in ('main', 'contrib', 'non-free', 'local') diff --git a/game_data_packager/build.py b/game_data_packager/build.py index 4fa38ad..aea1d4e 100644 --- a/game_data_packager/build.py +++ b/game_data_packager/build.py @@ -56,7 +56,7 @@ from .util import (AGENT, rm_rf, recursive_utime, which) -from .version import (FORMAT) +from .version import (FORMAT, DISTRO) if FORMAT == 'deb': from debian.deb822 import Deb822 @@ -2668,7 +2668,7 @@ class PackagingTask(object): '7z': 'p7zip-full', 'unrar-nonfree': 'unrar', } - elif FORMAT == 'rpm': + elif DISTRO == 'fedora': command = 'dnf install' package_map = { 'dpkg-deb': 'dpkg', @@ -2676,6 +2676,14 @@ class PackagingTask(object): '7z': 'p7zip-plugins', 'unrar-nonfree': 'unrar', } + elif DISTRO == 'suse': + command = 'zypper install' + package_map = { + 'dpkg-deb': 'dpkg', + 'id-shr-extract': None, + '7z': 'p7zip', + 'unrar-nonfree': 'unrar', + } elif FORMAT == 'arch': command = 'pacman -S' package_map = { diff --git a/game_data_packager/util.py b/game_data_packager/util.py index eb23090..ea22d5e 100644 --- a/game_data_packager/util.py +++ b/game_data_packager/util.py @@ -26,7 +26,7 @@ import subprocess import sys from .paths import DATADIR -from .version import (GAME_PACKAGE_VERSION, FORMAT) +from .version import (GAME_PACKAGE_VERSION, FORMAT, DISTRO) logger = logging.getLogger('game-data-packager.util') @@ -225,8 +225,12 @@ elif FORMAT == 'arch': from .util_arch import (PACKAGE_CACHE, install_packages) lintian_license = lambda a,b,c: None lintian_desktop = lambda a,b,c: None -else: - from .util_rpm import (PACKAGE_CACHE, install_packages) +elif DISTRO == 'fedora': + from .util_fedora import (PACKAGE_CACHE, install_packages) + lintian_license = lambda a,b,c: None + lintian_desktop = lambda a,b,c: None +elif DISTRO == 'suse': + from .util_suse import (PACKAGE_CACHE, install_packages) lintian_license = lambda a,b,c: None lintian_desktop = lambda a,b,c: None diff --git a/game_data_packager/util_rpm.py b/game_data_packager/util_fedora.py similarity index 73% copy from game_data_packager/util_rpm.py copy to game_data_packager/util_fedora.py index 5974889..c2caa03 100644 --- a/game_data_packager/util_rpm.py +++ b/game_data_packager/util_fedora.py @@ -15,18 +15,14 @@ import logging import subprocess -from .util import (run_as_root, check_output) +from .util import (run_as_root) +from .util_rpm import (RPM_PackageCache) -logger = logging.getLogger('game-data-packager.util_rpm') +logger = logging.getLogger('game-data-packager.util_fedora') -class PackageCache: +class PackageCache(RPM_PackageCache): available = None - def is_installed(self, package): - return 0 == subprocess.call(['rpm', '-q', package], - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL) - def is_available(self, package): if self.available is None: cache = set() @@ -40,13 +36,6 @@ class PackageCache: return package in self.available - def current_version(self, package): - try: - return check_output(['rpm', '-q', - '--qf', '%{VERSION}', package], universal_newlines=True) - except subprocess.CalledProcessError: - return - def available_version(self, package): proc = subprocess.Popen(['dnf', 'list', package], universal_newlines=True, diff --git a/game_data_packager/util_rpm.py b/game_data_packager/util_rpm.py index 5974889..03e9fa0 100644 --- a/game_data_packager/util_rpm.py +++ b/game_data_packager/util_rpm.py @@ -15,50 +15,19 @@ import logging import subprocess -from .util import (run_as_root, check_output) +from .util import (check_output) logger = logging.getLogger('game-data-packager.util_rpm') -class PackageCache: - available = None - +class RPM_PackageCache: def is_installed(self, package): return 0 == subprocess.call(['rpm', '-q', package], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) - def is_available(self, package): - if self.available is None: - cache = set() - proc = subprocess.Popen(['dnf', 'list'], - universal_newlines=True, - stdout=subprocess.PIPE) - for line in proc.stdout: - if '.' in line: - cache.add(line.split('.')[0]) - self.available = cache - - return package in self.available - def current_version(self, package): try: return check_output(['rpm', '-q', '--qf', '%{VERSION}', package], universal_newlines=True) except subprocess.CalledProcessError: return - - def available_version(self, package): - proc = subprocess.Popen(['dnf', 'list', package], - universal_newlines=True, - stderr=subprocess.DEVNULL, - stdout=subprocess.PIPE) - # keep only last line - for line in proc.stdout: - pass - return line.split()[1] - -PACKAGE_CACHE = PackageCache() - -def install_packages(debs, method, gain_root='su'): - """Install one or more packages (a list of filenames).""" - run_as_root(['dnf', 'install'] + list(debs), gain_root) diff --git a/game_data_packager/util_suse.py b/game_data_packager/util_suse.py new file mode 100644 index 0000000..60d8ecb --- /dev/null +++ b/game_data_packager/util_suse.py @@ -0,0 +1,53 @@ +#!/usr/bin/python3 +# encoding=utf-8 +# +# Copyright © 2015 Alexandre Detiste <[email protected]> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# 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. + +import logging +import subprocess + +from .util import (run_as_root) +from .util_rpm import (RPM_PackageCache) + +logger = logging.getLogger('game-data-packager.util_suse') + +class PackageCache(RPM_PackageCache): + def is_available(self, package): + proc = subprocess.Popen(['zypper', 'info', package], + universal_newlines=True, + stdout=subprocess.PIPE, + env={'LANG':'C'}) + for line in proc.stdout: + if ':' not in line: + continue + k, _, v = line.split(maxsplit=2) + if k == 'Version': + return True + return False + + def available_version(self, package): + proc = subprocess.Popen(['zypper', 'info', package], + universal_newlines=True, + stdout=subprocess.PIPE, + env={'LANG':'C'}) + for line in proc.stdout: + if ':' not in line: + continue + k, _, v = line.split(maxsplit=2) + if k == 'Version': + return v + +PACKAGE_CACHE = PackageCache() + +def install_packages(rpms, method, gain_root='su'): + """Install one or more packages (a list of filenames).""" + run_as_root(['zypper', 'install'] + list(rpms), gain_root) diff --git a/game_data_packager/version.py b/game_data_packager/version.py index d7c86cd..a352d13 100644 --- a/game_data_packager/version.py +++ b/game_data_packager/version.py @@ -7,6 +7,7 @@ import os if os.path.isfile('/etc/debian_version'): FORMAT = 'deb' + DISTRO = 'generic' BINDIR = 'usr/games' ASSETS = 'usr/share/games' @@ -16,6 +17,16 @@ if os.path.isfile('/etc/debian_version'): elif os.path.isfile('/etc/redhat-release'): FORMAT = 'rpm' + DISTRO = 'fedora' + BINDIR = 'usr/bin' + ASSETS = 'usr/share' + + cl = open('debian/changelog', encoding='utf-8').readline() + GAME_PACKAGE_VERSION = cl.split('(')[1].split(')')[0] + +elif os.path.isfile('/etc/SuSE-release'): + FORMAT = 'rpm' + DISTRO = 'suse' BINDIR = 'usr/bin' ASSETS = 'usr/share' @@ -24,6 +35,7 @@ elif os.path.isfile('/etc/redhat-release'): elif os.path.isfile('/etc/arch-release'): FORMAT = 'arch' + DISTRO = 'arch' BINDIR = 'usr/bin' ASSETS = 'usr/share' diff --git a/tools/game-data-packager.spec b/tools/game-data-packager.spec index 248da00..d799d18 100644 --- a/tools/game-data-packager.spec +++ b/tools/game-data-packager.spec @@ -59,10 +59,12 @@ VERSION_PY=$RPM_BUILD_ROOT/usr/share/games/game-data-packager/game_data_packager echo '#!/usr/bin/python3' > $VERSION_PY echo 'GAME_PACKAGE_VERSION = """%{version}"""' >> $VERSION_PY echo 'FORMAT = "rpm"' >> $VERSION_PY +echo 'DISTRO = "fedora"' >> $VERSION_PY echo 'BINDIR = "usr/bin"' >> $VERSION_PY echo 'ASSETS = "usr/share"' >> $VERSION_PY rm $RPM_BUILD_ROOT/usr/share/games/game-data-packager/game_data_packager/util_arch.py rm $RPM_BUILD_ROOT/usr/share/games/game-data-packager/game_data_packager/util_deb.py +rm $RPM_BUILD_ROOT/usr/share/games/game-data-packager/game_data_packager/util_suse.py chmod 755 $RPM_BUILD_ROOT/usr/share/games/game-data-packager/game_data_packager/*.py chmod 755 $RPM_BUILD_ROOT/usr/share/games/game-data-packager/game_data_packager/games/*.py mkdir -p $RPM_BUILD_ROOT/usr/share/man/man6 -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

