all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Vivien Kraus via Guix-patches via <guix-patches@gnu.org>
To: Leo Prikler <leo.prikler@student.tugraz.at>,
	Maxime Devos <maximedevos@telenet.be>,
	49823@debbugs.gnu.org
Subject: [bug#49823] Using texinfo for the description
Date: Tue, 03 Aug 2021 01:21:37 +0200	[thread overview]
Message-ID: <a6b05ab7a106bdaa7677edfcadda4a101fb9d850.camel@planete-kraus.eu> (raw)
In-Reply-To: <80325791f76c740a20bd7ad04f9191da9299ec9a.camel@student.tugraz.at>

[-- Attachment #1: Type: text/plain, Size: 221 bytes --]

Here it is with the new wording.

Le lundi 02 août 2021 à 19:52 +0200, Leo Prikler a écrit :
> On a related note, we should imo rename this to nlohmann-json and
> patch
> dependants accordingly.  What do others think?

[-- Attachment #2: 0001-gnu-Add-jsonnet.patch --]
[-- Type: text/x-patch, Size: 6156 bytes --]

From 88d24816aa57e084be090303fda1e5840b703aa1 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Mon, 2 Aug 2021 16:07:08 +0200
Subject: [PATCH] gnu: Add jsonnet.

* gnu/packages/cpp.scm (jsonnet): New variable.
---
 Makefile.am                                   |  5 +-
 .../aux-files/jsonnet-md5/CMakeLists.txt      |  5 ++
 gnu/packages/aux-files/jsonnet-md5/md5.cpp    | 25 +++++++++
 gnu/packages/aux-files/jsonnet-md5/md5.h      |  8 +++
 gnu/packages/cpp.scm                          | 53 +++++++++++++++++++
 5 files changed, 95 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/aux-files/jsonnet-md5/CMakeLists.txt
 create mode 100644 gnu/packages/aux-files/jsonnet-md5/md5.cpp
 create mode 100644 gnu/packages/aux-files/jsonnet-md5/md5.h

diff --git a/Makefile.am b/Makefile.am
index d5ec909213..5cac270104 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -390,7 +390,10 @@ AUX_FILES =						\
   gnu/packages/aux-files/linux-libre/4.4-i686.conf	\
   gnu/packages/aux-files/linux-libre/4.4-x86_64.conf	\
   gnu/packages/aux-files/pack-audit.c			\
-  gnu/packages/aux-files/run-in-namespace.c
+  gnu/packages/aux-files/run-in-namespace.c             \
+  gnu/packages/aux-files/jsonnet-md5/CMakeLists.txt     \
+  gnu/packages/aux-files/jsonnet-md5/md5.cpp            \
+  gnu/packages/aux-files/jsonnet-md5/md5.h
 
 # Templates, examples.
 EXAMPLES =					\
diff --git a/gnu/packages/aux-files/jsonnet-md5/CMakeLists.txt b/gnu/packages/aux-files/jsonnet-md5/CMakeLists.txt
new file mode 100644
index 0000000000..498ad514e9
--- /dev/null
+++ b/gnu/packages/aux-files/jsonnet-md5/CMakeLists.txt
@@ -0,0 +1,5 @@
+add_library(md5 STATIC md5.cpp md5.h)
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(NETTLE REQUIRED nettle)
+target_link_libraries(md5 ${NETTLE_LIBRARIES})
+target_include_directories(md5 PUBLIC ${NETTLE_INCLUDE_DIRS})
diff --git a/gnu/packages/aux-files/jsonnet-md5/md5.cpp b/gnu/packages/aux-files/jsonnet-md5/md5.cpp
new file mode 100644
index 0000000000..b8fcb536dd
--- /dev/null
+++ b/gnu/packages/aux-files/jsonnet-md5/md5.cpp
@@ -0,0 +1,25 @@
+#include "md5.h"
+#include <nettle/md5.h>
+#include <nettle/base16.h>
+#include <string>
+#include <vector>
+
+std::string
+md5 (const std::string str)
+{
+  // Convert str to a byte array
+  std::vector<uint8_t> input (str.begin (), str.end ());
+
+  // Compute the digest
+  struct md5_ctx nettle_ctx;
+  md5_init (&nettle_ctx);
+  md5_update (&nettle_ctx, input.size (), input.data ());
+  uint8_t digest[MD5_DIGEST_SIZE];
+  md5_digest (&nettle_ctx, MD5_DIGEST_SIZE, digest);
+
+  // Encode it to base16
+  std::vector<char> encoded (BASE16_ENCODE_LENGTH (MD5_DIGEST_SIZE));
+  base16_encode_update (encoded.data (), MD5_DIGEST_SIZE, digest);
+  std::string final_digest (encoded.begin (), encoded.end ());
+  return final_digest;
+}
diff --git a/gnu/packages/aux-files/jsonnet-md5/md5.h b/gnu/packages/aux-files/jsonnet-md5/md5.h
new file mode 100644
index 0000000000..0c8a826e04
--- /dev/null
+++ b/gnu/packages/aux-files/jsonnet-md5/md5.h
@@ -0,0 +1,8 @@
+#ifndef BZF_MD5_H
+#define BZF_MD5_H
+#include <string>
+
+// Return the hexadecimal digest.
+std::string md5 (const std::string str);
+
+#endif
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 42e9d50687..c4ce820eaf 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -45,6 +45,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix modules)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
@@ -63,6 +64,7 @@
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages logging)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages nettle)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -1211,3 +1213,54 @@ of reading and writing XML.")
     ;; incompatible with the GPL v2.  Refer to the file named FLOSSE for the
     ;; details.
     (license license:gpl2+)))
