[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#31395] [PATCH 2/2] gnu: Add snap.

From: Nicolas Goaziou
Subject: [bug#31395] [PATCH 2/2] gnu: Add snap.
Date: Thu, 10 May 2018 17:58:43 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)

Eric Bavier <address@hidden> writes:

> It's worse than that.  See e.g.
> Many other packages use it because the issue was only brought to light
> more recently.

I see. Thank you for the reference.

> You don't need to use a git hash at all.  If the release is tagged, you
> can use that in the git-reference commit.  E.g. a recent package I
> made, "ghostwriter", does this.

OK. I used `git-reference'. One difficulty I encountered is the working
directory when using `git-reference' is non-trivial. I though it would
put me in the cloned repository, but instead, it left me in an empty
directory, which is neither the source directory nor the output
directory. Maybe it should be documented in the manual.

Also, note that I couldn't use (which "sh") or (which "xdg-open"), since
both returned #f. Probably a PATH problem, so I sticked to my previous
way of finding bash and xdg-open.

Here is the updated patch. Let me know what you think.

>From e675d2300fd36e82943d0dabf80160d67afd4c99 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <address@hidden>
Date: Wed, 9 May 2018 23:27:21 +0200
Subject: [PATCH 2/2] gnu: Add snap.

* gnu/packages/education.scm (snap): New variable.
 gnu/packages/education.scm | 73 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 71 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 58f06c310..72cd7c61b 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <address@hidden>
 ;;; Copyright © 2016 Hartmut Goebel <address@hidden>
 ;;; Copyright © 2017, 2018 Efraim Flashner <address@hidden>
+;;; Copyright © 2018 Nicolas Goaziou <address@hidden>
 ;;; This file is part of GNU Guix.
@@ -22,27 +23,33 @@
 (define-module (gnu packages education)
   #:use-module (ice-9 regex)
   #:use-module (gnu packages)
-  #:use-module (gnu packages qt)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages javascript)
   #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix svn-download)
   #:use-module (guix utils)
-  #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (srfi srfi-1))
 (define-public gcompris
@@ -224,3 +231,65 @@ Useful support functions and an extensive progress 
tracker, topical lessons
 and the ability to create your own practice lessons make learning to type
     (license license:gpl2)))
+(define-public snap
+  (package
+    (name "snap")
+    (version "")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "";)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0cy3jhqqpmivqnfm9kmlnh3fhf3m3y4xqhikblk8vfjprh6vmcvd"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((source (assoc-ref %build-inputs "source"))
+                (out (assoc-ref %outputs "out"))
+                (share (string-append out "/share/snap")))
+           (copy-recursively source share)
+           ;; Replace the sole minified file in the package.
+           (with-directory-excursion share
+             (delete-file "FileSaver.min.js")
+             (symlink (string-append (assoc-ref %build-inputs "js-filesaver")
+                                     "/share/javascript/FileSaver.min.js")
+                      "FileSaver.min.js"))
+           ;; Create a "snap" executable.
+           (let* ((bin (string-append out "/bin"))
+                  (script (string-append bin "/snap"))
+                  (snap (string-append share "/snap.html"))
+                  (bash (string-append (assoc-ref %build-inputs "bash")
+                                       "/bin/sh"))
+                  (xdg-open (string-append (assoc-ref %build-inputs 
+                                           "/bin/xdg-open")))
+             (mkdir-p bin)
+             (call-with-output-file script
+               (lambda (port)
+                 (format port "#!~a\n~a '~a'" bash xdg-open snap)))
+             (chmod script #o555)))
+         #t)))
+    (inputs
+     `(("bash" ,bash-minimal)
+       ("js-filesaver" ,js-filesaver)
+       ("xdg-utils" ,xdg-utils)))
+    (home-page "";)
+    (synopsis "Visual, blocks based programming language")
+    (description "Snap! (formerly BYOB) is a visual, drag-and-drop
+programming language.  It is an extended reimplementation of Scratch (a
+project of the Lifelong Kindergarten Group at the MIT Media Lab) that
+allows you to Build Your Own Blocks.  It also features first class
+lists, first class procedures, and continuations.  These added
+capabilities make it suitable for a serious introduction to computer
+science for high school or college students.
+This package provides a @command{snap} executable calling @command{xdg-open}
+to open the application in a web browser, for offline usage.")
+    (license license:agpl3+)))

reply via email to

[Prev in Thread] Current Thread [Next in Thread]