games/xarchon: Added (fantasy-themed board game).

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2016-08-12 23:24:58 +07:00 committed by Willy Sudiarto Raharjo
parent fd81ce18f5
commit cf097d5fa6
12 changed files with 561 additions and 0 deletions

14
games/xarchon/README Normal file
View File

@ -0,0 +1,14 @@
xarchon (fantasy-themed board game)
Archon: The Light and the Dark is a 1983 video game developed by Free
Fall Associates and one of the first five games published by Electronic
Arts. It's similar in concept to Chess, except that landing on another
player's piece results in an arcade-style fight to determine the victor.
xarchon is a rewrite of Archon and Archon II: Adept for modern systems.
Single-player against the computer is supported, as well as multiplayer
on the same computer or over the network.
xarchon uses esd (the Enlightened Sound Daemon) for audio. esd must be
running for the game to make sound (e.g. started by ~/.xinitrc, or by
your desktop environment, or manually by typing "esd &" in a terminal).

3
games/xarchon/doinst.sh Normal file
View File

@ -0,0 +1,3 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi

View File

@ -0,0 +1,169 @@
diff -Naur xarchon-0.60.orig/acinclude.m4 xarchon-0.60/acinclude.m4
--- xarchon-0.60.orig/acinclude.m4 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/acinclude.m4 2016-08-10 15:44:42.085582512 -0400
@@ -176,13 +176,13 @@
QT_LDFLAGS="-L $qtdir/lib"
CFLAGS="$CFLAGS $QT_INCLUDES"
LDFLAGS="$LDFLAGS $QT_LDFLAGS"
-AC_CHECK_LIB(qt, qVersion__Fv, [
+AC_CHECK_LIB(qt-mt, qt_C_sigchldHnd, [
AC_PATH_PROG(MOC, moc, notfound, $PATH:$qtdir/bin)
if test "x$MOC" = xnotfound; then
AC_MSG_WARN([Moc is missing; the Qt interface will not be built])
[$3]
else
- QT_LDFLAGS="$QT_LDFLAGS -lqt"
+ QT_LDFLAGS="$QT_LDFLAGS -lqt-mt -lX11"
AC_SUBST(QT_INCLUDES)
AC_SUBST(QT_LDFLAGS)
[$2]
diff -Naur xarchon-0.60.orig/aclocal.m4 xarchon-0.60/aclocal.m4
--- xarchon-0.60.orig/aclocal.m4 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/aclocal.m4 2016-08-10 15:44:49.089582758 -0400
@@ -189,13 +189,13 @@
QT_LDFLAGS="-L $qtdir/lib"
CFLAGS="$CFLAGS $QT_INCLUDES"
LDFLAGS="$LDFLAGS $QT_LDFLAGS"
-AC_CHECK_LIB(qt, qVersion__Fv, [
+AC_CHECK_LIB(qt-mt, _Z8qVersionv, [
AC_PATH_PROG(MOC, moc, notfound, $PATH:$qtdir/bin)
if test "x$MOC" = xnotfound; then
AC_MSG_WARN([Moc is missing; the Qt interface will not be built])
[$3]
else
- QT_LDFLAGS="$QT_LDFLAGS -lqt"
+ QT_LDFLAGS="$QT_LDFLAGS -lqt-mt"
AC_SUBST(QT_INCLUDES)
AC_SUBST(QT_LDFLAGS)
[$2]
diff -Naur xarchon-0.60.orig/data/Makefile.am xarchon-0.60/data/Makefile.am
--- xarchon-0.60.orig/data/Makefile.am 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/data/Makefile.am 2016-08-11 06:10:28.727404448 -0400
@@ -11,8 +11,8 @@
echo "--> Installing theme '$$theme'"; \
THEME_DIRS=`find $$theme -type d`; \
for p in $$THEME_DIRS; do \
- echo "mkdir $(pkgdatadir)/$$p"; \
- mkdir $(pkgdatadir)/$$p; \
+ echo "mkdir -p $(DESTDIR)$(pkgdatadir)/$$p"; \
+ mkdir -p $(DESTDIR)$(pkgdatadir)/$$p; \
done; \
THEME_FILES=`find $$theme -type f`; \
for p in $$THEME_FILES; do \
diff -Naur xarchon-0.60.orig/src/Genetic.hpp xarchon-0.60/src/Genetic.hpp
--- xarchon-0.60.orig/src/Genetic.hpp 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/src/Genetic.hpp 2016-08-11 06:02:50.212388366 -0400
@@ -1,6 +1,7 @@
#ifndef GENETIC_HPP
#define GENETIC_HPP
+#include <cstdlib>
#include <list>
using namespace std;
@@ -216,9 +217,9 @@
virtual Genetic_Operator<T> *Choose_Operator(void)
{
int max=(int)total_op_weight;
- list<Genetic_Operator<T> *>::iterator start=operators.begin();
- list<Genetic_Operator<T> *>::iterator end=operators.end();
- list<Genetic_Operator<T> *>::iterator iter;
+ typename list<Genetic_Operator<T> *>::iterator start=operators.begin();
+ typename list<Genetic_Operator<T> *>::iterator end=operators.end();
+ typename list<Genetic_Operator<T> *>::iterator iter;
int r=rand()%max;
int count=0;
for (iter=start;iter!=end;iter++) {
@@ -264,7 +265,7 @@
cur_size++;
}
}
- newpop->Eval_Fitness(fit_func);
+ newpop->Eval_Fitness(this->fit_func);
return newpop;
}
diff -Naur xarchon-0.60.orig/src/Problem.hpp xarchon-0.60/src/Problem.hpp
--- xarchon-0.60.orig/src/Problem.hpp 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/src/Problem.hpp 2016-08-11 05:59:58.156382332 -0400
@@ -306,14 +306,14 @@
virtual G Goal_Value(T *a)
{
if (depth==0)
- return tester->Goal_Value(a);
+ return this->tester->Goal_Value(a);
- Goal_Test<G,T> *endtester=tester;
- tester=new Minimax_Goal_Test(depth-1,generator,other_acc,goal_acc,tester);
+ Goal_Test<G,T> *endtester=this->tester;
+ this->tester=new Minimax_Goal_Test(depth-1,this->generator,other_acc,this->goal_acc,this->tester);
G ret_val=Successor_Goal_Test<G,T>::Goal_Value(a);
- delete tester;
- tester=endtester;
- delete next;
+ delete this->tester;
+ this->tester=endtester;
+ delete this->next;
return ret_val;
}
@@ -340,19 +340,19 @@
virtual G Goal_Value(T *a)
{
- Goal_Accumulator <G,T> *old=goal_acc;
+ Goal_Accumulator <G,T> *old=this->goal_acc;
Multi_Goal_Accumulator <G,T,greater<G> > *mga=new Multi_Goal_Accumulator<G,T,greater<G> >(branch);
- goal_acc=mga;
+ this->goal_acc=mga;
Successor_Goal_Test<G,T>::Goal_Value(a);
- goal_acc=old;
+ this->goal_acc=old;
for (mga->Init();!mga->IsEnd();mga->Next()) {
T *state=mga->Get_State();
- Multi_Minimax_Goal_Test *next=new Multi_Minimax_Goal_Test(d-1,b,gen,other,goal_acc,tester);
+ Multi_Minimax_Goal_Test *next=new Multi_Minimax_Goal_Test(this->d-1,this->b,this->gen,other,this->goal_acc,this->tester);
next->Goal_Value(state);
- goal_acc->Put(accumulator->value,acc->state,acc->op);
+ this->goal_acc->Put(this->accumulator->value,this->acc->state,this->acc->op);
}
- goal_acc->Put(mga->Get_State(),mga->Get_Operator(),mga->Get_Result());
- return goal_acc->Get_Value();
+ this->goal_acc->Put(mga->Get_State(),mga->Get_Operator(),mga->Get_Result());
+ return this->goal_acc->Get_Value();
}
};
diff -Naur xarchon-0.60.orig/src/Xarchon_Problem.cpp xarchon-0.60/src/Xarchon_Problem.cpp
--- xarchon-0.60.orig/src/Xarchon_Problem.cpp 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/src/Xarchon_Problem.cpp 2016-08-11 06:03:37.472390024 -0400
@@ -1,3 +1,4 @@
+#include <cstring>
#include "Xarchon_Problem.hpp"
#include "Xarchon_Interface.hpp"
diff -Naur xarchon-0.60.orig/src/board.h xarchon-0.60/src/board.h
--- xarchon-0.60.orig/src/board.h 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/src/board.h 2016-08-10 16:20:27.874657772 -0400
@@ -98,7 +98,6 @@
/*--------------------------------------------------------------------------*/
extern int board_turn;
-extern int board_frame_time;
extern CELL board_cells[BOARD_YCELLS][BOARD_XCELLS];
extern int spell_avails[3][SPELL_COUNT_2]; /* row 0 is light, row 1 is dark */
extern int init_board_cells[NUM_GAMES][BOARD_YCELLS][BOARD_XCELLS];
diff -Naur xarchon-0.60.orig/src/qt/qtplayersdialog.h xarchon-0.60/src/qt/qtplayersdialog.h
--- xarchon-0.60.orig/src/qt/qtplayersdialog.h 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/src/qt/qtplayersdialog.h 2016-08-10 16:18:46.872654229 -0400
@@ -5,9 +5,9 @@
#ifndef __MY_QT_PLAYERS_DIALOG_H
#define __MY_QT_PLAYERS_DIALOG_H
+#include "iface.h"
#include <qdialog.h>
-struct IFACE_PLAYER;
class QtPlayerWidget;
class QButtonGroup;

View File

@ -0,0 +1,11 @@
diff -Naur xarchon-0.60.orig/src/qt/qthumaniface.cpp xarchon-0.60.joypatch/src/qt/qthumaniface.cpp
--- xarchon-0.60.orig/src/qt/qthumaniface.cpp 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60.joypatch/src/qt/qthumaniface.cpp 2016-08-11 08:07:19.978650355 -0400
@@ -133,7 +133,6 @@
if (!human_joystick_init(non_keyboard)) {
#endif
toolkit_message_box("Joystick not available");
- return false;
#ifdef HAVE_LINUX_JOYSTICK_H
}
#endif

View File

@ -0,0 +1,28 @@
diff -Naur xarchon-0.60.orig/src/xarchon.6 xarchon-0.60/src/xarchon.6
--- xarchon-0.60.orig/src/xarchon.6 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60/src/xarchon.6 2016-08-11 17:12:47.505798215 -0400
@@ -304,18 +304,21 @@
.SH THE GRAPHICAL USER INTERFACE
+.B NOTE:
+This section of the manual describes an older version of the
+game. The user interface has been simplified, but there is
+still some useful information here.
+
The graphical user interface is your means of telling the progam
exactly how you want to play. Using the GUI, you can:
- define players, select two players to play on either side;
-- select a graphical theme (although currently there is only
-one theme to choose from);
- start and end games;
- and toggle sound.
.SS DEFINING PLAYERS
-the program has a concept of "players." A player is merely
+The program has a concept of "players." A player is merely
a collection of configuration choices. For example, one
configuration choice is who plays for this player (a human
at the console, the computer, or perhaps it is played

View File

@ -0,0 +1,82 @@
diff -Naur xarchon-0.60/configure.in xarchon-0.60.nogtk/configure.in
--- xarchon-0.60/configure.in 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60.nogtk/configure.in 2016-08-11 17:32:05.385838825 -0400
@@ -69,22 +69,6 @@
TOOLKIT_LIBS=""
TOOLKIT_LDADDS=""
-GTK_SUBDIR=""
-AM_PATH_GTK(1.2.0, have_gtk=yes, )
-if test "x$have_gtk" = xyes; then
- AC_PATH_PROG(GLADE, glade, notfound, $PATH:$gtk_config_exec_prefix/bin)
- if test "x$GLADE" = xnotfound; then
- AC_MSG_WARN([Glade is missing; the GTK+ interface will not be built])
- have_gtk=""
- else
- GTK_SUBDIR="gtk"
- TOOLKIT_LIBS="$TOOLKIT_LIBS gtk/libgtk.a"
- TOOLKIT_LDADDS="$TOOLKIT_LDADDS $GTK_LIBS"
- AC_DEFINE(HAVE_GTK)
- fi
-fi
-AC_SUBST(GTK_SUBDIR)
-
QT_SUBDIR=""
XC_PATH_QT(whatever, have_qt=yes, )
if test "x$have_qt" = xyes; then
@@ -104,11 +88,6 @@
def_toolkit="none"
-AC_ARG_WITH(default-gtk,
- [ --with-default-gtk default to GTK+ toolkit ],
- def_toolkit="gtk",
-)
-
AC_ARG_WITH(default-qt,
[ --with-default-qt default to Qt toolkit ],
def_toolkit="qt",
@@ -118,22 +97,11 @@
case $def_toolkit in
none)
- if test "x$have_gtk" = xyes; then
- DEFAULT_TOOLKIT="GTK+"
- elif test "x$have_qt" = xyes; then
+ if test "x$have_qt" = xyes; then
DEFAULT_TOOLKIT="Qt"
else
AC_MSG_ERROR([
- Neither GTK+ nor Qt toolkits were found])
- fi
- ;;
-
- gtk)
- if test "x$have_gtk" = xyes; then
- DEFAULT_TOOLKIT="GTK+"
- else
- AC_MSG_ERROR([
- GTK+ was requested, but could not be found])
+ Qt3 toolkit not found])
fi
;;
@@ -265,7 +233,6 @@
AC_OUTPUT(
Makefile
src/Makefile
-src/gtk/Makefile
src/qt/Makefile
data/Makefile
stamp.h)
diff -Naur xarchon-0.60/src/Makefile.am xarchon-0.60.nogtk/src/Makefile.am
--- xarchon-0.60/src/Makefile.am 2016-08-11 17:36:55.973849017 -0400
+++ xarchon-0.60.nogtk/src/Makefile.am 2016-08-11 17:37:05.196849341 -0400
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS = @GTK_SUBDIR@ @QT_SUBDIR@
+SUBDIRS = @QT_SUBDIR@
INCLUDES = @X_CFLAGS@ @ESD_CFLAGS@

View File

@ -0,0 +1,12 @@
diff -Naur xarchon-0.60.orig/src/qt/qtguiwidget.cpp xarchon-0.60.menu/src/qt/qtguiwidget.cpp
--- xarchon-0.60.orig/src/qt/qtguiwidget.cpp 2002-01-09 13:34:33.000000000 -0500
+++ xarchon-0.60.menu/src/qt/qtguiwidget.cpp 2016-08-11 09:10:20.179782939 -0400
@@ -46,8 +46,6 @@
menubar->insertItem("settingsPlayers", popup, "Configure &Players...",
this, SLOT(settingsPlayers()));
- menubar->insertItem("settingsTheme", popup, "Select &Theme...",
- this, SLOT(settingsTheme()));
menubar->insertItem("settingsSound", popup, "Toggle &Sound",
this, SLOT(settingsSound()), Qt::Key_F11);
menubar->setChecked("settingsSound", TRUE);

19
games/xarchon/slack-desc Normal file
View File

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
xarchon: xarchon (fantasy-themed board game)
xarchon:
xarchon: Archon: The Light and the Dark is a 1983 video game developed by
xarchon: Free Fall Associates and one of the first five games published
xarchon: by Electronic Arts. It's similar in concept to Chess, except that
xarchon: landing on another player's piece results in an arcade-style fight
xarchon: to determine the victor.
xarchon:
xarchon: xarchon is a rewrite of Archon and Archon II: Adept for modern
xarchon: systems.
xarchon:

View File

@ -0,0 +1,133 @@
#!/bin/sh
# Slackware build script for xarchon
# Written by B. Watson (yalhcru@gmail.com)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# note: xarchon plays Archon and Archon II: Adept. I can't tell if the
# Adept game is complete or correct, because I never could understand
# how to play it, even as a video-game-obsessed kid in the 1980s.
PRGNAM=xarchon
VERSION=${VERSION:-0.60}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
# hammer old C++ code into building on gcc-5.3, plus autoconf fixes
# to get qt3 detected & linked properly.
patch -p1 < $CWD/patches/compilefix.diff
# theoretically xarchon can be built with gtk+-1.x, but it requires an
# ancient gtk1-compatible version of glade... plus the gtk1 stuff won't
# compile under gcc-5.3. went through the trouble of patching the qt UI,
# so we don't bother with gtk1.
patch -p1 < $CWD/patches/remove_gtk.diff
# stop the GUI from getting stuck in Configure Players, when no joysticks
# are plugged in. Without the patch, it continually complains "Joystick
# not available" and won't allow saving the settings, even if joystick
# control isn't selected. With the patch, it still complains, but only
# once (per human player), then it saves the settings and exits Configure
# Players correctly.
patch -p1 < $CWD/patches/joystick.diff
# remove "Select Theme" from the menu. it's unimplemented, plus there
# aren't any themes to choose (just the default one).
patch -p1 < $CWD/patches/remove_theme_option.diff
# add warning to the man page about the GUI section being outdated,
# remove mention of selecting themes.
patch -p1 < $CWD/patches/manpage.diff
# configure script is from 2002, no thank you.
rm -f configure
autoreconf -if
# don't rely on /etc/profile.d/qt.sh being executable.
export QTDIR=/opt/kde3/lib64/qt3
export PATH=$QTDIR/bin:$PATH
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS -fpermissive" \
./configure \
--with-default-qt \
--prefix=/usr \
--bindir=/usr/games \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--datadir=/usr/share/games/ \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--build=$ARCH-slackware-linux
make
make install-strip DESTDIR=$PKG
gzip -9 $PKG/usr/man/man6/$PRGNAM.6
# default to mouse control, not joystick. note that keyboard control is
# always active, regardless of this setting. also by default player 2
# is the AI. this allows people to quickly fire up a single-player game
# (the most common case) without going through the config menu. this
# just changes the default; users can change it as desired.
cat $CWD/$PRGNAM.default > $PKG/usr/share/games/$PRGNAM/$PRGNAM.default
# .desktop written for this build.
mkdir -p $PKG/usr/share/pixmaps $PKG/usr/share/applications
ln -s ../games/$PRGNAM/icon.xpm $PKG/usr/share/pixmaps/$PRGNAM.xpm
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING ChangeLog NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

View File

@ -0,0 +1,72 @@
5
Qt
Qt-Left Qt-Right
1
6
the-good-guy
1
0xFF09 0x77 0x78 0x61 0x64 0x71 0x7A 0x65 0x63
0xFF0D 0xFF52 0xFF54 0xFF51 0xFF53 0xFF50 0xFF57 0xFF55 0xFF56
-1
easy 0
no.host 9999
the-easy-bad-guy
2
0xFF09 0x77 0x78 0x61 0x64 0x71 0x7A 0x65 0x63
0xFF0D 0xFF52 0xFF54 0xFF51 0xFF53 0xFF50 0xFF57 0xFF55 0xFF56
-1
easy 1
no.host 9999
the-hard-bad-guy
2
0xFF09 0x77 0x78 0x61 0x64 0x71 0x7A 0x65 0x63
0xFF0D 0xFF52 0xFF54 0xFF51 0xFF53 0xFF50 0xFF57 0xFF55 0xFF56
-1
hard 0
no.host 9999
network-player
3
0x2D 0x67 0x75 0x79 0x0 0x7A59 0x0 0x0 0x0
0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
-1
easy 0
address.of.network.player 25336
Qt-Left
1
0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
5
easy 0
0
Qt-Right
2
0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
0
easy 0
0

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=xarchon
Comment=Classic Fantasy Chess Game
Exec=xarchon
Icon=xarchon
Terminal=false
Type=Application
Categories=Game;BoardGame;

View File

@ -0,0 +1,10 @@
PRGNAM="xarchon"
VERSION="0.60"
HOMEPAGE="http://xarchon.seul.org/"
DOWNLOAD="http://xarchon.seul.org/xarchon-0.60.tar.gz"
MD5SUM="d7f3fc32b2ddbbfb8578a3366400c5c6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="qt3"
MAINTAINER="B. Watson"
EMAIL="yalhcru@gmail.com"