Add 0ad

  • Done
  • quality assurance status badge
Details
3 participants
  • Clément Lassieur
  • ng0
  • ng0
Owner
unassigned
Submitted by
Clément Lassieur
Severity
normal
Blocked by
C
C
Clément Lassieur wrote on 23 Apr 2017 03:34
(address . guix-patches@gnu.org)(name . ng0)(address . contact.ng0@cryptolab.net)
87mvb7vrdv.fsf@lassieur.org
Theses patches add 0ad and mozjs-38 (a dependency). I worked in
cooperation with ng0.

0ad needs a window manager that supports 'Extended Window Manager
for a list.

I did not try multiplayer mode. I ran it with Awesome WM, so I did not
test the icons and desktop things: I'm not sure about it.

Please let me know if you see anything wrong :)
C
C
Clément Lassieur wrote on 23 Apr 2017 03:35
[PATCH 1/2] gnu: Add mozjs-38 (Mozilla SpiderMonkey 38).
(address . 26618@debbugs.gnu.org)
20170423013554.4534-1-clement@lassieur.org
* gnu/packages/gnuzilla.scm (mozjs-38): New variable.
* gnu/packages/patches/mozjs38-pkg-config-version.patch,
gnu/packages/patches/mozjs38-shell-version.patch,
gnu/packages/patches/mozjs38-tracelogger.patch,
gnu/packages/patches/mozjs38-version-detection.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.

Co-authored-by: ng0 <ng0@no-reply.pragmatique.xyz>
---
gnu/local.mk | 4 +
gnu/packages/gnuzilla.scm | 90 ++-
.../patches/mozjs38-pkg-config-version.patch | 24 +
gnu/packages/patches/mozjs38-shell-version.patch | 67 +++
gnu/packages/patches/mozjs38-tracelogger.patch | 608 +++++++++++++++++++++
.../patches/mozjs38-version-detection.patch | 180 ++++++
6 files changed, 972 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/mozjs38-pkg-config-version.patch
create mode 100644 gnu/packages/patches/mozjs38-shell-version.patch
create mode 100644 gnu/packages/patches/mozjs38-tracelogger.patch
create mode 100644 gnu/packages/patches/mozjs38-version-detection.patch

