~ruther/guix-local

242dceabb4c2a1d4989babeff4c0df540e15f686 — Maxim Cournoyer 8 months ago cd028a4
gnu: higan: Update to 110-0.ad0e11e and modernize.

* gnu/packages/emulators.scm (higan): Update to 110-0.ad0e11e.
[inputs]: Remove labels. Replace gtk+-2 with gtk+ and gtksourceview-2 with
gtksourceview-3.
[arguments]: Use gexps and gexp variables as well as search-input-file in
phases.
<#:make-flags>: Add higan.path and platform flags.
<#:phases> {chdir-to-higan}: Rename to...
{chdir-to-higan-ui}: ... this, switching to higan-ui directory.
{wrap-higan-executable}: Streamline via wrap-program.

Fixes: #1477
Change-Id: I46130180a3b8505233c9baba81789cd0ade262bd
1 files changed, 61 insertions(+), 90 deletions(-)

M gnu/packages/emulators.scm
M gnu/packages/emulators.scm => gnu/packages/emulators.scm +61 -90
@@ 778,95 778,66 @@ and a game metadata scraper.")
      (license license:expat))))

(define-public higan
  (package
    (name "higan")
    (version "110")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/higan-emu/higan")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "11rvm53c3p2f6zk8xbyv2j51xp8zmqnch7zravhj3fk590qrjrr2"))))
    (build-system gnu-build-system)
    (native-inputs
     (list pkg-config))
    (inputs
     `(("alsa-lib" ,alsa-lib)
       ("bash" ,bash-minimal) ; for wrap-program
       ("ao" ,ao)
       ("eudev" ,eudev)
       ("gtk+" ,gtk+-2)
       ("gtksourceview-2" ,gtksourceview-2)
       ("libxrandr" ,libxrandr)
       ("libxv" ,libxv)
       ("mesa" ,mesa)
       ("openal" ,openal)
       ("pulseaudio" ,pulseaudio)
       ("sdl2" ,sdl2)))
    (arguments
     '(#:phases
       (let ((build-phase (assoc-ref %standard-phases 'build))
             (install-phase (assoc-ref %standard-phases 'install)))
         (modify-phases %standard-phases
           ;; The higan build system has no configure phase.
           (delete 'configure)
           (add-before 'build 'chdir-to-higan
             (lambda _
               (chdir "higan")
               #t))
           (add-before 'install 'create-/share/applications
             (lambda* (#:key outputs #:allow-other-keys)
               (let ((out (assoc-ref outputs "out")))
                 ;; It seems the author forgot to do this in the Makefile.
                 (mkdir-p (string-append out "/share/applications"))
                 #t)))
           (add-after 'install 'chdir-to-icarus
             (lambda _
               (chdir "../icarus")
               #t))
           (add-after 'chdir-to-icarus 'build-icarus build-phase)
           (add-after 'build-icarus 'install-icarus install-phase)
           (add-after 'install-icarus 'wrap-higan-executable
             (lambda* (#:key inputs outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
                      (bin (string-append out "/bin"))
                      (higan (string-append bin "/higan"))
                      (higan-original (string-append higan "-original"))
                      (bash (search-input-file inputs "/bin/bash"))
                      (coreutils (assoc-ref inputs "coreutils"))
                      (mkdir (string-append coreutils "/bin/mkdir"))
                      (cp (string-append coreutils "/bin/cp"))
                      (cp-r (string-append cp " -r --no-preserve=mode")))
                 ;; First, have the executable make sure ~/.local/share/higan
                 ;; contains up to date files.  Higan insists on looking there
                 ;; for these data files.
                 (rename-file higan higan-original)
                 (with-output-to-file higan
                   (lambda ()
                     (display
                      (string-append
                       "#!" bash "\n"
                       ;; higan doesn't respect $XDG_DATA_HOME
                       mkdir " -p ~/.local/share\n"
                       cp-r " " out "/share/higan ~/.local/share\n"
                       "exec " higan-original))))
                 (chmod higan #o555)
                 ;; Second, make sure higan will find icarus in PATH.
                 (wrap-program higan
                   `("PATH" ":" prefix (,bin)))
                 #t)))))
       #:make-flags
       (list "compiler=g++"
             (string-append "prefix=" (assoc-ref %outputs "out")))
       ;; There is no test suite.
       #:tests? #f))
    (home-page "https://github.com/higan-emu/higan/")
    (synopsis "Multi-system emulator")
    (description
     "higan is a multi-system emulator with an uncompromising focus on
  ;; There are no recent releases; use the latest commit of the master branch.
  (let ((commit "ad0e11e7b73053eb1bcd5bdeabbe2de92c356286")
        (revision "0"))
    (package
      (name "higan")
      (version (git-version "110" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
                (url "https://github.com/higan-emu/higan")
                (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "1dlx5vqxv8mr8faw0wggsd10bk51p258l56yixjarv0dyhv6nkbq"))))
      (build-system gnu-build-system)
      (native-inputs
       (list pkg-config))
      (inputs
       (list alsa-lib
             bash-minimal                 ; for wrap-program
             ao
             eudev
             gtk+
             gtksourceview-3
             libxrandr
             libxv
             mesa
             openal
             pulseaudio
             sdl2))
      (arguments
       (list
        #:tests? #f                       ;no test suite
        #:make-flags #~(list "compiler=g++"
                             "higan.path=../higan"
                             "platform=linux"
                             (string-append "prefix=" #$output))
        #:phases
        #~(modify-phases %standard-phases
            ;; The higan build system has no configure phase.
            (delete 'configure)
            (add-before 'build 'chdir-to-higan-ui
              (lambda _
                (chdir "higan-ui")))
            (add-after 'install 'chdir-to-icarus
              (lambda _
                (chdir "../icarus")))
            (add-after 'chdir-to-icarus 'build-icarus
              (assoc-ref %standard-phases 'build))
            (add-after 'build-icarus 'install-icarus
              (assoc-ref %standard-phases 'install))
            (add-after 'install-icarus 'wrap-higan-executable
              (lambda _
                (wrap-program (string-append #$output "/bin/higan")
                  `("PATH" prefix (,(string-append #$output "/bin")))))))))
      (home-page "https://github.com/higan-emu/higan/")
      (synopsis "Multi-system emulator")
      (description
       "higan is a multi-system emulator with an uncompromising focus on
accuracy and code readability.

It currently emulates the following systems: Famicom, Famicom Disk System,


@@ 875,7 846,7 @@ Game Boy Player, SG-1000, SC-3000, Master System, Game Gear, Mega Drive, Mega
CD, PC Engine, SuperGrafx, MSX, MSX2, ColecoVision, Neo Geo Pocket, Neo Geo
Pocket Color, WonderSwan, WonderSwan Color, SwanCrystal, Pocket Challenge
V2.")
    (license license:gpl3+)))
      (license license:gpl3+))))

(define-public mednafen
  (package