diff mbox series

[bug#41967] gnu: Add tesseract.

Message ID 87r1u9392r.fsf@ambrevar.xyz
State Accepted
Headers show
Series [bug#41967] gnu: Add tesseract. | expand

Checks

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

Commit Message

Pierre Neidhardt June 20, 2020, 6:07 p.m. UTC
The code is free software (zlib) for sure.
I'm not sure about the media files license.

Comments

Kei Kebreau June 26, 2020, 11:04 p.m. UTC | #1
Hi, Pierre!

The game builds and runs fine on my machine. However, I'm not sure
about the media licenses either. The ".cfg" files in the media
directory look like scripts that the engine runs and seem to be
unlicensed, kind of like the ones from Cube 2: Sauerbraten [0].
For what it's worth, Sauerbraten is currently categorized as non-free
in Debian [1] on account of some of its media files.

[0]: https://sourceforge.net/p/sauerbraten/code/HEAD/tree/data/
[1]: https://packages.debian.org/buster/sauerbraten
Pierre Neidhardt June 27, 2020, 6:57 a.m. UTC | #2
Indeed.

The question is: does Tesseract reuse any of the media from Sauerbraten?
Kei Kebreau June 28, 2020, 3:26 p.m. UTC | #3
On Sat, 2020-06-27 at 08:57 +0200, Pierre Neidhardt wrote:
> Indeed.
> 
> The question is: does Tesseract reuse any of the media from
> Sauerbraten?
> 

It doesn't seem like it, though I did come across some useful licensing
info for some of Tesseract's assets:

* media/sky/0ptikz/info.txt: Non-commerical clause
* media/model/mapmodel/dcp/blade_x/Readme.txt: "Cube-only, let me know
otherwise" license
* media/model/mapmodel/nobiax/info.txt: No license, but suspected CC0
1.0 (evidence: https://github.com/red-eclipse/nobiax)
* media/sound/mapsound/soundtransit/info.txt: CC-BY 2.0 according to 
http://web.archive.org/web/20160421054815/http://archive.turbulence.org/soundtransit/search/
* media/sound/mapsound/freesound.org/info.txt:
** alaskarobotics_ambient-spacecraft-hum.ogg: CC0 1.0 (
https://freesound.org/people/AlaskaRobotics/sounds/221570/)
** cascading-water.ogg: CC0 1.0 (
https://freesound.org/people/KingBowser/sounds/253623/)
** cool_compressor_1.ogg: ?
** floresent-light_1.ogg: possibly CC0 1.0? (
https://freesound.org/people/rpew1/sounds/108476/)
** rain.ogg: ?
* media/sound/game/uphys/info.txt: CC-BY-NC 4.0
* media/sound/game/soundsnap/info.txt: Non-commercial clause (
https://www.soundsnap.com/licence)
* media/interface/crosshair/info.txt: Assume full copyright?
* media/texture/philipk2/info.txt: "Do-whatever" license
* media/texture/thesilentnight/info.txt: "Do-whatever-with-attribution" 
license

Also, it turns out that according to "src/readme_tesseract.txt", the
".cfg" files in the "data" directory are covered by the same license as
the code in "src".
Pierre Neidhardt June 28, 2020, 8:04 p.m. UTC | #4
Thanks for the investigation.

Kei <kkebreau@posteo.net> writes:

> On Sat, 2020-06-27 at 08:57 +0200, Pierre Neidhardt wrote:
> * media/model/mapmodel/dcp/blade_x/Readme.txt: "Cube-only, let me know
> otherwise" license

So, this means that it's non-free?

> * media/sound/game/uphys/info.txt: CC-BY-NC 4.0
> * media/sound/game/soundsnap/info.txt: Non-commercial clause (
> https://www.soundsnap.com/licence)

Are "non commercial" licenses still free licenses?

Cheers!
Efraim Flashner June 29, 2020, 6:12 a.m. UTC | #5
On Sun, Jun 28, 2020 at 10:04:31PM +0200, Pierre Neidhardt wrote:
> Thanks for the investigation.
> 
> Kei <kkebreau@posteo.net> writes:
> 
> > On Sat, 2020-06-27 at 08:57 +0200, Pierre Neidhardt wrote:
> > * media/model/mapmodel/dcp/blade_x/Readme.txt: "Cube-only, let me know
> > otherwise" license
> 
> So, this means that it's non-free?
> 
> > * media/sound/game/uphys/info.txt: CC-BY-NC 4.0
> > * media/sound/game/soundsnap/info.txt: Non-commercial clause (
> > https://www.soundsnap.com/licence)
> 
> Are "non commercial" licenses still free licenses?
> 

I'm pretty sure no, even for non-code. But I'd love to hear from someone
else who's more sure than I am.
Msavoritias June 29, 2020, 5:41 p.m. UTC | #6
Hi,

<https://www.gnu.org/philosophy/free-sw.html>

Here it says it has to be allowed for commercial use otherwise its not 
Free Software.

Regards,
Marinus

On Mon, Jun 29, 2020 at 09:12, Efraim Flashner <efraim@flashner.co.il> 
wrote:
> On Sun, Jun 28, 2020 at 10:04:31PM +0200, Pierre Neidhardt wrote:
>>  Thanks for the investigation.
>> 
>>  Kei <kkebreau@posteo.net <mailto:kkebreau@posteo.net>> writes:
>> 
>>  > On Sat, 2020-06-27 at 08:57 +0200, Pierre Neidhardt wrote:
>>  > * media/model/mapmodel/dcp/blade_x/Readme.txt: "Cube-only, let me 
>> know
>>  > otherwise" license
>> 
>>  So, this means that it's non-free?
>> 
>>  > * media/sound/game/uphys/info.txt: CC-BY-NC 4.0
>>  > * media/sound/game/soundsnap/info.txt: Non-commercial clause (
>>  > <https://www.soundsnap.com/licence>)
>> 
>>  Are "non commercial" licenses still free licenses?
>> 
> 
> I'm pretty sure no, even for non-code. But I'd love to hear from 
> someone
> else who's more sure than I am.
> 
> 
> --
> Efraim Flashner   <efraim@flashner.co.il 
> <mailto:efraim@flashner.co.il>>   אפרים פלשנר
> GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
> Confidentiality cannot be guaranteed on emails sent or received 
> unencrypted
Simon Tournier June 29, 2020, 6:23 p.m. UTC | #7
On Mon, 29 Jun 2020 at 08:13, Efraim Flashner <efraim@flashner.co.il> wrote:

> > > * media/sound/game/soundsnap/info.txt: Non-commercial clause (
> > > https://www.soundsnap.com/licence)
> >
> > Are "non commercial" licenses still free licenses?
>
> I'm pretty sure no, even for non-code. But I'd love to hear from someone
> else who's more sure than I am.

"non-commercial" and "free license" are not related.

Well, it is hard to predict what the FSF would conclude for a such
license.  Because the terms are not really clear.  On one hand, you
can "transit the sounds as long as they are included with other
materials" and on the other hand you cannot "transmit the sounds 'as
they are' in any context".

b. To copy and transmit the sounds and available content in various
mediums or formats as long as the sounds and available content are
included in another work or with other materials;
i. Resell, rent, sublicense, transmit, and/or distribute or
re-distribute the sounds 'as they are' in any context,
Pierre Neidhardt June 29, 2020, 6:23 p.m. UTC | #8
Thank you.

Alternatively, we can distribute the engine without the media files,
call it `tesseract-engine' and move it to game-development.scm.
Thoughts?
Nicolas Goaziou June 29, 2020, 7:19 p.m. UTC | #9
Hello,

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Alternatively, we can distribute the engine without the media files,
> call it `tesseract-engine' and move it to game-development.scm.
> Thoughts?

FWIW, I think this is a fine idea.

Regards,
Pierre Neidhardt June 30, 2020, 2:38 p.m. UTC | #10
Pushed tesseract-engine in f67ae666896a51fc6edd1b537e43ed44685cb2a3.

Thank you all for your review!
Cheers!
diff mbox series

Patch

From e88230cc776517b9ab84fe159d96799041fd8107 Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt <mail@ambrevar.xyz>
Date: Sat, 20 Jun 2020 19:26:48 +0200
Subject: [PATCH] gnu: Add tesseract.

* gnu/packages/games.scm (tesseract): New variable.
---
 gnu/packages/games.scm | 99 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 39669ba1c9..7633e209c1 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -10817,3 +10817,102 @@  and shovers to get to the goal.  Race against the clock to collect coins to
 earn extra balls.  Also included is Neverputt, which is a 3D miniature golf
 game.")  ;thanks to Debian for description
       (license license:gpl2+))))
+
+(define-public tesseract
+  (let ((svn-revision 2411))
+    (package
+      (name "tesseract")
+      (version (number->string svn-revision))
+      (source
+       (origin
+         (method svn-fetch)
+         (uri (svn-reference
+               (url "svn://svn.tuxfamily.org/svnroot/tesseract/main")
+               (revision svn-revision)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1av9jhl2ivbl7wfszyhyna84llvh1z2d8khkmadm8d105addj10q"))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             (for-each delete-file-recursively
+                       '("bin" "bin64"
+                         "server.bat"
+                         "tesseract.bat"
+                         "src/lib"
+                         "src/lib64"))
+             #t))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags (list "CC=gcc")
+         #:tests? #f                    ; No tests.
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'cd-src
+             (lambda _ (chdir "src") #t))
+           (add-before 'build 'fix-env
+             (lambda* (#:key inputs #:allow-other-keys)
+               (setenv "CPATH"
+                       (string-append (assoc-ref inputs "sdl2-union")
+                                      "/include/SDL2:"
+                                      (or (getenv "CPATH") "")))
+               #t))
+           (add-after 'install 'really-install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (share (string-append out "/share/tesseract"))
+                      (bin (string-append out "/bin/tesseract"))
+                      (client (string-append out "/bin/tesseract-client")))
+                 (chdir "..")           ; Back to root.
+                 (for-each
+                  (lambda (dir)
+                    (mkdir-p (string-append share "/" dir))
+                    (copy-recursively dir (string-append share "/" dir)))
+                  '("config" "media"))
+                 (mkdir-p (string-append out "/bin/"))
+                 (copy-file "bin_unix/native_client" client)
+                 (copy-file "bin_unix/native_server"
+                            (string-append out "/bin/tesseract-server"))
+                 (call-with-output-file bin
+                   (lambda (p)
+                     (format p "#!~a
+TESS_DATA=~a
+TESS_BIN=~a
+TESS_OPTIONS=\"-u$HOME/.tesseract\"
+cd \"$TESS_DATA\"
+exec \"$TESS_BIN\" \"$TESS_OPTIONS\" \"$@\""
+                             (which "bash")
+                             share
+                             client)))
+                 (chmod bin #o755)
+                 (install-file "src/readme_tesseract.txt"
+                               (string-append out "/share/licenses/tesseract/LICENSE"))
+                 (let ((icon (string-append out "/share/pixmaps/tesseract.png")))
+                   (mkdir-p (dirname icon))
+                   (copy-file "media/interface/cube.png" icon)
+                   (make-desktop-entry-file
+                    (string-append out "/share/applications/tesseract.desktop")
+                    #:name "Tesseract"
+                    #:comment "First-person shooter with map editing"
+                    #:exec "tesseract"
+                    #:icon icon
+                    #:categories '("Game"))))
+               #t)))))
+      (inputs
+       `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-image)))
+         ("zlib" ,zlib)
+         ("libpng" ,libpng)
+         ("libgl" ,mesa)))
+      (home-page "http://tesseract.gg/")
+      (synopsis "First-person shooter with map editing, instagib, DM and CTF")
+      (description "Tesseract is a first-person shooter game focused on
+instagib deathmatch and capture-the-flag gameplay as well as cooperative
+in-game map editing.
+
+Tesseract provides a free software engine derived from @emph{Cube 2:
+Sauerbraten} technology but with upgraded modern rendering techniques.  The
+new rendering features include fully dynamic omnidirectional shadows, global
+illumination, HDR lighting, deferred shading, morphological / temporal /
+multisample anti-aliasing, and much more.")
+      (license license:zlib))))
-- 
2.26.2