Toggle diff (499 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 1fe46bfb5..1c6d722dd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -788,6 +788,10 @@ dist_patch_DATA = \
%D%/packages/patches/module-init-tools-moduledir.patch \
%D%/packages/patches/mozjs17-aarch64-support.patch \
%D%/packages/patches/mozjs24-aarch64-support.patch \
+ %D%/packages/patches/mozjs38-pkg-config-version.patch \
+ %D%/packages/patches/mozjs38-shell-version.patch \
+ %D%/packages/patches/mozjs38-tracelogger.patch \
+ %D%/packages/patches/mozjs38-version-detection.patch \
%D%/packages/patches/multiqc-fix-git-subprocess-error.patch \
%D%/packages/patches/mumps-build-parallelism.patch \
%D%/packages/patches/mupdf-build-with-openjpeg-2.1.patch \
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index efe63adb4..a3154c363 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,7 +58,8 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages video)
#:use-module (gnu packages xdisorg)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages zip)
+ #:use-module (gnu packages readline))
(define-public mozjs
(package
@@ -159,6 +161,92 @@ in C/C++.")
`(("libffi" ,libffi)
("zlib" ,zlib)))))
+(define-public mozjs-38
+ (package
+ (inherit mozjs)
+ (name "mozjs")
+ (version "38.2.1.rc0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://people.mozilla.org/~sstangl/"
+ name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681"))
+ (patches
+ (search-patches
+ ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for
+ ;; GCC 6 compatibility.
+
+ "mozjs38-version-detection.patch" ; for 0ad
+ "mozjs38-tracelogger.patch"
+
+ ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931.
+ "mozjs38-pkg-config-version.patch"
+ "mozjs38-shell-version.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Fix incompatibility with sed 4.4.
+ (substitute* "js/src/configure"
+ (("\\^\\[:space:\\]") "^[[:space:]]"))
+
+ ;; The headers are symlinks to files that are in /tmp, so they
+ ;; end up broken. Copy them instead.
+ (substitute*
+ "python/mozbuild/mozbuild/backend/recursivemake.py"
+ (("\\['dist_include'\\].add_symlink")
+ "['dist_include'].add_copy"))
+
+ ;; Remove bundled libraries.
+ (for-each delete-file-recursively
+ '("intl"
+ "js/src/ctypes/libffi"
+ "js/src/ctypes/libffi-patches"
+ "modules/zlib"))
+ #t))))
+ (arguments
+ `(;; XXX: parallel build fails, lacking:
+ ;; mkdir -p "system_wrapper_js/"
+ #:parallel-build? #f
+ ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470.
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (chdir "js/src")
+ (setenv "SHELL" (which "sh"))
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (zero? (system* "./configure"
+ (string-append "--prefix=" out)
+ "--enable-ctypes"
+ "--enable-gcgenerational"
+ "--enable-optimize"
+ "--enable-pie"
+ "--enable-readline"
+ "--enable-shared-js"
+ "--enable-system-ffi"
+ "--enable-threadsafe"
+ "--enable-xterm-updates"
+ "--with-system-icu"
+ "--with-system-nspr"
+ "--with-system-zlib"
+
+ ;; Intl API requires bundled ICU.
+ "--without-intl-api"))))))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python-2" ,python-2)))
+ (inputs
+ `(("libffi" ,libffi)
+ ("readline" ,readline)
+ ("icu4c" ,icu4c)
+ ("zlib" ,zlib)))))
+
(define-public nspr
(package
(name "nspr")
diff --git a/gnu/packages/patches/mozjs38-pkg-config-version.patch b/gnu/packages/patches/mozjs38-pkg-config-version.patch
new file mode 100644
index 000000000..49ff6f6f8
--- /dev/null
+++ b/gnu/packages/patches/mozjs38-pkg-config-version.patch
@@ -0,0 +1,24 @@
+Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837770.
+
+Add major version to pkg-config filename.
+Author: Rico Tzschichholz <ricotz@ubuntu.com>
+Forwarded: no
+Last-Update: 2015-05-04
+
+Index: b/js/src/Makefile.in
+===================================================================
+--- a/js/src/Makefile.in
++++ b/js/src/Makefile.in
+@@ -214,10 +214,10 @@
+ $(JS_CONFIG_NAME): js-config
+ cp $^ $@
+
+-$(LIBRARY_NAME).pc: js.pc
++$(JS_LIBRARY_NAME).pc: js.pc
+ cp $^ $@
+
+-install:: $(LIBRARY_NAME).pc
++install:: $(JS_LIBRARY_NAME).pc
+ $(SYSINSTALL) $^ $(DESTDIR)$(libdir)/pkgconfig
+
+ install:: js-config.h
diff --git a/gnu/packages/patches/mozjs38-shell-version.patch b/gnu/packages/patches/mozjs38-shell-version.patch
new file mode 100644
index 000000000..e7d3d19c8
--- /dev/null
+++ b/gnu/packages/patches/mozjs38-shell-version.patch
@@ -0,0 +1,67 @@
+Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837771.
+
+# HG changeset patch
+# Parent 4732a0e5d22bc7e5c1f1ace7a182d537d9cc2c6a
+Add major version to shell and js-config filenames.
+Author: Rico Tzschichholz <ricotz@ubuntu.com>
+Forwarded: no
+Last-Update: 2014-10-29
+
+---
+diff --git a/js/src/configure b/js/src/configure
+--- a/js/src/configure
++++ b/js/src/configure
+@@ -1696,8 +1696,13 @@
+ MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"`
+ IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'`
+
++if test -n "$JS_STANDALONE"; then
++JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION
++JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config
++else
+ JS_SHELL_NAME=js
+ JS_CONFIG_NAME=js-config
++fi
+
+
+ if test -n "$IS_ALPHA"; then
+
+diff --git a/js/src/configure.in b/js/src/configure.in
+--- a/js/src/configure.in
++++ b/js/src/configure.in
+@@ -234,16 +234,13 @@ MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSI
+ MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"`
+ IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'`
+
+-dnl XXX in a temporary bid to avoid developer anger at renaming files
+-dnl XXX before "js" symlinks exist, don't change names.
+-dnl
+-dnl if test -n "$JS_STANDALONE"; then
+-dnl JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION
+-dnl JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config
+-dnl else
++if test -n "$JS_STANDALONE"; then
++JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION
++JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config
++else
+ JS_SHELL_NAME=js
+ JS_CONFIG_NAME=js-config
+-dnl fi
++fi
+
+ changequote([,])
+ if test -n "$IS_ALPHA"; then
+
+diff -r 80a9e64d75f5 js/src/Makefile.in
+--- a/js/src/Makefile.in Wed Jun 25 15:11:42 2014 +0200
++++ b/js/src/Makefile.in Sat Jul 05 14:08:38 2014 +0200
+@@ -273,6 +273,9 @@
+ SCRIPTS = $(JS_CONFIG_NAME)
+ SDK_BINARY = $(JS_CONFIG_NAME)
+
++$(JS_CONFIG_NAME): js-config
++ cp $^ $@
++
+ $(JS_LIBRARY_NAME).pc: js.pc
+ cp $^ $@
+
diff --git a/gnu/packages/patches/mozjs38-tracelogger.patch b/gnu/packages/patches/mozjs38-tracelogger.patch
new file mode 100644
index 000000000..0375ec36c
--- /dev/null
+++ b/gnu/packages/patches/mozjs38-tracelogger.patch
@@ -0,0 +1,608 @@
+Squashed version of several commits to fix the tracelogger.
+
+Taken from
+https://github.com/GNOME/jhbuild/blob/master/patches/mozjs38-fix-tracelogger.patch.
+
+# === Fix the SM38 tracelogger ===
+# This patch is a squashed version of several patches that were adapted
+# to fix failing hunks.
+#
+# Applied in the following order, they are:
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223767
+# Assertion failure: i < size_, at js/src/vm/TraceLoggingTypes.h:210
+# Also fix stop-information to make reduce.py work correctly.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227914
+# Limit the memory tracelogger can take.
+# This causes tracelogger to flush data to the disk regularly and prevents out of
+# memory issues if a lot of data gets logged.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1155618
+# Fix tracelogger destructor that touches possibly uninitialised hash table.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223636
+# Don't treat extraTextId as containing only extra ids.
+# This fixes an assertion failure: id == nextTextId at js/src/vm/TraceLoggingGraph.cpp
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227028
+# Fix when to keep the payload of a TraceLogger event.
+# This fixes an assertion failure: textId < uint32_t(1 << 31) at js/src/vm/TraceLoggingGraph.h
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1266649
+# Handle failing to add to pointermap gracefully.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1280648
+# Don't cache based on pointers to movable GC things.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1224123
+# Fix the use of LastEntryId in tracelogger.h.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1231170
+# Use size in debugger instead of the current id to track last logged item.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1221844
+# Move TraceLogger_Invalidation to LOG_ITEM.
+# Add some debug checks to logTimestamp.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1255766
+# Also mark resizing of memory.
+# * https://bugzilla.mozilla.org/show_bug.cgi?id=1259403
+# Only increase capacity by multiples of 2.
+# Always make sure there are 3 free slots for events.
+# ===
+
+diff --git a/js/src/jit-test/tests/tracelogger/bug1231170.js b/js/src/jit-test/tests/tracelogger/bug1231170.js
+new file mode 100644
+index 0000000..023e93e
+--- /dev/null
++++ b/js/src/jit-test/tests/tracelogger/bug1231170.js
+@@ -0,0 +1,3 @@
++var du = new Debugger();
++if (typeof du.drainTraceLogger === "function")
++ du.drainTraceLogger();
+diff --git a/js/src/jit-test/tests/tracelogger/bug1266649.js b/js/src/jit-test/tests/tracelogger/bug1266649.js
+new file mode 100644
+index 0000000..81ae7ad
+--- /dev/null
++++ b/js/src/jit-test/tests/tracelogger/bug1266649.js
+@@ -0,0 +1,10 @@
++
++var du = new Debugger();
++if (typeof du.setupTraceLogger === "function" &&
++ typeof oomTest === 'function')
++{
++ du.setupTraceLogger({
++ Scripts: true
++ })
++ oomTest(() => function(){});
++}
+diff --git a/js/src/jit/Ion.cpp b/js/src/jit/Ion.cpp
+index 93e2fda..09049d6 100644
+--- a/js/src/jit/Ion.cpp
++++ b/js/src/jit/Ion.cpp
+@@ -1055,6 +1055,8 @@ IonScript::Destroy(FreeOp* fop, IonScript* script)
+
+ script->destroyCaches();
+ script->unlinkFromRuntime(fop);
++ // Frees the potential event we have set.
++ script->traceLoggerScriptEvent_ = TraceLoggerEvent();
+ fop->free_(script);
+ }
+
+diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp
+index 26262fd..af7f313 100644
+--- a/js/src/vm/Debugger.cpp
++++ b/js/src/vm/Debugger.cpp
+@@ -369,10 +369,10 @@ Debugger::Debugger(JSContext* cx, NativeObject* dbg)
+ objects(cx),
+ environments(cx),
+ #ifdef NIGHTLY_BUILD
+- traceLoggerLastDrainedId(0),
++ traceLoggerLastDrainedSize(0),
+ traceLoggerLastDrainedIteration(0),
+ #endif
+- traceLoggerScriptedCallsLastDrainedId(0),
++ traceLoggerScriptedCallsLastDrainedSize(0),
+ traceLoggerScriptedCallsLastDrainedIteration(0)
+ {
+ assertSameCompartment(cx, dbg);
+@@ -3907,9 +3907,9 @@ Debugger::drainTraceLogger(JSContext* cx, unsigned argc, Value* vp)
+ size_t num;
+ TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime());
+ bool lostEvents = logger->lostEvents(dbg->traceLoggerLastDrainedIteration,
+- dbg->traceLoggerLastDrainedId);
++ dbg->traceLoggerLastDrainedSize);
+ EventEntry* events = logger->getEventsStartingAt(&dbg->traceLoggerLastDrainedIteration,
+- &dbg->traceLoggerLastDrainedId,
++ &dbg->traceLoggerLastDrainedSize,
+ &num);
+
+ RootedObject array(cx, NewDenseEmptyArray(cx));
+@@ -4002,10 +4002,10 @@ Debugger::drainTraceLoggerScriptCalls(JSContext* cx, unsigned argc, Value* vp)
+ size_t num;
+ TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime());
+ bool lostEvents = logger->lostEvents(dbg->traceLoggerScriptedCallsLastDrainedIteration,
+- dbg->traceLoggerScriptedCallsLastDrainedId);
++ dbg->traceLoggerScriptedCallsLastDrainedSize);
+ EventEntry* events = logger->getEventsStartingAt(
+ &dbg->traceLoggerScriptedCallsLastDrainedIteration,
+- &dbg->traceLoggerScriptedCallsLastDrainedId,
++ &dbg->traceLoggerScriptedCallsLastDrainedSize,
+ &num);
+
+ RootedObject array(cx, NewDenseEmptyArray(cx));
+diff --git a/js/src/vm/Debugger.h b/js/src/vm/Debugger.h
+index 8cac36a..c92d685 100644
+--- a/js/src/vm/Debugger.h
++++ b/js/src/vm/Debugger.h
+@@ -314,10 +314,10 @@ class Debugger : private mozilla::LinkedListElement<Debugger>
+ * lost events.
+ */
+ #ifdef NIGHTLY_BUILD
+- uint32_t traceLoggerLastDrainedId;
++ uint32_t traceLoggerLastDrainedSize;
+ uint32_t traceLoggerLastDrainedIteration;
+ #endif
+- uint32_t traceLoggerScriptedCallsLastDrainedId;
++ uint32_t traceLoggerScriptedCallsLastDrainedSize;
+ uint32_t traceLoggerScriptedCallsLastDrainedIteration;
+
+ class FrameRange;
+diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp
+index 6715b36..9766a6f 100644
+--- a/js/src/vm/TraceLogging.cpp
++++ b/js/src/vm/TraceLogging.cpp
+@@ -131,7 +131,7 @@ TraceLoggerThread::init()
+ {
+ if (!pointerMap.init())
+ return false;
+- if (!extraTextId.init())
++ if (!textIdPayloads.init())
+ return false;
+ if (!events.init())
+ return false;
+@@ -185,10 +185,10 @@ TraceLoggerThread::~TraceLoggerThread()
+ graph = nullptr;
+ }
+
+- for (TextIdHashMap::Range r = extraTextId.all(); !r.empty(); r.popFront())
+- js_delete(r.front().value());
+- extraTextId.finish();
+- pointerMap.finish();
++ if (textIdPayloads.initialized()) {
++ for (TextIdHashMap::Range r = textIdPayloads.all(); !r.empty(); r.popFront())
++ js_delete(r.front().value());
++ }
+ }
+
+ bool
+@@ -287,7 +287,7 @@ TraceLoggerThread::eventText(uint32_t id)
+ if (id < TraceLogger_Last)
+ return TLTextIdString(static_cast<TraceLoggerTextId>(id));
+
+- TextIdHashMap::Ptr p = extraTextId.lookup(id);
++ TextIdHashMap::Ptr p = textIdPayloads.lookup(id);
+ MOZ_ASSERT(p);
+
+ return p->value()->string();
+@@ -341,13 +341,15 @@ TraceLoggerThread::extractScriptDetails(uint32_t textId, const char** filename,
+ TraceLoggerEventPayload*
+ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId textId)
+ {
+- TextIdHashMap::AddPtr p = extraTextId.lookupForAdd(textId);
+- if (p)
++ TextIdHashMap::AddPtr p = textIdPayloads.lookupForAdd(textId);
++ if (p) {
++ MOZ_ASSERT(p->value()->textId() == textId); // Sanity check.
+ return p->value();
++ }
+
+ TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, (char*)nullptr);
+
+- if (!extraTextId.add(p, textId, payload))
++ if (!textIdPayloads.add(p, textId, payload))
+ return nullptr;
+
+ return payload;
+@@ -357,8 +359,10 @@ TraceLoggerEventPayload*
+ TraceLoggerThread::getOrCreateEventPayload(const char* text)
+ {
+ PointerHashMap::AddPtr p = pointerMap.lookupForAdd((const void*)text);
+- if (p)
++ if (p) {
++ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check.
+ return p->value();
++ }
+
+ size_t len = strlen(text);
+ char* str = js_pod_malloc<char>(len + 1);
+@@ -369,7 +373,7 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text)
+ MOZ_ASSERT(ret == len);
+ MOZ_ASSERT(strlen(str) == len);
+
+- uint32_t textId = extraTextId.count() + TraceLogger_Last;
++ uint32_t textId = nextTextId;
+
+ TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, str);
+ if (!payload) {
+@@ -377,17 +381,19 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text)
+ return nullptr;
+ }
+
+- if (!extraTextId.putNew(textId, payload)) {
++ if (!textIdPayloads.putNew(textId, payload)) {
+ js_delete(payload);
+ return nullptr;
+ }
+
+- if (!pointerMap.add(p, text, payload))
+- return nullptr;
+-
+ if (graph.get())
+ graph->addTextId(textId, str);
+
++ nextTextId++;
++
++ if (!pointerMap.add(p, text, payload))
++ return nullptr;
++
+ return payload;
+ }
+
+@@ -407,9 +413,14 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f
+ if (!traceLoggerState->isTextIdEnabled(type))
+ return getOrCreateEventPayload(type);
+
+- PointerHashMap::AddPtr p = pointerMap.lookupForAdd(ptr);
+- if (p)
+- return p->value();
++ PointerHashMap::AddPtr p;
++ if (ptr) {
++ p = pointerMap.lookupForAdd(ptr);
++ if (p) {
++ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check.
++ return p->value();
++ }
++ }
+
+ // Compute the length of the string to create.
+ size_t lenFilename = strlen(filename);
+@@ -428,24 +439,28 @@ TraceLoggerThread:
This message was truncated. Download the full message here.
C
C
Clément Lassieur wrote on 23 Apr 2017 03:35
[PATCH 2/2] gnu: Add 0ad.
(address . 26618@debbugs.gnu.org)
20170423013554.4534-2-clement@lassieur.org
* gnu/packages/games.scm (0ad, 0ad-data): New variables.

