Hi Benjamin, > gnu: Add frotz, frotz-dumb-terminal, frotz-sdl > > * gnu/packages/games.scm (frotz): New variable. > * gnu/packages/games.scm (frotz-dumb-terminal): New variable. > * gnu/packages/games.scm (frotz-sdl): New variable. > > diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm > index 728f76380..0ae2d0548 100644 > --- a/gnu/packages/games.scm > +++ b/gnu/packages/games.scm > @@ -34,6 +34,7 @@ > ;;; Copyright © 2018 okapi > ;;; Copyright © 2018 Tim Gesthuizen > ;;; Copyright © 2018 Madalin Ionel-Patrascu > +;;; Copyright © 2018 Benjamin Slade > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -5553,3 +5554,153 @@ open-source FPS of its kind.") > (license (list license:gpl2+ > license:bsd-3 ; /source/d0_blind_id folder and others > (license:x11-style "" "See file rcon.pl."))))) > + > +(define-public frotz > + (package > + (name "frotz") > + (version "2.44") > + (source (origin > + (method url-fetch) > + (uri (list (string-append > + "http://www.ifarchive.org/if-archive/infocom/interpreters/" > + name "/" name "-" version ".tar.gz") > + (string-append > + "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/" > + name "/" name "-" version ".tar.gz"))) > + (sha256 > + (base32 > + "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k")))) > + (build-system gnu-build-system) > + (arguments > + `(#:tests? #f ; there are no tests > + #:phases > + (modify-phases %standard-phases > + (delete 'configure) > + (add-before 'build 'curses > + (lambda _ > + (substitute* "Makefile" > + (("lcurses") "lncurses")))) The "curses" phase above can be considered a replacement for the configure phase. Also, be sure that the phase returns #t, as the "substitute*" procedure has an unspecified return value. > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (bin (string-append out "/bin")) > + (man (string-append out "/share/man/man6"))) > + (install-file "frotz" bin) > + (mkdir-p man) > + (install-file "doc/frotz.6" man) > + #t)))))) > + (inputs `(("libmodplug" ,libmodplug) > + ("libsamplerate" ,libsamplerate) > + ("libsndfile" ,libsndfile) > + ("libvorbis" ,libvorbis) > + ("ncurses" ,ncurses))) > + (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games") > + (description "Frotz is an interpreter for Infocom games and > +other Z-machine games in the text adventure/interactive fiction genre. This version > +of Frotz complies with standard 1.0 of Graham Nelson's specification. It plays all > +Z-code games V1-V8, including V6, with sound support through libao, and uses ncurses > +for text display.") In the description, sentences should be separated by two spaces. Running "./pre-inst-env guix lint frotz" will check these sorts of things (and more) automatically for you. As an aside, if you can keep the line lengths of the description at or under 80 characters wide, please do so. > + (home-page "http://frotz.sourceforge.net") > + (license license:gpl2))) Licensing trivia: The license for this software appears to be GPL2+. The COPYING file says GPL v2, which defaults to GPL v2 or later unless specified otherwise, and some source files are explicitly listed with the GPL v2 or later. > + > +(define-public frotz-dumb-terminal > + (package > + (name "frotz-dumb-terminal") > + (version "2.44") > + (source (origin > + (method url-fetch) > + (uri (list (string-append > + "http://www.ifarchive.org/if-archive/infocom/interpreters/" > + "frotz" "/" "frotz" "-" version ".tar.gz") > + (string-append > + "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/" > + "frotz" "/" "frotz" "-" version ".tar.gz"))) > + (sha256 > + (base32 > + "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k")))) > + (build-system gnu-build-system) > + (arguments > + `(#:tests? #f ; there are no tests > + #:phases > + (modify-phases %standard-phases > + (delete 'configure) > + (replace 'build > + (lambda _ > + (invoke "make" "dumb"))) > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (bin (string-append out "/bin")) > + (man (string-append out "/share/man/man6"))) > + (install-file "dfrotz" bin) > + (mkdir-p man) > + (install-file "doc/dfrotz.6" man) > + #t)))))) > + (synopsis "Portable Z-machine dumb interpreter for text adventure games") > + (description "Frotz is an interpreter for Infocom games and > +other Z-machine games in the text adventure/interactive fiction genre. dfrotz is the > +dumb interface version. You get no screen control; everything is just printed to the > +terminal line by line. The terminal handles all the scrolling. Maybe you'd like to > +experience what it's like to play Adventure on a teletype. A much cooler use for > +compiling Frotz with the dumb interface is that it can be wrapped in CGI scripting, > +PHP, and the like to allow people to play games on webpages. It can also be made > +into a chat bot.") > + (home-page "http://frotz.sourceforge.net") > + (license license:gpl2))) > + Same comments as above for the description and license. > +(define-public frotz-sdl > + (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24")) > + (package > + (name "frotz-sdl") > + (version "2.45pre") Why the git checkout? I assume the stable version's SDL port is not working? > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://gitlab.com/DavidGriffith/frotz") > + (commit commit))) > + (sha256 > + (base32 > + "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8")))) > + (build-system gnu-build-system) > + (arguments > + `(#:tests? #f ; there are no tests > + #:phases > + (modify-phases %standard-phases > + (delete 'configure) > + (add-before 'build 'curses > + (lambda _ > + (substitute* "Makefile" > + (("lcurses") "lncurses")))) > + (replace 'build > + (lambda _ > + (invoke "make" "sdl"))) > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (bin (string-append out "/bin")) > + (man (string-append out "/share/man/man6"))) > + (install-file "sfrotz" bin) > + (mkdir-p man) > + (install-file "doc/sfrotz.6" man) > + #t)))))) > + (native-inputs > + `(("pkg-config" ,pkg-config) > + ("which" ,which))) > + (inputs `(("sdl2" ,sdl2) > + ("sdl2-mixer" ,sdl2-mixer) > + ("libmodplug" ,libmodplug) > + ("libsamplerate" ,libsamplerate) > + ("libsndfile" ,libsndfile) > + ("libvorbis" ,libvorbis) > + ("ncurses" ,ncurses) > + ("freetype" ,freetype) > + ("libjpeg-turbo" ,libjpeg-turbo))) > + (synopsis "Portable Z-machine interpreter (SDL-port) for text > adventure games") I don't think a hyphen is necessary in "SDL-port". > + (description "Frotz is an interpreter for Infocom games and other Z-machine > +games in the text adventure/interactive fiction genre. This version of Frotz using > +SDL fully supports all these versions of the Z-Machine including the graphical > +version 6. Graphics and sound are created through the use of the SDL libraries. > +AIFF sound effects and music in MOD and OGG formats are supported when packaged in > +Blorb container files or optionally from individual files.") > + (home-page "http://frotz.sourceforge.net") > + (license license:gpl2)))) Same comments as above for the curses/configure phases, description and license. Also! frotz-sdl doesn't build reproducibly because of a timestamp in the Makefile named BUILD_DATE_TIME that ends up in the final binary. Please substitute that as well in the configure phase. Other than the comments above, all of the packages here work fine! Thanks for contributing!