diff mbox series

[bug#44039] gnu: Add slade.

Message ID 0f10b54f-81a1-4de4-af81-7cb06ac0c865@disroot.org
State New
Headers show
Series [bug#44039] gnu: Add slade. | expand

Checks

Context Check Description
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job

Commit Message

James Smith Oct. 17, 2020, 12:41 a.m. UTC
Tobias,

On Fri, 16 Oct 2020 14:07:46 -0700,
Tobias Geerinckx-Rice wrote:

>  
>> +(define-public slade
>> 
> Let's keep modules vaguely alphabetical.  Could you move this above
> 
> ‘tiled’?
> 
Sure thing, I didn't see anything in the manual about sorting alphabetically and
other definitions weren't in order either.

>  
>> +         (add-after 'install 'patch-gdk-backend
>> 
> Nitpick: it's not patching anything.
> 
Now that you point that out, patch wasn't the word I was looking for.

>  
>> +               `("GDK_BACKEND" "" = (,"x11")))
>> 
> This works but the "" and , are redundant.
> 
Thanks for pointing that out, I didn't see any existing examples doing it that
way.

> All in all, the phase can be rewritten as:
> 
> (add-after 'install 'wrap-with-x11-gdk-backend
> 
> ;; Set GDK_BACKEND to x11 to prevent crash on Wayland.
> 
> See
> 
> ;; https://github.com/sirjuddington/SLADE/issues/1097
> 
> for details.
> 
> (lambda* (#:key outputs #:allow-other-keys)
> 
> (wrap-program
> 
> (string-append (assoc-ref outputs "out")
> 
> "/bin/slade")
> 
> '("GDK_BACKEND" = ("x11")))
> 
> #t)))
> 
Done.

>  
>> +       #:tests? #f))
>> 
> Are there no tests at all?  If so, note in a comment:
> 
> #:tests? #f))                    ; no test suite
> 
Yeah, no tests.

> There's one more problem:
> 
> set(ZIP_COMMAND "${ZIPTOOL_ZIP_EXECUTABLE}" -X -UN=UTF8 -9 -r \
> 
> "${CMAKE_BINARY_DIR}/slade.pk3" .)
> 
> Even zip -X won't create an identical archive on every run.  There
> 
> doesn't seem to be an option to do so.  The result:
> 
> --- /gnu/store/aaa-slade-3.1.12a/share/slade3/slade.pk3
> 
> +++ /gnu/store/bbb-slade-3.1.12a/share/slade3/slade.pk3
> 
> Zip file size: 3624588 bytes, number of entries: 768
> 
> -drwxr-xr-x  3.0 unx  0 b- stor 20-Oct-16 19:17 html/
> 
> -drwxr-xr-x  3.0 unx  0 b- stor 20-Oct-16 19:17 config/
> 
> -drwxr-xr-x  3.0 unx  0 b- stor 20-Oct-16 19:17 config/colours/
> 
> +drwxr-xr-x  3.0 unx  0 b- stor 20-Oct-16 19:31 html/
> 
> +drwxr-xr-x  3.0 unx  0 b- stor 20-Oct-16 19:31 config/
> 
> +drwxr-xr-x  3.0 unx  0 b- stor 20-Oct-16 19:31 config/colours/
> 
> This is not ideal: Guix aims for reproducible builds.
> 
I didn't think to check zip-compressed files.

> The following made multiple builds on one machine identical, but was
> 
> not consistent between file systems, probably due to readdir order:
> 
> + (add-before 'build 'reset-slade.pk3-timestamps
> 
> +   ;; This appears sufficient to make slade.pk3 reproducible.
> 
> +   (lambda _
> 
> +     (invoke "find" "../source/dist/res" "-exec" "touch"
> 
> +             "--no-dereference" "-t" "197001010000.00" "{}" "+")))
> 
> I suppose I could try using find to sort the files before invoking
> 
> zip, or something.  Thoughts?
> 
Unless there's a better way, let's do that.

Thanks for your help,

James Smith
From 5035bc25a050ce6f81538000b59df05fb02b7e65 Mon Sep 17 00:00:00 2001
From: James Smith <jsubuntuxp@disroot.org>
Date: Fri, 16 Oct 2020 11:24:14 -0700
Subject: [PATCH v2] gnu: Add slade.

* gnu/packages/game-development.scm (slade): New variable.
---
 gnu/packages/game-development.scm | 63 ++++++++++++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 96ed2f9da4..807b37b4e6 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -20,6 +20,7 @@ 
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 James Smith <jsubuntuxp@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,7 +38,7 @@ 
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages game-development)
-  #:use-module (srfi srfi-1)
+  #:use-module ((srfi srfi-1) #:hide (zip))
   #:use-module (ice-9 match)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -94,6 +95,7 @@ 
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
@@ -441,6 +443,65 @@  GUI toolkit, lighting and physics frameworks and @code{Tiled} TMX format
 support.")
     (license license:gpl3+)))
 
+(define-public slade
+  (package
+    (name "slade")
+    (version "3.1.12a")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sirjuddington/SLADE")
+             (commit version)))
+       (sha256 (base32 "1q37pqibnrbdd7zjx7h2kfi0q9nc63cc96q9ya4x3fvsrf64n6yd"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "-DWX_GTK3=ON" "-DNO_WEBVIEW=ON"
+             (string-append "-DWITH_WXPATH="
+                            (assoc-ref %build-inputs "wxwidgets") "/bin")
+             (string-append "-DwxWidgets_LIBRARIES="
+                            (assoc-ref %build-inputs "wxwidgets") "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'reset-slade.pk3-timestamps
+           ;; This appears sufficient to make slade.pk3 reproducible.
+           (lambda _
+             (invoke "find" "../source/dist/res" "-exec" "touch"
+                     "--no-dereference" "-t" "197001010000.00" "{}"
+                     "+")))
+         (add-after 'install 'wrap-with-x11-gdk-backend
+           ;; Set GDK_BACKEND to x11 to prevent crash on Wayland.
+           ;; See https://github.com/sirjuddington/SLADE/issues/1097 for details.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (wrap-program
+                 (string-append (assoc-ref outputs "out")
+                                "/bin/slade")
+               '("GDK_BACKEND" = ("x11")))
+             #t)))
+       #:tests? #f)) ;; No test suite.
+    (inputs
+     `(("curl" ,curl)
+       ("fluidsynth" ,fluidsynth)
+       ("freeimage" ,freeimage)
+       ("ftgl" ,ftgl)
+       ("glew" ,glew)
+       ("gtk+" ,gtk+)
+       ("sfml" ,sfml)
+       ("wxwidgets" ,wxwidgets-3.1)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("which" ,which)
+       ("zip" ,zip)))
+    (home-page "https://slade.mancubus.net")
+    (synopsis "Doom game data editor")
+    (description "SLADE3 is a modern editor for Doom-engine based games and
+source ports.  It has the ability to view, modify, and write many different game-
+specific formats, and even convert between some of them, or from/to other generic
+formats such as PNG.")
+    (license license:gpl2)))
+
 (define-public tiled
   (package
     (name "tiled")