guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] gnu: Add higan.


From: Taylan Ulrich Bayırlı/Kammer
Subject: Re: [PATCH] gnu: Add higan.
Date: Thu, 09 Jun 2016 23:43:46 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

address@hidden (Ludovic Courtès) writes:

> address@hidden (Taylan Ulrich "Bayırlı/Kammer") skribis:
>
>> address@hidden (Ludovic Courtès) writes:
>
> [...]
>
>>> In what sense is it unsuitable?  It’s OK to have a couple of patches,
>>> but it’s not quite OK to host a fork of the upstream package, IMO (at
>>> the very least, it can create confusion and make it harder to see how it
>>> differs from the “real” package.)
>>
>> The repo is just for having a consistent place from which the source can
>> be fetched, as the author doesn't want source bundles to be downloaded
>> from his website.  No changes to the code are made.
>>
>> The repo at GitLab didn't seem to tag releases properly.  That being
>> said, now that I look at it, it seems more like an oversight for v098.
>> Other releases seem to be tagged quite consistently:
>>
>>     https://gitlab.com/higan/higan/tags
>>
>> Should we use that repo instead?  It's a bit more official than mine.
>
> Yes, I think it would be more appropriate.

I contacted the maintainer of the repo and asked them to add a tag,
which is done now.

Note: apparently the author re-released 098 with a hotfix very soon
after releasing it, without making a version change.  In the repository,
this is tagged as 098b, which I use here.  I.e. this is not a true
version update; we were already using "this 098".

>>>>   * The program insists on looking in ~/.local/share for some data files
>>>>     that are actually installed in $prefix/share; does my strategy here
>>>>     look OK, in that I wrap the executable to copy the data files into
>>>>     ~/.local/share every time the program is run?
>>>
>>> Sounds like a sledgehammer no?  :-)
>>>
>>> If those files are immutable, what about patching Higan to look for
>>> those files in $datadir instead?
>>
>> Apparently, the files that are part of the distribution are pure data
>> files, i.e. fine to be read-only.  However, the directory hierarchy of
>> which they're a part needs to be writable, as higan creates further
>> files there.  With that cp -r, the directory hierarchy is made sure to
>> be there, and the data files made sure to be up to date.
>>
>> Although I didn't look too closely at the sources, patching higan to do
>> things differently would presumably be a nontrivial task, since it seems
>> bent on doing things in terms of this directory structure that contains
>> both pure data and read-write data files.
>
> Hmm OK.  What do other distros do?

More or less the same thing; it's sanctioned by the developers even
though it's acknowledged not to be a particularly good solution.  Here
we see Arch do the same:

https://git.archlinux.org/svntogit/community.git/tree/trunk/higan?h=packages/higan

(Though this one seems to have a bug because they copy things to
~/Emulation instead of the new ~/.local/share.  I'm confident that
~/.local/share is the right location in the latest release.  Also for
the cheats.bml file.)

Here's a patch that, in addition to switching the repo, adds a patch
removing a -march=native flag (which I assume would break
cross-compilation), and passes the make flag "profile=balanced" to make
higan less CPU intensive by emulating a bit less accurately (it was
running too slow on my i5, so this should be a better default).

I just saved a princess from an evil wizard with this so I can confirm
it runs smooth now.

>From 93ccdf075caf462af742cf46cad35697001db124 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
 <address@hidden>
Date: Thu, 9 Jun 2016 21:53:02 +0300
Subject: [PATCH] gnu: higan: Various improvements.

* gnu/packages/games.scm (higan): Use semi-official repository at GitLab
(using hotfix tag 098b which is equivalent to official release 098).
Add a patch to remove the build flag -march=native.  Set profile to
balanced.
* gnu/packages/patches/higan-remove-march-native-flag.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                              |  1 +
 gnu/packages/games.scm                                    |  9 ++++++---
 gnu/packages/patches/higan-remove-march-native-flag.patch | 13 +++++++++++++
 3 files changed, 20 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/higan-remove-march-native-flag.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index d3e7262..210d3aa 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -542,6 +542,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch       \
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/hdf5-config-date.patch                  \
+  %D%/packages/patches/higan-remove-march-native-flag.patch    \
   %D%/packages/patches/hop-bigloo-4.0b.patch                   \
   %D%/packages/patches/hop-linker-flags.patch                  \
   %D%/packages/patches/hydra-automake-1.15.patch               \
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 4181ffb..2aa46e3 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2248,15 +2248,17 @@ Red Eclipse provides fast paced and accessible 
gameplay.")
 (define-public higan
   (package
     (name "higan")
-    (version "098")
+    (version "098b")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "https://github.com/TaylanUB/higan/archive/v"; version ".tar.gz"))
+             "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v";
+             version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "12snxrk8wa94x3l69qcimgm0xc22zjgf7vzhckp2lzyfbf27950v"))))
+        (base32 "05j0xzr01gsyia4gj6jmdzklll4iky1kwxgxw0mmfcgm10m0h3bf"))
+       (patches (search-patches "higan-remove-march-native-flag.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -2322,6 +2324,7 @@ Red Eclipse provides fast paced and accessible gameplay.")
                    `("PATH" ":" prefix (,bin))))))))
        #:make-flags
        (list "compiler=g++"
+             "profile=balanced"      ;default is accuracy; which is quite slow
              (string-append "prefix=" (assoc-ref %outputs "out")))
        ;; There is no test suite.
        #:tests? #f))
diff --git a/gnu/packages/patches/higan-remove-march-native-flag.patch 
b/gnu/packages/patches/higan-remove-march-native-flag.patch
new file mode 100644
index 0000000..8f4a36d
--- /dev/null
+++ b/gnu/packages/patches/higan-remove-march-native-flag.patch
@@ -0,0 +1,13 @@
+Remove -march=native from build flags.
+
+--- a/higan/GNUmakefile
++++ b/higan/GNUmakefile
+@@ -32,7 +32,7 @@ ifeq ($(platform),windows)
+ else ifeq ($(platform),macosx)
+   flags += -march=native
+ else ifneq ($(filter $(platform),linux bsd),)
+-  flags += -march=native -fopenmp
++  flags += -fopenmp
+   link += -fopenmp
+   link += -Wl,-export-dynamic
+   link += -lX11 -lXext
-- 
2.7.4


reply via email to

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