Co-authored-by: ng0 <ng0@no-reply.pragmatique.xyz>
---
gnu/packages/games.scm | 186 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 186 insertions(+)

Toggle diff (217 lines)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index f6b4e3f0b..c0e0f7823 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
+;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -52,6 +53,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix svn-download)
+ #:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
@@ -119,6 +121,10 @@
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages gnuzilla)
+ #:use-module (gnu packages icu4c)
+ #:use-module (gnu packages networking)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (guix build-system python)
@@ -3881,3 +3887,183 @@ fabulous Orb of Zot.")
license:expat
license:zlib
license:asl2.0))))
+
+(define-public 0ad-data
+ (package
+ (name "0ad-data")
+ (version "0.0.21-alpha")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://releases.wildfiregames.com/0ad-"
+ version "-unix-data.tar.xz"))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "15xadyrpvq27lm9p1ny7bcmmv56m16h3xadbkdx69gfkzxc3razk"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ (for-each
+ (lambda (name)
+ (let* ((dir (string-append "binaries/data/mods/" name))
+ (file (string-append dir "/" name ".zip"))
+ (unzip #$(file-append unzip "/bin/unzip")))
+ (system* unzip "-d" dir file)
+ (delete-file file)))
+ '("mod" "public"))
+ #t))))
+ (build-system trivial-build-system)
+ (native-inputs `(("tar" ,tar)
+ ("xz" ,xz)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((out (assoc-ref %outputs "out"))
+ (source (assoc-ref %build-inputs "source"))
+ (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
+ (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
+ (setenv "PATH" xz-path)
+ (mkdir out)
+ (zero? (system* tar "xvf" source "-C" out "--strip=3"))))))
+ (synopsis "Data files for 0ad")
+ (description "This package provides the data files for 0ad.")
+ (home-page "https://play0ad.com")
+ (license (list license:arev
+ license:bitstream-vera
+ license:cc-by-sa3.0
+ license:expat
+ license:gfl1.0
+ license:gpl2+
+ license:gpl3+))))
+
+(define-public 0ad
+ (package
+ (name "0ad")
+ (version "0.0.21-alpha")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://releases.wildfiregames.com/0ad-"
+ version "-unix-build.tar.xz"))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1kw3hqnr737ipx4f03khz3hvsh3ha7r8iy9njppk2faa53j27gln"))
+ ;; A snippet here would cause a build failure, probably because of
+ ;; timestamps reset or file sorting.
+ ))
+ (inputs
+ `(("0ad-data" ,0ad-data)
+ ("curl" ,curl)
+ ("enet" ,enet)
+ ("gloox" ,gloox)
+ ("icu4c" ,icu4c)
+ ("libpng" ,libpng)
+ ("libvorbis" ,libvorbis)
+ ("libxcursor" ,libxcursor)
+ ("libxml2" ,libxml2)
+ ("miniupnpc" ,miniupnpc)
+ ("mozjs-38" ,mozjs-38)
+ ("openal" ,openal)
+ ("sdl2" ,sdl2)
+ ("wxwidgets" ,wxwidgets)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("boost" ,boost)
+ ("cmake" ,cmake)
+ ("mesa" ,mesa)
+ ("pkg-config" ,pkg-config)
+ ("python-2" ,python-2)))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-bundles
+ (lambda _
+ (delete-file-recursively "libraries/source/spidermonkey")
+ #t))
+ (add-after 'unpack 'fix-x11-includes
+ (lambda _
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xlib.h>") "<X11/Xlib.h>"))
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xatom.h>") "<X11/Xatom.h>"))
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
+ #t))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((jobs (number->string (parallel-job-count)))
+ (out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (data (string-append out "/share/0ad")))
+ (setenv "JOBS" (string-append "-j" jobs))
+ (setenv "CC" "gcc")
+ (with-directory-excursion "build/workspaces"
+ (zero? (system* "./update-workspaces.sh"
+ (string-append "--libdir=" lib)
+ (string-append "--datadir=" data)
+ "--minimal-flags"
+ ;; TODO: "--with-system-nvtt"
+ "--with-system-mozjs38"))))))
+ (add-before 'build 'chdir
+ (lambda _
+ (chdir "build/workspaces/gcc")
+ #t))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (chdir "../../../binaries")
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ (data (string-append out "/share/0ad"))
+ (applications (string-append out "/share/applications"))
+ (pixmaps (string-append out "/share/pixmaps"))
+ (0ad-data (assoc-ref inputs "0ad-data")))
+ ;; data
+ (copy-recursively "data" data)
+ (for-each (lambda (file)
+ (symlink (string-append 0ad-data "/" file)
+ (string-append data "/" file)))
+ '("config" "mods/mod" "mods/public" "tools"))
+ ;; libraries
+ (for-each (lambda (file)
+ (install-file file lib))
+ (find-files "system" "\\.so$"))
+ ;; binaries
+ (install-file "system/pyrogenesis" bin)
+ (with-directory-excursion bin
+ (symlink "pyrogenesis" "0ad"))
+ ;; resources
+ (with-directory-excursion "../build/resources"
+ (install-file "0ad.desktop" applications)
+ (install-file "0ad.png" pixmaps))
+ #t)))
+ (add-after 'install 'check
+ (lambda _
+ (with-directory-excursion "system"
+ (zero? (system* "./test"))))))))
+ (home-page "https://play0ad.com")
+ (synopsis "3D, historically-based RTS game of ancient warfare")
+ (description "0 A.D. is a real-time strategy (RTS) game of ancient
+warfare. It's a historically-based war/economy game that allows players to
+relive or rewrite the history of twelve ancient civilizations, each depicted
+at their peak of economic growth and military prowess.
+
+0ad needs a window manager that supports 'Extended Window Manager Hints'.")
+ (license (list license:bsd-2
+ license:bsd-3
+ license:expat
+ license:gpl2+
+ license:ibmpl1.0
+ license:isc
+ license:lgpl2.1
+ license:lgpl3
+ license:mpl2.0
+ license:zlib))))
--
2.12.2
C
C
Clément Lassieur wrote on 23 Apr 2017 03:45
control message for bug #26618
(address . control@debbugs.gnu.org)
87lgqrvqv6.fsf@lassieur.org
block 26618 by 26588
N
Re: Add 0ad
(name . Clément Lassieur)(address . clement@lassieur.org)
20170423120751.3xm4fpbxtx2jk3fr@abyayala
Clément Lassieur transcribed 0.4K bytes:
Toggle quote (12 lines)
> Theses patches add 0ad and mozjs-38 (a dependency). I worked in
> cooperation with ng0.
>
> 0ad needs a window manager that supports 'Extended Window Manager
> Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
> for a list.
>
> I did not try multiplayer mode. I ran it with Awesome WM, so I did not
> test the icons and desktop things: I'm not sure about it.
>
> Please let me know if you see anything wrong :)

