diff options
author | Ian Delaney <idella4@gentoo.org> | 2016-02-13 11:53:12 +0800 |
---|---|---|
committer | Ian Delaney <idella4@gentoo.org> | 2016-02-13 11:53:12 +0800 |
commit | 806e6d053e9641a6242984ac95021c83c0938dd0 (patch) | |
tree | 1b746c896d03cd999a472b8461ea5486c1d8bec4 | |
parent | Merge remote-tracking branch 'remotes/Coacher/mpv-update-live' (diff) | |
parent | games-roguelike/nethack: Remove old ebuilds (diff) | |
download | gentoo-806e6d053e9641a6242984ac95021c83c0938dd0.tar.gz gentoo-806e6d053e9641a6242984ac95021c83c0938dd0.tar.bz2 gentoo-806e6d053e9641a6242984ac95021c83c0938dd0.zip |
Merge remote-tracking branch 'remotes/atlaua/aranea/nethack'
Pull request: https://github.com/gentoo/gentoo/pull/842
-rw-r--r-- | games-roguelike/nethack/files/nethack-3.6.0-x11-color.patch | 186 | ||||
-rw-r--r-- | games-roguelike/nethack/nethack-3.6.0-r1.ebuild | 164 | ||||
-rw-r--r-- | games-roguelike/nethack/nethack-3.6.0-r3.ebuild (renamed from games-roguelike/nethack/nethack-3.6.0-r2.ebuild) | 1 |
3 files changed, 187 insertions, 164 deletions
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/nethack-3.6.0-r1.ebuild b/games-roguelike/nethack/nethack-3.6.0-r1.ebuild deleted file mode 100644 index 01e66e84fa88..000000000000 --- a/games-roguelike/nethack/nethack-3.6.0-r1.ebuild +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI=5 -inherit eutils toolchain-funcs flag-o-matic user - -MY_PV=${PV//.} -DESCRIPTION="The ultimate old-school single player dungeon exploration game" -HOMEPAGE="http://www.nethack.org/" -SRC_URI="mirror://sourceforge/nethack/${PN}-${MY_PV}-src.tgz" - -LICENSE="nethack" -SLOT="0" -KEYWORDS="~amd64 ~hppa ~ppc ~sparc ~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-proto/xproto - 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() { - epatch "${FILESDIR}/${P}-recover.patch" - epatch_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_preinst() { - if has_version "<${CATEGORY}/${PN}-3.4.3-r3" ; then - migration=true - - # preserve STATEDIR/{logfile,record} - # (previous ebuild rev mistakenly removes it) - for f in "${ROOT}/${STATEDIR}/"{logfile,record} ; do - if [[ -e "$f" ]] ; then - cp "$f" "$T" || die "Failed to preserve ${ROOT}/${STATEDIR} files" - else - touch "$T/$f" || die "Failed to preserve ${ROOT}/${STATEDIR} files" - fi - done - fi -} - -pkg_postinst() { - cd "${ROOT}/${STATEDIR}" || die "Failed to enter ${STATEDIR} directory" - - if [[ -v migration ]] ; then - cp "$T/"{logfile,record} . || - die "Failed to preserve ${ROOT}/${STATEDIR} files" - fi - - 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 -} diff --git a/games-roguelike/nethack/nethack-3.6.0-r2.ebuild b/games-roguelike/nethack/nethack-3.6.0-r3.ebuild index 7f8d2befda1f..eb842037a43b 100644 --- a/games-roguelike/nethack/nethack-3.6.0-r2.ebuild +++ b/games-roguelike/nethack/nethack-3.6.0-r3.ebuild @@ -42,6 +42,7 @@ pkg_setup() { 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" |