summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'games-rpg/xu4')
-rw-r--r--games-rpg/xu4/Manifest3
-rw-r--r--games-rpg/xu4/files/0.9-savegame.patch76
-rw-r--r--games-rpg/xu4/files/xu4-0.9-ldflags.patch35
-rw-r--r--games-rpg/xu4/files/xu4-0.9-warnings.patch26
-rw-r--r--games-rpg/xu4/files/xu4-0.9-zip.patch144
-rw-r--r--games-rpg/xu4/metadata.xml8
-rw-r--r--games-rpg/xu4/xu4-0.9.ebuild73
7 files changed, 365 insertions, 0 deletions
diff --git a/games-rpg/xu4/Manifest b/games-rpg/xu4/Manifest
new file mode 100644
index 000000000000..b573d51cce61
--- /dev/null
+++ b/games-rpg/xu4/Manifest
@@ -0,0 +1,3 @@
+DIST u4upgrad.zip 632072 SHA256 400ac37311f3be74c1b2d7836561b2ead2b146f5162586865b0f4881225cca58 SHA512 4832d8cfd266d3ccc5eab5184bd2b6b9acd4c0203478873fb5e11704d95104dd9285a7752bad77f873d4f8603673184ae9421964509b948ec69944a4ceadd083 WHIRLPOOL 3d9c320efe24b29edca1f0d917dcaad1da7c1c6246c753b2366ada81552f43113bd57f335ca79adf2283cdab6ba24bf0c09aeb7802a33d3fdec5e0bbe1782d01
+DIST ultima4-1.01.zip 537487 SHA256 ec84ef08e9e38156622300065aa62260276fc8f1c1ff2774f7916e7c10db40dc SHA512 c86c29d51e21b93992316552fbaaec948e7e8048fea484f003f43ac82211f82fa587fb15db991cddf744f2c3ff0fc4d411cd51cc7650e13a5b520c4dc620518c WHIRLPOOL f3acdc021449e3b55adc7d0ea967c8f77cdd813a0f9316042ae8e906eb105b6297f19efc90fffbd9be747bca7d6b0ea4b0bbdc1729c906076e89498558250155
+DIST xu4-0.9.tar.gz 320090 SHA256 26d7a957411e98474d3a06a0bf63a683208d3c35c0cf7afe90db992a934b0bf3 SHA512 6c0b27472074d96a5f76e024c800bed89c57c29dbd760278c819ad8b024362480bda5f1584eb9fe64fd6f6cae0b3b8d8571c8cf533f25b842471803acd7cea8d WHIRLPOOL 428ee87920850e16ce411e0a2bd1656a68a61644d96349bf727cbedd041e6fe3c8c134e960eaf5205d0d3f9deeccd9de23cab2186567fbd8c80b382ac5c9f812
diff --git a/games-rpg/xu4/files/0.9-savegame.patch b/games-rpg/xu4/files/0.9-savegame.patch
new file mode 100644
index 000000000000..44a52dd40e95
--- /dev/null
+++ b/games-rpg/xu4/files/0.9-savegame.patch
@@ -0,0 +1,76 @@
+--- src/savegame.c.orig
++++ src/savegame.c
+@@ -21,23 +21,24 @@
+ char *partySavFilename() {
+ char *fname;
+
+-#if defined(MACOSX)
+ char *home;
+
+ home = getenv("HOME");
+ if (home && home[0]) {
+ fname = (char *) malloc(strlen(home) +
++#if defined(MACOSX)
+ strlen(MACOSX_USER_FILES_PATH) +
++#endif
++strlen("/.u4/") +
+ strlen(PARTY_SAV_BASE_FILENAME) + 2);
+ strcpy(fname, home);
++#if defined(MACOSX)
+ strcat(fname, MACOSX_USER_FILES_PATH);
+- strcat(fname, "/");
++#endif
++ strcat(fname, "/.u4/");
+ strcat(fname, PARTY_SAV_BASE_FILENAME);
+ } else
+ fname = strdup(PARTY_SAV_BASE_FILENAME);
+-#else
+- fname = strdup(PARTY_SAV_BASE_FILENAME);
+-#endif
+
+ return fname;
+ }
+@@ -45,24 +45,24 @@
+ char *monstersSavFilename() {
+ char *fname;
+
+-#if defined(MACOSX)
+ char *home;
+
+ home = getenv("HOME");
+ if (home && home[0]) {
+ fname = (char *) malloc(strlen(home) +
++#if defined(MACOSX)
+ strlen(MACOSX_USER_FILES_PATH) +
++#endif
++strlen("/.u4/") +
+ strlen(MONSTERS_SAV_BASE_FILENAME) + 2);
+ strcpy(fname, home);
++#if defined(MACOSX)
+ strcat(fname, MACOSX_USER_FILES_PATH);
+- strcat(fname, "/");
++#endif
++ strcat(fname, "/.u4/");
+ strcat(fname, MONSTERS_SAV_BASE_FILENAME);
+ } else
+ fname = strdup(MONSTERS_SAV_BASE_FILENAME);
+-#else
+- fname = strdup(MONSTERS_SAV_BASE_FILENAME);
+-#endif
+-
+ return fname;
+ }
+
+--- src/u4.c.orig
++++ src/u4.c
+@@ -38,6 +38,10 @@
+ osxInit(argv[0]);
+ #endif
+
++ if (getenv("HOME")) {
++ chdir(getenv("HOME"));
++ mkdir(".u4", 0777);
++ }
+ settingsRead();
+
+ for (i = 1; i < (unsigned int)argc; i++) {
diff --git a/games-rpg/xu4/files/xu4-0.9-ldflags.patch b/games-rpg/xu4/files/xu4-0.9-ldflags.patch
new file mode 100644
index 000000000000..560cdc33f1d9
--- /dev/null
+++ b/games-rpg/xu4/files/xu4-0.9-ldflags.patch
@@ -0,0 +1,35 @@
+--- src/Makefile.common.old
++++ src/Makefile.common
+@@ -68,25 +68,25 @@
+ mkutils:: dumpsavegame$(EXEEXT) lzwenc$(EXEEXT) lzwdec$(EXEEXT) rleenc$(EXEEXT) rledec$(EXEEXT) tlkconv$(EXEEXT)
+
+ $(MAIN): $(OBJS)
+- $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS)
++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJS) $(LIBS)
+
+ dumpsavegame$(EXEEXT) : util/dumpsavegame.o savegame.o io.o names.o
+- $(CC) $(CFLAGS) -o dumpsavegame util/dumpsavegame.o savegame.o io.o names.o
++ $(CC) $(LDFLAGS) $(CFLAGS) -o dumpsavegame util/dumpsavegame.o savegame.o io.o names.o
+
+ lzwenc$(EXEEXT) : util/lzwenc.o lzw/hash.o util/pngconv.o
+- $(CC) $(CFLAGS) -o lzwenc util/lzwenc.o lzw/hash.o util/pngconv.o -lpng -lz
++ $(CC) $(LDFLAGS) $(CFLAGS) -o lzwenc util/lzwenc.o lzw/hash.o util/pngconv.o -lpng -lz
+
+ lzwdec$(EXEEXT) : util/lzwdec.o lzw/lzw.o lzw/u4decode.o lzw/hash.o util/pngconv.o
+- $(CC) $(CFLAGS) -o lzwdec util/lzwdec.o lzw/lzw.o lzw/u4decode.o lzw/hash.o util/pngconv.o -lpng -lz
++ $(CC) $(LDFLAGS) $(CFLAGS) -o lzwdec util/lzwdec.o lzw/lzw.o lzw/u4decode.o lzw/hash.o util/pngconv.o -lpng -lz
+
+ rleenc$(EXEEXT) : util/rleenc.o util/pngconv.o
+- $(CC) $(CFLAGS) -o rleenc util/rleenc.o util/pngconv.o -lpng -lz
++ $(CC) $(LDFLAGS) $(CFLAGS) -o rleenc util/rleenc.o util/pngconv.o -lpng -lz
+
+ rledec$(EXEEXT) : util/rledec.o rle.o util/pngconv.o
+- $(CC) $(CFLAGS) -o rledec util/rledec.o rle.o util/pngconv.o -lpng -lz
++ $(CC) $(LDFLAGS) $(CFLAGS) -o rledec util/rledec.o rle.o util/pngconv.o -lpng -lz
+
+ tlkconv$(EXEEXT) : util/tlkconv.o
+- $(CC) $(CFLAGS) -o tlkconv util/tlkconv.o $(shell xml2-config --libs)
++ $(CC) $(LDFLAGS) $(CFLAGS) -o tlkconv util/tlkconv.o $(shell xml2-config --libs)
+
+ clean:: cleanutil
+ rm -rf *~ */*~ $(OBJS) $(MAIN)
diff --git a/games-rpg/xu4/files/xu4-0.9-warnings.patch b/games-rpg/xu4/files/xu4-0.9-warnings.patch
new file mode 100644
index 000000000000..58b35316ac0d
--- /dev/null
+++ b/games-rpg/xu4/files/xu4-0.9-warnings.patch
@@ -0,0 +1,26 @@
+--- u4.orig/src/u4.c
++++ u4/src/u4.c
+@@ -3,6 +3,8 @@
+ */
+
+ #include <stdio.h>
++#include <sys/stat.h>
++#include <sys/types.h>
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <string.h>
+--- u4.orig/u4.desktop
++++ u4/u4.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Ultima 4
+ Comment=Ultima 4 (xu4)
+ Exec=u4
+-Icon=u4.png
+-Terminal=0
++Icon=u4
++Terminal=false
+ Type=Application
+-Categories=Application;Game;RolePlaying;
++Categories=Game;RolePlaying;
diff --git a/games-rpg/xu4/files/xu4-0.9-zip.patch b/games-rpg/xu4/files/xu4-0.9-zip.patch
new file mode 100644
index 000000000000..c2d2053cb3f8
--- /dev/null
+++ b/games-rpg/xu4/files/xu4-0.9-zip.patch
@@ -0,0 +1,144 @@
+--- src/unzip.c.orig
++++ src/unzip.c
+@@ -493,7 +493,7 @@
+ /*
+ Get Info about the current file in the zipfile, with internal only info
+ */
+-local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file,
++local int unzlocal_GetCurrentFileInfoInternal _Z_OF((unzFile file,
+ unz_file_info *pfile_info,
+ unz_file_info_internal
+ *pfile_info_internal,
+--- src/unzip.h.orig
++++ src/unzip.h
+@@ -8,7 +8,7 @@
+ Encryption and multi volume ZipFile (span) are not supported.
+ Old compressions used by old PKZip 1.x are not supported
+
+- THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE
++ THIS IS AN ALPHA VERSION. AT THIS STAGE _Z_OF DEVELOPPEMENT, SOMES API OR STRUCTURE
+ CAN CHANGE IN FUTURE VERSION !!
+ I WAIT FEEDBACK at mail info@winimage.com
+ Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution
+@@ -111,7 +111,7 @@
+ tm_unz tmu_date;
+ } unz_file_info;
+
+-extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
++extern int ZEXPORT unzStringFileNameCompare _Z_OF ((const char* fileName1,
+ const char* fileName2,
+ int iCaseSensitivity));
+ /*
+@@ -124,7 +124,7 @@
+ */
+
+
+-extern unzFile ZEXPORT unzOpen OF((const char *path));
++extern unzFile ZEXPORT unzOpen _Z_OF((const char *path));
+ /*
+ Open a Zip file. path contain the full pathname (by example,
+ on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer
+@@ -135,14 +135,14 @@
+ of this unzip package.
+ */
+
+-extern int ZEXPORT unzClose OF((unzFile file));
++extern int ZEXPORT unzClose _Z_OF((unzFile file));
+ /*
+ Close a ZipFile opened with unzipOpen.
+ If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
+ these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
+ return UNZ_OK if there is no problem. */
+
+-extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
++extern int ZEXPORT unzGetGlobalInfo _Z_OF((unzFile file,
+ unz_global_info *pglobal_info));
+ /*
+ Write info about the ZipFile in the *pglobal_info structure.
+@@ -150,7 +150,7 @@
+ return UNZ_OK if there is no problem. */
+
+
+-extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
++extern int ZEXPORT unzGetGlobalComment _Z_OF((unzFile file,
+ char *szComment,
+ uLong uSizeBuf));
+ /*
+@@ -163,20 +163,20 @@
+ /***************************************************************************/
+ /* Unzip package allow you browse the directory of the zipfile */
+
+-extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
++extern int ZEXPORT unzGoToFirstFile _Z_OF((unzFile file));
+ /*
+ Set the current file of the zipfile to the first file.
+ return UNZ_OK if there is no problem
+ */
+
+-extern int ZEXPORT unzGoToNextFile OF((unzFile file));
++extern int ZEXPORT unzGoToNextFile _Z_OF((unzFile file));
+ /*
+ Set the current file of the zipfile to the next file.
+ return UNZ_OK if there is no problem
+ return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
+ */
+
+-extern int ZEXPORT unzLocateFile OF((unzFile file,
++extern int ZEXPORT unzLocateFile _Z_OF((unzFile file,
+ const char *szFileName,
+ int iCaseSensitivity));
+ /*
+@@ -189,7 +189,7 @@
+ */
+
+
+-extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
++extern int ZEXPORT unzGetCurrentFileInfo _Z_OF((unzFile file,
+ unz_file_info *pfile_info,
+ char *szFileName,
+ uLong fileNameBufferSize,
+@@ -215,20 +215,20 @@
+ from it, and close it (you can close it before reading all the file)
+ */
+
+-extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
++extern int ZEXPORT unzOpenCurrentFile _Z_OF((unzFile file));
+ /*
+ Open for reading data the current file in the zipfile.
+ If there is no error, the return value is UNZ_OK.
+ */
+
+-extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
++extern int ZEXPORT unzCloseCurrentFile _Z_OF((unzFile file));
+ /*
+ Close the file in zip opened with unzOpenCurrentFile
+ Return UNZ_CRCERROR if all the file was read but the CRC is not good
+ */
+
+
+-extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
++extern int ZEXPORT unzReadCurrentFile _Z_OF((unzFile file,
+ voidp buf,
+ unsigned len));
+ /*
+@@ -242,17 +242,17 @@
+ (UNZ_ERRNO for IO error, or zLib error for uncompress error)
+ */
+
+-extern z_off_t ZEXPORT unztell OF((unzFile file));
++extern z_off_t ZEXPORT unztell _Z_OF((unzFile file));
+ /*
+ Give the current position in uncompressed data
+ */
+
+-extern int ZEXPORT unzeof OF((unzFile file));
++extern int ZEXPORT unzeof _Z_OF((unzFile file));
+ /*
+ return 1 if the end of file was reached, 0 elsewhere
+ */
+
+-extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
++extern int ZEXPORT unzGetLocalExtrafield _Z_OF((unzFile file,
+ voidp buf,
+ unsigned len));
+ /*
diff --git a/games-rpg/xu4/metadata.xml b/games-rpg/xu4/metadata.xml
new file mode 100644
index 000000000000..2d86c15ce51e
--- /dev/null
+++ b/games-rpg/xu4/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>games</herd>
+ <upstream>
+ <remote-id type="sourceforge">xu4</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-rpg/xu4/xu4-0.9.ebuild b/games-rpg/xu4/xu4-0.9.ebuild
new file mode 100644
index 000000000000..9e8be7050a63
--- /dev/null
+++ b/games-rpg/xu4/xu4-0.9.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils games
+
+DESCRIPTION="A remake of the computer game Ultima IV"
+HOMEPAGE="http://xu4.sourceforge.net/"
+SRC_URI="mirror://sourceforge/xu4/${P}.tar.gz
+ mirror://sourceforge/xu4/ultima4-1.01.zip
+ mirror://sourceforge/xu4/u4upgrad.zip"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ppc x86"
+IUSE=""
+
+RDEPEND="dev-libs/libxml2
+ media-libs/sdl-mixer[timidity]
+ media-libs/libsdl[sound,video]"
+DEPEND="${RDEPEND}
+ app-arch/unzip"
+
+S=${WORKDIR}/u4
+
+src_unpack() {
+ # xu4 will read the data files right out of the zip files
+ # but we want the docs from the original.
+ unpack ${P}.tar.gz
+ cp "${DISTDIR}"/{ultima4-1.01.zip,u4upgrad.zip} . || die
+ cd "${WORKDIR}"
+ mv ultima4-1.01.zip ultima4.zip
+ mkdir u4-dos
+ cd u4-dos
+ unzip -q ../ultima4.zip || die
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/${PV}-savegame.patch" \
+ "${FILESDIR}"/${P}-ldflags.patch \
+ "${FILESDIR}"/${P}-zip.patch \
+ "${FILESDIR}"/${P}-warnings.patch
+ sed -i \
+ -e "s:/usr/local/lib/u4:$(games_get_libdir)/u4:" src/u4file.c \
+ || die
+ sed -i \
+ -e 's:-Wall:$(E_CFLAGS):' src/Makefile \
+ || die
+}
+
+src_compile() {
+ emake -C src \
+ DEBUGCFLAGS= \
+ E_CFLAGS="${CFLAGS}" \
+ bindir="${GAMES_BINDIR}" \
+ datadir="/usr/share" \
+ libdir="$(games_get_libdir)"
+}
+
+src_install() {
+ emake -C src \
+ DEBUGCFLAGS= \
+ E_CFLAGS="${CFLAGS}" \
+ bindir="${D}${GAMES_BINDIR}" \
+ datadir="${D}/usr/share" \
+ libdir="${D}$(games_get_libdir)" \
+ install
+ dodoc AUTHORS README doc/*txt "${WORKDIR}/u4-dos/ULTIMA4/"*TXT
+ insinto "$(games_get_libdir)/u4"
+ doins "${WORKDIR}/"*zip
+ prepgamesdirs
+}