Wow, it's finally finished :) Games are the worst. Either they are small
and take a short time to package, or they take almost a year. I think I
started with this in August, in parallel to many other packages.

So cool, thanks for finishing this!

I will review this on monday or tuesday if no one else picks it up.
--
C
C
Clément Lassieur wrote on 23 Apr 2017 22:11
(address . guix-patches@gnu.org)
87vapurijh.fsf@lassieur.org
Clément Lassieur <clement@lassieur.org> writes:

Toggle quote (2 lines)
> I did not try multiplayer mode.

I just played a game with Mathieu, it works perfectly :)
C
C
Clément Lassieur wrote on 23 Apr 2017 23:05
(address . ng0@pragmatique.xyz)(address . guix-patches@gnu.org)
87tw5erg1l.fsf@lassieur.org
ng0@pragmatique.xyz writes:

Toggle quote (85 lines)
> ng0 transcribed 0.8K bytes:
>> Clément Lassieur transcribed 0.4K bytes:
>> > Theses patches add 0ad and mozjs-38 (a dependency). I worked in
>> > cooperation with ng0.
>> >
>> > 0ad needs a window manager that supports 'Extended Window Manager
>> > Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
>> > for a list.
>> >
>> > I did not try multiplayer mode. I ran it with Awesome WM, so I did not
>> > test the icons and desktop things: I'm not sure about it.
>> >
>> > Please let me know if you see anything wrong :)
>>
>> Wow, it's finally finished :) Games are the worst. Either they are small
>> and take a short time to package, or they take almost a year. I think I
>> started with this in August, in parallel to many other packages.
>>
>> So cool, thanks for finishing this!
>>
>> I will review this on monday or tuesday if no one else picks it up.
>> --
>> PGP and more: https://people.pragmatique.xyz/ng0/
>
> I get this error message:
>
> [user@abyayala ~/src/guix/review/guix]$ make; ./pre-inst-env guix package -i 0ad
> make all-recursive
> make[1]: Entering directory '/home/user/src/guix/review/guix'
> Making all in po/guix
> make[2]: Entering directory '/home/user/src/guix/review/guix/po/guix'
> make[2]: Leaving directory '/home/user/src/guix/review/guix/po/guix'
> Making all in po/packages
> make[2]: Entering directory '/home/user/src/guix/review/guix/po/packages'
> make[2]: Leaving directory '/home/user/src/guix/review/guix/po/packages'
> make[2]: Entering directory '/home/user/src/guix/review/guix'
> Compiling Scheme modules...
> LOAD (gnu packages games)
> ;;; note: source file ./gnu/packages/games.scm
> ;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/games.go
> ;;; note: source file ./gnu/packages/gnuzilla.scm
> ;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/gnuzilla.go
> Backtrace:
> 14 (primitive-load "/home/user/src/guix/review/guix/./buil…")
> In ice-9/eval.scm:
> 619:8 13 (_ #(#(#(#(#(#<directory (guile-user) 22…> …) …) …) …) …))
> In ice-9/boot-9.scm:
> 268:13 12 (for-each #<procedure load-module-file (a)> ("gnu/pa…" …))
> 2792:17 11 (resolve-interface (gnu packages games) #:select _ # _ # …)
> 2718:10 10 (_ (gnu packages games) _ _ #:ensure _)
> 2986:16 9 (try-module-autoload _ _)
> 2316:4 8 (save-module-excursion _)
> 3006:22 7 (_)
> In unknown file:
> 6 (primitive-load-path "gnu/packages/games" #<procedure 2…>)
> In ice-9/eval.scm:
> 619:8 5 (_ #f)
> 626:19 4 (_ #<directory (gnu packages games) 26be8c0>)
> 293:34 3 (_ #(#(#(#(#(#(#(#(#(#<direc…> …) …) …) …) …) …) …) …) …))
> 173:39 2 (_ #(#(#(#(#(#(#(#(#(#<direc…> …) …) …) …) …) …) …) …) …))
> 223:20 1 (proc #(#(#(#(#(#(#(#(#(#<di…> …) …) …) …) …) …) …) …) …))
> In unknown file:
> 0 (%resolve-variable (7 . license:arev) #<directory (gnu …>)
>
> ERROR: In procedure %resolve-variable:
> ERROR: Unbound variable: license:arev
> make[2]: *** [Makefile:5075: make-go] Error 1
> make[2]: Leaving directory '/home/user/src/guix/review/guix'
> make[1]: *** [Makefile:4202: all-recursive] Error 1
> make[1]: Leaving directory '/home/user/src/guix/review/guix'
> make: *** [Makefile:2792: all] Error 2
> ;;; WARNING: loading compiled file /run/current-system/profile/lib/guile/2.0/site-ccache/gnutls.go failed:
> ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory
> ;;; note: source file /home/user/src/guix/review/guix/gnu/packages/gnuzilla.scm
> ;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/gnuzilla.go
> ;;; note: source file /home/user/src/guix/review/guix/gnu/packages/gnuzilla.scm
> ;;; newer than compiled /run/current-system/profile/lib/guile/2.0/site-ccache/gnu/packages/gnuzilla.go
> ;;; note: source file /home/user/src/guix/review/guix/gnu/packages/games.scm
> ;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/games.go
> ;;; note: source file /home/user/src/guix/review/guix/gnu/packages/games.scm
> ;;; newer than compiled /run/current-system/profile/lib/guile/2.0/site-ccache/gnu/packages/games.go
> guix package: warning: failed to load '(gnu packages games)':
> ERROR: Unbound variable: license:arev
> guix package: error: 0ad: unknown package

It depends on another bug:


Sorry, I should have said it. I did tell debbugs that one patch was
blocking the other though.
N
20170423205016.duueglirgtgqyi5d@abyayala
ng0 transcribed 0.8K bytes:
Toggle quote (23 lines)
> Clément Lassieur transcribed 0.4K bytes:
> > Theses patches add 0ad and mozjs-38 (a dependency). I worked in
> > cooperation with ng0.
> >
> > 0ad needs a window manager that supports 'Extended Window Manager
> > Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
> > for a list.
> >
> > I did not try multiplayer mode. I ran it with Awesome WM, so I did not
> > test the icons and desktop things: I'm not sure about it.
> >
> > Please let me know if you see anything wrong :)
>
> Wow, it's finally finished :) Games are the worst. Either they are small
> and take a short time to package, or they take almost a year. I think I
> started with this in August, in parallel to many other packages.
>
> So cool, thanks for finishing this!
>
> I will review this on monday or tuesday if no one else picks it up.
> --
> PGP and more: https://people.pragmatique.xyz/ng0/

A bit unfortunate, but
debbugs ruins patches. I've tried to apply this and I have to reconstruct
the patches since at least the licenses one went to garbage thanks to
debbugs.
--
N
20170423205410.y2to2njp4qyzmvia@abyayala
ng0 transcribed 0.8K bytes:
Toggle quote (23 lines)
> Clément Lassieur transcribed 0.4K bytes:
> > Theses patches add 0ad and mozjs-38 (a dependency). I worked in
> > cooperation with ng0.
> >
> > 0ad needs a window manager that supports 'Extended Window Manager
> > Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
> > for a list.
> >
> > I did not try multiplayer mode. I ran it with Awesome WM, so I did not
> > test the icons and desktop things: I'm not sure about it.
> >
> > Please let me know if you see anything wrong :)
>
> Wow, it's finally finished :) Games are the worst. Either they are small
> and take a short time to package, or they take almost a year. I think I
> started with this in August, in parallel to many other packages.
>
> So cool, thanks for finishing this!
>
> I will review this on monday or tuesday if no one else picks it up.
> --
> PGP and more: https://people.pragmatique.xyz/ng0/

I get this error message:

[user@abyayala ~/src/guix/review/guix]$ make; ./pre-inst-env guix package -i 0ad
make all-recursive
make[1]: Entering directory '/home/user/src/guix/review/guix'
Making all in po/guix
make[2]: Entering directory '/home/user/src/guix/review/guix/po/guix'
make[2]: Leaving directory '/home/user/src/guix/review/guix/po/guix'
Making all in po/packages
make[2]: Entering directory '/home/user/src/guix/review/guix/po/packages'
make[2]: Leaving directory '/home/user/src/guix/review/guix/po/packages'
make[2]: Entering directory '/home/user/src/guix/review/guix'
Compiling Scheme modules...
LOAD (gnu packages games)
;;; note: source file ./gnu/packages/games.scm
;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/games.go
;;; note: source file ./gnu/packages/gnuzilla.scm
;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/gnuzilla.go
Backtrace:
14 (primitive-load "/home/user/src/guix/review/guix/./buil…")
In ice-9/eval.scm:
619:8 13 (_ #(#(#(#(#(#<directory (guile-user) 22…> …) …) …) …) …))
In ice-9/boot-9.scm:
268:13 12 (for-each #<procedure load-module-file (a)> ("gnu/pa…" …))
2792:17 11 (resolve-interface (gnu packages games) #:select _ # _ # …)
2718:10 10 (_ (gnu packages games) _ _ #:ensure _)
2986:16 9 (try-module-autoload _ _)
2316:4 8 (save-module-excursion _)
3006:22 7 (_)
In unknown file:
6 (primitive-load-path "gnu/packages/games" #<procedure 2…>)
In ice-9/eval.scm:
619:8 5 (_ #f)
626:19 4 (_ #<directory (gnu packages games) 26be8c0>)
293:34 3 (_ #(#(#(#(#(#(#(#(#(#<direc…> …) …) …) …) …) …) …) …) …))
173:39 2 (_ #(#(#(#(#(#(#(#(#(#<direc…> …) …) …) …) …) …) …) …) …))
223:20 1 (proc #(#(#(#(#(#(#(#(#(#<di…> …) …) …) …) …) …) …) …) …))
In unknown file:
0 (%resolve-variable (7 . license:arev) #<directory (gnu …>)

ERROR: In procedure %resolve-variable:
ERROR: Unbound variable: license:arev
make[2]: *** [Makefile:5075: make-go] Error 1
make[2]: Leaving directory '/home/user/src/guix/review/guix'
make[1]: *** [Makefile:4202: all-recursive] Error 1
make[1]: Leaving directory '/home/user/src/guix/review/guix'
make: *** [Makefile:2792: all] Error 2
;;; WARNING: loading compiled file /run/current-system/profile/lib/guile/2.0/site-ccache/gnutls.go failed:
;;; ERROR: In procedure load-thunk-from-memory: No such file or directory
;;; note: source file /home/user/src/guix/review/guix/gnu/packages/gnuzilla.scm
;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/gnuzilla.go
;;; note: source file /home/user/src/guix/review/guix/gnu/packages/gnuzilla.scm
;;; newer than compiled /run/current-system/profile/lib/guile/2.0/site-ccache/gnu/packages/gnuzilla.go
;;; note: source file /home/user/src/guix/review/guix/gnu/packages/games.scm
;;; newer than compiled /home/user/src/guix/review/guix/gnu/packages/games.go
;;; note: source file /home/user/src/guix/review/guix/gnu/packages/games.scm
;;; newer than compiled /run/current-system/profile/lib/guile/2.0/site-ccache/gnu/packages/games.go
guix package: warning: failed to load '(gnu packages games)':
ERROR: Unbound variable: license:arev
guix package: error: 0ad: unknown package


--
N
(name . Clément Lassieur)(address . clement@lassieur.org)(address . guix-patches@gnu.org)
20170423221404.cypcj7y6ipslsyaa@abyayala
Clément Lassieur transcribed 0.4K bytes:
Toggle quote (12 lines)
> Theses patches add 0ad and mozjs-38 (a dependency). I worked in
> cooperation with ng0.
>
> 0ad needs a window manager that supports 'Extended Window Manager
> Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
> for a list.
>
> I did not try multiplayer mode. I ran it with Awesome WM, so I did not
> test the icons and desktop things: I'm not sure about it.
>
> Please let me know if you see anything wrong :)

Wow:

[user@abyayala ~/src/guix/review/guix]$ ./pre-inst-env guix size $(./pre-inst-env guix build 0ad)
store item total self
/gnu/store/z49x8r9ffiva7i77mrhzm1bwwi44c6jl-0ad-0.0.21-alpha 2551.8 14.6 0.6%
/gnu/store/im4n3sbrn27rmsd5wpy2v0kn01pql15y-0ad-data-0.0.21-alpha 1546.5 1546.5 60.6%

are we able to keep nars for this around for 3 architectures?
--
C
C
Clément Lassieur wrote on 25 Apr 2017 11:19
control message for bug #26618
(address . control@debbugs.gnu.org)
8737cwkfoj.fsf@lassieur.org
tags 26618 patch
C
C
Clément Lassieur wrote on 1 May 2017 13:05
Re: Add 0ad
(address . guix-patches@gnu.org)
877f20degc.fsf@lassieur.org
Clément Lassieur <clement@lassieur.org> writes:

Toggle quote (12 lines)
> Theses patches add 0ad and mozjs-38 (a dependency). I worked in
> cooperation with ng0.
>
> 0ad needs a window manager that supports 'Extended Window Manager
> Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
> for a list.
>
> I did not try multiplayer mode. I ran it with Awesome WM, so I did not
> test the icons and desktop things: I'm not sure about it.
>
> Please let me know if you see anything wrong :)

This is a new patch with a license change suggested by Marius.
C
C
Clément Lassieur wrote on 1 May 2017 13:09
[PATCH] gnu: Add 0ad.
(address . 26618@debbugs.gnu.org)
20170501110945.32428-1-clement@lassieur.org
* gnu/packages/games.scm (0ad, 0ad-data): New variables.

Co-authored-by: ng0 <ng0@no-reply.pragmatique.xyz>
---
gnu/packages/games.scm | 189 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 189 insertions(+)

Toggle diff (220 lines)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index b31bb93db..c42569b48 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
+;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -52,6 +53,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix svn-download)
+ #:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
@@ -120,6 +122,10 @@
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages gnuzilla)
+ #:use-module (gnu packages icu4c)
+ #:use-module (gnu packages networking)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (guix build-system python)
@@ -3941,3 +3947,186 @@ fabulous Orb of Zot.")
license:expat
license:zlib
license:asl2.0))))
+
+(define-public 0ad-data
+ (package
+ (name "0ad-data")
+ (version "0.0.21-alpha")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://releases.wildfiregames.com/0ad-"
+ version "-unix-data.tar.xz"))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "15xadyrpvq27lm9p1ny7bcmmv56m16h3xadbkdx69gfkzxc3razk"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ (for-each
+ (lambda (name)
+ (let* ((dir (string-append "binaries/data/mods/" name))
+ (file (string-append dir "/" name ".zip"))
+ (unzip #$(file-append unzip "/bin/unzip")))
+ (system* unzip "-d" dir file)
+ (delete-file file)))
+ '("mod" "public"))
+ #t))))
+ (build-system trivial-build-system)
+ (native-inputs `(("tar" ,tar)
+ ("xz" ,xz)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((out (assoc-ref %outputs "out"))
+ (source (assoc-ref %build-inputs "source"))
+ (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
+ (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
+ (setenv "PATH" xz-path)
+ (mkdir out)
+ (zero? (system* tar "xvf" source "-C" out "--strip=3"))))))
+ (synopsis "Data files for 0ad")
+ (description "This package provides the data files for 0ad.")
+ (home-page "https://play0ad.com")
+ (license (list (license:fsdg-compatible
+ "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
+ (license:license-comment
+ (package-license font-bitstream-vera)))
+ (package-license font-bitstream-vera)
+ license:cc-by-sa3.0
+ license:expat
+ license:gfl1.0
+ license:gpl2+
+ license:gpl3+))))
+
+(define-public 0ad
+ (package
+ (name "0ad")
+ (version "0.0.21-alpha")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://releases.wildfiregames.com/0ad-"
+ version "-unix-build.tar.xz"))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1kw3hqnr737ipx4f03khz3hvsh3ha7r8iy9njppk2faa53j27gln"))
+ ;; A snippet here would cause a build failure, probably because of
+ ;; timestamps reset or file sorting.
+ ))
+ (inputs
+ `(("0ad-data" ,0ad-data)
+ ("curl" ,curl)
+ ("enet" ,enet)
+ ("gloox" ,gloox)
+ ("icu4c" ,icu4c)
+ ("libpng" ,libpng)
+ ("libvorbis" ,libvorbis)
+ ("libxcursor" ,libxcursor)
+ ("libxml2" ,libxml2)
+ ("miniupnpc" ,miniupnpc)
+ ("mozjs-38" ,mozjs-38)
+ ("openal" ,openal)
+ ("sdl2" ,sdl2)
+ ("wxwidgets" ,wxwidgets)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("boost" ,boost)
+ ("cmake" ,cmake)
+ ("mesa" ,mesa)
+ ("pkg-config" ,pkg-config)
+ ("python-2" ,python-2)))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-bundles
+ (lambda _
+ (delete-file-recursively "libraries/source/spidermonkey")
+ #t))
+ (add-after 'unpack 'fix-x11-includes
+ (lambda _
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xlib.h>") "<X11/Xlib.h>"))
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xatom.h>") "<X11/Xatom.h>"))
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
+ #t))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((jobs (number->string (parallel-job-count)))
+ (out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (data (string-append out "/share/0ad")))
+ (setenv "JOBS" (string-append "-j" jobs))
+ (setenv "CC" "gcc")
+ (with-directory-excursion "build/workspaces"
+ (zero? (system* "./update-workspaces.sh"
+ (string-append "--libdir=" lib)
+ (string-append "--datadir=" data)
+ "--minimal-flags"
+ ;; TODO: "--with-system-nvtt"
+ "--with-system-mozjs38"))))))
+ (add-before 'build 'chdir
+ (lambda _
+ (chdir "build/workspaces/gcc")
+ #t))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (chdir "../../../binaries")
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ (data (string-append out "/share/0ad"))
+ (applications (string-append out "/share/applications"))
+ (pixmaps (string-append out "/share/pixmaps"))
+ (0ad-data (assoc-ref inputs "0ad-data")))
+ ;; data
+ (copy-recursively "data" data)
+ (for-each (lambda (file)
+ (symlink (string-append 0ad-data "/" file)
+ (string-append data "/" file)))
+ '("config" "mods/mod" "mods/public" "tools"))
+ ;; libraries
+ (for-each (lambda (file)
+ (install-file file lib))
+ (find-files "system" "\\.so$"))
+ ;; binaries
+ (install-file "system/pyrogenesis" bin)
+ (with-directory-excursion bin
+ (symlink "pyrogenesis" "0ad"))
+ ;; resources
+ (with-directory-excursion "../build/resources"
+ (install-file "0ad.desktop" applications)
+ (install-file "0ad.png" pixmaps))
+ #t)))
+ (add-after 'install 'check
+ (lambda _
+ (with-directory-excursion "system"
+ (zero? (system* "./test"))))))))
+ (home-page "https://play0ad.com")
+ (synopsis "3D, historically-based RTS game of ancient warfare")
+ (description "0 A.D. is a real-time strategy (RTS) game of ancient
+warfare. It's a historically-based war/economy game that allows players to
+relive or rewrite the history of twelve ancient civilizations, each depicted
+at their peak of economic growth and military prowess.
+
+0ad needs a window manager that supports 'Extended Window Manager Hints'.")
+ (license (list license:bsd-2
+ license:bsd-3
+ license:expat
+ license:gpl2+
+ license:ibmpl1.0
+ license:isc
+ license:lgpl2.1
+ license:lgpl3
+ license:mpl2.0
+ license:zlib))))
--
2.12.2
C
C
Clément Lassieur wrote on 1 May 2017 16:03
(address . 26618@debbugs.gnu.org)
8737cod695.fsf@lassieur.org
Clément Lassieur <clement@lassieur.org> writes:

Toggle quote (17 lines)
> +(define-public 0ad
> + (package
> + (name "0ad")
> + (version "0.0.21-alpha")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "http://releases.wildfiregames.com/0ad-"
> + version "-unix-build.tar.xz"))
> + (file-name (string-append name "-" version ".tar.xz"))
> + (sha256
> + (base32
> + "1kw3hqnr737ipx4f03khz3hvsh3ha7r8iy9njppk2faa53j27gln"))
> + ;; A snippet here would cause a build failure, probably because of
> + ;; timestamps reset or file sorting.

I'll remove "file sorting" and add a link to https://bugs.gnu.org/26734.
C
C
Clément Lassieur wrote on 8 May 2017 20:16
Re: bug#26618: Add 0ad
(name . ng0)(address . contact.ng0@cryptolab.net)(address . 26618-done@debbugs.gnu.org)
87a86ntdrh.fsf@lassieur.org
ng0 <contact.ng0@cryptolab.net> writes:

Toggle quote (19 lines)
> Clément Lassieur transcribed 0.4K bytes:
>> Theses patches add 0ad and mozjs-38 (a dependency). I worked in
>> cooperation with ng0.
>>
>> 0ad needs a window manager that supports 'Extended Window Manager
>> Hints'. See https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
>> for a list.
>>
>> I did not try multiplayer mode. I ran it with Awesome WM, so I did not
>> test the icons and desktop things: I'm not sure about it.
>>
>> Please let me know if you see anything wrong :)
>
> Wow, it's finally finished :) Games are the worst. Either they are small
> and take a short time to package, or they take almost a year. I think I
> started with this in August, in parallel to many other packages.
>
> So cool, thanks for finishing this!

Thanks to you :-) Pushed!
Closed
?