+
+(define-public jsonnet
+  (package
+    (name "jsonnet")
+    (version "0.17.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/google/jsonnet")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ddz14699v5lqx3dh0mb7hfffr6fk5zhmzn3z8yxkqqvriqnciim"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            (delete-file-recursively "third_party")
+            (delete-file-recursively "doc/third_party")
+            (substitute*
+                '("core/vm.cpp")
+              (("#include \"json.hpp\"") "#include <nlohmann/json.hpp>"))
+            (mkdir-p "third_party/md5")
+            (copy-file #+(local-file
+                          (search-auxiliary-file "jsonnet-md5/CMakeLists.txt"))
+                       "third_party/md5/CMakeLists.txt")
+            (copy-file #+(local-file
+                          (search-auxiliary-file "jsonnet-md5/md5.h"))
+                       "third_party/md5/md5.h")
+            (copy-file #+(local-file
+                          (search-auxiliary-file "jsonnet-md5/md5.cpp"))
+                       "third_party/md5/md5.cpp")))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DUSE_SYSTEM_GTEST=ON" "-DUSE_SYSTEM_JSON=ON")))
+    (propagated-inputs
+     '())
+    (native-inputs
+     `(("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("json-modern-cxx" ,json-modern-cxx)
+       ;; jsonnet uses a md5 implementation claiming to be from
+       ;; https://www.bzflag.org/, but they don’t use it anymore. We
+       ;; replace it with md5 from nettle.
+       ("nettle" ,nettle)))
+    (home-page "https://jsonnet.org/")
+    (synopsis "Data templating language")
+    (description "Jsonnet is a templating language extending JSON
+syntax with variables, conditions, functions and more.")
+    (license license:asl2.0)))
-- 
2.32.0


  reply	other threads:[~2021-08-02 23:22 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-02 15:01 [bug#49823] [PATCH] gnu: Add jsonnet Vivien Kraus via Guix-patches via
2021-08-02 16:15 ` [bug#49823] Using texinfo for the description Vivien Kraus via Guix-patches via
2021-08-02 16:35   ` Maxime Devos
2021-08-02 17:09     ` Vivien Kraus via Guix-patches via
2021-08-02 17:52       ` Leo Prikler
2021-08-02 23:21         ` Vivien Kraus via Guix-patches via [this message]
2021-08-10 12:58 ` [bug#49823] [PATCH] gnu: Add jsonnet Ludovic Courtès
2021-08-10 14:28   ` Vivien Kraus via Guix-patches via
2021-08-11  9:56     ` Ludovic Courtès
2021-08-11 10:12       ` Vivien Kraus via Guix-patches via
2021-08-12  7:53         ` bug#49823: " Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a6b05ab7a106bdaa7677edfcadda4a101fb9d850.camel@planete-kraus.eu \
    --to=guix-patches@gnu.org \
    --cc=49823@debbugs.gnu.org \
    --cc=leo.prikler@student.tugraz.at \
    --cc=maximedevos@telenet.be \
    --cc=vivien@planete-kraus.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

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