unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add nethack.
@ 2016-05-31 21:56 Kei Kebreau
  2016-06-04 21:15 ` Ludovic Courtès
  0 siblings, 1 reply; 10+ messages in thread
From: Kei Kebreau @ 2016-05-31 21:56 UTC (permalink / raw)
  To: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 242 bytes --]

NetHack finally works, though I'd like others to review the
implementation. This is also my first time adding a .patch file to the
repository, so advice along those lines would be appreciated.

-- 
Kei (GPG Key: 4096R/E6A5EE3C19467A0D)

[-- Attachment #1.2: 0001-gnu-Add-nethack.patch --]
[-- Type: text/plain, Size: 8574 bytes --]

From b728e078408f17136e8a4c3344b606e8f152b9e4 Mon Sep 17 00:00:00 2001
From: Kei Kebreau <kei@openmailbox.org>
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 <sys/ioctl.h> -- 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


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-12-30 21:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-31 21:56 [PATCH] gnu: Add nethack Kei Kebreau
2016-06-04 21:15 ` Ludovic Courtès
2016-06-06 20:25   ` Kei Kebreau
2016-06-07 17:20     ` Leo Famulari
2016-06-08 12:59       ` Ludovic Courtès
2016-06-08 18:05         ` Kei Kebreau
2016-06-08 20:44           ` Leo Famulari
2016-06-09  1:17             ` Kei Kebreau
2016-12-30 21:30               ` Chris Marusich
2016-12-30 21:47                 ` Kei Kebreau

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).