[game-data-packager] 01/01: Conform to https://github.com/cgwalters/build-api

Simon McVittie smcv at debian.org
Fri Nov 4 23:11:57 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 8068df0b7725a36e940a9c670375981be0baa39a
Author: Simon McVittie <smcv at debian.org>
Date:   Fri Nov 4 23:11:13 2016 +0000

    Conform to https://github.com/cgwalters/build-api
    
    This resembles Autoconf, but is an independent implementation.
---
 .gitignore                    |   1 +
 Makefile                      |  26 +++----
 configure                     | 177 ++++++++++++++++++++++++++++++++++++++++++
 debian/changelog              |   2 +
 debian/rules                  |  10 ++-
 tools/configure.py            |  31 --------
 tools/game-data-packager.spec |   1 +
 7 files changed, 198 insertions(+), 50 deletions(-)

diff --git a/.gitignore b/.gitignore
index 87c4558..7e59c8e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
 /build/
 /build-stamp
+/config.status
 /configure.mk
 /configure-stamp
 /debian/files
diff --git a/Makefile b/Makefile
index 11ccf22..d37579f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,3 @@
-bindir := /usr/bin
-libdir := /usr/lib
-datadir := /usr/share
-gamedatadir := ${datadir}
-
-PYTHON := python3
-
 -include configure.mk
 
 pkgdatadir := ${gamedatadir}/game-data-packager
@@ -70,8 +63,8 @@ default: $(png) $(svgz) $(json_from_data) $(launcher_json) \
       out/bash_completion out/changelog.gz \
       out/game-data-packager out/vfs.zip out/memento-mori-2.svg
 
-configure.mk: tools/configure.py $(wildcard game_data_packager/*.py game_data_packager/*/*.py)
-	PYTHONPATH=. ${PYTHON} tools/configure.py > $@
+configure.mk: configure game_data_packager/version.py
+	./config.status
 
 out/CACHEDIR.TAG:
 	@mkdir -p out
@@ -349,8 +342,7 @@ install:
 
 	mkdir -p $(DESTDIR)$(pkgdatadir)
 	cp -ar game_data_packager/                             $(DESTDIR)$(pkgdatadir)/
