[game-data-packager] 01/01: fedora: finish-up merge
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Tue Nov 3 09:12:24 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 cfc496998859e9bda125b4d42668b7b0370a0a91
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Tue Nov 3 10:11:48 2015 +0100
fedora: finish-up merge
---
game_data_packager/build.py | 91 ++++++++++++++++++++++++++++++---------------
1 file changed, 61 insertions(+), 30 deletions(-)
diff --git a/game_data_packager/build.py b/game_data_packager/build.py
index 8147a5f..7dc03e0 100644
--- a/game_data_packager/build.py
+++ b/game_data_packager/build.py
@@ -33,9 +33,11 @@ import time
import urllib.request
import zipfile
-from debian.deb822 import Deb822
-from debian.debian_support import Version
import yaml
+try:
+ from debian.debian_support import Version
+except ImportError:
+ from distutils.version import LooseVersion as Version
from .gog import GOG
from .paths import (DATADIR, ETCDIR)
@@ -54,9 +56,11 @@ from .util import (AGENT,
rm_rf,
recursive_utime,
which)
-
from .version import (FORMAT)
+if FORMAT == 'deb':
+ from debian.deb822 import Deb822
+
logging.basicConfig()
logger = logging.getLogger('game-data-packager.build')
@@ -1413,6 +1417,52 @@ class PackagingTask(object):
def fill_extra_files(self, package, destdir):
pass
+ def fill_dest_dir_rpm(self, package, destdir):
+ specfile = os.path.join(self.get_workdir(), '%s.spec' % package.name)
+ with open(specfile, 'w', encoding='utf-8') as spec:
+ spec.write('Summary: %s\n' % package.longname or self.longname)
+ spec.write('Name: %s\n' % package.name)
+ spec.write('Version: %s\n' % package.version)
+ spec.write('Release: 0\n')
+ spec.write('License: Commercial\n')
+ spec.write('Group: Amusements/Games\n')
+ spec.write('BuildArch: noarch\n')
+ spec.write('%description\n')
+ spec.write('(long description)\n')
+ spec.write('%files\n')
+ for dirpath, dirnames, filenames in os.walk(destdir):
+ for fn in filenames:
+ full = os.path.join(dirpath, fn)
+ full = full[len(destdir):]
+ spec.write(full + '\n')
+
+ def fill_dest_dir_deb(self, package, destdir):
+ debdir = os.path.join(destdir, 'DEBIAN')
+ mkdir_p(debdir)
+
+ for ms in ('preinst', 'postinst', 'prerm', 'postrm'):
+ maintscript = os.path.join(DATADIR, package.name + '.' + ms)
+ if os.path.isfile(maintscript):
+ shutil.copy(maintscript, os.path.join(debdir, ms))
+
+ # adapted from dh_md5sums
+ check_call("find . -type f ! -regex '\./DEBIAN/.*' " +
+ "-printf '%P\\0' | LC_ALL=C sort -z | " +
+ "xargs -r0 md5sum > DEBIAN/md5sums",
+ shell=True, cwd=destdir)
+ os.chmod(os.path.join(destdir, 'DEBIAN/md5sums'), 0o644)
+
+ try:
+ control_in = open(self.get_control_template(package),
+ encoding='utf-8')
+ control = Deb822(control_in)
+ except FileNotFoundError:
+ control = Deb822()
+ self.modify_control_template(control, package, destdir)
+ control.dump(fd=open(os.path.join(debdir, 'control'), 'wb'),
+ encoding='utf-8')
+ os.chmod(os.path.join(debdir, 'control'), 0o644)
+
def fill_dest_dir(self, package, destdir):
if not self.check_complete(package, log=True):
return False
@@ -1424,14 +1474,6 @@ class PackagingTask(object):
self.fill_docs(package, destdir, docdir)
- debdir = os.path.join(destdir, 'DEBIAN')
- mkdir_p(debdir)
-
- for ms in ('preinst', 'postinst', 'prerm', 'postrm'):
- maintscript = os.path.join(DATADIR, package.name + '.' + ms)
- if os.path.isfile(maintscript):
- shutil.copy(maintscript, os.path.join(debdir, ms))
-
for filename in (package.install | package.optional):
wanted = self.game.files[filename]
install_as = wanted.install_as
@@ -1522,24 +1564,9 @@ class PackagingTask(object):
self.fill_extra_files(package, destdir)
- # adapted from dh_md5sums
- check_call("find . -type f ! -regex '\./DEBIAN/.*' " +
- "-printf '%P\\0' | LC_ALL=C sort -z | " +
- "xargs -r0 md5sum > DEBIAN/md5sums",
- shell=True, cwd=destdir)
- os.chmod(os.path.join(destdir, 'DEBIAN/md5sums'), 0o644)
-
- try:
- control_in = open(self.get_control_template(package),
- encoding='utf-8')
- control = Deb822(control_in)
- except FileNotFoundError:
- control = Deb822()
- self.modify_control_template(control, package, destdir)
- control.dump(fd=open(os.path.join(debdir, 'control'), 'wb'),
- encoding='utf-8')
- os.chmod(os.path.join(debdir, 'control'), 0o644)
+ return True
+ def our_dh_fixperms(self, destdir):
for dirpath, dirnames, filenames in os.walk(destdir):
for fn in filenames + dirnames:
full = os.path.join(dirpath, fn)
@@ -1560,8 +1587,6 @@ class PackagingTask(object):
# make other files rw-r--r--
os.chmod(full, 0o644)
- return True
-
def modify_control_template(self, control, package, destdir):
for key in control.keys():
assert key == 'Description', 'specify "%s" only in YAML' % key
@@ -2437,6 +2462,9 @@ class PackagingTask(object):
# FIXME: probably better as an exception?
return None
+ self.fill_dest_dir_deb(package, destdir)
+ self.our_dh_fixperms(destdir)
+
# it had better have a /usr and a DEBIAN directory or
# something has gone very wrong
assert os.path.isdir(os.path.join(destdir, 'usr')), destdir
@@ -2481,6 +2509,9 @@ class PackagingTask(object):
if not self.fill_dest_dir(package, destdir):
return None
+ self.fill_dest_dir_rpm(package, destdir)
+ self.our_dh_fixperms(destdir)
+
assert os.path.isdir(os.path.join(destdir, 'usr')), destdir
try:
--
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