unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#74054] [PATCH 0/3] Add Speed Dreams racing simulator
@ 2024-10-28  3:31 Maxim Cournoyer
  2024-10-28  3:35 ` [bug#74054] [PATCH 1/3] gnu: Add freesolid Maxim Cournoyer
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  3:31 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Adam Faiz, Liliana Marie Prikler,
	宋文武

This adds Speed Dreams, a racing simulator improved from TORCS, and FreeSOLID,
one of its dependencies.

Maxim Cournoyer (3):
  gnu: Add freesolid.
  gnu: plib: Build with -fPIC.
  gnu: Add speed-dreams.

 gnu/local.mk                                  |   4 +
 gnu/packages/game-development.scm             |  40 +++++-
 gnu/packages/games.scm                        | 122 ++++++++++++++++++
 gnu/packages/patches/freesolid-automake.patch |  60 +++++++++
 .../patches/freesolid-autotools.patch         |  73 +++++++++++
 .../patches/freesolid-configure.patch         |  40 ++++++
 .../patches/freesolid-pkgconfig.patch         |  46 +++++++
 7 files changed, 381 insertions(+), 4 deletions(-)
 create mode 100644 gnu/packages/patches/freesolid-automake.patch
 create mode 100644 gnu/packages/patches/freesolid-autotools.patch
 create mode 100644 gnu/packages/patches/freesolid-configure.patch
 create mode 100644 gnu/packages/patches/freesolid-pkgconfig.patch


base-commit: e4e1e16bc1b27684b55e6bf047f9f669e1a0c7b5
-- 
2.46.0





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

* [bug#74054] [PATCH 1/3] gnu: Add freesolid.
  2024-10-28  3:31 [bug#74054] [PATCH 0/3] Add Speed Dreams racing simulator Maxim Cournoyer
@ 2024-10-28  3:35 ` Maxim Cournoyer
  2024-10-28  3:35 ` [bug#74054] [PATCH 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  3:35 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm (freesolid): New variable.
* gnu/packages/patches/freesolid-configure.patch: New file.
* gnu/packages/patches/freesolid-pkgconfig.patch: Likewise.
* gnu/packages/patches/freesolid-automake.patch: Likewise.
* gnu/packages/patches/freesolid-autotools.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.

Change-Id: I557332031a30d944f451d0a62c763e5b41c4e29b
---
 gnu/local.mk                                  |  4 +
 gnu/packages/game-development.scm             | 30 ++++++++
 gnu/packages/patches/freesolid-automake.patch | 60 +++++++++++++++
 .../patches/freesolid-autotools.patch         | 73 +++++++++++++++++++
 .../patches/freesolid-configure.patch         | 40 ++++++++++
 .../patches/freesolid-pkgconfig.patch         | 46 ++++++++++++
 6 files changed, 253 insertions(+)
 create mode 100644 gnu/packages/patches/freesolid-automake.patch
 create mode 100644 gnu/packages/patches/freesolid-autotools.patch
 create mode 100644 gnu/packages/patches/freesolid-configure.patch
 create mode 100644 gnu/packages/patches/freesolid-pkgconfig.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 911af88627..73121dce5d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1289,6 +1289,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/freeimage-unbundle.patch		\
   %D%/packages/patches/freeimage-CVE-2020-21428.patch		\
   %D%/packages/patches/freeimage-CVE-2020-22524.patch		\
+  %D%/packages/patches/freesolid-automake.patch			\
+  %D%/packages/patches/freesolid-autotools.patch		\
+  %D%/packages/patches/freesolid-configure.patch		\
+  %D%/packages/patches/freesolid-pkgconfig.patch		\
   %D%/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch	\
   %D%/packages/patches/fuse-glibc-2.34.patch			\
   %D%/packages/patches/fuse-overlapping-headers.patch		\
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index ee869c9cc5..25cc021f6f 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -30,6 +30,7 @@
 ;;; Copyright © 2022 dan <i@dan.games>
 ;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2796,6 +2797,35 @@ (define-public flatzebra
 double-buffering.")
     (license license:gpl2+)))
 
+(define-public freesolid
+  (package
+    (name "freesolid")
+    (version "2.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/" name "/FreeSOLID-"
+                                  version ".zip"))
+              (sha256
+               (base32
+                "0wxqiv1ba227kwxpgwf6in9ai1lcamhmp1ib1c1chq4xvnpwdvc9"))
+              (patches (search-patches "freesolid-autotools.patch"
+                                       "freesolid-pkgconfig.patch"
+                                       "freesolid-configure.patch"
+                                       "freesolid-automake.patch"))))
+    (build-system gnu-build-system)
+    (arguments (list #:phases #~(modify-phases %standard-phases
+                                  (add-after 'unpack 'force-reboostrap
+                                    (lambda _
+                                      (delete-file "bootstrap.sh")
+                                      (delete-file "configure"))))))
+    (native-inputs (list autoconf automake libtool unzip))
+    (home-page "https://sourceforge.net/projects/freesolid/")
+    (synopsis "3D collision detection C++ library")
+    (description "FreeSOLID is a library for collision detection of
+three-dimensional objects undergoing rigid motion and deformation.  FreeSOLID
+is designed to be used in interactive 3D graphics applications.")
+    (license license:lgpl2.0+)))
+
 (define-public libccd
   (package
     (name "libccd")
diff --git a/gnu/packages/patches/freesolid-automake.patch b/gnu/packages/patches/freesolid-automake.patch
new file mode 100644
index 0000000000..157d308641
--- /dev/null
+++ b/gnu/packages/patches/freesolid-automake.patch
@@ -0,0 +1,60 @@
+FreeSOLID-2.1.1-Makefile.am-update.patch
+
+From: Alec Leamas <alec@tests.notat.diaspora.com>
+
+This patch causes a few extra header files to be installed; they are used by
+Speed-Dreams for example.
+
+Source: https://src.fedoraproject.org/rpms/FreeSOLID/raw/rawhide/f/FreeSOLID-2.1.1-Makefile.am-update.patch
+Rebased on top of 2.1.2 by Maxim Cournoyer
+Upstream-status: https://sourceforge.net/p/freesolid/patches/11/
+
+---
+
+ Makefile.am          |   20 ++++++++++++++++++--
+ libsolid/Makefile.am |    2 +-
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+--- a/Makefile.am	2024-10-28 10:57:11.026754300 +0900
++++ b/Makefile.am	2024-10-28 10:59:13.178729378 +0900
+@@ -1,5 +1,5 @@
+ ACLOCAL_AMFLAGS = -I m4
+ SUBDIRS = libmoto libbroad libsolid sample doc
+
+-EXTRA_DIST = include
++EXTRA_DIST = FreeSOLID.pc.in
+ bin_SCRIPTS = freesolid-config
+
+ pkgconfigdir         = $(libdir)/pkgconfig
+-dist_pkgconfig_DATA  = FreeSOLID.pc
++nodist_pkgconfig_DATA  = FreeSOLID.pc
++
++FreeSOLID_3Ddir = $(includedir)/FreeSOLID/3D
++FreeSOLID_3D_HEADERS =
++FreeSOLID_3D_HEADERS += include/3D/Basic.h
++FreeSOLID_3D_HEADERS += include/3D/Matrix.h
++FreeSOLID_3D_HEADERS += include/3D/Point.h
++FreeSOLID_3D_HEADERS += include/3D/Quaternion.h
++FreeSOLID_3D_HEADERS += include/3D/Tuple3.h
++FreeSOLID_3D_HEADERS += include/3D/Tuple4.h
++FreeSOLID_3D_HEADERS += include/3D/Vector.h
++
++FreeSOLID_SOLIDdir = $(includedir)/FreeSOLID/SOLID
++FreeSOLID_SOLID_HEADERS =
++FreeSOLID_SOLID_HEADERS += include/SOLID/solid.h
++FreeSOLID_SOLID_HEADERS += include/SOLID/broad.h
++FreeSOLID_SOLID_HEADERS += include/SOLID/types.h
+
+diff --git a/libsolid/Makefile.am b/libsolid/Makefile.am
+index f722be3..623b2e8 100644
+--- a/libsolid/Makefile.am
++++ b/libsolid/Makefile.am
+@@ -21,7 +21,7 @@ libFreeSOLID_la_SOURCES = \
+ 	../libmoto/MT_Vector4.cpp
+ 
+ 
+-libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ -release @VERSION@
++libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ 
+ 
+ AM_CPPFLAGS = @CPPFLAGS@
+ LIBS = @QHULL_LIBS@ -lm
diff --git a/gnu/packages/patches/freesolid-autotools.patch b/gnu/packages/patches/freesolid-autotools.patch
new file mode 100644
index 0000000000..df99bdcd67
--- /dev/null
+++ b/gnu/packages/patches/freesolid-autotools.patch
@@ -0,0 +1,73 @@
+Upstream-status: https://sourceforge.net/p/freesolid/patches/1/
+
+Resolve Autoconf warnings.
+
+diff --git a/Makefile.am b/Makefile.am
+index 4914f44..77b157a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,5 @@
++ACLOCAL_AMFLAGS = -I m4
+ SUBDIRS = libmoto libbroad libsolid sample doc
+ 
+ EXTRA_DIST = include
+-bin_SCRIPTS = freesolid-config
+\ No newline at end of file
++bin_SCRIPTS = freesolid-config
+diff --git a/configure.in b/configure.in
+index 7d61ba5..41a761c 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1,5 +1,6 @@
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT(sample/sample.cpp)
++AC_CONFIG_MACRO_DIR([m4])
+ 
+ AC_CANONICAL_SYSTEM
+ PACKAGE=FreeSOLID
+@@ -22,17 +23,14 @@ AC_PROG_CXX
+ AC_PROG_CC
+ AC_PROG_CPP
+ AC_PROG_INSTALL
+-AC_PROG_RANLIB
+ AC_PROG_LIBTOOL
+ 
+ CPPFLAGS="$CPPFLAGS -I../include -I./include -I. -I../libbroad -I../libmoto"
+ AC_SUBST(CPPFLAGS)
+ 
+ dnl Checks for libraries.
+-dnl Replace `main' with a function in -lm:
+-AC_CHECK_LIB(m, main)
+-dnl Replace `main' with a function in -lqhull:
+-AC_CHECK_LIB(qhull, main, s_have_qhull=yes)
++AC_CHECK_LIB(m, ceil)
++AC_CHECK_LIB(qhull, qh_initbuild, s_have_qhull=yes)
+ 
+ if test "X${s_have_qhull}" = Xyes; then
+   QHULL_LIBS="-lqhull"
+diff --git a/libsolid/Makefile.am b/libsolid/Makefile.am
+index cc295c7..f722be3 100644
+--- a/libsolid/Makefile.am
++++ b/libsolid/Makefile.am
+@@ -23,7 +23,7 @@ libFreeSOLID_la_SOURCES = \
+ 
+ libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ -release @VERSION@
+ 
+-CPPFLAGS = @CPPFLAGS@
++AM_CPPFLAGS = @CPPFLAGS@
+ LIBS = @QHULL_LIBS@ -lm
+ 
+ pkginclude_HEADERS = \
+diff --git a/sample/Makefile.am b/sample/Makefile.am
+index 5559fb0..eaa705f 100644
+--- a/sample/Makefile.am
++++ b/sample/Makefile.am
+@@ -4,7 +4,7 @@ sample_SOURCES = sample.cpp
+ x_wing_SOURCES = x_wing.cpp
+ teapot_SOURCES = teapot.cpp
+ 
+-CPPFLAGS = @CPPFLAGS@
++AM_CPPFLAGS = @CPPFLAGS@
+ 
+ LDADD = ../libsolid/libFreeSOLID.la
+ 
diff --git a/gnu/packages/patches/freesolid-configure.patch b/gnu/packages/patches/freesolid-configure.patch
new file mode 100644
index 0000000000..6d1c434b6f
--- /dev/null
+++ b/gnu/packages/patches/freesolid-configure.patch
@@ -0,0 +1,40 @@
+Fixes an incompatibility with Libtool 2+.
+
+Rebased on FreeSOLID-2.1.2.
+
+Originally retrieved from Fedora (see:
+https://src.fedoraproject.org/rpms/FreeSOLID/raw/rawhide/f/FreeSOLID-2.1.1-configure.patch).
+
+Upstream-status: https://sourceforge.net/p/freesolid/patches/10/
+
+--- a/configure.in	2024-10-28 10:54:46.642783784 +0900
++++ b/configure.in	2024-10-28 10:55:47.558771350 +0900
+@@ -1,8 +1,8 @@
+ dnl Process this file with autoconf to produce a configure script.
+-AC_INIT(sample/sample.cpp)
++AC_INIT
+ AC_CONFIG_MACRO_DIR([m4])
+ 
+-AC_CANONICAL_SYSTEM
++AC_CANONICAL_TARGET
+ PACKAGE=FreeSOLID
+ VERSION=2.1.1
+ FREESOLID_CURRENT=2
+@@ -15,15 +14,15 @@
+ 
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+ 
+-AM_CONFIG_HEADER(include/config.h)
++AC_CONFIG_HEADERS([include/config.h])
+ 
+ dnl Checks for programs.
+-AC_LIBTOOL_WIN32_DLL
+ AC_PROG_CXX
+ AC_PROG_CC
+ AC_PROG_CPP
+ AC_PROG_INSTALL
+ AC_PROG_LIBTOOL
++LT_INIT([win32-dll])
+ 
+ CPPFLAGS="$CPPFLAGS -I../include -I./include -I. -I../libbroad -I../libmoto"
+ AC_SUBST(CPPFLAGS)
diff --git a/gnu/packages/patches/freesolid-pkgconfig.patch b/gnu/packages/patches/freesolid-pkgconfig.patch
new file mode 100644
index 0000000000..564293c082
--- /dev/null
+++ b/gnu/packages/patches/freesolid-pkgconfig.patch
@@ -0,0 +1,46 @@
+Upstream-status: https://sourceforge.net/p/freesolid/patches/5/
+
+diff --git a/FreeSOLID.pc.in b/FreeSOLID.pc.in
+new file mode 100644
+index 0000000..c354f05
+--- /dev/null
++++ b/FreeSOLID.pc.in
+@@ -0,0 +1,12 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: FreeSolid
++Description: 3D collision detection C++ library
++Version: @VERSION@
++
++Libs: -L${libdir} -lFreeSOLID @QHULL_LIBS@
++Cflags: -I${includedir} -I${includedir}/FreeSOLID
++
+diff --git a/configure.in b/configure.in
+index 41a761c..a4bc7d4 100644
+--- a/configure.in
++++ b/configure.in
+@@ -52,4 +52,11 @@ dnl Checks for library functions.
+ AC_CHECK_FUNCS(sqrt)
+ AC_CHECK_FUNCS(fabs)
+ 
+-AC_OUTPUT(doc/Makefile sample/Makefile Makefile libbroad/Makefile libmoto/Makefile libsolid/Makefile freesolid-config)
++AC_OUTPUT([ doc/Makefile 
++            sample/Makefile 
++            Makefile 
++            libbroad/Makefile 
++            libmoto/Makefile 
++            libsolid/Makefile 
++            freesolid-config
++            FreeSOLID.pc])
+--- a/Makefile.am	2024-10-28 10:49:24.006849578 +0900
++++ b/Makefile.am	2024-10-28 10:50:13.378839511 +0900
+@@ -3,3 +3,6 @@
+ 
+ EXTRA_DIST = include
+ bin_SCRIPTS = freesolid-config
++
++pkgconfigdir         = $(libdir)/pkgconfig
++dist_pkgconfig_DATA  = FreeSOLID.pc
-- 
2.46.0





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

* [bug#74054] [PATCH 2/3] gnu: plib: Build with -fPIC.
  2024-10-28  3:31 [bug#74054] [PATCH 0/3] Add Speed Dreams racing simulator Maxim Cournoyer
  2024-10-28  3:35 ` [bug#74054] [PATCH 1/3] gnu: Add freesolid Maxim Cournoyer
@ 2024-10-28  3:35 ` Maxim Cournoyer
  2024-10-28  3:35 ` [bug#74054] [PATCH 3/3] gnu: Add speed-dreams Maxim Cournoyer
  2024-10-28  6:26 ` [bug#74054] [PATCH v2 1/3] gnu: Add freesolid Maxim Cournoyer
  3 siblings, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  3:35 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/game-development.scm (plib) [configure-flags]: New argument.
[inputs]: Move field after...
[native-inputs]: ... this one.

Change-Id: Ieddfb8814632f74c98d0e2cda949709b718c7a0d
---
 gnu/packages/game-development.scm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 25cc021f6f..73ae3ef084 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2573,10 +2573,12 @@ (define-public plib
               (patches (search-patches "plib-CVE-2011-4620.patch"
                                        "plib-CVE-2012-4552.patch"))))
     (build-system gnu-build-system)
-    (inputs
-     (list mesa libxi libxmu))
-    (native-inputs
-     (list pkg-config))
+    ;; plib exists only as a static library, per the author's choice (see:
+    ;; https://sourceforge.net/p/plib/mailman/message/10289018/).  Build it
+    ;; with PIC, so that shared programs can at least "link" to it.
+    (arguments (list #:configure-flags #~(list "CXXFLAGS=-fPIC")))
+    (native-inputs (list autoconf automake pkg-config))
+    (inputs (list mesa libxi libxmu))
     (home-page "https://plib.sourceforge.net/")
     (synopsis "Suite of portable game libraries")
     (description "PLIB is a set of libraries that will permit programmers to
-- 
2.46.0





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

* [bug#74054] [PATCH 3/3] gnu: Add speed-dreams.
  2024-10-28  3:31 [bug#74054] [PATCH 0/3] Add Speed Dreams racing simulator Maxim Cournoyer
  2024-10-28  3:35 ` [bug#74054] [PATCH 1/3] gnu: Add freesolid Maxim Cournoyer
  2024-10-28  3:35 ` [bug#74054] [PATCH 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
@ 2024-10-28  3:35 ` Maxim Cournoyer
  2024-10-28  6:26 ` [bug#74054] [PATCH v2 1/3] gnu: Add freesolid Maxim Cournoyer
  3 siblings, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  3:35 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Adam Faiz, Liliana Marie Prikler,
	宋文武

* gnu/packages/games.scm (speed-dreams): New variable.
(speed-dreams-version, speed-dreams-svn-revision): New variables.
(speed-dreams-source-tarball): New procedure.
(speed-dreams-base-tarball, speed-dreams-more-hq-cars-and-tracks-tarball)
(speed-dreams-wip-cars-and-tracks-tarball)
(speed-dreams-unmaintained-tarball): New variable.

Change-Id: Id14f3556d47a80c508177940f959448520b406fc
---
 gnu/packages/games.scm | 122 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 122 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 64b6b0941a..be96ed895b 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -8964,6 +8964,128 @@ (define-public endless-sky
                    license:cc-by-sa4.0
                    license:public-domain))))
 
+(define speed-dreams-version "2.3.0")
+(define speed-dreams-svn-revision "8786")
+(define (speed-dreams-source-tarball name sha256sum)
+  (origin
+    (method url-fetch)
+    (uri (string-append "mirror://sourceforge/speed-dreams/"
+                        speed-dreams-version "/"
+                        "speed-dreams-src-" name "-" speed-dreams-version "-r"
+                        speed-dreams-svn-revision ".tar.xz"))
+    (sha256 (base32 sha256sum))))
+
+;;; We use the release tarballs instead of the SVN repository for their
+;;; reduced weight (the tarballs do not provide the sources of the 3D models
+;;; used, which are heavy, for example).
+(define speed-dreams-base-tarball       ;about 240 MiB
+  (speed-dreams-source-tarball
+   "base" "190480qzkllykl07s6bxd5wdbjgavs7haw6mk0hgdm7bs6rqqk0d"))
+
+(define speed-dreams-hq-cars-and-tracks-tarball ;about 670 MiB
+  (speed-dreams-source-tarball
+   "hq-cars-and-tracks" "16zcgwax3n0gf79hw1dg42lzsyxbnxfw6hjxdi919q5hxgm9cgsr"))
+
+(define speed-dreams-more-hq-cars-and-tracks-tarball ;about 760 MiB
+  (speed-dreams-source-tarball
+   "more-hq-cars-and-tracks"
+   "1acwiacf77qk5azyg3bbxsydk3wsp5fvgwwnhxpk273mwszjkh56"))
+
+;;; Although these are marked as 'WIP', the game throws (non-fatal) errors
+;;; when it fails finding some "drivers" included within this pack.
+(define speed-dreams-wip-cars-and-tracks-tarball ;about 400 MiB
+  (speed-dreams-source-tarball
+   "wip-cars-and-tracks"
+   "0wqd9bpis9bg87rsqk0dyvljax4zrp9h57mz7z3zrn6fayl1nh1q"))
+
+;;; This is to allow selecting the legacy Simu V2 engine (configurable in the
+;;; game options).
+(define speed-dreams-unmaintained-tarball ;about 60 KiB
+  (speed-dreams-source-tarball
+   "unmaintained" "1cxcrjm2508najpz2b65i8gxgvgiq7fcp13xvicpiqp6xhq3hsyi"))
+
+(define-public speed-dreams
+  (package
+    (name "speed-dreams")
+    (version speed-dreams-version)
+    (source speed-dreams-base-tarball)
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:build-type "Release"
+      #:configure-flags
+      #~(list
+         "-DOPTION_OFFICIAL_ONLY=ON"                    ;build with content
+         (string-append "-DSD_BINDIR=" #$output "/bin") ;instead of 'games'
+         (string-append "-DSD_DATADIR=" #$output "/share/speed-dreams-2")
+         ;; Libdir defaults to a 'lib64/games' prefix.
+         (string-append "-DSD_LIBDIR=" #$output "/lib/speed-dreams-2")
+         ;; Use system-provided Expat and FreeSOLID
+         ;; libraries instead of the bundled ones.
+         "-DOPTION_3RDPARTY_EXPAT=ON"
+         "-DOPTION_3RDPARTY_SOLID=ON"
+         ;; Drivers and other shared objects are linked to private/internal
+         ;; shared libraries; have their location on the RUNPATH to satisfy
+         ;; the validate-runpath phase.
+         (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath="
+                        #$output "/lib/speed-dreams-2/lib")
+         ;; The following flag is to avoid bogus RUNPATH warnings from the
+         ;; validate-runpath phase; without it, -rpath links referring to the
+         ;; build directory would be baked in driver modules.
+         "-DCMAKE_BUILD_RPATH_USE_ORIGIN=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'extract-cars-and-tracks-data
+            (lambda _
+              ;; XXX: The current working directory is inside the cmake/
+              ;; sudbirectory following the unpack phase, for some reason.
+              (chdir "..")
+              (invoke "tar" "-xvf" #$speed-dreams-hq-cars-and-tracks-tarball)
+              (invoke "tar" "-xvf" #$speed-dreams-more-hq-cars-and-tracks-tarball)
+              (invoke "tar" "-xvf" #$speed-dreams-wip-cars-and-tracks-tarball)
+              (invoke "tar" "-xvf" #$speed-dreams-unmaintained-tarball)))
+          (add-after 'install 'install-desktop-entry
+            (lambda* (#:key outputs #:allow-other-keys)
+              (make-desktop-entry-file
+               (string-append #$output
+                              "/share/applications/speed-dreams.desktop")
+               #:name "Speed Dreams 2"
+               #:comment "3D racing cars simulator"
+               #:exec (search-input-file outputs "bin/speed-dreams-2")
+               #:icon (search-input-file
+                       outputs "share/speed-dreams-2/data/icons/icon.png")
+               #:categories '("Game" "Simulation")))))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list curl
+           enet
+           expat
+           freeglut
+           freesolid
+           freetype
+           libjpeg-turbo
+           libogg
+           libpng
+           libvorbis
+           openal
+           openscenegraph
+           plib
+           sdl2
+           sdl2-mixer
+           zlib))
+    (home-page "https://sourceforge.net/projects/speed-dreams/")
+    (synopsis "Car racing simulator")
+    (description "Speed Dreams is a car racing simulator featuring
+high-quality 3D graphics and an accurate physics engine, aiming for maximum
+realism.  Initially forked from TORCS, it features improvements to the
+graphics and physics simulation, and supports modern input methods such as
+gamepads by use of the SDL library.  It features more than 20 tracks and more
+than 80 cars to race with.")
+    (license (list license:gpl2+        ;game code
+                   license:lal1.3))))   ;assets
+
 (define-public stepmania
   (package
     (name "stepmania")
-- 
2.46.0





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

* [bug#74054] [PATCH v2 1/3] gnu: Add freesolid.
  2024-10-28  3:31 [bug#74054] [PATCH 0/3] Add Speed Dreams racing simulator Maxim Cournoyer
                   ` (2 preceding siblings ...)
  2024-10-28  3:35 ` [bug#74054] [PATCH 3/3] gnu: Add speed-dreams Maxim Cournoyer
@ 2024-10-28  6:26 ` Maxim Cournoyer
  2024-10-28  6:26   ` [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
  2024-10-28  6:26   ` [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams Maxim Cournoyer
  3 siblings, 2 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  6:26 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Maxim Cournoyer, Adam Faiz,
	Liliana Marie Prikler, 宋文武

* gnu/packages/game-development.scm (freesolid): New variable.
* gnu/packages/patches/freesolid-configure.patch: New file.
* gnu/packages/patches/freesolid-pkgconfig.patch: Likewise.
* gnu/packages/patches/freesolid-automake.patch: Likewise.
* gnu/packages/patches/freesolid-autotools.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.

Change-Id: I557332031a30d944f451d0a62c763e5b41c4e29b
---

Changes in v2:
 - Fix corrupted freesolid-automake.patch

 gnu/local.mk                                  |  4 +
 gnu/packages/game-development.scm             | 30 ++++++++
 gnu/packages/patches/freesolid-automake.patch | 60 +++++++++++++++
 .../patches/freesolid-autotools.patch         | 73 +++++++++++++++++++
 .../patches/freesolid-configure.patch         | 58 +++++++++++++++
 .../patches/freesolid-pkgconfig.patch         | 46 ++++++++++++
 6 files changed, 271 insertions(+)
 create mode 100644 gnu/packages/patches/freesolid-automake.patch
 create mode 100644 gnu/packages/patches/freesolid-autotools.patch
 create mode 100644 gnu/packages/patches/freesolid-configure.patch
 create mode 100644 gnu/packages/patches/freesolid-pkgconfig.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 911af88627..73121dce5d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1289,6 +1289,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/freeimage-unbundle.patch		\
   %D%/packages/patches/freeimage-CVE-2020-21428.patch		\
   %D%/packages/patches/freeimage-CVE-2020-22524.patch		\
+  %D%/packages/patches/freesolid-automake.patch			\
+  %D%/packages/patches/freesolid-autotools.patch		\
+  %D%/packages/patches/freesolid-configure.patch		\
+  %D%/packages/patches/freesolid-pkgconfig.patch		\
   %D%/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch	\
   %D%/packages/patches/fuse-glibc-2.34.patch			\
   %D%/packages/patches/fuse-overlapping-headers.patch		\
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index ee869c9cc5..25cc021f6f 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -30,6 +30,7 @@
 ;;; Copyright © 2022 dan <i@dan.games>
 ;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2796,6 +2797,35 @@ (define-public flatzebra
 double-buffering.")
     (license license:gpl2+)))
 
+(define-public freesolid
+  (package
+    (name "freesolid")
+    (version "2.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/" name "/FreeSOLID-"
+                                  version ".zip"))
+              (sha256
+               (base32
+                "0wxqiv1ba227kwxpgwf6in9ai1lcamhmp1ib1c1chq4xvnpwdvc9"))
+              (patches (search-patches "freesolid-autotools.patch"
+                                       "freesolid-pkgconfig.patch"
+                                       "freesolid-configure.patch"
+                                       "freesolid-automake.patch"))))
+    (build-system gnu-build-system)
+    (arguments (list #:phases #~(modify-phases %standard-phases
+                                  (add-after 'unpack 'force-reboostrap
+                                    (lambda _
+                                      (delete-file "bootstrap.sh")
+                                      (delete-file "configure"))))))
+    (native-inputs (list autoconf automake libtool unzip))
+    (home-page "https://sourceforge.net/projects/freesolid/")
+    (synopsis "3D collision detection C++ library")
+    (description "FreeSOLID is a library for collision detection of
+three-dimensional objects undergoing rigid motion and deformation.  FreeSOLID
+is designed to be used in interactive 3D graphics applications.")
+    (license license:lgpl2.0+)))
+
 (define-public libccd
   (package
     (name "libccd")
diff --git a/gnu/packages/patches/freesolid-automake.patch b/gnu/packages/patches/freesolid-automake.patch
new file mode 100644
index 0000000000..09e6b905a9
--- /dev/null
+++ b/gnu/packages/patches/freesolid-automake.patch
@@ -0,0 +1,60 @@
+FreeSOLID-2.1.1-Makefile.am-update.patch
+
+From: Alec Leamas <alec@tests.notat.diaspora.com>
+
+This patch causes a few extra header files to be installed; they are used by
+Speed-Dreams for example.
+
+Source: https://src.fedoraproject.org/rpms/FreeSOLID/raw/rawhide/f/FreeSOLID-2.1.1-Makefile.am-update.patch
+Rebased on top of 2.1.2 by Maxim Cournoyer
+Upstream-status: https://sourceforge.net/p/freesolid/patches/11/
+
+---
+
+ Makefile.am          |   20 ++++++++++++++++++--
+ libsolid/Makefile.am |    2 +-
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+--- a/Makefile.am	2024-10-28 15:17:22.787773430 +0900
++++ b/Makefile.am	2024-10-28 15:19:02.367752961 +0900
+@@ -1,8 +1,24 @@
+ ACLOCAL_AMFLAGS = -I m4
+ SUBDIRS = libmoto libbroad libsolid sample doc
+ 
+-EXTRA_DIST = include
++EXTRA_DIST = FreeSOLID.pc.in
+ bin_SCRIPTS = freesolid-config
+ 
+ pkgconfigdir         = $(libdir)/pkgconfig
+-dist_pkgconfig_DATA  = FreeSOLID.pc
++nodist_pkgconfig_DATA  = FreeSOLID.pc
++
++FreeSOLID_3Ddir = $(includedir)/FreeSOLID/3D
++FreeSOLID_3D_HEADERS =
++FreeSOLID_3D_HEADERS += include/3D/Basic.h
++FreeSOLID_3D_HEADERS += include/3D/Matrix.h
++FreeSOLID_3D_HEADERS += include/3D/Point.h
++FreeSOLID_3D_HEADERS += include/3D/Quaternion.h
++FreeSOLID_3D_HEADERS += include/3D/Tuple3.h
++FreeSOLID_3D_HEADERS += include/3D/Tuple4.h
++FreeSOLID_3D_HEADERS += include/3D/Vector.h
++
++FreeSOLID_SOLIDdir = $(includedir)/FreeSOLID/SOLID
++FreeSOLID_SOLID_HEADERS =
++FreeSOLID_SOLID_HEADERS += include/SOLID/solid.h
++FreeSOLID_SOLID_HEADERS += include/SOLID/broad.h
++FreeSOLID_SOLID_HEADERS += include/SOLID/types.h
+
+diff --git a/libsolid/Makefile.am b/libsolid/Makefile.am
+index f722be3..623b2e8 100644
+--- a/libsolid/Makefile.am
++++ b/libsolid/Makefile.am
+@@ -21,7 +21,7 @@ libFreeSOLID_la_SOURCES = \
+ 	../libmoto/MT_Vector4.cpp
+ 
+ 
+-libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ -release @VERSION@
++libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ 
+ 
+ AM_CPPFLAGS = @CPPFLAGS@
+ LIBS = @QHULL_LIBS@ -lm
diff --git a/gnu/packages/patches/freesolid-autotools.patch b/gnu/packages/patches/freesolid-autotools.patch
new file mode 100644
index 0000000000..df99bdcd67
--- /dev/null
+++ b/gnu/packages/patches/freesolid-autotools.patch
@@ -0,0 +1,73 @@
+Upstream-status: https://sourceforge.net/p/freesolid/patches/1/
+
+Resolve Autoconf warnings.
+
+diff --git a/Makefile.am b/Makefile.am
+index 4914f44..77b157a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,5 @@
++ACLOCAL_AMFLAGS = -I m4
+ SUBDIRS = libmoto libbroad libsolid sample doc
+ 
+ EXTRA_DIST = include
+-bin_SCRIPTS = freesolid-config
+\ No newline at end of file
++bin_SCRIPTS = freesolid-config
+diff --git a/configure.in b/configure.in
+index 7d61ba5..41a761c 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1,5 +1,6 @@
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT(sample/sample.cpp)
++AC_CONFIG_MACRO_DIR([m4])
+ 
+ AC_CANONICAL_SYSTEM
+ PACKAGE=FreeSOLID
+@@ -22,17 +23,14 @@ AC_PROG_CXX
+ AC_PROG_CC
+ AC_PROG_CPP
+ AC_PROG_INSTALL
+-AC_PROG_RANLIB
+ AC_PROG_LIBTOOL
+ 
+ CPPFLAGS="$CPPFLAGS -I../include -I./include -I. -I../libbroad -I../libmoto"
+ AC_SUBST(CPPFLAGS)
+ 
+ dnl Checks for libraries.
+-dnl Replace `main' with a function in -lm:
+-AC_CHECK_LIB(m, main)
+-dnl Replace `main' with a function in -lqhull:
+-AC_CHECK_LIB(qhull, main, s_have_qhull=yes)
++AC_CHECK_LIB(m, ceil)
++AC_CHECK_LIB(qhull, qh_initbuild, s_have_qhull=yes)
+ 
+ if test "X${s_have_qhull}" = Xyes; then
+   QHULL_LIBS="-lqhull"
+diff --git a/libsolid/Makefile.am b/libsolid/Makefile.am
+index cc295c7..f722be3 100644
+--- a/libsolid/Makefile.am
++++ b/libsolid/Makefile.am
+@@ -23,7 +23,7 @@ libFreeSOLID_la_SOURCES = \
+ 
+ libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ -release @VERSION@
+ 
+-CPPFLAGS = @CPPFLAGS@
++AM_CPPFLAGS = @CPPFLAGS@
+ LIBS = @QHULL_LIBS@ -lm
+ 
+ pkginclude_HEADERS = \
+diff --git a/sample/Makefile.am b/sample/Makefile.am
+index 5559fb0..eaa705f 100644
+--- a/sample/Makefile.am
++++ b/sample/Makefile.am
+@@ -4,7 +4,7 @@ sample_SOURCES = sample.cpp
+ x_wing_SOURCES = x_wing.cpp
+ teapot_SOURCES = teapot.cpp
+ 
+-CPPFLAGS = @CPPFLAGS@
++AM_CPPFLAGS = @CPPFLAGS@
+ 
+ LDADD = ../libsolid/libFreeSOLID.la
+ 
diff --git a/gnu/packages/patches/freesolid-configure.patch b/gnu/packages/patches/freesolid-configure.patch
new file mode 100644
index 0000000000..0460b631a7
--- /dev/null
+++ b/gnu/packages/patches/freesolid-configure.patch
@@ -0,0 +1,58 @@
+Fixes an incompatibility with Libtool 2+.
+
+Rebased on FreeSOLID-2.1.2.
+
+Originally retrieved from Fedora (see:
+https://src.fedoraproject.org/rpms/FreeSOLID/raw/rawhide/f/FreeSOLID-2.1.1-configure.patch).
+
+Upstream-status: https://sourceforge.net/p/freesolid/patches/10/
+
+--- FreeSOLID-2.1.1/configure.in.orig	2012-05-24 20:58:30.000000000 +0200
++++ FreeSOLID-2.1.1/configure.in	2012-05-24 21:08:00.932445488 +0200
+@@ -1,8 +1,11 @@
+ dnl Process this file with autoconf to produce a configure script.
+-AC_INIT(sample/sample.cpp)
++AC_INIT
+ AC_CONFIG_MACRO_DIR([m4])
++AC_CONFIG_SRCDIR([sample/sample.cpp])
+ 
+-AC_CANONICAL_SYSTEM
++AC_CONFIG_MACRO_DIR([m4])
++
++AC_CANONICAL_TARGET
+ PACKAGE=FreeSOLID
+ VERSION=2.1.1
+ FREESOLID_CURRENT=2
+@@ -15,15 +18,14 @@
+ 
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+ 
+-AM_CONFIG_HEADER(include/config.h)
++AC_CONFIG_HEADERS([include/config.h])
+ 
+ dnl Checks for programs.
+-AC_LIBTOOL_WIN32_DLL
+ AC_PROG_CXX
+ AC_PROG_CC
+ AC_PROG_CPP
+ AC_PROG_INSTALL
+-AC_PROG_LIBTOOL
++LT_INIT([win32-dll])
+ 
+ CPPFLAGS="$CPPFLAGS -I../include -I./include -I. -I../libbroad -I../libmoto"
+ AC_SUBST(CPPFLAGS)
+@@ -52,11 +54,6 @@
+ AC_CHECK_FUNCS(sqrt)
+ AC_CHECK_FUNCS(fabs)
+ 
+-AC_OUTPUT([ doc/Makefile 
+-            sample/Makefile 
+-            Makefile 
+-            libbroad/Makefile 
+-            libmoto/Makefile 
+-            libsolid/Makefile 
+-            freesolid-config
+-            FreeSOLID.pc])
++AC_CONFIG_FILES([doc/Makefile sample/Makefile Makefile libbroad/Makefile libmoto/Makefile libsolid/Makefile freesolid-config])
++AC_CONFIG_FILES([FreeSOLID.pc])
++AC_OUTPUT
diff --git a/gnu/packages/patches/freesolid-pkgconfig.patch b/gnu/packages/patches/freesolid-pkgconfig.patch
new file mode 100644
index 0000000000..564293c082
--- /dev/null
+++ b/gnu/packages/patches/freesolid-pkgconfig.patch
@@ -0,0 +1,46 @@
+Upstream-status: https://sourceforge.net/p/freesolid/patches/5/
+
+diff --git a/FreeSOLID.pc.in b/FreeSOLID.pc.in
+new file mode 100644
+index 0000000..c354f05
+--- /dev/null
++++ b/FreeSOLID.pc.in
+@@ -0,0 +1,12 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: FreeSolid
++Description: 3D collision detection C++ library
++Version: @VERSION@
++
++Libs: -L${libdir} -lFreeSOLID @QHULL_LIBS@
++Cflags: -I${includedir} -I${includedir}/FreeSOLID
++
+diff --git a/configure.in b/configure.in
+index 41a761c..a4bc7d4 100644
+--- a/configure.in
++++ b/configure.in
+@@ -52,4 +52,11 @@ dnl Checks for library functions.
+ AC_CHECK_FUNCS(sqrt)
+ AC_CHECK_FUNCS(fabs)
+ 
+-AC_OUTPUT(doc/Makefile sample/Makefile Makefile libbroad/Makefile libmoto/Makefile libsolid/Makefile freesolid-config)
++AC_OUTPUT([ doc/Makefile 
++            sample/Makefile 
++            Makefile 
++            libbroad/Makefile 
++            libmoto/Makefile 
++            libsolid/Makefile 
++            freesolid-config
++            FreeSOLID.pc])
+--- a/Makefile.am	2024-10-28 10:49:24.006849578 +0900
++++ b/Makefile.am	2024-10-28 10:50:13.378839511 +0900
+@@ -3,3 +3,6 @@
+ 
+ EXTRA_DIST = include
+ bin_SCRIPTS = freesolid-config
++
++pkgconfigdir         = $(libdir)/pkgconfig
++dist_pkgconfig_DATA  = FreeSOLID.pc

base-commit: e4e1e16bc1b27684b55e6bf047f9f669e1a0c7b5
-- 
2.46.0





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

* [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC.
  2024-10-28  6:26 ` [bug#74054] [PATCH v2 1/3] gnu: Add freesolid Maxim Cournoyer
@ 2024-10-28  6:26   ` Maxim Cournoyer
  2024-10-28  8:10     ` Liliana Marie Prikler
  2024-10-28  6:26   ` [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams Maxim Cournoyer
  1 sibling, 1 reply; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  6:26 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Maxim Cournoyer, Adam Faiz,
	Liliana Marie Prikler, 宋文武

* gnu/packages/game-development.scm (plib) [configure-flags]: New argument.
[inputs]: Move field after...
[native-inputs]: ... this one.

Change-Id: Ieddfb8814632f74c98d0e2cda949709b718c7a0d
---

(no changes since v1)

 gnu/packages/game-development.scm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 25cc021f6f..73ae3ef084 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2573,10 +2573,12 @@ (define-public plib
               (patches (search-patches "plib-CVE-2011-4620.patch"
                                        "plib-CVE-2012-4552.patch"))))
     (build-system gnu-build-system)
-    (inputs
-     (list mesa libxi libxmu))
-    (native-inputs
-     (list pkg-config))
+    ;; plib exists only as a static library, per the author's choice (see:
+    ;; https://sourceforge.net/p/plib/mailman/message/10289018/).  Build it
+    ;; with PIC, so that shared programs can at least "link" to it.
+    (arguments (list #:configure-flags #~(list "CXXFLAGS=-fPIC")))
+    (native-inputs (list autoconf automake pkg-config))
+    (inputs (list mesa libxi libxmu))
     (home-page "https://plib.sourceforge.net/")
     (synopsis "Suite of portable game libraries")
     (description "PLIB is a set of libraries that will permit programmers to
-- 
2.46.0





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

* [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams.
  2024-10-28  6:26 ` [bug#74054] [PATCH v2 1/3] gnu: Add freesolid Maxim Cournoyer
  2024-10-28  6:26   ` [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
@ 2024-10-28  6:26   ` Maxim Cournoyer
  2024-10-28  8:12     ` Liliana Marie Prikler
  1 sibling, 1 reply; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-28  6:26 UTC (permalink / raw)
  To: 74054
  Cc: Maxim Cournoyer, Maxim Cournoyer, Adam Faiz,
	Liliana Marie Prikler, 宋文武

* gnu/packages/games.scm (speed-dreams): New variable.
(speed-dreams-version, speed-dreams-svn-revision): New variables.
(speed-dreams-source-tarball): New procedure.
(speed-dreams-base-tarball, speed-dreams-more-hq-cars-and-tracks-tarball)
(speed-dreams-wip-cars-and-tracks-tarball)
(speed-dreams-unmaintained-tarball): New variable.

Change-Id: Id14f3556d47a80c508177940f959448520b406fc
---

(no changes since v1)

 gnu/packages/games.scm | 122 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 122 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 64b6b0941a..be96ed895b 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -8964,6 +8964,128 @@ (define-public endless-sky
                    license:cc-by-sa4.0
                    license:public-domain))))
 
+(define speed-dreams-version "2.3.0")
+(define speed-dreams-svn-revision "8786")
+(define (speed-dreams-source-tarball name sha256sum)
+  (origin
+    (method url-fetch)
+    (uri (string-append "mirror://sourceforge/speed-dreams/"
+                        speed-dreams-version "/"
+                        "speed-dreams-src-" name "-" speed-dreams-version "-r"
+                        speed-dreams-svn-revision ".tar.xz"))
+    (sha256 (base32 sha256sum))))
+
+;;; We use the release tarballs instead of the SVN repository for their
+;;; reduced weight (the tarballs do not provide the sources of the 3D models
+;;; used, which are heavy, for example).
+(define speed-dreams-base-tarball       ;about 240 MiB
+  (speed-dreams-source-tarball
+   "base" "190480qzkllykl07s6bxd5wdbjgavs7haw6mk0hgdm7bs6rqqk0d"))
+
+(define speed-dreams-hq-cars-and-tracks-tarball ;about 670 MiB
+  (speed-dreams-source-tarball
+   "hq-cars-and-tracks" "16zcgwax3n0gf79hw1dg42lzsyxbnxfw6hjxdi919q5hxgm9cgsr"))
+
+(define speed-dreams-more-hq-cars-and-tracks-tarball ;about 760 MiB
+  (speed-dreams-source-tarball
+   "more-hq-cars-and-tracks"
+   "1acwiacf77qk5azyg3bbxsydk3wsp5fvgwwnhxpk273mwszjkh56"))
+
+;;; Although these are marked as 'WIP', the game throws (non-fatal) errors
+;;; when it fails finding some "drivers" included within this pack.
+(define speed-dreams-wip-cars-and-tracks-tarball ;about 400 MiB
+  (speed-dreams-source-tarball
+   "wip-cars-and-tracks"
+   "0wqd9bpis9bg87rsqk0dyvljax4zrp9h57mz7z3zrn6fayl1nh1q"))
+
+;;; This is to allow selecting the legacy Simu V2 engine (configurable in the
+;;; game options).
+(define speed-dreams-unmaintained-tarball ;about 60 KiB
+  (speed-dreams-source-tarball
+   "unmaintained" "1cxcrjm2508najpz2b65i8gxgvgiq7fcp13xvicpiqp6xhq3hsyi"))
+
+(define-public speed-dreams
+  (package
+    (name "speed-dreams")
+    (version speed-dreams-version)
+    (source speed-dreams-base-tarball)
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:build-type "Release"
+      #:configure-flags
+      #~(list
+         "-DOPTION_OFFICIAL_ONLY=ON"                    ;build with content
+         (string-append "-DSD_BINDIR=" #$output "/bin") ;instead of 'games'
+         (string-append "-DSD_DATADIR=" #$output "/share/speed-dreams-2")
+         ;; Libdir defaults to a 'lib64/games' prefix.
+         (string-append "-DSD_LIBDIR=" #$output "/lib/speed-dreams-2")
+         ;; Use system-provided Expat and FreeSOLID
+         ;; libraries instead of the bundled ones.
+         "-DOPTION_3RDPARTY_EXPAT=ON"
+         "-DOPTION_3RDPARTY_SOLID=ON"
+         ;; Drivers and other shared objects are linked to private/internal
+         ;; shared libraries; have their location on the RUNPATH to satisfy
+         ;; the validate-runpath phase.
+         (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath="
+                        #$output "/lib/speed-dreams-2/lib")
+         ;; The following flag is to avoid bogus RUNPATH warnings from the
+         ;; validate-runpath phase; without it, -rpath links referring to the
+         ;; build directory would be baked in driver modules.
+         "-DCMAKE_BUILD_RPATH_USE_ORIGIN=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'extract-cars-and-tracks-data
+            (lambda _
+              ;; XXX: The current working directory is inside the cmake/
+              ;; sudbirectory following the unpack phase, for some reason.
+              (chdir "..")
+              (invoke "tar" "-xvf" #$speed-dreams-hq-cars-and-tracks-tarball)
+              (invoke "tar" "-xvf" #$speed-dreams-more-hq-cars-and-tracks-tarball)
+              (invoke "tar" "-xvf" #$speed-dreams-wip-cars-and-tracks-tarball)
+              (invoke "tar" "-xvf" #$speed-dreams-unmaintained-tarball)))
+          (add-after 'install 'install-desktop-entry
+            (lambda* (#:key outputs #:allow-other-keys)
+              (make-desktop-entry-file
+               (string-append #$output
+                              "/share/applications/speed-dreams.desktop")
+               #:name "Speed Dreams 2"
+               #:comment "3D racing cars simulator"
+               #:exec (search-input-file outputs "bin/speed-dreams-2")
+               #:icon (search-input-file
+                       outputs "share/speed-dreams-2/data/icons/icon.png")
+               #:categories '("Game" "Simulation")))))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list curl
+           enet
+           expat
+           freeglut
+           freesolid
+           freetype
+           libjpeg-turbo
+           libogg
+           libpng
+           libvorbis
+           openal
+           openscenegraph
+           plib
+           sdl2
+           sdl2-mixer
+           zlib))
+    (home-page "https://sourceforge.net/projects/speed-dreams/")
+    (synopsis "Car racing simulator")
+    (description "Speed Dreams is a car racing simulator featuring
+high-quality 3D graphics and an accurate physics engine, aiming for maximum
+realism.  Initially forked from TORCS, it features improvements to the
+graphics and physics simulation, and supports modern input methods such as
+gamepads by use of the SDL library.  It features more than 20 tracks and more
+than 80 cars to race with.")
+    (license (list license:gpl2+        ;game code
+                   license:lal1.3))))   ;assets
+
 (define-public stepmania
   (package
     (name "stepmania")
-- 
2.46.0





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

* [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC.
  2024-10-28  6:26   ` [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
@ 2024-10-28  8:10     ` Liliana Marie Prikler
  2024-10-29  0:04       ` Maxim Cournoyer
  0 siblings, 1 reply; 14+ messages in thread
From: Liliana Marie Prikler @ 2024-10-28  8:10 UTC (permalink / raw)
  To: Maxim Cournoyer, 74054; +Cc: 宋文武, Adam Faiz

Am Montag, dem 28.10.2024 um 15:26 +0900 schrieb Maxim Cournoyer:
> * gnu/packages/game-development.scm (plib) [configure-flags]: New
> argument.
That may be a typo – I think we use the #: part.
Alternatively you could write [arguments]: Add #:configure-flags.
> [inputs]: Move field after...
> [native-inputs]: ... this one.
> 
> Change-Id: Ieddfb8814632f74c98d0e2cda949709b718c7a0d
> ---
Cheers




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

* [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams.
  2024-10-28  6:26   ` [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams Maxim Cournoyer
@ 2024-10-28  8:12     ` Liliana Marie Prikler
  2024-10-29  0:09       ` Maxim Cournoyer
  0 siblings, 1 reply; 14+ messages in thread
From: Liliana Marie Prikler @ 2024-10-28  8:12 UTC (permalink / raw)
  To: Maxim Cournoyer, 74054; +Cc: 宋文武, Adam Faiz

Am Montag, dem 28.10.2024 um 15:26 +0900 schrieb Maxim Cournoyer:
> * gnu/packages/games.scm (speed-dreams): New variable.
> (speed-dreams-version, speed-dreams-svn-revision): New variables.
> (speed-dreams-source-tarball): New procedure.
> (speed-dreams-base-tarball, speed-dreams-more-hq-cars-and-tracks-
> tarball)
> (speed-dreams-wip-cars-and-tracks-tarball)
> (speed-dreams-unmaintained-tarball): New variable.
Typo: missing "s" in New variables.

Also, I don't think we differentiate much between variables and
procedures (procedures *are* variables).

Cheers




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

* [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC.
  2024-10-28  8:10     ` Liliana Marie Prikler
@ 2024-10-29  0:04       ` Maxim Cournoyer
  2024-10-29  7:00         ` Liliana Marie Prikler
  0 siblings, 1 reply; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-29  0:04 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 宋文武, Adam Faiz, 74054

Hi Liliana,

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

> Am Montag, dem 28.10.2024 um 15:26 +0900 schrieb Maxim Cournoyer:
>> * gnu/packages/game-development.scm (plib) [configure-flags]: New
>> argument.
> That may be a typo – I think we use the #: part.
> Alternatively you could write [arguments]: Add #:configure-flags.

I see multiple variants in use.  That's hard for newcomer and bad
consistency, but until someone distills 'The One True Changelog Format'
style to use, I think they are all acceptable.  For example:

'(plib) [phases]: Add some phase.' is common for example.

'(plib) [configure-flags]: New argument.' is similar style.

A more verbose alternative, which is also used could be:

'(plib) [arguments] <configure-flags>: New argument.'

Thanks for taking a look.

-- 
Thanks,
Maxim




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

* [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams.
  2024-10-28  8:12     ` Liliana Marie Prikler
@ 2024-10-29  0:09       ` Maxim Cournoyer
  2024-11-15  8:07         ` bug#74054: " Liliana Marie Prikler
  0 siblings, 1 reply; 14+ messages in thread
From: Maxim Cournoyer @ 2024-10-29  0:09 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 宋文武, Adam Faiz, 74054

Hi,

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

> Am Montag, dem 28.10.2024 um 15:26 +0900 schrieb Maxim Cournoyer:
>> * gnu/packages/games.scm (speed-dreams): New variable.
>> (speed-dreams-version, speed-dreams-svn-revision): New variables.
>> (speed-dreams-source-tarball): New procedure.
>> (speed-dreams-base-tarball, speed-dreams-more-hq-cars-and-tracks-
>> tarball)
>> (speed-dreams-wip-cars-and-tracks-tarball)
>> (speed-dreams-unmaintained-tarball): New variable.
> Typo: missing "s" in New variables.
>
> Also, I don't think we differentiate much between variables and
> procedures (procedures *are* variables).

In Guix I've mostly seen we differentiate between procedure and
variables in changelog commit messages or documentation, but not between
functions and procedures (these are bunched together).  I think being
more specific as opposed to general helps the reading a bit.

Thanks for the reading.  Did you attempt to build/run it?  It has some
bugs I've reported upstream:

1. (temperature sometimes get set to 'inf' and the driving experience
becomes like ice skating)

2. Occasional crash (segfault) (not reported yet -- couldn't catch a
nice backtrace with GDB).

It's still very much playable though, and upstream is still developing
the game, so hopefully these will get resolved in time.

-- 
Thanks,
Maxim




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

* [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC.
  2024-10-29  0:04       ` Maxim Cournoyer
@ 2024-10-29  7:00         ` Liliana Marie Prikler
  0 siblings, 0 replies; 14+ messages in thread
From: Liliana Marie Prikler @ 2024-10-29  7:00 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 宋文武, Adam Faiz, 74054

Am Dienstag, dem 29.10.2024 um 09:04 +0900 schrieb Maxim Cournoyer:
> Hi Liliana,
> 
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> 
> > Am Montag, dem 28.10.2024 um 15:26 +0900 schrieb Maxim Cournoyer:
> > > * gnu/packages/game-development.scm (plib) [configure-flags]: New
> > > argument.
> > That may be a typo – I think we use the #: part.
> > Alternatively you could write [arguments]: Add #:configure-flags.
> 
> I see multiple variants in use.  That's hard for newcomer and bad
> consistency, but until someone distills 'The One True Changelog
> Format' style to use, I think they are all acceptable.  For example:
> 
> '(plib) [phases]: Add some phase.' is common for example.
> 
> '(plib) [configure-flags]: New argument.' is similar style.
> 
> A more verbose alternative, which is also used could be:
> 
> '(plib) [arguments] <configure-flags>: New argument.'
> 
> Thanks for taking a look.
I'm fine with dropping the [arguments] part, but IMHO the #: marker
should be there, as it marks the thing as a keyword argument (thus also
making arguments superfluous – it's implied).  That is, I'd also write
the phases example as #:phases.

But I haven't done a survey, so if you want to keep the ChangeLog as-
is, by all means do so.

Cheers




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

* bug#74054: [PATCH v2 3/3] gnu: Add speed-dreams.
  2024-10-29  0:09       ` Maxim Cournoyer
@ 2024-11-15  8:07         ` Liliana Marie Prikler
  2024-11-17  4:14           ` [bug#74054] " Maxim Cournoyer
  0 siblings, 1 reply; 14+ messages in thread
From: Liliana Marie Prikler @ 2024-11-15  8:07 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 74054-done, 宋文武, Adam Faiz

Am Dienstag, dem 29.10.2024 um 09:09 +0900 schrieb Maxim Cournoyer:
> Thanks for the reading.  Did you attempt to build/run it?  It has
> some bugs I've reported upstream:
> 
> 1. (temperature sometimes get set to 'inf' and the driving experience
> becomes like ice skating)
> 
> 2. Occasional crash (segfault) (not reported yet -- couldn't catch a
> nice backtrace with GDB).
> 
> It's still very much playable though, and upstream is still
> developing the game, so hopefully these will get resolved in time.
I've built it now, but not yet run it.  Anyhow, I take your word that
it's playable and pushed it – 2/3 was already pushed anyways.

Cheers




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

* [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams.
  2024-11-15  8:07         ` bug#74054: " Liliana Marie Prikler
@ 2024-11-17  4:14           ` Maxim Cournoyer
  0 siblings, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2024-11-17  4:14 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 74054-done, 宋文武, Adam Faiz

Hi Liliana,

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

> Am Dienstag, dem 29.10.2024 um 09:09 +0900 schrieb Maxim Cournoyer:
>> Thanks for the reading.  Did you attempt to build/run it?  It has
>> some bugs I've reported upstream:
>> 
>> 1. (temperature sometimes get set to 'inf' and the driving experience
>> becomes like ice skating)
>> 
>> 2. Occasional crash (segfault) (not reported yet -- couldn't catch a
>> nice backtrace with GDB).
>> 
>> It's still very much playable though, and upstream is still
>> developing the game, so hopefully these will get resolved in time.
> I've built it now, but not yet run it.  Anyhow, I take your word that
> it's playable and pushed it – 2/3 was already pushed anyways.

Thanks.  I'll have a future update that uses the sources directly as it
fixes an annoying problem with the tire model of the latest release (the
tires get crazy hot and the car becomes uncontrollable); but there's
another serious problem in the unreleased sources where the game appears
to hang on the qualification screen there [0], so it's been on hold
until this gets resolved.

Anyway, thanks for the review/merge.

[0]  https://sourceforge.net/p/speed-dreams/tickets/1295/

-- 
Thanks,
Maxim




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

end of thread, other threads:[~2024-11-17  4:16 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-28  3:31 [bug#74054] [PATCH 0/3] Add Speed Dreams racing simulator Maxim Cournoyer
2024-10-28  3:35 ` [bug#74054] [PATCH 1/3] gnu: Add freesolid Maxim Cournoyer
2024-10-28  3:35 ` [bug#74054] [PATCH 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
2024-10-28  3:35 ` [bug#74054] [PATCH 3/3] gnu: Add speed-dreams Maxim Cournoyer
2024-10-28  6:26 ` [bug#74054] [PATCH v2 1/3] gnu: Add freesolid Maxim Cournoyer
2024-10-28  6:26   ` [bug#74054] [PATCH v2 2/3] gnu: plib: Build with -fPIC Maxim Cournoyer
2024-10-28  8:10     ` Liliana Marie Prikler
2024-10-29  0:04       ` Maxim Cournoyer
2024-10-29  7:00         ` Liliana Marie Prikler
2024-10-28  6:26   ` [bug#74054] [PATCH v2 3/3] gnu: Add speed-dreams Maxim Cournoyer
2024-10-28  8:12     ` Liliana Marie Prikler
2024-10-29  0:09       ` Maxim Cournoyer
2024-11-15  8:07         ` bug#74054: " Liliana Marie Prikler
2024-11-17  4:14           ` [bug#74054] " Maxim Cournoyer

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).