guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#32638] [PATCH] games.scm - add frotz packages


From: Kei Kebreau
Subject: [bug#32638] [PATCH] games.scm - add frotz packages
Date: Thu, 06 Sep 2018 14:20:31 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

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 <address@hidden>
>  ;;; Copyright © 2018 Tim Gesthuizen <address@hidden>
>  ;;; Copyright © 2018 Madalin Ionel-Patrascu <address@hidden>
> +;;; Copyright © 2018 Benjamin Slade <address@hidden>
>  ;;;
>  ;;; 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!

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]