From b728e078408f17136e8a4c3344b606e8f152b9e4 Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Tue, 31 May 2016 17:42:28 -0400 Subject: [PATCH] gnu: Add nethack. * gnu/packages/games.scm (nethack): New variable. --- gnu/packages/games.scm | 98 ++++++++++++++++++++++ ...thack-correct-directories-and-permissions.patch | 72 ++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 gnu/packages/patches/nethack-correct-directories-and-permissions.patch diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index fc16862..44afb87 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -49,10 +49,12 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages backup) #:use-module (gnu packages base) + #:use-module (gnu packages bison) #:use-module (gnu packages admin) #:use-module (gnu packages audio) #:use-module (gnu packages avahi) #:use-module (gnu packages boost) + #:use-module (gnu packages flex) #:use-module (gnu packages fribidi) #:use-module (gnu packages game-development) #:use-module (gnu packages gettext) @@ -2243,3 +2245,99 @@ Red Eclipse provides fast paced and accessible gameplay.") license:cc-by-sa3.0 license:cc-by3.0 license:cc0))))) + +(define-public nethack + (package + (name "nethack") + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/" name "/" name "-" + (string-join (string-split version #\.) "") + "-src.tgz")) + (sha256 + (base32 + "12mi5kgqw3q029y57pkg3gnp930p7yvlqi118xxdif2qhj6nkphs")) + (patches + (search-patches + "nethack-correct-directories-and-permissions.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "sys/unix/hints/linux" + (("^PREFIX=.*$") + (string-append "PREFIX=" out "\n")) + (("/bin/gzip") (which "gzip"))) + (substitute* "sys/unix/setup.sh" + (("/bin/sh") (which "bash")))) + (system* "sh" "sys/unix/setup.sh" "sys/unix/hints/linux"))) + (add-after 'install 'move-state-files + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (mkdir (string-append out "/games/lib/nethack-state-files")) + (chdir (string-append out "/games/lib/nethackdir")) + (for-each (lambda (file) + (system* "mv" file + (string-append + out "/games/lib/nethack-state-files"))) + '("logfile" "perm" "record" "save" "xlogfile"))))) + (add-after 'move-state-files 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (nethack-user-dir "~/.nethack")) + (mkdir bin) + (with-directory-excursion bin + (call-with-output-file "nethack" + (lambda (port) + (format port "#!~a/bin/sh -e +# Create NetHack directory in user's $HOME if it isn't there +if [ ! -d ~a ]; then + mkdir -p ~a + cp -r ~a/* ~a + chmod -R +w ~a +fi + +RUNDIR=$(mktemp -d) + +cleanup() { + rm -rf $RUNDIR +} +trap cleanup EXIT + +cd $RUNDIR +for i in ~a/*; do + ln -s $i $(basename $i) +done +for i in ~a/*; do + ln -s $i $(basename $i) +done +./nethack~%" + (assoc-ref inputs "bash") ;implicit input + (string-append nethack-user-dir) + (string-append nethack-user-dir) + (string-append + out "/games/lib/nethack-state-files") + (string-append nethack-user-dir) + (string-append nethack-user-dir) + (string-append nethack-user-dir) + (string-append out "/games/lib/nethackdir") + (string-append out)))) + (chmod "nethack" #o555))) + #t))))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex))) + (inputs `(("ncurses" ,ncurses))) + (home-page "http://nethack.org") + (synopsis "Single player dungeon exploration game") + (description + "Nethack is a roguelike game that emphasizes discovery of details in the +dungeon. The random number generator provides an unlimited number of +variations of the dungeon.") + (license (license:fsf-free "http://nethack.org/common/license.html")))) diff --git a/gnu/packages/patches/nethack-correct-directories-and-permissions.patch b/gnu/packages/patches/nethack-correct-directories-and-permissions.patch new file mode 100644 index 0000000..6f6d436 --- /dev/null +++ b/gnu/packages/patches/nethack-correct-directories-and-permissions.patch @@ -0,0 +1,72 @@ +diff -r -u nethack-3.6.0.orig/include/config.h nethack-3.6.0/include/config.h +--- nethack-3.6.0.orig/include/config.h 2016-05-27 17:20:03.062318307 -0400 ++++ nethack-3.6.0/include/config.h 2016-05-31 16:48:04.283642766 -0400 +@@ -308,7 +308,6 @@ + #define INSURANCE /* allow crashed game recovery */ + + #ifndef MAC +-#define CHDIR /* delete if no chdir() available */ + #endif + + #ifdef CHDIR +diff -r -u nethack-3.6.0.orig/include/unixconf.h nethack-3.6.0/include/unixconf.h +--- nethack-3.6.0.orig/include/unixconf.h 2016-05-27 17:20:03.062318307 -0400 ++++ nethack-3.6.0/include/unixconf.h 2016-05-30 20:33:52.132273630 -0400 +@@ -36,7 +36,7 @@ + #define NETWORK /* if running on a networked system */ + /* e.g. Suns sharing a playground through NFS */ + /* #define SUNOS4 */ /* SunOS 4.x */ +-/* #define LINUX */ /* Another Unix clone */ ++#define LINUX /* Another Unix clone */ + /* #define CYGWIN32 */ /* Unix on Win32 -- use with case sensitive defines */ + /* #define GENIX */ /* Yet Another Unix Clone */ + /* #define HISX */ /* Bull Unix for XPS Machines */ +diff -r -u nethack-3.6.0.orig/sys/unix/Makefile.src nethack-3.6.0/sys/unix/Makefile.src +--- nethack-3.6.0.orig/sys/unix/Makefile.src 2016-05-27 17:20:03.082318966 -0400 ++++ nethack-3.6.0/sys/unix/Makefile.src 2016-05-27 17:42:47.183397931 -0400 +@@ -64,7 +64,7 @@ + # if you get setcgtty() warnings during execution, you are feeding gcc + # a non-ANSI -- either run fixincludes on it or use + # -traditional in CFLAGS +-# CC = gcc ++CC = gcc + # + # For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following: + # +@@ -238,7 +238,7 @@ + # WINTTYLIB = -ltermcap + # WINTTYLIB = -lcurses + # WINTTYLIB = -lcurses16 +-# WINTTYLIB = -lncurses ++WINTTYLIB = -lncurses + #WINTTYLIB = -ltermlib + # + # libraries for X11 +diff -r -u nethack-3.6.0.orig/sys/unix/Makefile.utl nethack-3.6.0/sys/unix/Makefile.utl +--- nethack-3.6.0.orig/sys/unix/Makefile.utl 2016-05-27 17:20:03.082318966 -0400 ++++ nethack-3.6.0/sys/unix/Makefile.utl 2016-05-27 20:01:54.605040799 -0400 +@@ -18,7 +18,7 @@ + + # if you are using gcc as your compiler, + # uncomment the CC definition below if it's not in your environment +-# CC = gcc ++CC = gcc + # + # For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following: + # +@@ -104,11 +104,11 @@ + + # yacc/lex programs to use to generate *_comp.h, *_lex.c, and *_yacc.c. + # if, instead of yacc/lex you have bison/flex, comment/uncomment the following. +-YACC = yacc +-LEX = lex +-# YACC = bison -y ++# YACC = yacc ++# LEX = lex ++YACC = bison -y + # YACC = byacc +-# LEX = flex ++LEX = flex + + # these are the names of the output files from YACC/LEX. Under MS-DOS + # and similar systems, they may differ -- 2.7.4