Subject: [PATCH] gnu: Add wabt.

From: Vagrant Cascadian <[email-masked]>
Date: Sun, 08 Sep 2019 01:10:46 -0700

Hi Guix,

wabt includes tools for manipulating WebAssembly/Wasm related files.

Does web.scm make sense for it? 

I'm sure better formatting could be done on the synopsis and
description... help would be appreciated!

This also adds yet another test suite dependency and optional feature
for diffoscope; not sure if that should be in a separate patch; in this
case I've added it in the same commit...

Thanks!

live well,
  vagrant

From c0ec454bd69e69d2104fd2c64f22c4b07c1bb80f Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <[email-masked]>
Date: Thu, 5 Sep 2019 11:13:22 -0700
Subject: [PATCH] gnu: Add wabt.

* gnu/packages/web (wabt): New variable.
  [use-module]: re2c.
* gnu/packages/package-management (diffoscope)[native-inputs]: Add wabt.
---
 gnu/packages/package-management.scm |  1 +
 gnu/packages/web.scm                | 40 +++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index b712bd7ec9..d5ead2acc3 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -664,6 +664,7 @@ transactions from C or Python.")
                        ("sqlite" ,sqlite)
                        ("squashfs-tools" ,squashfs-tools)
                        ("tcpdump" ,tcpdump)
+                       ("wabt" ,wabt)
                        ("xxd" ,xxd)
                        ("xz" ,xz)))
       (home-page "https://diffoscope.org/")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index ad6f0635dd..c4169da8c9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -123,6 +123,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages re2c)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
@@ -859,6 +860,45 @@ for efficient socket-like bidirectional reliable communication channels.")
     ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
     (license license:lgpl2.1)))
 
+(define-public wabt
+  (package
+    (name "wabt")
+    (version "1.0.11")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/WebAssembly/wabt")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hn88vlqyclpk79v3wg3lrssd9vwhjdgvb41g03jqakygxxgnmp5"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DBUILD_TESTS=OFF")
+       #:tests? #f))
+    (inputs `(("python" ,python-2)
+              ("re2c" ,re2c)))
+    (home-page "https://github.com/WebAssembly/wabt")
+    (synopsis "WebAssembly Binary Toolkit")
+    (description "WABT (pronounced: wabbit) is a suite of tools for
+WebAssembly, including:
+
+* wat2wasm: translate from WebAssembly text format to the WebAssembly binary
+  format
+* wasm2wat: the inverse of wat2wasm, translate from the binary format back
+  to the text format (also known as a .wat)
+* wasm-objdump: print information about a wasm binary.  Similar to objdump.
+* wasm-interp: decode and run a WebAssembly binary file using a stack-based
+  interpreter
+* wat-desugar: parse .wat text form as supported by the spec interpreter
+  (s-expressions, flat syntax, or mixed) and print canonical flat format
+* wasm2c: convert a WebAssembly binary file to a C source and header
+
+These tools are intended for use in (or for development of) toolchains or
+other systems that want to manipulate WebAssembly files.")
+    (license license:asl2.0)))
+
 (define-public websocketpp
   (package
     (name "websocketpp")
-- 
2.20.1