all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom.
@ 2024-09-16  2:10 James Smith via Guix-patches via
  2024-09-16  2:16 ` [bug#73287] [PATCH 1/3] gnu: Add embree-2 James Smith via Guix-patches via
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-16  2:10 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

This series adds the TrenchBroom map editor along with ericw-tools, which is a
set of map compilers that works with it. Ericw-tools does need a couple of
commits backported from upstream (in the form of patches) to build, so
hopefully I included the patches properly.

James Smith (3):
  gnu: Add embree-2.
  gnu: Add ericw-tools.
  gnu: Add trenchbroom.

 gnu/local.mk                                  |   3 +
 gnu/packages/game-development.scm             | 168 ++++++++++++++++++
 gnu/packages/graphics.scm                     |  22 +++
 ...tools-add-check-for-sse2-in-light.cc.patch |  31 ++++
 ...-tools-gcc-11-pass-const-to-offsetof.patch |  87 +++++++++
 5 files changed, 311 insertions(+)
 create mode 100644 gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
 create mode 100644 gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch


base-commit: 83698b6fa037aa1f3adc38f474be41bac7622ed8
-- 
2.46.0





^ permalink raw reply	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 1/3] gnu: Add embree-2.
  2024-09-16  2:10 [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
@ 2024-09-16  2:16 ` James Smith via Guix-patches via
  2024-09-20  7:58   ` Liliana Marie Prikler
  2024-09-16  2:16 ` [bug#73287] [PATCH 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-16  2:16 UTC (permalink / raw)
  To: 73287; +Cc: James Smith

* gnu/packages/graphics.scm: (embree-2): New variable.

Change-Id: I2b2143b4d93c402ba940d408280ef1b37ab552ea
---
 gnu/packages/graphics.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 3d03802245..d893c9dfee 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
 ;;; Copyright © 2023 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2023, 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;; Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -490,6 +491,27 @@ (define-public embree-3
                (base32
                 "1kcvz7g6j56anv9zjyd3gidxl46vipw0gg82lns12m45cd43iwxm"))))))
 
