aboutsummaryrefslogtreecommitdiffstats
path: root/games
diff options
context:
space:
mode:
authordanfe <danfe@FreeBSD.org>2006-01-27 17:43:45 +0800
committerdanfe <danfe@FreeBSD.org>2006-01-27 17:43:45 +0800
commit285a80faad7801bba44257681fb2df666a81c158 (patch)
tree1cd76d13cc5e195370e35c06e927377e3fa974ed /games
parent662bd68c1804b63a3176e2b46aa55312a262a6c6 (diff)
downloadfreebsd-ports-graphics-285a80faad7801bba44257681fb2df666a81c158.tar.gz
freebsd-ports-graphics-285a80faad7801bba44257681fb2df666a81c158.tar.zst
freebsd-ports-graphics-285a80faad7801bba44257681fb2df666a81c158.zip
Add AEstats 5.39, an advanced HTML statistics generator for various games.
WWW: http://www.planetquake.com/aeons/aestats/ Mark this port as for i386 only, since while we build native FreeBSD executables, we do so not from source code, but from Linux object files author provides in distfile, with some hacking from our side (see `fbsd_stub.c' in files/ for details).
Diffstat (limited to 'games')
-rw-r--r--games/Makefile1
-rw-r--r--games/aestats/Makefile52
-rw-r--r--games/aestats/distinfo3
-rw-r--r--games/aestats/files/fbsd_stub.c53
-rw-r--r--games/aestats/pkg-descr18
-rw-r--r--games/aestats/pkg-plist77
6 files changed, 204 insertions, 0 deletions
diff --git a/games/Makefile b/games/Makefile
index 46deab197cb..936486e5e64 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -22,6 +22,7 @@
SUBDIR += adgali
SUBDIR += adom
SUBDIR += adonthell
+ SUBDIR += aestats
SUBDIR += affenspiel
SUBDIR += afternoonstalker
SUBDIR += airrox
diff --git a/games/aestats/Makefile b/games/aestats/Makefile
new file mode 100644
index 00000000000..460bc9693cb
--- /dev/null
+++ b/games/aestats/Makefile
@@ -0,0 +1,52 @@
+# New ports collection makefile for: AEstats
+# Date created: 27 Jan 2006
+# Whom: Alexey Dokuchaev <danfe@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= aestats
+PORTVERSION= 5.39
+CATEGORIES= games
+MASTER_SITES= ${MASTER_SITE_LOCAL} http://freebsd.nsu.ru/distfiles/
+MASTER_SITE_SUBDIR= danfe
+DISTNAME= ${PORTNAME}-v${PORTVERSION}
+
+MAINTAINER= danfe@FreeBSD.org
+COMMENT= An advanced HTML statistics generator for various games
+
+ONLY_FOR_ARCHS= i386
+
+USE_ZIP= yes
+
+WRKSRC= ${WRKDIR}/${DISTNAME}/Linux-o
+LINUXBINDIR= ${WRKSRC}/../Linux-Bin
+MAKEFILE= makefile
+MAKE_ARGS= cc=${CC}
+
+post-extract: .SILENT
+ ${CP} ${FILESDIR}/fbsd_stub.c ${WRKSRC}
+ ${REINPLACE_CMD} -e 's,aes.o,& fbsd_stub.o,' ${WRKSRC}/${MAKEFILE}
+ ${ECHO_CMD} >> ${LINUXBINDIR}/alias-example.txt
+ ${MV} ${WRKSRC}/../unsupported/system/Unreal-225 ${WRKSRC}/../unrealmod
+
+# This port is special. Author does not distribute source code, but gives
+# us Linux .o files instead. With some hacking, we can build native FreeBSD
+# executables from those .o files. Pretty neat, huh? :-)
+#
+pre-build:
+ cd ${WRKSRC} && ${CC} ${CFLAGS} -c fbsd_stub.c
+ ${OBJCOPY} --redefine-sym stdout=__stdoutp ${WRKSRC}/aespages.o
+ ${OBJCOPY} --redefine-sym stdout=__stdoutp ${WRKSRC}/paessubs.o
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/AEstats ${WRKSRC}/preAEs ${PREFIX}/bin
+ @${MKDIR} ${DATADIR}
+ ${INSTALL_DATA} ${LINUXBINDIR}/AEsscore.cfg \
+ ${LINUXBINDIR}/AEstats.cfg ${LINUXBINDIR}/banlist.txt ${DATADIR}
+ ${INSTALL_DATA} ${LINUXBINDIR}/alias-example.txt ${DATADIR}/alias.txt
+ ${INSTALL_DATA} ${WRKSRC}/../AEstats.txt ${DATADIR}
+ cd ${WRKSRC}/.. && ${FIND} logs stats unrealmod | \
+ ${CPIO} -pdu -R ${SHAREOWN}:${SHAREGRP} ${DATADIR}
+
+.include <bsd.port.mk>
diff --git a/games/aestats/distinfo b/games/aestats/distinfo
new file mode 100644
index 00000000000..8aead288e48
--- /dev/null
+++ b/games/aestats/distinfo
@@ -0,0 +1,3 @@
+MD5 (aestats-v5.39.zip) = 015184dbf6198b95743c7053dbeb4913
+SHA256 (aestats-v5.39.zip) = 03cf29eef0bf844a3e59186a2dabd4d7261499aef1944d60048bb8e1f044f5b0
+SIZE (aestats-v5.39.zip) = 1544503
diff --git a/games/aestats/files/fbsd_stub.c b/games/aestats/files/fbsd_stub.c
new file mode 100644
index 00000000000..8ffa6c1d67c
--- /dev/null
+++ b/games/aestats/files/fbsd_stub.c
@@ -0,0 +1,53 @@
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <runetype.h>
+
+long int
+__strtol_internal(__const char *__restrict __nptr, char **__restrict __endptr,
+ int __base, int __group)
+{
+
+ return (strtol(__nptr, __endptr, __base));
+}
+
+/*
+ * This one is special. We cannot simply call stat(2) and be done with it:
+ * Linux' and FreeBSD's ``struct stat'' have different sizes (88 and 96,
+ * respectively per my testing here, but YMMV), leading us to core dump
+ * if we do so. Instead, copy only mtime field from FreeBSD's ``struct
+ * stat'' into proper place of provided Linux' ``struct stat'' buffer.
+ */
+
+struct __linux_stat {
+ char pad0[0x40];
+ struct timespec __st_mtim;
+ char pad1[0x10];
+};
+
+int
+__xstat(int __ver, __const char *__filename, struct __linux_stat *__stat_buf)
+{
+ struct stat sb;
+ int err = stat(__filename, &sb);
+
+ if (!err)
+ __stat_buf->__st_mtim = sb.st_mtimespec;
+ return (err);
+}
+
+const int *__ctype_tolower;
+const int *__ctype_toupper;
+
+static void __fbsd_prepare(void) __attribute__ ((constructor));
+
+static void
+__fbsd_prepare(void)
+{
+#if __FreeBSD_version > 502118
+ __ctype_tolower = _CurrentRuneLocale->__maplower;
+ __ctype_toupper = _CurrentRuneLocale->__mapupper;
+#else
+ __ctype_tolower = _CurrentRuneLocale->maplower;
+ __ctype_toupper = _CurrentRuneLocale->mapupper;
+#endif
+}
diff --git a/games/aestats/pkg-descr b/games/aestats/pkg-descr
new file mode 100644
index 00000000000..d02f1e60a8a
--- /dev/null
+++ b/games/aestats/pkg-descr
@@ -0,0 +1,18 @@
+AEstats reads game log files for just about all shooters, converts them into
+platform independent log format (meta log format), and generates meaningful
+(and very pretty!) stats and ranking pages in HTML form. Overall features:
+
+ * Split into two executables to make the code more modular (independent
+ of specific games/mod). This also makes updates quicker and less prone
+ to new bugs.
+ * Modules are command line driven, giving you the maximum control of the
+ the executables, without having to deal with klutzy platform dependent
+ interfaces. This makes it possible to control the modules via batch
+ files or scripts. Ideal for automating calls.
+ * HTML output is eatable by any browser with frames. Since plain HTML
+ code is generated, any user should be able to view the output.
+ * Provides an UnrealScript module (aeonsdmmod.u) that will generate
+ extra log info, since Unreal does not provide any frag obituaries by
+ default.
+
+WWW: http://www.planetquake.com/aeons/aestats/
diff --git a/games/aestats/pkg-plist b/games/aestats/pkg-plist
new file mode 100644
index 00000000000..e3a7fac4101
--- /dev/null
+++ b/games/aestats/pkg-plist
@@ -0,0 +1,77 @@
+bin/AEstats
+bin/preAEs
+%%DATADIR%%/logs/ngUT.log
+%%DATADIR%%/logs/ngUT.mlg
+@dirrm %%DATADIR%%/logs
+%%DATADIR%%/stats/headers/AEstatsBestOfsHead.html
+%%DATADIR%%/stats/headers/AEstatsBuddyHead.html
+%%DATADIR%%/stats/headers/AEstatsDiffMatrixHead.html
+%%DATADIR%%/stats/headers/AEstatsFAQHead.html
+%%DATADIR%%/stats/headers/AEstatsGlobalHead.html
+%%DATADIR%%/stats/headers/AEstatsHead.html
+%%DATADIR%%/stats/headers/AEstatsHelpHead.html
+%%DATADIR%%/stats/headers/AEstatsPlayerStatsHead.html
+%%DATADIR%%/stats/headers/AEstatsRankingHead.html
+%%DATADIR%%/stats/headers/AEstatsRankMatrixHead.html
+%%DATADIR%%/stats/headers/AEstatsTeamHead.html
+%%DATADIR%%/stats/headers/AEstatsTeamMapHead.html
+%%DATADIR%%/stats/headers/background.gif
+%%DATADIR%%/stats/headers/foot.gif
+%%DATADIR%%/stats/headers/head.gif
+%%DATADIR%%/stats/headers/metal.gif
+%%DATADIR%%/stats/headers/t.gif
+%%DATADIR%%/stats/headers/metalw.gif
+@dirrm %%DATADIR%%/stats/headers
+%%DATADIR%%/stats/players/headers/background.gif
+%%DATADIR%%/stats/players/headers/foot.gif
+%%DATADIR%%/stats/players/headers/head.gif
+%%DATADIR%%/stats/players/headers/metal.gif
+%%DATADIR%%/stats/players/headers/metalw.gif
+%%DATADIR%%/stats/players/headers/t.gif
+@dirrm %%DATADIR%%/stats/players/headers
+%%DATADIR%%/stats/players/AEstatsPlayer0.html
+%%DATADIR%%/stats/players/AEstatsPlayer1.html
+%%DATADIR%%/stats/players/AEstatsPlayer10.html
+%%DATADIR%%/stats/players/AEstatsPlayer11.html
+%%DATADIR%%/stats/players/AEstatsPlayer12.html
+%%DATADIR%%/stats/players/AEstatsPlayer2.html
+%%DATADIR%%/stats/players/AEstatsPlayer3.html
+%%DATADIR%%/stats/players/AEstatsPlayer4.html
+%%DATADIR%%/stats/players/AEstatsPlayer5.html
+%%DATADIR%%/stats/players/AEstatsPlayer6.html
+%%DATADIR%%/stats/players/AEstatsPlayer7.html
+%%DATADIR%%/stats/players/AEstatsPlayer8.html
+%%DATADIR%%/stats/players/AEstatsPlayer9.html
+@dirrm %%DATADIR%%/stats/players
+%%DATADIR%%/stats/teams/headers/background.gif
+%%DATADIR%%/stats/teams/headers/foot.gif
+%%DATADIR%%/stats/teams/headers/head.gif
+%%DATADIR%%/stats/teams/headers/metal.gif
+%%DATADIR%%/stats/teams/headers/metalw.gif
+%%DATADIR%%/stats/teams/headers/t.gif
+@dirrm %%DATADIR%%/stats/teams/headers
+@dirrm %%DATADIR%%/stats/teams
+%%DATADIR%%/stats/AEstats.html
+%%DATADIR%%/stats/AEstatsBestOfs.html
+%%DATADIR%%/stats/AEstatsBuddy.html
+%%DATADIR%%/stats/AEstatsDiffMatrix.html
+%%DATADIR%%/stats/AEstatsFAQ.html
+%%DATADIR%%/stats/AEstatsGlobal.html
+%%DATADIR%%/stats/AEstatsHelp.html
+%%DATADIR%%/stats/AEstatsRanking.html
+%%DATADIR%%/stats/AEstatsRankMatrix.html
+%%DATADIR%%/stats/AEstatsTeam.html
+%%DATADIR%%/stats/aestats.css
+%%DATADIR%%/stats/index.html
+@dirrm %%DATADIR%%/stats
+%%DATADIR%%/unrealmod/AEonsDM.uc
+%%DATADIR%%/unrealmod/AEonsDMmod.int
+%%DATADIR%%/unrealmod/AEonsDMmod.u
+%%DATADIR%%/unrealmod/Unreal.ini
+@dirrm %%DATADIR%%/unrealmod
+%%DATADIR%%/AEsscore.cfg
+%%DATADIR%%/AEstats.cfg
+%%DATADIR%%/AEstats.txt
+%%DATADIR%%/alias.txt
+%%DATADIR%%/banlist.txt
+@dirrm %%DATADIR%%