diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 21:03:06 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 21:03:06 +0100 |
commit | 8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch) | |
tree | 7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /games-roguelike/nethack | |
parent | 30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff) |
gentoo resync : 14.07.2018
Diffstat (limited to 'games-roguelike/nethack')
-rw-r--r-- | games-roguelike/nethack/Manifest | 8 | ||||
-rw-r--r-- | games-roguelike/nethack/files/nethack-3.6.0-hint-tty | 19 | ||||
-rw-r--r-- | games-roguelike/nethack/files/nethack-3.6.0-hint-x11 | 23 | ||||
-rw-r--r-- | games-roguelike/nethack/files/nethack-3.6.0-nethackrc | 103 | ||||
-rw-r--r-- | games-roguelike/nethack/files/nethack-3.6.0-recover.patch | 110 | ||||
-rw-r--r-- | games-roguelike/nethack/files/nethack-3.6.0-x11-color.patch | 186 | ||||
-rw-r--r-- | games-roguelike/nethack/metadata.xml | 18 | ||||
-rw-r--r-- | games-roguelike/nethack/nethack-3.6.0-r3.ebuild | 143 |
8 files changed, 610 insertions, 0 deletions
diff --git a/games-roguelike/nethack/Manifest b/games-roguelike/nethack/Manifest new file mode 100644 index 000000000000..b9e46217d4d6 --- /dev/null +++ b/games-roguelike/nethack/Manifest @@ -0,0 +1,8 @@ +AUX nethack-3.6.0-hint-tty 258 BLAKE2B f8a00f5a238bb9a1a5a7f94c3a9ef71c7fed0b3e17c7ae09b0ea9922963f66579bea155c83fa881a48c9086c001e5219d1e6d77f2d81b1d298f3802e855d293d SHA512 112769bd68cb65f26604c084a0820eb9ab006a84f3bc754d43122d084b731746238b23beadff0bbd0dcaf39bfe009d466d3d355aeee7ad53939dc1974fe54531 +AUX nethack-3.6.0-hint-x11 412 BLAKE2B 466e716dc691dd99624196addf2d14a4ee7296d55f83093b17a9603f986b7b2ecfebdcda24db6c8d800245ac0175df34a5a6a185c767ffc8b2e1bb5eea39ecfb SHA512 7046791f17f5abc066b378af69f49d045f7533f794337e238400b98b5b5e6b518bb89d86dfe14828b54d0744d5cdd2ff5435fa7f1cacad92f3dd7caf643243ed +AUX nethack-3.6.0-nethackrc 2458 BLAKE2B a051f476ffed8fb1598c65f243df3aa412a4bb35e904ba1d38059313491e3c36eb87c72a985a2b391760c0be72cd064cd4fef37a393c4dab9baa152b54e92c21 SHA512 9aae0d8ea3352b6335339fe91f5e52eb597f82e8fe50e0a52270e918123a02629610dda173419f6fc6e8f1e68358364bc5d8450e185b64c96d790790b68dddb9 +AUX nethack-3.6.0-recover.patch 3238 BLAKE2B 648e7ab4210efd8465477e6e576f9f0b972743c7ce1dd651661fe1b0e88fc774d613acb97941a7acdf2becd6bd2055c84f3eb2bb5c94e0eb8522b761fbf38831 SHA512 613b33757c1dabf897da77b53a26eb57318387462ff4d34f06411b2aef06d812c730db0ec4fb15b2895266bd914bd8ac11fa91334430834541b8d465c2a484ec +AUX nethack-3.6.0-x11-color.patch 6828 BLAKE2B 4e8f502b8180e042fed9e829d7bdd3c8a89aa679929aa22e209ae85a9e94ed25c6463b378ae1f9a1649bace9020b638279805f2ac2b846b7434fefc2187514b4 SHA512 074fb2db8962f918f605404d2810bc78c27ea461255bc6ad26ad24bbe65346b27868d9558a9486b334be29bbcc6896a95fafa2e4446045f316201754ea4bdab8 +DIST nethack-360-src.tgz 4261282 BLAKE2B 7be22b8bdc7b5124418fa904aa3776d77440f67ec18782b878e037b989a18092ed88ca192224c7bc1eaa3cb438823188035c3e6d2aa85d13a7aa1e86c8527d32 SHA512 92370a3c60a4f6861b9c0f1e1320fc23d91cedc1615d0d09e06a0ee3e13c9c8c0cd931389bfd7a25845ed07ef966d19d9e46e77ae07084a941685dc67f49c813 +EBUILD nethack-3.6.0-r3.ebuild 3998 BLAKE2B b6bb7165f57fa23fd7414bdd077abb65dfbab6d57c2e740c2b80c697a1bd957bd94347a35f5195e13633c6995866e2c62a9d8955de8569d6d07769d9381d052e SHA512 6d9baf22fa180eafb53460e21353be11ae45964a81a608f930052dafd93481dca9bf8002da65c4b84a191d2ad6dc4387e2363693694cc68f1d28a3ec9f09e152 +MISC metadata.xml 545 BLAKE2B a29d97fd41c3cce54fa206a2be25296be467499011ed128ed20ed9dcb99efe9fd429fd816fccd07805065831c348ee6479c93ad1e0bba2f98c5b6b50b738ee73 SHA512 30c9a569c25853311dd579749d4193f8a1a45c5a5dd0e7899c2b3c63a39718c0ff8a4633620fdcbb3964e714b62718bfd4089c7438e5707f24457b6ace4dc783 diff --git a/games-roguelike/nethack/files/nethack-3.6.0-hint-tty b/games-roguelike/nethack/files/nethack-3.6.0-hint-tty new file mode 100644 index 000000000000..3c250e7e719c --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.0-hint-tty @@ -0,0 +1,19 @@ +#-PRE + +LINK=$(CC) + +WINSRC = $(WINTTYSRC) +WINOBJ = $(WINTTYOBJ) +WINLIB = $(WINTTYLIB) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license $(DATHELP) diff --git a/games-roguelike/nethack/files/nethack-3.6.0-hint-x11 b/games-roguelike/nethack/files/nethack-3.6.0-hint-x11 new file mode 100644 index 000000000000..d0d1a8d4cd42 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.0-hint-x11 @@ -0,0 +1,23 @@ +#-PRE + +LINK=$(CC) + +VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm + +WINSRC = $(WINTTYSRC) $(WINX11SRC) +WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) +WINLIB = $(WINTTYLIB) $(WINX11LIB) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license $(DATHELP) + +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm diff --git a/games-roguelike/nethack/files/nethack-3.6.0-nethackrc b/games-roguelike/nethack/files/nethack-3.6.0-nethackrc new file mode 100644 index 000000000000..33c98064341f --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.0-nethackrc @@ -0,0 +1,103 @@ +## This is an example nethackrc file (courtesy of nethack.alt.org). +## +## You should edit it to suit your needs. +## Please read the Guidebook in /usr/share/doc/nethack or at www.nethack.org. +## +## Options which are enabled by default (like autoopen) can be disabled +## by prefixing them with a ! + +## If USE=X is enabled, this can be changed to x11 +#OPTIONS=windowtype:tty + +## Custom fruit and pet names +#OPTIONS=fruit:mango +#OPTIONS=dogname:Izchak +#OPTIONS=catname:Chun-Li +#OPTIONS=horsename:Marlon + +## Colored output +#OPTIONS=color + +## Automatically dig if you are wielding a digging tool and moving +## into a place that can be dug +#OPTIONS=autodig + +## Walking into a door attempts to open it +#OPTIONS=autoopen + +## Automatically pick up stuff +#OPTIONS=autopickup + +## Only use autopickup for these item types +#OPTIONS=pickup_types:$!?/"= + +## Allow saving and loading bones files. +#OPTIONS=bones + +## Show out-of-sight areas of lit rooms +#OPTIONS=dark_room + +## Use inverse for pets +#OPTIONS=hilite_pet + +## Use inverse for piles of items +#OPTIONS=hilite_pile + +## Show experience +#OPTIONS=showexp + +## Show elapsed game time (in turns) +#OPTIONS=time + +## How recalled messages (ctrl-p) are displayed. +#OPTIONS=msg_window:reversed + +## use IBMgraphics or DECgraphics +#OPTIONS=symset:DECgraphics +#OPTIONS=symset:IBMgraphics + +## If you don't like some default glyphs, these can be changed +#SYMBOLS=S_boulder:0 +#SYMBOLS=S_lava:~ +#SYMBOLS=S_pool:~ +#SYMBOLS=S_water:~ +#SYMBOLS=S_ghost:8 +#SYMBOLS=S_golem:7 + +## Sort items by name. One of "none", "loot", or "full" +#OPTIONS=sortloot:full + +## Require explicit yes for some prompts +#OPTIONS=paranoid_confirmation:Confirm quit attack pray wand Remove + +## Conducts +#OPTIONS=nudist +#OPTIONS=blind + + +## Colored menus. Regular expressions allowed. +#OPTIONS=menucolors +#MENUCOLOR=" blessed "=green +#MENUCOLOR=" holy "=green +#MENUCOLOR=" cursed "=red +#MENUCOLOR=" unholy "=red +#MENUCOLOR=" cursed .* (being worn)"=orange&underline + + +## Messagetypes + +## displacing pets. hide the message. +#MSGTYPE=hide "You swap places with your .*" + +## items on floor. don't repeat the message. +#MSGTYPE=norep "You see here a .*" +#MSGTYPE=norep "You see here an .*" + +## delayed instadeaths. always prompt for -more- +#MSGTYPE=stop "You are slowing down." +#MSGTYPE=stop "You find it hard to breathe." +#MSGTYPE=stop "You are turning a little .*" + +## moving up or down stairs +#MSGTYPE=hide "You descend .*" +#MSGTYPE=hide "You (climb|fly) (up|down) .*" diff --git a/games-roguelike/nethack/files/nethack-3.6.0-recover.patch b/games-roguelike/nethack/files/nethack-3.6.0-recover.patch new file mode 100644 index 000000000000..c7e8ab3dca08 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.0-recover.patch @@ -0,0 +1,110 @@ +From c15cf56e61c908ce756d698a8afa3064030761b3 Mon Sep 17 00:00:00 2001 +From: Luis Ressel <aranea@aixah.de> +Date: Fri, 18 Dec 2015 23:16:56 +0100 +Subject: [PATCH] doc: Rename recover to recover-nethack + +--- + doc/recover.6 | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +diff --git a/doc/recover.6 b/doc/recover.6 +index 4c9f509..edd05e3 100644 +--- a/doc/recover.6 ++++ b/doc/recover.6 +@@ -1,10 +1,10 @@ +-.TH RECOVER 6 "9 January 1993" ++.TH RECOVER-NETHACK 6 "9 January 1993" + .\" NetHack 3.6 recover.6 $NHDT-Date: 1432512786 2015/05/25 00:13:06 $ $NHDT-Branch: master $:$NHDT-Revision: 1.6 $ + .UC 4 + .SH NAME +-recover \- recover a NetHack game interrupted by disaster ++recover-nethack \- recover a NetHack game interrupted by disaster + .SH SYNOPSIS +-.B recover ++.B recover-nethack + [ + .B \-d + .I directory +@@ -22,7 +22,7 @@ so such games can be recovered at the point of the last level change. + The + .I base + options tell +-.I recover ++.I recover-nethack + which files to process. + Each base option specifies recovery of a separate game. + .PP +@@ -72,47 +72,47 @@ by a user number to avoid conflicts, + or "xlock" if the number of concurrent players is being limited. + It may be necessary to look in the playground to find the correct + base name of the interrupted game. +-.I recover ++.I recover-nethack + will transform these level files into a save file of the same name as + .I nethack + would have used. + .PP + Since +-.I recover ++.I recover-nethack + must be able to read and delete files from the playground + and create files in the save directory, + it has interesting interactions with game security. + Giving ordinary players access to +-.I recover ++.I recover-nethack + through setuid or setgid is tantamount to leaving the playground + world-writable, + with respect to both cheating and messing up other players. + For a single-user system, this of course does not change anything, + so some of the microcomputer ports install +-.I recover ++.I recover-nethack + by default. + .PP + For a multi-user system, + the game administrator may want to arrange for all .0 files in the +-playground to be fed to recover when the host machine boots, ++playground to be fed to recover-nethack when the host machine boots, + and handle game crashes individually. + If the user population is sufficiently trustworthy, +-.I recover ++.I recover-nethack + can be installed with the same permissions the + .I nethack + executable has. + In either case, +-.I recover ++.I recover-nethack + is easily compiled from the distribution utility directory. + .SH NOTES + .PP + Like + .I nethack + itself, +-.I recover ++.I recover-nethack + will overwrite existing savefiles of the same name. + Savefiles created by +-.I recover ++.I recover-nethack + are uncompressed; + they may be compressed afterwards if desired, + but even a compression-using +@@ -122,11 +122,11 @@ will find them in the uncompressed form. + nethack(6) + .SH BUGS + .PP +-.I recover ++.I recover-nethack + makes no attempt to find out if a base name specifies a game in progress. + If multiple machines share a playground, this would be impossible to + determine. + .PP +-.I recover ++.I recover-nethack + should be taught to use the nethack playground locking mechanism to + avoid conflicts. +-- +2.6.4 + diff --git a/games-roguelike/nethack/files/nethack-3.6.0-x11-color.patch b/games-roguelike/nethack/files/nethack-3.6.0-x11-color.patch new file mode 100644 index 000000000000..d34ca029d51a --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.0-x11-color.patch @@ -0,0 +1,186 @@ +From f92bf2b495450d323e157eb41130c79a3d369239 Mon Sep 17 00:00:00 2001 +From: PatR <rankin@nethack.org> +Date: Mon, 8 Feb 2016 19:01:26 -0800 +Subject: [PATCH] fix #H4237 - color ignored for X11 text map + +Color was only being tracked for locations that had the pile of +objects flag set. And hilite_pile made a monster on a pile take +on the color of the top object of the pile. + +This restores the tracking of color for the whole map, and makes +highlighted piles be drawn in inverse like highligted pets. The +drawing routine doesn't know the difference (but could tell, if +necessary, by testing whether the glyph is an object or a monster). + +Also, variables 'inbuf', 'inptr', and 'incount' were global; limit +their scope to winmap.c. +--- + win/X11/winmap.c | 68 +++++++++++++++++++++++++++----------------------------- + 1 file changed, 33 insertions(+), 35 deletions(-) + +diff --git a/win/X11/winmap.c b/win/X11/winmap.c +index 93f5dd6..523e13d 100644 +--- a/win/X11/winmap.c ++++ b/win/X11/winmap.c +@@ -102,6 +102,7 @@ int bkglyph UNUSED; + int color, och; + unsigned special; + #ifdef TEXTCOLOR ++ int colordif; + register unsigned char *co_ptr; + #endif + +@@ -116,24 +117,22 @@ int bkglyph UNUSED; + + /* Only update if we need to. */ + ch_ptr = &map_info->text_map.text[y][x]; +- +-#ifdef TEXTCOLOR +- co_ptr = &map_info->text_map.colors[y][x]; +- if (*ch_ptr != ch || *co_ptr != color) +-#else +- if (*ch_ptr != ch) +-#endif +- { ++ if (*ch_ptr != ch) { + *ch_ptr = ch; ++ if (!map_info->is_tile) ++ update_bbox = TRUE; ++ } + #ifdef TEXTCOLOR +- if ((special & MG_PET) && iflags.hilite_pet) +- color += CLR_MAX; +- if ((special & MG_OBJPILE) && iflags.hilite_pile) +- *co_ptr = color; +-#endif ++ co_ptr = &map_info->text_map.colors[y][x]; ++ colordif = (((special & MG_PET) && iflags.hilite_pet) ++ || ((special & MG_OBJPILE) && iflags.hilite_pile)) ++ ? CLR_MAX : 0; ++ if (*co_ptr != (uchar) (color + colordif)) { ++ *co_ptr = (uchar) (color + colordif); + if (!map_info->is_tile) + update_bbox = TRUE; + } ++#endif + } + + if (update_bbox) { /* update row bbox */ +@@ -844,7 +843,8 @@ Font font; + set_color_gc(CLR_BRIGHT_CYAN, XtNbright_cyan); + set_color_gc(CLR_WHITE, XtNwhite); + #else +- set_gc(wp->w, font, XtNforeground, bgpixel, &map_info->text_map.copy_gc, ++ set_gc(wp->w, font, XtNforeground, bgpixel, ++ &map_info->text_map.copy_gc, + &map_info->text_map.inv_copy_gc); + #endif + } +@@ -943,17 +943,17 @@ struct xwindow *wp; + + map_all_stone(map_info); + (void) memset((genericptr_t) map_info->text_map.text, ' ', +- sizeof(map_info->text_map.text)); ++ sizeof map_info->text_map.text); + #ifdef TEXTCOLOR + (void) memset((genericptr_t) map_info->text_map.colors, NO_COLOR, +- sizeof(map_info->text_map.colors)); ++ sizeof map_info->text_map.colors); + #endif + + /* force a full update */ + (void) memset((genericptr_t) map_info->t_start, (char) 0, +- sizeof(map_info->t_start)); ++ sizeof map_info->t_start); + (void) memset((genericptr_t) map_info->t_stop, (char) COLNO - 1, +- sizeof(map_info->t_stop)); ++ sizeof map_info->t_stop); + display_map_window(wp); + } + +@@ -978,8 +978,8 @@ struct xwindow *wp; + #ifdef VERBOSE + printf("Font information:\n"); + printf("fid = %ld, direction = %d\n", fs->fid, fs->direction); +- printf("first = %d, last = %d\n", fs->min_char_or_byte2, +- fs->max_char_or_byte2); ++ printf("first = %d, last = %d\n", ++ fs->min_char_or_byte2, fs->max_char_or_byte2); + printf("all chars exist? %s\n", fs->all_chars_exist ? "yes" : "no"); + printf("min_bounds:lb=%d rb=%d width=%d asc=%d des=%d attr=%d\n", + fs->min_bounds.lbearing, fs->min_bounds.rbearing, +@@ -990,8 +990,8 @@ struct xwindow *wp; + fs->max_bounds.width, fs->max_bounds.ascent, + fs->max_bounds.descent, fs->max_bounds.attributes); + printf("per_char = 0x%lx\n", (unsigned long) fs->per_char); +- printf("Text: (max) width = %d, height = %d\n", text_map->square_width, +- text_map->square_height); ++ printf("Text: (max) width = %d, height = %d\n", ++ text_map->square_width, text_map->square_height); + #endif + + if (fs->min_bounds.width != fs->max_bounds.width) +@@ -1002,9 +1002,9 @@ struct xwindow *wp; + * keyhit buffer + */ + #define INBUF_SIZE 64 +-int inbuf[INBUF_SIZE]; +-int incount = 0; +-int inptr = 0; /* points to valid data */ ++static int inbuf[INBUF_SIZE]; ++static int incount = 0; ++static int inptr = 0; /* points to valid data */ + + /* + * Keyboard and button event handler for map window. +@@ -1249,8 +1249,8 @@ boolean inverted; + } + + #ifdef VERBOSE_UPDATE +- printf("update: [0x%x] %d %d %d %d\n", (int) wp->w, start_row, stop_row, +- start_col, stop_col); ++ printf("update: [0x%x] %d %d %d %d\n", ++ (int) wp->w, start_row, stop_row, start_col, stop_col); + #endif + win_start_row = start_row; + win_start_col = start_col; +@@ -1273,8 +1273,8 @@ boolean inverted; + src_y = (tile / TILES_PER_ROW) * tile_height; + XCopyArea(dpy, tile_pixmap, XtWindow(wp->w), + tile_map->black_gc, /* no grapics_expose */ +- src_x, src_y, tile_width, tile_height, dest_x, +- dest_y); ++ src_x, src_y, tile_width, tile_height, ++ dest_x, dest_y); + + if (glyph_is_pet(glyph) && iflags.hilite_pet) { + /* draw pet annotation (a heart) */ +@@ -1412,10 +1412,8 @@ Dimension cols, rows; + } + + num_args = 0; +- XtSetArg(args[num_args], XtNwidth, wp->pixel_width); +- num_args++; +- XtSetArg(args[num_args], XtNheight, wp->pixel_height); +- num_args++; ++ XtSetArg(args[num_args], XtNwidth, wp->pixel_width); num_args++; ++ XtSetArg(args[num_args], XtNheight, wp->pixel_height); num_args++; + XtSetValues(wp->w, args, num_args); + } + +@@ -1426,10 +1424,10 @@ struct xwindow *wp; + struct map_info_t *map_info = wp->map_information; + struct text_map_info_t *text_map = &map_info->text_map; + +- (void) memset((genericptr_t) text_map->text, ' ', sizeof(text_map->text)); ++ (void) memset((genericptr_t) text_map->text, ' ', sizeof text_map->text); + #ifdef TEXTCOLOR + (void) memset((genericptr_t) text_map->colors, NO_COLOR, +- sizeof(text_map->colors)); ++ sizeof text_map->colors); + #endif + + get_char_info(wp); +-- +2.7.1 + diff --git a/games-roguelike/nethack/metadata.xml b/games-roguelike/nethack/metadata.xml new file mode 100644 index 000000000000..b4c23c3cf2d8 --- /dev/null +++ b/games-roguelike/nethack/metadata.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>aranea@aixah.de</email> + <name>Luis Ressel</name> + </maintainer> + <maintainer type="project"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <upstream> + <remote-id type="sourceforge">nethack</remote-id> + </upstream> + <use> + <flag name="experimental">Enable experimental features (showscore and status_hilite)</flag> + </use> +</pkgmetadata> diff --git a/games-roguelike/nethack/nethack-3.6.0-r3.ebuild b/games-roguelike/nethack/nethack-3.6.0-r3.ebuild new file mode 100644 index 000000000000..fa9302932cb1 --- /dev/null +++ b/games-roguelike/nethack/nethack-3.6.0-r3.ebuild @@ -0,0 +1,143 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit eutils toolchain-funcs flag-o-matic user + +MY_PV=${PV//.} +DESCRIPTION="The ultimate old-school single player dungeon exploration game" +HOMEPAGE="https://www.nethack.org/" +SRC_URI="mirror://sourceforge/nethack/${PN}-${MY_PV}-src.tgz" + +LICENSE="nethack" +SLOT="0" +KEYWORDS="~amd64 ~arm ~hppa ~x86 ~x86-fbsd" +IUSE="experimental X" + +RDEPEND="sys-libs/ncurses:0= + X? ( + x11-libs/libXaw + x11-libs/libXpm + x11-libs/libXt + )" +DEPEND="${RDEPEND} + virtual/pkgconfig + X? ( + x11-base/xorg-proto + x11-apps/bdftopcf + x11-apps/mkfontdir + )" + +BINDIR="/usr/bin" +STATEDIR="/var/games/${PN}" + +NETHACK_GROUP="gamestat" + +pkg_setup() { + HACKDIR="/usr/$(get_libdir)/${PN}" + + enewgroup gamestat 36 +} + +src_prepare() { + eapply "${FILESDIR}/${P}-recover.patch" + eapply "${FILESDIR}/${P}-x11-color.patch" + eapply_user + + cp "${FILESDIR}/${P}-hint-$(usex X x11 tty)" hint || die "Failed to copy hint file" + sys/unix/setup.sh hint || die "Failed to run setup.sh" +} + +src_compile() { + append-cflags -I../include -DDLB -DSECURE -DLINUX -DTIMED_DELAY -DVISION_TABLES + append-cflags '-DCOMPRESS=\"/bin/gzip\"' '-DCOMPRESS_EXTENSION=\".gz\"' + append-cflags "-DHACKDIR=\\\"${HACKDIR}\\\"" "-DVAR_PLAYGROUND=\\\"${STATEDIR}\\\"" + append-cflags "-DDEF_PAGER=\\\"${PAGER}\\\"" + append-cflags -DSYSCF "-DSYSCF_FILE=\\\"/etc/nethack.sysconf\\\"" + + use X && append-cflags -DX11_GRAPHICS -DUSE_XPM + use experimental && + append-cflags -DSTATUS_VIA_WINDOWPORT -DSTATUS_HILITES -DSCORE_ON_BOTL + + makeopts=( + CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" + WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" + HACKDIR="${HACKDIR}" INSTDIR="${D}/${HACKDIR}" + SHELLDIR="${D}/${BINDIR}" VARDIR="${D}/${STATEDIR}" + ) + + emake "${makeopts[@]}" nethack recover Guidebook spec_levs + + # Upstream still has some parallel compilation bugs + emake -j1 "${makeopts[@]}" all +} + +src_install() { + emake "${makeopts[@]}" install + + exeinto "${BINDIR}" + newexe util/recover recover-nethack + rm "${D}/${HACKDIR}/recover" || die "Failed to remove HACKDIR/recover" + + doman doc/nethack.6 + newman doc/recover.6 recover-nethack.6 + dodoc doc/Guidebook.txt + + insinto /etc + newins sys/unix/sysconf nethack.sysconf + + insinto /etc/skel + newins "${FILESDIR}/${P}-nethackrc" .nethackrc + + if use X ; then + cd "${S}/win/X11" || die "Failed to enter win/X11 directory" + + # copy nethack x application defaults + insinto /etc/X11/app-defaults + newins NetHack.ad NetHack + rm "${D}/${HACKDIR}/NetHack.ad" || die "Failed to remove NetHack.ad" + + newicon nh_icon.xpm nethack.xpm + make_desktop_entry ${PN} Nethack + + # install nethack fonts + bdftopcf -o nh10.pcf nh10.bdf || die "Converting fonts failed" + bdftopcf -o ibm.pcf ibm.bdf || die "Converting fonts failed" + insinto "${HACKDIR}/fonts" + doins *.pcf + cd "${D}/${HACKDIR}/fonts" || die "Failed to enter fonts directory" + mkfontdir || die "The action mkfontdir ${HACKDIR}/fonts failed" + fi + + rm -r "${D}/${STATEDIR}" || die "Failed to clean STATEDIR" + keepdir "${STATEDIR}/save" + + fowners -R "root:${NETHACK_GROUP}" "${STATEDIR}" + fperms 770 "${STATEDIR}" "${STATEDIR}/save" + + fowners "root:${NETHACK_GROUP}" "${HACKDIR}/nethack" + fperms g+s "${HACKDIR}/nethack" +} + +pkg_postinst() { + cd "${ROOT}/${STATEDIR}" || die "Failed to enter ${STATEDIR} directory" + + touch logfile perm record xlogfile || die "Failed to create log files" + + chown -R root:"${NETHACK_GROUP}" . && + chmod -R 660 . && + chmod 770 . save || + die "Adjustment of file permissions in ${ROOT}/${STATEDIR} failed" + + touch -c bones* save/* # non-critical + + elog "A minimal default .nethackrc has been placed in /etc/skel/" + elog "The sysconf file is at /etc/nethack.sysconf" + + if has_version "<${CATEGORY}/${PN}-3.6.0" ; then + elog + elog "Nethack 3.6 includes many new features." + elog "You might want to review your options and local patchset." + elog "Have a look at http://www.nethack.org/v360/release.html" + fi +} |