+(define-public embree-2
+  (package/inherit embree
+    (version "2.17.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url "https://github.com/RenderKit/embree")
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name embree) version))
+       (sha256
+        (base32 "19v60zdfix33c772x6dzmhsarhafsns8qy7c2ysqr7a9j16whgql"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments embree)
+       ((#:configure-flags configure-flags)
+        #~(append (list "-DEMBREE_TUTORIALS=OFF") #$configure-flags))))
+    (inputs (modify-inputs (package-inputs embree)
+              (replace "tbb" tbb-2020)))
+    ;; Tries to build with SSE2 and AVX support on ARM, so disable building for
+    ;; those systems.
+    (supported-systems (list "i686-linux" "x86_64-linux"))))
+
 (define-public openvdb
   (package
     (name "openvdb")
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 2/3] gnu: Add ericw-tools.
  2024-09-16  2:10 [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
  2024-09-16  2:16 ` [bug#73287] [PATCH 1/3] gnu: Add embree-2 James Smith via Guix-patches via
@ 2024-09-16  2:16 ` James Smith via Guix-patches via
  2024-09-20  8:04   ` Liliana Marie Prikler
  2024-09-16  2:16 ` [bug#73287] [PATCH 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-16  2:16 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm: (ericw-tools): New variable.
* gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch: New file.
* gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch: New file.
* gnu/local.mk: Register patch files.

Change-Id: I896b8f781054442e4db4a7220d526b8f2878873c
---
 gnu/local.mk                                  |  3 +
 gnu/packages/game-development.scm             | 75 ++++++++++++++++
 ...tools-add-check-for-sse2-in-light.cc.patch | 31 +++++++
 ...-tools-gcc-11-pass-const-to-offsetof.patch | 87 +++++++++++++++++++
 4 files changed, 196 insertions(+)
 create mode 100644 gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
 create mode 100644 gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index fcdf174099..bb7ec9960c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -67,6 +67,7 @@
 # Copyright © 2024 David Elsing <david.elsing@posteo.net>
 # Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
 # Copyright © 2024 Fabio Natali <me@fabionatali.com>
+# Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
 #
 # This file is part of GNU Guix.
 #
@@ -1200,6 +1201,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/epiphany-fix-encoding-test.patch	\
   %D%/packages/patches/ergodox-firmware-fix-json-target.patch	\
   %D%/packages/patches/ergodox-firmware-fix-numpad.patch	\
+  %D%/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch	\
+  %D%/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch	\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/esmini-use-pkgconfig.patch		\
   %D%/packages/patches/esmtp-add-lesmtp.patch		\
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index efbbabaaf5..d61b4d633a 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2394,6 +2394,81 @@ (define-public entt
     (license (list license:expat        ; code
                    license:cc-by4.0)))) ; documentation
 
+(define-public ericw-tools
+  (package
+    (name "ericw-tools")
+    (version "0.18.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url "https://github.com/ericwa/ericw-tools")
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11sap7qv0rlhw8q25azvhgjcwiql3zam09q0gim3i04cg6fkh0vp"))
+       (patches
+        (search-patches "ericw-tools-add-check-for-sse2-in-light.cc.patch"
+                        "ericw-tools-gcc-11-pass-const-to-offsetof.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DENABLE_LIGHTPREVIEW=OFF")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'disable-copying-embree-files
+                 (lambda _
+                   ;; Tries to copy files from embree, disable it.
+                   (substitute* "light/CMakeLists.txt"
+                     (("install\\\(FILES \\$\\{EMBREE")
+                      "#install(FILES ${EMBREE"))))
+               (add-after 'install 'rename-binaries
+                 (lambda _
+                   ;; Rename binaries to prevent collisions with other
+                   ;; packages.
+                   (rename-file (string-append #$output "/bin/bspinfo")
+                                (string-append #$output "/bin/qbspinfo"))
+                   (rename-file (string-append #$output "/bin/bsputil")
+                                (string-append #$output "/bin/qbsputil"))
+                   (rename-file (string-append #$output "/bin/light")
+                                (string-append #$output "/bin/qlight"))
+                   (rename-file (string-append #$output "/bin/vis")
+                                (string-append #$output "/bin/qvis"))))
+               (add-after 'install-license-files 'clean-up-bin-directory
+                 (lambda _
+                   ;; Install target copies text documents to #$output/bin, move
+                   ;; them to #$output/share/doc.
+                   (delete-file (string-append #$output "/bin/gpl_v3.txt"))
+                   (rename-file
+                    (string-append #$output "/bin/changelog.txt")
+                    (string-append #$output "/share/doc/"
+                                   #$(package-name this-package) "-"
+                                   #$(package-version this-package)
+                                   "/changelog.txt"))
+                   (rename-file
+                    (string-append #$output "/bin/README.md")
+                    (string-append #$output "/share/doc/"
+                                   #$(package-name this-package) "-"
+                                   #$(package-version this-package)
+                                   "/README.md")))))
+           #:tests? #f)) ; No tests
+    (inputs (list embree-2))
+    (home-page "https://ericwa.github.io/ericw-tools/")
+    (synopsis "Quake/Hexen 2 map compiling tools")
+    (description "Collection of command line utilities for building Quake levels
+and working with various Quake file formats.  A brief description of the tools
+are listed below.
+
+Included utilities:
+
+@itemize @bullet
+@item qbsp - Used for turning a .map file into a playable .bsp file.
+@item qlight - Used for lighting a level after the bsp stage.  This util was
+previously known as TyrLite.
+@item qvis - Creates the potentially visible set (PVS) for a bsp.
+@item qbspinfo - Print stats about the data contained in a bsp file.
+@item qbsputil - Simple tool for manipulation of bsp file data.
+@end itemize")
+    (license license:gpl2+)))
+
 (define-public eureka
   (package
     (name "eureka")
diff --git a/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch b/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
new file mode 100644
index 0000000000..4c95b8570d
--- /dev/null
+++ b/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
@@ -0,0 +1,31 @@
+From 982ef5276bb231ded12c45a686b0875594175774 Mon Sep 17 00:00:00 2001
+From: Bryan Haley <bryanmhaley@gmail.com>
+Date: Mon, 28 Mar 2022 22:05:28 -0700
+Subject: [PATCH] Add check for SSE2 in light.cc (#328)
+
+---
+ light/light.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/light/light.cc b/light/light.cc
+index 7e23d040f..c00844643 100644
+--- a/light/light.cc
++++ b/light/light.cc
+@@ -33,7 +33,7 @@
+ #include <common/polylib.hh>
+ #include <common/bsputils.hh>
+ 
+-#ifdef HAVE_EMBREE
++#if defined(HAVE_EMBREE) && defined (__SSE2__)
+ #include <xmmintrin.h>
+ //#include <pmmintrin.h>
+ #endif
+@@ -255,7 +255,7 @@ LightThread(void *arg)
+ {
+     const mbsp_t *bsp = (const mbsp_t *)arg;
+ 
+-#ifdef HAVE_EMBREE
++#if defined(HAVE_EMBREE) && defined (__SSE2__)
+     _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
+ //    _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
+ #endif
diff --git a/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch b/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch
new file mode 100644
index 0000000000..6da4179a9e
--- /dev/null
+++ b/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch
@@ -0,0 +1,87 @@
+From c9570260fa895dde5a21272d76f9a3b05d59efdd Mon Sep 17 00:00:00 2001
+From: Eric Wasylishen <ewasylishen@gmail.com>
+Date: Sun, 30 May 2021 23:12:17 -0600
+Subject: [PATCH] gcc 11: pass constant to offsetof
+
+---
+ common/polylib.cc |  5 ++++-
+ qbsp/util.cc      |  5 ++++-
+ qbsp/winding.cc   |  4 +++-
+ vis/vis.cc        | 10 ++++++++--
+ 4 files changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/common/polylib.cc b/common/polylib.cc
+index 6397b3107..c8e1afbff 100644
+--- a/common/polylib.cc
++++ b/common/polylib.cc
+@@ -230,7 +230,10 @@ polylib::CopyWinding(const winding_t * w)
+     int size;
+     winding_t *c;
+ 
+-    size = offsetof(winding_t, p[w->numpoints]);
++    //size = offsetof(winding_t, p[w->numpoints]);
++    size = offsetof(winding_t, p[0]);
++    size += w->numpoints * sizeof(w->p[0]);
++
+     c = static_cast<winding_t *>(malloc(size));
+     memcpy(c, w, size);
+     return c;
+diff --git a/qbsp/util.cc b/qbsp/util.cc
+index e8baf7205..16c9077f1 100644
+--- a/qbsp/util.cc
++++ b/qbsp/util.cc
+@@ -53,7 +53,10 @@ AllocMem(int Type, int cElements, bool fZero)
+         if (cElements > MAX_POINTS_ON_WINDING)
+             Error("Too many points (%d) on winding (%s)", cElements, __func__);
+ 
+-        cSize = offsetof(winding_t, points[cElements]) + sizeof(int);
++        //cSize = offsetof(winding_t, points[cElements]) + sizeof(int);
++        cSize = offsetof(winding_t, points[0]);
++        cSize += cElements * sizeof(static_cast<winding_t*>(nullptr)->points[0]);
++        cSize += sizeof(int);
+ 
+         // Set cElements to 1 so bookkeeping works OK
+         cElements = 1;
+diff --git a/qbsp/winding.cc b/qbsp/winding.cc
+index 1af1d096c..6e286c387 100644
+--- a/qbsp/winding.cc
++++ b/qbsp/winding.cc
+@@ -106,7 +106,9 @@ CopyWinding(const winding_t *w)
+     winding_t *c;
+ 
+     c = (winding_t *)AllocMem(WINDING, w->numpoints, false);
+-    size = offsetof(winding_t, points[w->numpoints]);
++    //size = offsetof(winding_t, points[w->numpoints]);
++    size = offsetof(winding_t, points[0]);
++    size += w->numpoints * sizeof(w->points[0]);
+     memcpy(c, w, size);
+ 
+     return c;
+diff --git a/vis/vis.cc b/vis/vis.cc
+index 9fb0ea9ea..ec43a8a5f 100644
+--- a/vis/vis.cc
++++ b/vis/vis.cc
+@@ -127,7 +127,10 @@ NewWinding(int points)
+     if (points > MAX_WINDING)
+         Error("%s: %i points", __func__, points);
+ 
+-    size = offsetof(winding_t, points[points]);
++    //size = offsetof(winding_t, points[points]);
++    size = offsetof(winding_t, points[0]);
++    size += points * sizeof(w->points[0]);
++
+     w = static_cast<winding_t *>(malloc(size));
+     memset(w, 0, size);
+ 
+@@ -178,7 +181,10 @@ CopyWinding(const winding_t * w)
+     int size;
+     winding_t *c;
+ 
+-    size = offsetof(winding_t, points[w->numpoints]);
++    //size = offsetof(winding_t, points[w->numpoints]);
++    size = offsetof(winding_t, points[0]);
++    size += w->numpoints * sizeof(w->points[0]);
++
+     c = static_cast<winding_t *>(malloc(size));
+     memcpy(c, w, size);
+     return c;
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 3/3] gnu: Add trenchbroom.
  2024-09-16  2:10 [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
  2024-09-16  2:16 ` [bug#73287] [PATCH 1/3] gnu: Add embree-2 James Smith via Guix-patches via
  2024-09-16  2:16 ` [bug#73287] [PATCH 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
@ 2024-09-16  2:16 ` James Smith via Guix-patches via
  2024-09-20  8:02   ` Liliana Marie Prikler
  2024-09-21  0:38 ` [bug#73287] [PATCH v2 1/3] gnu: Add embree-2 James Smith via Guix-patches via
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-16  2:16 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm: (trenchbroom): New variable.

Change-Id: I50691b1db2010cd8c2c7f04bdfd80278b9e14aed
---
 gnu/packages/game-development.scm | 93 +++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index d61b4d633a..abc144f535 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -91,12 +91,14 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages music)
@@ -104,6 +106,7 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
@@ -121,6 +124,7 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages web)
@@ -674,6 +678,95 @@ (define-public tiled
     ;; under BSD-2.
     (license license:gpl2+)))
 
+(define-public trenchbroom
+  (package
+    (name "trenchbroom")
+    (version "2024.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TrenchBroom/TrenchBroom")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xysz7rkjy11wp9sshdqllmlw8qb65f1zlljpw3q22483szwzxnb"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "-DCMAKE_BUILD_TYPE=Release" "-G" "Unix Makefiles"
+                   "-DCMAKE_PREFIX_PATH=cmake/packages"
+                   (string-append "-DFREEIMAGE_INCLUDE_PATH="
+                                  #$freeimage "/include")
+                   (string-append "-DFREEIMAGE_LIBRARY="
+                                  #$freeimage "/lib/libfreeimage.so")
+                   (string-append "-Dfreetype_INCLUDE_DIR="
+                                  #$freetype "/include/freetype2")
+                   (string-append "-Dfreetype_LIBRARY="
+                                  #$freetype "/lib/libfreetype.so"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-build-system
+                 (lambda _
+                   (substitute* "CMakeLists.txt"
+                     (("set\\(CMAKE_TOOLCHAIN_FILE")
+                      "#set(CMAKE_TOOLCHAIN_FILE"))
+                   (substitute* "app/CMakeLists.txt"
+                     (("/usr") #$output))))
+               (add-before 'build 'set-environment-variables
+                 (lambda _
+                   ;; Set home so fontconfig can write cache.
+                   (setenv "HOME" (getenv "TEMP"))
+                   ;; Set QT platform for offscreen rendering.
+                   (setenv "QT_QPA_PLATFORM" "offscreen")
+                   (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))))
+               (add-after 'install 'wrap-trenchbroom
+                 (lambda _
+                   (wrap-program (string-append #$output "/bin/trenchbroom")
+                     ;; TrenchBroom needs $XDG_DATA_DIRS set to find game
+                     ;; configs.
+                     `("XDG_DATA_DIRS" ":" prefix
+                       (,(string-append #$output "/share")))
+                     ;; TrenchBroom also doesn't work well with Wayland backend.
+                     '("QT_QPA_PLATFORM" = ("xcb")))))
+               (add-after 'install 'install-desktop-file
+                 (lambda _
+                   (make-desktop-entry-file
+                    (string-append #$output "/share/applications/"
+                                   #$(package-name this-package) ".desktop")
+                    #:name "TrenchBroom"
+                    #:comment #$(package-synopsis this-package)
+                    #:exec #$name
+                    #:icon #$name
+                    #:categories '("Development")
+                    #:keywords '("quake" "level" "editor")))))
+           #:tests? #f)) ; No tests.
+    (inputs
+     (list assimp
+           bash-minimal
+           catch2
+           fmt
+           freeglut
+           freeimage
+           freetype
+           glew
+           glm
+           glu
+           libxxf86vm
+           mesa
+           miniz
+           qtbase-5
+           qtsvg-5
+           tinyxml2))
+    (native-inputs (list git pandoc python p7zip))
+    (home-page "https://kristianduske.com/trenchbroom/")
+    (synopsis "Cross-platform level editor for Quake-engine based games")
+    (description "TrenchBroom is a cross-platform level editor for Quake-engine
+based games.  It supports Quake, Quake 2, and Hexen 2.  TrenchBroom is easy and
+provides many simple and advanced tools to create complex and interesting levels
+with ease.")
+    (license license:gpl3+)))
+
 (define-public tsukundere
   (package
     (name "tsukundere")
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 1/3] gnu: Add embree-2.
  2024-09-16  2:16 ` [bug#73287] [PATCH 1/3] gnu: Add embree-2 James Smith via Guix-patches via
@ 2024-09-20  7:58   ` Liliana Marie Prikler
  2024-09-21  0:35     ` James Smith via Guix-patches via
  0 siblings, 1 reply; 15+ messages in thread
From: Liliana Marie Prikler @ 2024-09-20  7:58 UTC (permalink / raw)
  To: James Smith, 73287

Am Sonntag, dem 15.09.2024 um 19:16 -0700 schrieb James Smith:
> * gnu/packages/graphics.scm: (embree-2): New variable.
> 
> Change-Id: I2b2143b4d93c402ba940d408280ef1b37ab552ea
> ---
>  gnu/packages/graphics.scm | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
> index 3d03802245..d893c9dfee 100644
> --- a/gnu/packages/graphics.scm
> +++ b/gnu/packages/graphics.scm
> @@ -37,6 +37,7 @@
>  ;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
>  ;;; Copyright © 2023 Eric Bavier <bavier@posteo.net>
>  ;;; Copyright © 2023, 2024 Artyom V. Poptsov
> <poptsov.artyom@gmail.com>
> +;;; Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -490,6 +491,27 @@ (define-public embree-3
>                 (base32
>                 
> "1kcvz7g6j56anv9zjyd3gidxl46vipw0gg82lns12m45cd43iwxm"))))))
>  
> +(define-public embree-2
> +  (package/inherit embree
> +    (version "2.17.7")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference (url
> "https://github.com/RenderKit/embree")
> +                           (commit (string-append "v" version))))
> +       (file-name (git-file-name (package-name embree) version))
> +       (sha256
> +        (base32
> "19v60zdfix33c772x6dzmhsarhafsns8qy7c2ysqr7a9j16whgql"))))
> +    (arguments
> +     (substitute-keyword-arguments (package-arguments embree)
> +       ((#:configure-flags configure-flags)
> +        #~(append (list "-DEMBREE_TUTORIALS=OFF") #$configure-
> flags))))
> +    (inputs (modify-inputs (package-inputs embree)
> +              (replace "tbb" tbb-2020)))
> +    ;; Tries to build with SSE2 and AVX support on ARM, so disable
> building for
> +    ;; those systems.
Comments should be full sentences.  Also, this is a hint that it uses
SSE2 and AVX on the platforms below too – we should disable them, as
they won't work with every CPU.
> +    (supported-systems (list "i686-linux" "x86_64-linux"))))
> +

Cheers




^ permalink raw reply	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 3/3] gnu: Add trenchbroom.
  2024-09-16  2:16 ` [bug#73287] [PATCH 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
@ 2024-09-20  8:02   ` Liliana Marie Prikler
  0 siblings, 0 replies; 15+ messages in thread
From: Liliana Marie Prikler @ 2024-09-20  8:02 UTC (permalink / raw)
  To: James Smith, 73287; +Cc: 宋文武, Adam Faiz

Am Sonntag, dem 15.09.2024 um 19:16 -0700 schrieb James Smith:
> * gnu/packages/game-development.scm: (trenchbroom): New variable.
> 
> Change-Id: I50691b1db2010cd8c2c7f04bdfd80278b9e14aed
> ---
>  gnu/packages/game-development.scm | 93
> +++++++++++++++++++++++++++++++
>  1 file changed, 93 insertions(+)
> 
> diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-
> development.scm
> index d61b4d633a..abc144f535 100644
> --- a/gnu/packages/game-development.scm
> +++ b/gnu/packages/game-development.scm
> @@ -91,12 +91,14 @@ (define-module (gnu packages game-development)
>    #:use-module (gnu packages graphviz)
>    #:use-module (gnu packages gtk)
>    #:use-module (gnu packages guile)
> +  #:use-module (gnu packages haskell-xyz)
>    #:use-module (gnu packages icu4c)
>    #:use-module (gnu packages image)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages llvm)
>    #:use-module (gnu packages lua)
>    #:use-module (gnu packages m4)
> +  #:use-module (gnu packages maths)
>    #:use-module (gnu packages mp3)
>    #:use-module (gnu packages multiprecision)
>    #:use-module (gnu packages music)
> @@ -104,6 +106,7 @@ (define-module (gnu packages game-development)
>    #:use-module (gnu packages networking)
>    #:use-module (gnu packages pcre)
>    #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages pretty-print)
>    #:use-module (gnu packages pulseaudio)
>    #:use-module (gnu packages python)
>    #:use-module (gnu packages python-crypto)
> @@ -121,6 +124,7 @@ (define-module (gnu packages game-development)
>    #:use-module (gnu packages texinfo)
>    #:use-module (gnu packages textutils)
>    #:use-module (gnu packages tls)
> +  #:use-module (gnu packages version-control)
>    #:use-module (gnu packages video)
>    #:use-module (gnu packages vulkan)
>    #:use-module (gnu packages web)
> @@ -674,6 +678,95 @@ (define-public tiled
>      ;; under BSD-2.
>      (license license:gpl2+)))
>  
> +(define-public trenchbroom
> +  (package
> +    (name "trenchbroom")
> +    (version "2024.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/TrenchBroom/TrenchBroom")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> "1xysz7rkjy11wp9sshdqllmlw8qb65f1zlljpw3q22483szwzxnb"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     (list #:configure-flags
> +           #~(list "-DCMAKE_BUILD_TYPE=Release" "-G" "Unix
> Makefiles"
> +                   "-DCMAKE_PREFIX_PATH=cmake/packages"
> +                   (string-append "-DFREEIMAGE_INCLUDE_PATH="
> +                                  #$freeimage "/include")
> +                   (string-append "-DFREEIMAGE_LIBRARY="
> +                                  #$freeimage
> "/lib/libfreeimage.so")
> +                   (string-append "-Dfreetype_INCLUDE_DIR="
> +                                  #$freetype "/include/freetype2")
> +                   (string-append "-Dfreetype_LIBRARY="
> +                                  #$freetype "/lib/libfreetype.so"))
> +           #:phases
> +           #~(modify-phases %standard-phases
> +               (add-after 'unpack 'fix-build-system
> +                 (lambda _
> +                   (substitute* "CMakeLists.txt"
> +                     (("set\\(CMAKE_TOOLCHAIN_FILE")
> +                      "#set(CMAKE_TOOLCHAIN_FILE"))
> +                   (substitute* "app/CMakeLists.txt"
> +                     (("/usr") #$output))))
> +               (add-before 'build 'set-environment-variables
> +                 (lambda _
> +                   ;; Set home so fontconfig can write cache.
> +                   (setenv "HOME" (getenv "TEMP"))
> +                   ;; Set QT platform for offscreen rendering.
> +                   (setenv "QT_QPA_PLATFORM" "offscreen")
> +                   (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))))
> +               (add-after 'install 'wrap-trenchbroom
> +                 (lambda _
> +                   (wrap-program (string-append #$output
> "/bin/trenchbroom")
> +                     ;; TrenchBroom needs $XDG_DATA_DIRS set to find
> game
> +                     ;; configs.
> +                     `("XDG_DATA_DIRS" ":" prefix
> +                       (,(string-append #$output "/share")))
> +                     ;; TrenchBroom also doesn't work well with
> Wayland backend.
> +                     '("QT_QPA_PLATFORM" = ("xcb")))))
> +               (add-after 'install 'install-desktop-file
> +                 (lambda _
> +                   (make-desktop-entry-file
> +                    (string-append #$output "/share/applications/"
> +                                   #$(package-name this-package)
> ".desktop")
> +                    #:name "TrenchBroom"
> +                    #:comment #$(package-synopsis this-package)
> +                    #:exec #$name
> +                    #:icon #$name
> +                    #:categories '("Development")
> +                    #:keywords '("quake" "level" "editor")))))
> +           #:tests? #f)) ; No tests.
> +    (inputs
> +     (list assimp
> +           bash-minimal
> +           catch2
> +           fmt
> +           freeglut
> +           freeimage
> +           freetype
> +           glew
> +           glm
> +           glu
> +           libxxf86vm
> +           mesa
> +           miniz
> +           qtbase-5
> +           qtsvg-5
> +           tinyxml2))
> +    (native-inputs (list git pandoc python p7zip))
> +    (home-page "https://kristianduske.com/trenchbroom/")
> +    (synopsis "Cross-platform level editor for Quake-engine based
> games")
> +    (description "TrenchBroom is a cross-platform level editor for
> Quake-engine
> +based games.  It supports Quake, Quake 2, and Hexen 2.  TrenchBroom
> is easy and
> +provides many simple and advanced tools to create complex and
> interesting levels
> +with ease.")
"Easy with ease"… less marketing speech is advisable :)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 2/3] gnu: Add ericw-tools.
  2024-09-16  2:16 ` [bug#73287] [PATCH 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
@ 2024-09-20  8:04   ` Liliana Marie Prikler
  0 siblings, 0 replies; 15+ messages in thread
From: Liliana Marie Prikler @ 2024-09-20  8:04 UTC (permalink / raw)
  To: James Smith, 73287; +Cc: 宋文武, Adam Faiz

Am Sonntag, dem 15.09.2024 um 19:16 -0700 schrieb James Smith:
> * gnu/packages/game-development.scm: (ericw-tools): New variable.
> * gnu/packages/patches/ericw-tools-add-check-for-sse2-in-
> light.cc.patch: New file.
> * gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-
> offsetof.patch: New file.
> * gnu/local.mk: Register patch files.
> 
> Change-Id: I896b8f781054442e4db4a7220d526b8f2878873c
> ---
>  gnu/local.mk                                  |  3 +
>  gnu/packages/game-development.scm             | 75 ++++++++++++++++
>  ...tools-add-check-for-sse2-in-light.cc.patch | 31 +++++++
>  ...-tools-gcc-11-pass-const-to-offsetof.patch | 87
> +++++++++++++++++++
>  4 files changed, 196 insertions(+)
>  create mode 100644 gnu/packages/patches/ericw-tools-add-check-for-
> sse2-in-light.cc.patch
>  create mode 100644 gnu/packages/patches/ericw-tools-gcc-11-pass-
> const-to-offsetof.patch
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index fcdf174099..bb7ec9960c 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -67,6 +67,7 @@
>  # Copyright © 2024 David Elsing <david.elsing@posteo.net>
>  # Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
>  # Copyright © 2024 Fabio Natali <me@fabionatali.com>
> +# Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
>  #
>  # This file is part of GNU Guix.
>  #
> @@ -1200,6 +1201,8 @@ dist_patch_DATA
> =                                         \
>    %D%/packages/patches/epiphany-fix-encoding-test.patch        \
>    %D%/packages/patches/ergodox-firmware-fix-json-target.patch  \
>    %D%/packages/patches/ergodox-firmware-fix-numpad.patch       \
> +  %D%/packages/patches/ericw-tools-add-check-for-sse2-in-
> light.cc.patch        \
> +  %D%/packages/patches/ericw-tools-gcc-11-pass-const-to-
> offsetof.patch \
>    %D%/packages/patches/erlang-man-path.patch                   \
>    %D%/packages/patches/esmini-use-pkgconfig.patch              \
>    %D%/packages/patches/esmtp-add-lesmtp.patch          \
> diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-
> development.scm
> index efbbabaaf5..d61b4d633a 100644
> --- a/gnu/packages/game-development.scm
> +++ b/gnu/packages/game-development.scm
> @@ -2394,6 +2394,81 @@ (define-public entt
>      (license (list license:expat        ; code
>                     license:cc-by4.0)))) ; documentation
>  
> +(define-public ericw-tools
> +  (package
> +    (name "ericw-tools")
> +    (version "0.18.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference (url
> "https://github.com/ericwa/ericw-tools")
> +                           (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> "11sap7qv0rlhw8q25azvhgjcwiql3zam09q0gim3i04cg6fkh0vp"))
> +       (patches
> +        (search-patches "ericw-tools-add-check-for-sse2-in-
> light.cc.patch"
> +                        "ericw-tools-gcc-11-pass-const-to-
> offsetof.patch"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     (list #:configure-flags #~(list "-DENABLE_LIGHTPREVIEW=OFF")
> +           #:phases
> +           #~(modify-phases %standard-phases
> +               (add-after 'unpack 'disable-copying-embree-files
> +                 (lambda _
> +                   ;; Tries to copy files from embree, disable it.
> +                   (substitute* "light/CMakeLists.txt"
> +                     (("install\\\(FILES \\$\\{EMBREE")
> +                      "#install(FILES ${EMBREE"))))
> +               (add-after 'install 'rename-binaries
> +                 (lambda _
> +                   ;; Rename binaries to prevent collisions with
> other
> +                   ;; packages.
> +                   (rename-file (string-append #$output
> "/bin/bspinfo")
> +                                (string-append #$output
> "/bin/qbspinfo"))
> +                   (rename-file (string-append #$output
> "/bin/bsputil")
> +                                (string-append #$output
> "/bin/qbsputil"))
> +                   (rename-file (string-append #$output
> "/bin/light")
> +                                (string-append #$output
> "/bin/qlight"))
> +                   (rename-file (string-append #$output "/bin/vis")
> +                                (string-append #$output
> "/bin/qvis"))))
> +               (add-after 'install-license-files 'clean-up-bin-
> directory
> +                 (lambda _
> +                   ;; Install target copies text documents to
> #$output/bin, move
> +                   ;; them to #$output/share/doc.
> +                   (delete-file (string-append #$output
> "/bin/gpl_v3.txt"))
> +                   (rename-file
> +                    (string-append #$output "/bin/changelog.txt")
> +                    (string-append #$output "/share/doc/"
> +                                   #$(package-name this-package) "-"
> +                                   #$(package-version this-package)
> +                                   "/changelog.txt"))
> +                   (rename-file
> +                    (string-append #$output "/bin/README.md")
> +                    (string-append #$output "/share/doc/"
> +                                   #$(package-name this-package) "-"
> +                                   #$(package-version this-package)
> +                                   "/README.md")))))
> +           #:tests? #f)) ; No tests
> +    (inputs (list embree-2))
> +    (home-page "https://ericwa.github.io/ericw-tools/")
> +    (synopsis "Quake/Hexen 2 map compiling tools")
I'd swap that around: Map compiling tools for Quake/Hexen 2
> +    (description "Collection of command line utilities for building
> Quake levels
> +and working with various Quake file formats.  A brief description of
> the tools
> +are listed below.
> +
> +Included utilities:
> +
> +@itemize @bullet
> +@item qbsp - Used for turning a .map file into a playable .bsp file.
> +@item qlight - Used for lighting a level after the bsp stage.  This
> util was
> +previously known as TyrLite.
> +@item qvis - Creates the potentially visible set (PVS) for a bsp.
> +@item qbspinfo - Print stats about the data contained in a bsp file.
> +@item qbsputil - Simple tool for manipulation of bsp file data.
> +@end itemize")
> +    (license license:gpl2+)))
Descriptions should consist of complete sentences.  I think the
included utilities are better summarized than explained bullet point by
bullet point, but that's just my own bias.

Cheers

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 1/3] gnu: Add embree-2.
  2024-09-20  7:58   ` Liliana Marie Prikler
@ 2024-09-21  0:35     ` James Smith via Guix-patches via
  0 siblings, 0 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-21  0:35 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 73287

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Sonntag, dem 15.09.2024 um 19:16 -0700 schrieb James Smith:
>> +    ;; Tries to build with SSE2 and AVX support on ARM, so disable
>> building for
>> +    ;; those systems.
> Comments should be full sentences.  Also, this is a hint that it uses
> SSE2 and AVX on the platforms below too – we should disable them, as
> they won't work with every CPU.
I've investigated on disabling them, but it seems that embree 2 (and 3
for that matter) has a hard requirement for SSE2 and have updated the
comment as such. I've gone ahead and implemented your suggestions for
the other patches though and will be sending them shortly.
>> +    (supported-systems (list "i686-linux" "x86_64-linux"))))
>> +
>
> Cheers




^ permalink raw reply	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH v2 1/3] gnu: Add embree-2.
  2024-09-16  2:10 [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
                   ` (2 preceding siblings ...)
  2024-09-16  2:16 ` [bug#73287] [PATCH 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
@ 2024-09-21  0:38 ` James Smith via Guix-patches via
  2024-09-21  0:38   ` [bug#73287] [PATCH v2 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
  2024-09-21  0:38   ` [bug#73287] [PATCH v2 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
       [not found] ` <handler.73287.B.172645275019055.ack@debbugs.gnu.org>
  2024-12-08  3:48 ` [bug#73287] [PATCH v4 1/3] gnu: Add embree-2 James Smith via Guix-patches via
  5 siblings, 2 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-21  0:38 UTC (permalink / raw)
  To: 73287; +Cc: James Smith

* gnu/packages/graphics.scm: (embree-2): New variable.

Change-Id: I2b2143b4d93c402ba940d408280ef1b37ab552ea
---
 gnu/packages/graphics.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index edaa905c7a..171cbce24d 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
 ;;; Copyright © 2023 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2023, 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;; Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -490,6 +491,27 @@ (define-public embree-3
                (base32
                 "1kcvz7g6j56anv9zjyd3gidxl46vipw0gg82lns12m45cd43iwxm"))))))
 
+(define-public embree-2
+  (package/inherit embree
+    (version "2.17.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url "https://github.com/RenderKit/embree")
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name embree) version))
+       (sha256
+        (base32 "19v60zdfix33c772x6dzmhsarhafsns8qy7c2ysqr7a9j16whgql"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments embree)
+       ((#:configure-flags configure-flags)
+        #~(append (list "-DEMBREE_MAX_ISA=NONE" "-DEMBREE_TUTORIALS=OFF")
+              #$configure-flags))))
+    (inputs (modify-inputs (package-inputs embree)
+              (replace "tbb" tbb-2020)))
+    ;; Embree requires SSE2 support, so build only for x86-based architectures.
+    (supported-systems (list "i686-linux" "x86_64-linux"))))
+
 (define-public openvdb
   (package
     (name "openvdb")

base-commit: e9d903f146865db5948abd271a5c7e763681b4e9
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH v2 2/3] gnu: Add ericw-tools.
  2024-09-21  0:38 ` [bug#73287] [PATCH v2 1/3] gnu: Add embree-2 James Smith via Guix-patches via
@ 2024-09-21  0:38   ` James Smith via Guix-patches via
  2024-09-21  0:38   ` [bug#73287] [PATCH v2 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
  1 sibling, 0 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-21  0:38 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm: (ericw-tools): New variable.
* gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch: New file.
* gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch: New file.
* gnu/local.mk: Register patch files.

Change-Id: I896b8f781054442e4db4a7220d526b8f2878873c
---
 gnu/local.mk                                  |  3 +
 gnu/packages/game-development.scm             | 67 ++++++++++++++
 ...tools-add-check-for-sse2-in-light.cc.patch | 31 +++++++
 ...-tools-gcc-11-pass-const-to-offsetof.patch | 87 +++++++++++++++++++
 4 files changed, 188 insertions(+)
 create mode 100644 gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
 create mode 100644 gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a092122d22..616af50410 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -67,6 +67,7 @@
 # Copyright © 2024 David Elsing <david.elsing@posteo.net>
 # Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
 # Copyright © 2024 Fabio Natali <me@fabionatali.com>
+# Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
 #
 # This file is part of GNU Guix.
 #
@@ -1201,6 +1202,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/epiphany-fix-encoding-test.patch	\
   %D%/packages/patches/ergodox-firmware-fix-json-target.patch	\
   %D%/packages/patches/ergodox-firmware-fix-numpad.patch	\
+  %D%/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch	\
+  %D%/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch	\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/esmini-use-pkgconfig.patch		\
   %D%/packages/patches/esmtp-add-lesmtp.patch		\
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 0bae7cfe11..0b3171d1a8 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2394,6 +2394,73 @@ (define-public entt
     (license (list license:expat        ; code
                    license:cc-by4.0)))) ; documentation
 
+(define-public ericw-tools
+  (package
+    (name "ericw-tools")
+    (version "0.18.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url "https://github.com/ericwa/ericw-tools")
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11sap7qv0rlhw8q25azvhgjcwiql3zam09q0gim3i04cg6fkh0vp"))
+       (patches
+        (search-patches "ericw-tools-add-check-for-sse2-in-light.cc.patch"
+                        "ericw-tools-gcc-11-pass-const-to-offsetof.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DENABLE_LIGHTPREVIEW=OFF")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'disable-copying-embree-files
+                 (lambda _
+                   ;; Tries to copy files from embree, disable it.
+                   (substitute* "light/CMakeLists.txt"
+                     (("install\\\(FILES \\$\\{EMBREE")
+                      "#install(FILES ${EMBREE"))))
+               (add-after 'install 'rename-binaries
+                 (lambda _
+                   ;; Rename binaries to prevent collisions with other
+                   ;; packages.
+                   (rename-file (string-append #$output "/bin/bspinfo")
+                                (string-append #$output "/bin/qbspinfo"))
+                   (rename-file (string-append #$output "/bin/bsputil")
+                                (string-append #$output "/bin/qbsputil"))
+                   (rename-file (string-append #$output "/bin/light")
+                                (string-append #$output "/bin/qlight"))
+                   (rename-file (string-append #$output "/bin/vis")
+                                (string-append #$output "/bin/qvis"))))
+               (add-after 'install-license-files 'clean-up-bin-directory
+                 (lambda _
+                   ;; Install target copies text documents to #$output/bin, move
+                   ;; them to #$output/share/doc.
+                   (delete-file (string-append #$output "/bin/gpl_v3.txt"))
+                   (rename-file
+                    (string-append #$output "/bin/changelog.txt")
+                    (string-append #$output "/share/doc/"
+                                   #$(package-name this-package) "-"
+                                   #$(package-version this-package)
+                                   "/changelog.txt"))
+                   (rename-file
+                    (string-append #$output "/bin/README.md")
+                    (string-append #$output "/share/doc/"
+                                   #$(package-name this-package) "-"
+                                   #$(package-version this-package)
+                                   "/README.md")))))
+           #:tests? #f)) ; No tests
+    (inputs (list embree-2))
+    (home-page "https://ericwa.github.io/ericw-tools/")
+    (synopsis "Map compiling tools for Quake/Hexen 2")
+    (description "A collection of command line utilities used for building
+Quake maps as well as working with various Quake file formats.  The utilities
+include @command{qbsp} for building the geometry, @command{qvis} for
+calculating visibility, @command{qlight} for lighting, @command{bspinfo} for
+getting information, and @command{bsputil} for basic editing of data in a map
+file.")
+    (license license:gpl2+)))
+
 (define-public eureka
   (package
     (name "eureka")
diff --git a/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch b/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
new file mode 100644
index 0000000000..4c95b8570d
--- /dev/null
+++ b/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
@@ -0,0 +1,31 @@
+From 982ef5276bb231ded12c45a686b0875594175774 Mon Sep 17 00:00:00 2001
+From: Bryan Haley <bryanmhaley@gmail.com>
+Date: Mon, 28 Mar 2022 22:05:28 -0700
+Subject: [PATCH] Add check for SSE2 in light.cc (#328)
+
+---
+ light/light.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/light/light.cc b/light/light.cc
+index 7e23d040f..c00844643 100644
+--- a/light/light.cc
++++ b/light/light.cc
+@@ -33,7 +33,7 @@
+ #include <common/polylib.hh>
+ #include <common/bsputils.hh>
+ 
+-#ifdef HAVE_EMBREE
++#if defined(HAVE_EMBREE) && defined (__SSE2__)
+ #include <xmmintrin.h>
+ //#include <pmmintrin.h>
+ #endif
+@@ -255,7 +255,7 @@ LightThread(void *arg)
+ {
+     const mbsp_t *bsp = (const mbsp_t *)arg;
+ 
+-#ifdef HAVE_EMBREE
++#if defined(HAVE_EMBREE) && defined (__SSE2__)
+     _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
+ //    _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
+ #endif
diff --git a/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch b/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch
new file mode 100644
index 0000000000..6da4179a9e
--- /dev/null
+++ b/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch
@@ -0,0 +1,87 @@
+From c9570260fa895dde5a21272d76f9a3b05d59efdd Mon Sep 17 00:00:00 2001
+From: Eric Wasylishen <ewasylishen@gmail.com>
+Date: Sun, 30 May 2021 23:12:17 -0600
+Subject: [PATCH] gcc 11: pass constant to offsetof
+
+---
+ common/polylib.cc |  5 ++++-
+ qbsp/util.cc      |  5 ++++-
+ qbsp/winding.cc   |  4 +++-
+ vis/vis.cc        | 10 ++++++++--
+ 4 files changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/common/polylib.cc b/common/polylib.cc
+index 6397b3107..c8e1afbff 100644
+--- a/common/polylib.cc
++++ b/common/polylib.cc
+@@ -230,7 +230,10 @@ polylib::CopyWinding(const winding_t * w)
+     int size;
+     winding_t *c;
+ 
+-    size = offsetof(winding_t, p[w->numpoints]);
++    //size = offsetof(winding_t, p[w->numpoints]);
++    size = offsetof(winding_t, p[0]);
++    size += w->numpoints * sizeof(w->p[0]);
++
+     c = static_cast<winding_t *>(malloc(size));
+     memcpy(c, w, size);
+     return c;
+diff --git a/qbsp/util.cc b/qbsp/util.cc
+index e8baf7205..16c9077f1 100644
+--- a/qbsp/util.cc
++++ b/qbsp/util.cc
+@@ -53,7 +53,10 @@ AllocMem(int Type, int cElements, bool fZero)
+         if (cElements > MAX_POINTS_ON_WINDING)
+             Error("Too many points (%d) on winding (%s)", cElements, __func__);
+ 
+-        cSize = offsetof(winding_t, points[cElements]) + sizeof(int);
++        //cSize = offsetof(winding_t, points[cElements]) + sizeof(int);
++        cSize = offsetof(winding_t, points[0]);
++        cSize += cElements * sizeof(static_cast<winding_t*>(nullptr)->points[0]);
++        cSize += sizeof(int);
+ 
+         // Set cElements to 1 so bookkeeping works OK
+         cElements = 1;
+diff --git a/qbsp/winding.cc b/qbsp/winding.cc
+index 1af1d096c..6e286c387 100644
+--- a/qbsp/winding.cc
++++ b/qbsp/winding.cc
+@@ -106,7 +106,9 @@ CopyWinding(const winding_t *w)
+     winding_t *c;
+ 
+     c = (winding_t *)AllocMem(WINDING, w->numpoints, false);
+-    size = offsetof(winding_t, points[w->numpoints]);
++    //size = offsetof(winding_t, points[w->numpoints]);
++    size = offsetof(winding_t, points[0]);
++    size += w->numpoints * sizeof(w->points[0]);
+     memcpy(c, w, size);
+ 
+     return c;
+diff --git a/vis/vis.cc b/vis/vis.cc
+index 9fb0ea9ea..ec43a8a5f 100644
+--- a/vis/vis.cc
++++ b/vis/vis.cc
+@@ -127,7 +127,10 @@ NewWinding(int points)
+     if (points > MAX_WINDING)
+         Error("%s: %i points", __func__, points);
+ 
+-    size = offsetof(winding_t, points[points]);
++    //size = offsetof(winding_t, points[points]);
++    size = offsetof(winding_t, points[0]);
++    size += points * sizeof(w->points[0]);
++
+     w = static_cast<winding_t *>(malloc(size));
+     memset(w, 0, size);
+ 
+@@ -178,7 +181,10 @@ CopyWinding(const winding_t * w)
+     int size;
+     winding_t *c;
+ 
+-    size = offsetof(winding_t, points[w->numpoints]);
++    //size = offsetof(winding_t, points[w->numpoints]);
++    size = offsetof(winding_t, points[0]);
++    size += w->numpoints * sizeof(w->points[0]);
++
+     c = static_cast<winding_t *>(malloc(size));
+     memcpy(c, w, size);
+     return c;
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH v2 3/3] gnu: Add trenchbroom.
  2024-09-21  0:38 ` [bug#73287] [PATCH v2 1/3] gnu: Add embree-2 James Smith via Guix-patches via
  2024-09-21  0:38   ` [bug#73287] [PATCH v2 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
@ 2024-09-21  0:38   ` James Smith via Guix-patches via
  1 sibling, 0 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-09-21  0:38 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm: (trenchbroom): New variable.

Change-Id: I50691b1db2010cd8c2c7f04bdfd80278b9e14aed
---
 gnu/packages/game-development.scm | 93 +++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 0b3171d1a8..4e03734072 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -91,12 +91,14 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages music)
@@ -104,6 +106,7 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
@@ -121,6 +124,7 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages web)
@@ -674,6 +678,95 @@ (define-public tiled
     ;; under BSD-2.
     (license license:gpl2+)))
 
+(define-public trenchbroom
+  (package
+    (name "trenchbroom")
+    (version "2024.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TrenchBroom/TrenchBroom")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xysz7rkjy11wp9sshdqllmlw8qb65f1zlljpw3q22483szwzxnb"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "-DCMAKE_BUILD_TYPE=Release" "-G" "Unix Makefiles"
+                   "-DCMAKE_PREFIX_PATH=cmake/packages"
+                   (string-append "-DFREEIMAGE_INCLUDE_PATH="
+                                  #$freeimage "/include")
+                   (string-append "-DFREEIMAGE_LIBRARY="
+                                  #$freeimage "/lib/libfreeimage.so")
+                   (string-append "-Dfreetype_INCLUDE_DIR="
+                                  #$freetype "/include/freetype2")
+                   (string-append "-Dfreetype_LIBRARY="
+                                  #$freetype "/lib/libfreetype.so"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-build-system
+                 (lambda _
+                   (substitute* "CMakeLists.txt"
+                     (("set\\(CMAKE_TOOLCHAIN_FILE")
+                      "#set(CMAKE_TOOLCHAIN_FILE"))
+                   (substitute* "app/CMakeLists.txt"
+                     (("/usr") #$output))))
+               (add-before 'build 'set-environment-variables
+                 (lambda _
+                   ;; Set home so fontconfig can write cache.
+                   (setenv "HOME" (getenv "TEMP"))
+                   ;; Set QT platform for offscreen rendering.
+                   (setenv "QT_QPA_PLATFORM" "offscreen")
+                   (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))))
+               (add-after 'install 'wrap-trenchbroom
+                 (lambda _
+                   (wrap-program (string-append #$output "/bin/trenchbroom")
+                     ;; TrenchBroom needs $XDG_DATA_DIRS set to find game
+                     ;; configs.
+                     `("XDG_DATA_DIRS" ":" prefix
+                       (,(string-append #$output "/share")))
+                     ;; TrenchBroom also doesn't work well with Wayland backend.
+                     '("QT_QPA_PLATFORM" = ("xcb")))))
+               (add-after 'install 'install-desktop-file
+                 (lambda _
+                   (make-desktop-entry-file
+                    (string-append #$output "/share/applications/"
+                                   #$(package-name this-package) ".desktop")
+                    #:name "TrenchBroom"
+                    #:comment #$(package-synopsis this-package)
+                    #:exec #$name
+                    #:icon #$name
+                    #:categories '("Development")
+                    #:keywords '("quake" "level" "editor")))))
+           #:tests? #f)) ; No tests.
+    (inputs
+     (list assimp
+           bash-minimal
+           catch2
+           fmt
+           freeglut
+           freeimage
+           freetype
+           glew
+           glm
+           glu
+           libxxf86vm
+           mesa
+           miniz
+           qtbase-5
+           qtsvg-5
+           tinyxml2))
+    (native-inputs (list git pandoc python p7zip))
+    (home-page "https://kristianduske.com/trenchbroom/")
+    (synopsis "Cross-platform level editor for Quake-engine based games")
+    (description "TrenchBroom is a cross-platform level editor for
+Quake-engine based games.  It supports Quake, Quake 2, Hexen 2, as well as
+other games.  TrenchBroom provides many simple and advanced tools to create
+complex and interesting levels.")
+    (license license:gpl3+)))
+
 (define-public tsukundere
   (package
     (name "tsukundere")
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom.
       [not found] ` <handler.73287.B.172645275019055.ack@debbugs.gnu.org>
@ 2024-10-27 14:30   ` James Smith via Guix-patches via
  0 siblings, 0 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-10-27 14:30 UTC (permalink / raw)
  To: 73287

Hi,

I've waited about a month after sending a v2 and have gotten no
responses. Are there any more changes I need to make for a v3, or do I
just need to rebase onto current master?

Currently, the blocker I'm aware of is Embree 2 has a hard requirement
for SSE2. I'm thinking about mentioning it in the description when
sending v3, but I'd like to get a second opinion.

Thanks,

James




^ permalink raw reply	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH v4 1/3] gnu: Add embree-2.
  2024-09-16  2:10 [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
                   ` (4 preceding siblings ...)
       [not found] ` <handler.73287.B.172645275019055.ack@debbugs.gnu.org>
@ 2024-12-08  3:48 ` James Smith via Guix-patches via
  2024-12-08  3:48   ` [bug#73287] [PATCH v4 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
  2024-12-08  3:48   ` [bug#73287] [PATCH v4 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
  5 siblings, 2 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-12-08  3:48 UTC (permalink / raw)
  To: 73287; +Cc: James Smith

* gnu/packages/graphics.scm: (embree-2): New variable.

Change-Id: I2b2143b4d93c402ba940d408280ef1b37ab552ea
---
 gnu/packages/graphics.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index f33e9d3fcb..b1df26bca5 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2023 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2023, 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;; Copyright © 2024 Ivan Vilata-i-Balaguer <ivan@selidor.net>
+;;; Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -491,6 +492,30 @@ (define-public embree-3
                (base32
                 "1kcvz7g6j56anv9zjyd3gidxl46vipw0gg82lns12m45cd43iwxm"))))))
 
+(define-public embree-2
+  (package/inherit embree
+    (version "2.17.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url "https://github.com/RenderKit/embree")
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name embree) version))
+       (sha256
+        (base32 "19v60zdfix33c772x6dzmhsarhafsns8qy7c2ysqr7a9j16whgql"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments embree)
+       ((#:configure-flags configure-flags)
+        #~(append (list "-DEMBREE_MAX_ISA=NONE" "-DEMBREE_TUTORIALS=OFF")
+              #$configure-flags))))
+    (inputs (modify-inputs (package-inputs embree)
+              (replace "tbb" tbb-2020)))
+    ;; Embree requires SSE2 support, so build only for x86-based architectures.
+    (supported-systems (list "i686-linux" "x86_64-linux"))
+    (description (string-append (package-description embree) "
+
+Please note that this version requires a processor with SSE2 support."))))
+
 (define-public openvdb
   (package
     (name "openvdb")

base-commit: bc630c5ebed27edd821ec363706f8b9cf1ee05cc
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH v4 2/3] gnu: Add ericw-tools.
  2024-12-08  3:48 ` [bug#73287] [PATCH v4 1/3] gnu: Add embree-2 James Smith via Guix-patches via
@ 2024-12-08  3:48   ` James Smith via Guix-patches via
  2024-12-08  3:48   ` [bug#73287] [PATCH v4 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
  1 sibling, 0 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-12-08  3:48 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm: (ericw-tools): New variable.
* gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch: New file.
* gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch: New file.
* gnu/local.mk: Register patch files.

Change-Id: I896b8f781054442e4db4a7220d526b8f2878873c
---
 gnu/local.mk                                  |  3 +
 gnu/packages/game-development.scm             | 67 ++++++++++++++
 ...tools-add-check-for-sse2-in-light.cc.patch | 34 +++++++
 ...-tools-gcc-11-pass-const-to-offsetof.patch | 90 +++++++++++++++++++
 4 files changed, 194 insertions(+)
 create mode 100644 gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
 create mode 100644 gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a7bd32453b..5a3a762080 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -69,6 +69,7 @@
 # Copyright © 2024 Fabio Natali <me@fabionatali.com>
 # Copyright © 2024 Noé Lopez <noelopez@free.fr>
 # Copyright © 2024 Runciter <runciter@whispers-vpn.org>
+# Copyright © 2024 James Smith <jsubuntuxp@disroot.org>
 #
 # This file is part of GNU Guix.
 #
@@ -1211,6 +1212,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/epiphany-fix-encoding-test.patch	\
   %D%/packages/patches/ergodox-firmware-fix-json-target.patch	\
   %D%/packages/patches/ergodox-firmware-fix-numpad.patch	\
+  %D%/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch	\
+  %D%/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch	\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/esmini-use-pkgconfig.patch		\
   %D%/packages/patches/esmtp-add-lesmtp.patch		\
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 6be9d746c7..2aee26593c 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2382,6 +2382,73 @@ (define-public entt
     (license (list license:expat        ; code
                    license:cc-by4.0)))) ; documentation
 
+(define-public ericw-tools
+  (package
+    (name "ericw-tools")
+    (version "0.18.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url "https://github.com/ericwa/ericw-tools")
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11sap7qv0rlhw8q25azvhgjcwiql3zam09q0gim3i04cg6fkh0vp"))
+       (patches
+        (search-patches "ericw-tools-add-check-for-sse2-in-light.cc.patch"
+                        "ericw-tools-gcc-11-pass-const-to-offsetof.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DENABLE_LIGHTPREVIEW=OFF")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'disable-copying-embree-files
+                 (lambda _
+                   ;; Tries to copy files from embree, disable it.
+                   (substitute* "light/CMakeLists.txt"
+                     (("install\\\(FILES \\$\\{EMBREE")
+                      "#install(FILES ${EMBREE"))))
+               (add-after 'install 'rename-binaries
+                 (lambda _
+                   ;; Rename binaries to prevent collisions with other
+                   ;; packages.
+                   (rename-file (string-append #$output "/bin/bspinfo")
+                                (string-append #$output "/bin/qbspinfo"))
+                   (rename-file (string-append #$output "/bin/bsputil")
+                                (string-append #$output "/bin/qbsputil"))
+                   (rename-file (string-append #$output "/bin/light")
+                                (string-append #$output "/bin/qlight"))
+                   (rename-file (string-append #$output "/bin/vis")
+                                (string-append #$output "/bin/qvis"))))
+               (add-after 'install-license-files 'clean-up-bin-directory
+                 (lambda _
+                   ;; Install target copies text documents to #$output/bin, move
+                   ;; them to #$output/share/doc.
+                   (delete-file (string-append #$output "/bin/gpl_v3.txt"))
+                   (rename-file
+                    (string-append #$output "/bin/changelog.txt")
+                    (string-append #$output "/share/doc/"
+                                   #$(package-name this-package) "-"
+                                   #$(package-version this-package)
+                                   "/changelog.txt"))
+                   (rename-file
+                    (string-append #$output "/bin/README.md")
+                    (string-append #$output "/share/doc/"
+                                   #$(package-name this-package) "-"
+                                   #$(package-version this-package)
+                                   "/README.md")))))
+           #:tests? #f)) ; No tests
+    (inputs (list embree-2))
+    (home-page "https://ericwa.github.io/ericw-tools/")
+    (synopsis "Map compiling tools for Quake/Hexen 2")
+    (description "A collection of command line utilities used for building
+Quake maps as well as working with various Quake file formats.  The utilities
+include @command{qbsp} for building the geometry, @command{qvis} for
+calculating visibility, @command{qlight} for lighting, @command{bspinfo} for
+getting information, and @command{bsputil} for basic editing of data in a map
+file.")
+    (license license:gpl2+)))
+
 (define-public eureka
   (package
     (name "eureka")
diff --git a/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch b/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
new file mode 100644
index 0000000000..5dee955a95
--- /dev/null
+++ b/gnu/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch
@@ -0,0 +1,34 @@
+This patch is from upstream and shouldn't be needed in the next release.
+https://github.com/ericwa/ericw-tools/commit/982ef5276bb231ded12c45a686b0875594175774.patch
+
+From 982ef5276bb231ded12c45a686b0875594175774 Mon Sep 17 00:00:00 2001
+From: Bryan Haley <bryanmhaley@gmail.com>
+Date: Mon, 28 Mar 2022 22:05:28 -0700
+Subject: [PATCH] Add check for SSE2 in light.cc (#328)
+
+---
+ light/light.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/light/light.cc b/light/light.cc
+index 7e23d040f..c00844643 100644
+--- a/light/light.cc
++++ b/light/light.cc
+@@ -33,7 +33,7 @@
+ #include <common/polylib.hh>
+ #include <common/bsputils.hh>
+ 
+-#ifdef HAVE_EMBREE
++#if defined(HAVE_EMBREE) && defined (__SSE2__)
+ #include <xmmintrin.h>
+ //#include <pmmintrin.h>
+ #endif
+@@ -255,7 +255,7 @@ LightThread(void *arg)
+ {
+     const mbsp_t *bsp = (const mbsp_t *)arg;
+ 
+-#ifdef HAVE_EMBREE
++#if defined(HAVE_EMBREE) && defined (__SSE2__)
+     _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
+ //    _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
+ #endif
diff --git a/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch b/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch
new file mode 100644
index 0000000000..12ec4400d7
--- /dev/null
+++ b/gnu/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch
@@ -0,0 +1,90 @@
+This patch is from upstream and shouldn't be needed in the next release.
+https://github.com/ericwa/ericw-tools/commit/c9570260fa895dde5a21272d76f9a3b05d59efdd.patch
+
+From c9570260fa895dde5a21272d76f9a3b05d59efdd Mon Sep 17 00:00:00 2001
+From: Eric Wasylishen <ewasylishen@gmail.com>
+Date: Sun, 30 May 2021 23:12:17 -0600
+Subject: [PATCH] gcc 11: pass constant to offsetof
+
+---
+ common/polylib.cc |  5 ++++-
+ qbsp/util.cc      |  5 ++++-
+ qbsp/winding.cc   |  4 +++-
+ vis/vis.cc        | 10 ++++++++--
+ 4 files changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/common/polylib.cc b/common/polylib.cc
+index 6397b3107..c8e1afbff 100644
+--- a/common/polylib.cc
++++ b/common/polylib.cc
+@@ -230,7 +230,10 @@ polylib::CopyWinding(const winding_t * w)
+     int size;
+     winding_t *c;
+ 
+-    size = offsetof(winding_t, p[w->numpoints]);
++    //size = offsetof(winding_t, p[w->numpoints]);
++    size = offsetof(winding_t, p[0]);
++    size += w->numpoints * sizeof(w->p[0]);
++
+     c = static_cast<winding_t *>(malloc(size));
+     memcpy(c, w, size);
+     return c;
+diff --git a/qbsp/util.cc b/qbsp/util.cc
+index e8baf7205..16c9077f1 100644
+--- a/qbsp/util.cc
++++ b/qbsp/util.cc
+@@ -53,7 +53,10 @@ AllocMem(int Type, int cElements, bool fZero)
+         if (cElements > MAX_POINTS_ON_WINDING)
+             Error("Too many points (%d) on winding (%s)", cElements, __func__);
+ 
+-        cSize = offsetof(winding_t, points[cElements]) + sizeof(int);
++        //cSize = offsetof(winding_t, points[cElements]) + sizeof(int);
++        cSize = offsetof(winding_t, points[0]);
++        cSize += cElements * sizeof(static_cast<winding_t*>(nullptr)->points[0]);
++        cSize += sizeof(int);
+ 
+         // Set cElements to 1 so bookkeeping works OK
+         cElements = 1;
+diff --git a/qbsp/winding.cc b/qbsp/winding.cc
+index 1af1d096c..6e286c387 100644
+--- a/qbsp/winding.cc
++++ b/qbsp/winding.cc
+@@ -106,7 +106,9 @@ CopyWinding(const winding_t *w)
+     winding_t *c;
+ 
+     c = (winding_t *)AllocMem(WINDING, w->numpoints, false);
+-    size = offsetof(winding_t, points[w->numpoints]);
++    //size = offsetof(winding_t, points[w->numpoints]);
++    size = offsetof(winding_t, points[0]);
++    size += w->numpoints * sizeof(w->points[0]);
+     memcpy(c, w, size);
+ 
+     return c;
+diff --git a/vis/vis.cc b/vis/vis.cc
+index 9fb0ea9ea..ec43a8a5f 100644
+--- a/vis/vis.cc
++++ b/vis/vis.cc
+@@ -127,7 +127,10 @@ NewWinding(int points)
+     if (points > MAX_WINDING)
+         Error("%s: %i points", __func__, points);
+ 
+-    size = offsetof(winding_t, points[points]);
++    //size = offsetof(winding_t, points[points]);
++    size = offsetof(winding_t, points[0]);
++    size += points * sizeof(w->points[0]);
++
+     w = static_cast<winding_t *>(malloc(size));
+     memset(w, 0, size);
+ 
+@@ -178,7 +181,10 @@ CopyWinding(const winding_t * w)
+     int size;
+     winding_t *c;
+ 
+-    size = offsetof(winding_t, points[w->numpoints]);
++    //size = offsetof(winding_t, points[w->numpoints]);
++    size = offsetof(winding_t, points[0]);
++    size += w->numpoints * sizeof(w->points[0]);
++
+     c = static_cast<winding_t *>(malloc(size));
+     memcpy(c, w, size);
+     return c;
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [bug#73287] [PATCH v4 3/3] gnu: Add trenchbroom.
  2024-12-08  3:48 ` [bug#73287] [PATCH v4 1/3] gnu: Add embree-2 James Smith via Guix-patches via
  2024-12-08  3:48   ` [bug#73287] [PATCH v4 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
@ 2024-12-08  3:48   ` James Smith via Guix-patches via
  1 sibling, 0 replies; 15+ messages in thread
From: James Smith via Guix-patches via @ 2024-12-08  3:48 UTC (permalink / raw)
  To: 73287
  Cc: James Smith, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm: (trenchbroom): New variable.

Change-Id: I50691b1db2010cd8c2c7f04bdfd80278b9e14aed
---
 gnu/packages/game-development.scm | 93 +++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 2aee26593c..1bc6e8fa49 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -92,12 +92,14 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages music)
@@ -105,6 +107,7 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
@@ -123,6 +126,7 @@ (define-module (gnu packages game-development)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages web)
@@ -680,6 +684,95 @@ (define-public tiled
     ;; under BSD-2.
     (license license:gpl2+)))
 
+(define-public trenchbroom
+  (package
+    (name "trenchbroom")
+    (version "2024.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TrenchBroom/TrenchBroom")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xysz7rkjy11wp9sshdqllmlw8qb65f1zlljpw3q22483szwzxnb"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "-DCMAKE_BUILD_TYPE=Release" "-G" "Unix Makefiles"
+                   "-DCMAKE_PREFIX_PATH=cmake/packages"
+                   (string-append "-DFREEIMAGE_INCLUDE_PATH="
+                                  #$freeimage "/include")
+                   (string-append "-DFREEIMAGE_LIBRARY="
+                                  #$freeimage "/lib/libfreeimage.so")
+                   (string-append "-Dfreetype_INCLUDE_DIR="
+                                  #$freetype "/include/freetype2")
+                   (string-append "-Dfreetype_LIBRARY="
+                                  #$freetype "/lib/libfreetype.so"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-build-system
+                 (lambda _
+                   (substitute* "CMakeLists.txt"
+                     (("set\\(CMAKE_TOOLCHAIN_FILE")
+                      "#set(CMAKE_TOOLCHAIN_FILE"))
+                   (substitute* "app/CMakeLists.txt"
+                     (("/usr") #$output))))
+               (add-before 'build 'set-environment-variables
+                 (lambda _
+                   ;; Set home so fontconfig can write cache.
+                   (setenv "HOME" (getenv "TEMP"))
+                   ;; Set QT platform for offscreen rendering.
+                   (setenv "QT_QPA_PLATFORM" "offscreen")
+                   (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))))
+               (add-after 'install 'wrap-trenchbroom
+                 (lambda _
+                   (wrap-program (string-append #$output "/bin/trenchbroom")
+                     ;; TrenchBroom needs $XDG_DATA_DIRS set to find game
+                     ;; configs.
+                     `("XDG_DATA_DIRS" ":" prefix
+                       (,(string-append #$output "/share")))
+                     ;; TrenchBroom also doesn't work well with Wayland backend.
+                     '("QT_QPA_PLATFORM" = ("xcb")))))
+               (add-after 'install 'install-desktop-file
+                 (lambda _
+                   (make-desktop-entry-file
+                    (string-append #$output "/share/applications/"
+                                   #$(package-name this-package) ".desktop")
+                    #:name "TrenchBroom"
+                    #:comment #$(package-synopsis this-package)
+                    #:exec #$name
+                    #:icon #$name
+                    #:categories '("Development")
+                    #:keywords '("quake" "level" "editor")))))
+           #:tests? #f)) ; No tests.
+    (inputs
+     (list assimp
+           bash-minimal
+           catch2
+           fmt
+           freeglut
+           freeimage
+           freetype
+           glew
+           glm
+           glu
+           libxxf86vm
+           mesa
+           miniz
+           qtbase-5
+           qtsvg-5
+           tinyxml2))
+    (native-inputs (list git pandoc python p7zip))
+    (home-page "https://kristianduske.com/trenchbroom/")
+    (synopsis "Cross-platform level editor for Quake-engine based games")
+    (description "TrenchBroom is a cross-platform level editor for
+Quake-engine based games.  It supports Quake, Quake 2, Hexen 2, as well as
+other games.  TrenchBroom provides many simple and advanced tools to create
+complex and interesting levels.")
+    (license license:gpl3+)))
+
 (define-public tsukundere
   (package
     (name "tsukundere")
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-12-08  3:50 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-16  2:10 [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
2024-09-16  2:16 ` [bug#73287] [PATCH 1/3] gnu: Add embree-2 James Smith via Guix-patches via
2024-09-20  7:58   ` Liliana Marie Prikler
2024-09-21  0:35     ` James Smith via Guix-patches via
2024-09-16  2:16 ` [bug#73287] [PATCH 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
2024-09-20  8:04   ` Liliana Marie Prikler
2024-09-16  2:16 ` [bug#73287] [PATCH 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
2024-09-20  8:02   ` Liliana Marie Prikler
2024-09-21  0:38 ` [bug#73287] [PATCH v2 1/3] gnu: Add embree-2 James Smith via Guix-patches via
2024-09-21  0:38   ` [bug#73287] [PATCH v2 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
2024-09-21  0:38   ` [bug#73287] [PATCH v2 3/3] gnu: Add trenchbroom James Smith via Guix-patches via
     [not found] ` <handler.73287.B.172645275019055.ack@debbugs.gnu.org>
2024-10-27 14:30   ` [bug#73287] [PATCH 0/3] Add ericw-tools and TrenchBroom James Smith via Guix-patches via
2024-12-08  3:48 ` [bug#73287] [PATCH v4 1/3] gnu: Add embree-2 James Smith via Guix-patches via
2024-12-08  3:48   ` [bug#73287] [PATCH v4 2/3] gnu: Add ericw-tools James Smith via Guix-patches via
2024-12-08  3:48   ` [bug#73287] [PATCH v4 3/3] gnu: Add trenchbroom James Smith via Guix-patches via

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.