-	python3 -m game_data_packager.version $(RELEASE) >     out/installed-version.py
-	install -m0644 out/installed-version.py                $(DESTDIR)$(pkgdatadir)/game_data_packager/version.py
+	install -m0644 out/version.py                          $(DESTDIR)$(pkgdatadir)/game_data_packager/
 	install -m0644 out/*.copyright                         $(DESTDIR)$(pkgdatadir)/
 	install -m0644 out/*.png                               $(DESTDIR)$(pkgdatadir)/
 	install -m0644 data/*.png                              $(DESTDIR)$(pkgdatadir)/
@@ -363,7 +355,7 @@ install:
 
 	install -d                                             $(DESTDIR)$(runtimedir)/
 	install runtime/gdp_launcher_base.py                   $(DESTDIR)$(runtimedir)/
-	install -m0644 out/installed-version.py                $(DESTDIR)$(runtimedir)/gdp_launcher_version.py
+	install -m0644 out/version.py                          $(DESTDIR)$(runtimedir)/gdp_launcher_version.py
 	install runtime/gdp-launcher.py                        $(DESTDIR)$(runtimedir)/gdp-launcher
 	install runtime/openurl.py                             $(DESTDIR)$(runtimedir)/gdp-openurl
 	install -m0644 $(launcher_desktops)                    $(DESTDIR)$(runtimedir)/
@@ -371,19 +363,19 @@ install:
 	install -m0644 runtime/missing-data.txt                $(DESTDIR)$(runtimedir)/
 	install -m0644 $(launcher_json)                        $(DESTDIR)$(runtimedir)/
 	install -d                                             $(DESTDIR)${gamedatadir}/quake/
-	install -m644 out/installed-version.py                 $(DESTDIR)${gamedatadir}/quake/gdp_launcher_version.py
+	install -m644 out/version.py                           $(DESTDIR)${gamedatadir}/quake/gdp_launcher_version.py
 	install -m755 runtime/gdp_launcher_base.py             $(DESTDIR)${gamedatadir}/quake/quake-server
 	install -d                                             $(DESTDIR)${gamedatadir}/quake2/
-	install -m644 out/installed-version.py                 $(DESTDIR)${gamedatadir}/quake2/gdp_launcher_version.py
+	install -m644 out/version.py                           $(DESTDIR)${gamedatadir}/quake2/gdp_launcher_version.py
 	install -m755 runtime/gdp_launcher_base.py             $(DESTDIR)${gamedatadir}/quake2/quake2-server
 	install -d                                             $(DESTDIR)${gamedatadir}/quake3/
-	install -m644 out/installed-version.py                 $(DESTDIR)${gamedatadir}/quake3/gdp_launcher_version.py
+	install -m644 out/version.py                           $(DESTDIR)${gamedatadir}/quake3/gdp_launcher_version.py
 	install -m755 runtime/gdp_launcher_base.py             $(DESTDIR)${gamedatadir}/quake3/quake3-server
 	install -d                                             $(DESTDIR)${gamedatadir}/quake4/
-	install -m644 out/installed-version.py                 $(DESTDIR)${gamedatadir}/quake4/gdp_launcher_version.py
+	install -m644 out/version.py                           $(DESTDIR)${gamedatadir}/quake4/gdp_launcher_version.py
 	install -m755 runtime/gdp_launcher_base.py             $(DESTDIR)${gamedatadir}/quake4/quake4-dedicated
 	install -d                                             $(DESTDIR)${libdir}/etqw/
-	install -m644 out/installed-version.py                 $(DESTDIR)${libdir}/etqw/gdp_launcher_version.py
+	install -m644 out/version.py                           $(DESTDIR)${libdir}/etqw/gdp_launcher_version.py
 	install -m755 runtime/gdp_launcher_base.py             $(DESTDIR)${libdir}/etqw/etqw-dedicated
 	install -d                                             $(DESTDIR)/etc/apparmor.d/
 	install -m0644 etc/apparmor.d/*                        $(DESTDIR)/etc/apparmor.d/
diff --git a/configure b/configure
new file mode 100755
index 0000000..5c26600
--- /dev/null
+++ b/configure
@@ -0,0 +1,177 @@
+#!/usr/bin/python3
+# encoding=utf-8
+#
+# Copyright © 2016 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
+# 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.
+#
+# You can find the GPL license text on a Debian system under
+# /usr/share/common-licenses/GPL-2.
+
+'''
+A broadly GNU-compatible configure script.
+'''
+
+# Magic tokens for <https://github.com/cgwalters/build-api>:
+## buildapi-variable-no-builddir
+
+import argparse
+import os
+import shlex
+import sys
+
+from game_data_packager.version import (
+        DISTRO,
+        FORMAT,
+        GAME_PACKAGE_VERSION,
+        )
+
+class Configure:
+    def __init__(self):
+        self.consts = dict(
+                PACKAGE='game-data-packager',
+                VERSION=GAME_PACKAGE_VERSION,
+                )
+
+        self.vars = dict(
+                CFLAGS='',
+                CXXFLAGS='',
+                PYTHON=sys.executable,
+                RELEASE='',
+                )
+
+        for k in self.vars:
+            if k in os.environ:
+                self.vars[k] = os.environ[k]
+
+        self.dirs = dict(
+                bindir='${exec_prefix}/bin',
+                datadir='${datarootdir}',
+                datarootdir='${prefix}/share',
+                docdir='${datarootdir}/doc/${PACKAGE}',
+                dvidir='${docdir}',
+                exec_prefix='${prefix}',
+                htmldir='${docdir}',
+                includedir='${prefix}/include',
+                infodir='${datarootdir}/info',
+                libdir='${exec_prefix}/lib',
+                libexecdir='${exec_prefix}/libexec',
+                localedir='${datarootdir}/locale',
+                localstatedir='${prefix}/var',
+                mandir='${datarootdir}/man',
+                oldincludedir='/usr/include',
+                pdfdir='${docdir}',
+                prefix='/usr/local',
+                psdir='${docdir}',
+                runstatedir='${localstatedir}/run',
+                sbindir='${exec_prefix}/sbin',
+                sharedstatedir='${prefix}/com',
+                srcdir=os.path.dirname(sys.argv[0]) or '.',
+                sysconfdir='${prefix}/etc',
+                )
+
+        self.with_ = dict(
+                distro=DISTRO,
+                format=FORMAT,
+                gamedatadir='${datadir}',
+                )
+
+        self.parser = argparse.ArgumentParser(
+                allow_abbrev=False,
+                description='Configure game-data-packager',
+                )
+
+        for k, v in self.dirs.items():
+            self.parser.add_argument('--' + k, default=v)
+
+        for k, v in self.with_.items():
+            self.parser.add_argument('--with-' + k, default=v, dest=k)
+
+        self.parser.add_argument('--build', help='Ignored')
+        self.parser.add_argument('--host', help='Ignored')
+        self.parser.add_argument('--target', help='Ignored')
+
+    def warn(self, message):
+        sys.stderr.write('%s: warning: %s\n' % (sys.argv[0], message))
+
+    def run(self):
+        args, rest = self.parser.parse_known_args()
+
+        for k, v in vars(args).items():
+            if k in self.dirs:
+                self.dirs[k] = v
+            elif k in self.with_:
+                self.with_[k] = v
+            elif k in ('build', 'host', 'target'):
+                pass
+            else:
+                raise AssertionError('Unexpected: %r' % k)
+
+        for arg in rest:
+            if (arg.startswith('--with-') or arg.startswith('--without-') or
+                    arg.startswith('--enable-') or
+                    arg.startswith('--disable-')):
+                self.warn('Unknown with/without/enable/disable option %r' %
+                        arg)
+            elif arg.startswith('-'):
+                self.parser.error('Unknown option %r' % arg)
+            elif '=' in arg:
+                k, v = arg.split('=', 1)
+
+                if k in self.vars:
+                    self.vars[k] = v
+                else:
+                    self.warn('Unknown variable %r' % arg)
+            else:
+                self.parser.error('Unknown argument %r' % arg)
+
+        command_line = ' '.join((shlex.quote(a) for a in sys.argv))
+
+        with open('config.status', 'w') as writer:
+            writer.write('#!/bin/sh\n')
+            writer.write('# Generated by the command below, do not edit\n')
+            writer.write(command_line)
+            writer.write('\n')
+
+        os.chmod('config.status', 0o755)
+        os.makedirs('out', exist_ok=True)
+
+        with open(os.path.join('out', 'version.py'), 'w') as writer:
+            writer.write('# Generated by %r, do not edit\n' % command_line)
+            writer.write('DISTRO = %r\n' % self.with_['distro'])
+            writer.write('FORMAT = %r\n' % self.with_['format'])
+            writer.write('GAME_PACKAGE_VERSION = %r\n' %
+                    self.consts['VERSION'])
+            writer.write('GAME_PACKAGE_RELEASE = %r\n' %
+                    self.vars['RELEASE'])
+
+        with open('configure.mk', 'w') as writer:
+            writer.write('# Generated by %r, do not edit' % command_line)
+
+            for k, v in sorted(self.consts.items()):
+                writer.write('%s = %s\n' % (k, v))
+
+            writer.write('\n')
+
+            for k, v in sorted(self.vars.items()):
+                writer.write('%s = %s\n' % (k, v))
+
+            writer.write('\n')
+
+            for k, v in sorted(self.dirs.items()):
+                writer.write('%s = %s\n' % (k, v))
+
+            writer.write('\n')
+
+            for k, v in sorted(self.with_.items()):
+                writer.write('%s = %s\n' % (k, v))
+
+if __name__ == '__main__':
+    Configure().run()
diff --git a/debian/changelog b/debian/changelog
index 43fe533..5ff9c64 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,8 @@ game-data-packager (47) UNRELEASED; urgency=medium
     - Restructure doom2-masterlevels data [adetiste]
     - Simplify creation of DEBIAN/control [smcv]
     - Sort license files if there are multiple [smcv]
+    - Conform to https://github.com/cgwalters/build-api (vaguely imitating
+      Autoconf, but differently-implemented) [smcv]
 
  -- Simon McVittie <smcv at debian.org>  Sun, 30 Oct 2016 22:19:21 +0000
 
diff --git a/debian/rules b/debian/rules
index 701c43a..0826265 100755
--- a/debian/rules
+++ b/debian/rules
@@ -11,10 +11,16 @@ include /usr/share/dpkg/pkg-info.mk
 
 options := \
 	BUILD_DATE="$$(dpkg-parsechangelog --show-field=Date)" \
-	bindir='/usr/games' \
-	gamedatadir='/usr/share/games' \
 	$(NULL)
 
+override_dh_auto_configure:
+	dh_auto_configure \
+		-- \
+		--bindir='$${exec_prefix}/games' \
+		--libdir='$${exec_prefix}/lib' \
+		--with-gamedatadir='$${datadir}/games' \
+		$(NULL)
+
 override_dh_auto_build:
 	dh_auto_build \
 		-- \
diff --git a/tools/configure.py b/tools/configure.py
deleted file mode 100755
index a7a367d..0000000
--- a/tools/configure.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/python3
-# encoding=utf-8
-#
-# Copyright © 2016 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
-# 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.
-#
-# You can find the GPL license text on a Debian system under
-# /usr/share/common-licenses/GPL-2.
-
-import textwrap
-
-from game_data_packager.packaging import (get_native_packaging_system)
-
-def main():
-    print(get_native_packaging_system().substitute(textwrap.dedent('''
-    bindir := ${bindir}
-    datadir := ${datadir}
-    gamedatadir := ${assets}
-    '''), 'unknown-package-name'))
-
-if __name__ == '__main__':
-    main()
-
diff --git a/tools/game-data-packager.spec b/tools/game-data-packager.spec
index 971c908..33ebfd3 100644
--- a/tools/game-data-packager.spec
+++ b/tools/game-data-packager.spec
@@ -87,6 +87,7 @@ The following games currently require this package:
 %autosetup
 
 %build
+%configure
 make %{?_smp_mflags}
 
 %check

-- 
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