unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#65669] [PATCH] gnu: Add book-sparc.
@ 2023-09-01  3:44 Artyom V. Poptsov
  2023-09-01 15:16 ` Adam Faiz via Guix-patches via
  0 siblings, 1 reply; 3+ messages in thread
From: Artyom V. Poptsov @ 2023-09-01  3:44 UTC (permalink / raw)
  To: 65669


[-- Attachment #1.1: Type: text/plain, Size: 232 bytes --]

Hello,

this patch adds my CreativeCommons-licensed book "Science, Programming,
Art and Radioelectronics Club (SPARC)"[1] that covers such topics as
basic electronics, programming, music and game development on Arduino
controllers.

[-- Attachment #1.2: 0001-gnu-books-Add-book-sparc.patch --]
[-- Type: text/x-diff, Size: 6787 bytes --]

From 8bae40efa9dbb151a68e4c22698bc635cdf2e5ba Mon Sep 17 00:00:00 2001
Message-Id: <8bae40efa9dbb151a68e4c22698bc635cdf2e5ba.1693539611.git.poptsov.artyom@gmail.com>
From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
Date: Thu, 31 Aug 2023 20:11:29 +0300
Subject: [PATCH] gnu: books: Add book-sparc.

* gnu/packages/books.scm: New module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add 'books.scm'.
---
 gnu/local.mk           |   1 +
 gnu/packages/books.scm | 119 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 120 insertions(+)
 create mode 100644 gnu/packages/books.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 9b493df8d5..034a666074 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -153,6 +153,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/bioinformatics.scm		\
   %D%/packages/bittorrent.scm			\
   %D%/packages/bison.scm			\
+  %D%/packages/books.scm			\
   %D%/packages/boost.scm			\
   %D%/packages/bootloaders.scm			\
   %D%/packages/bootstrap.scm			\
diff --git a/gnu/packages/books.scm b/gnu/packages/books.scm
new file mode 100644
index 0000000000..7e0e2e069b
--- /dev/null
+++ b/gnu/packages/books.scm
@@ -0,0 +1,119 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages books)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
+  #:use-module (guix gexp)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system copy)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages music)
+  #:use-module (gnu packages inkscape)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages tex)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages fontutils))
+
+(define-public book-sparc
+  (package
+    (name "book-sparc")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/artyom-poptsov/SPARC")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0dswwwkb3h88cl3mhiy79s8i7sa9lmw6fxaj782vxgif795lcpxs"))
+              (file-name (git-file-name name version))))
+    (build-system copy-build-system)
+    (native-inputs (list python-pygments bash-minimal perl which fontconfig))
+    (inputs (list font-liberation
+                  git
+                  gnu-make
+                  inkscape
+                  lilypond
+                  texlive
+                  texlive-fontspec
+                  texlive-koma-script
+                  texlive-trimspaces
+                  texlive-acronym
+                  texlive-adjustbox
+                  texlive-bibtex
+                  texlive-bibtexperllibs
+                  texlive-bigfoot
+                  texlive-circuitikz
+                  texlive-collection-langcyrillic
+                  texlive-glossaries
+                  texlive-glossaries-extra
+                  texlive-lilyglyphs
+                  texlive-minted
+                  texlive-multirow
+                  texlive-pgf
+                  texlive-pgfplots
+                  texlive-subfiles
+                  texlive-svg
+                  texlive-t1utils
+                  texlive-textpos
+                  texlive-transparent
+                  texlive-xetex))
+    (arguments
+     (list #:install-plan #~'(("sparc.pdf" "share/doc/sparc/"))
+           #:phases #~(modify-phases %standard-phases
+                        (delete 'check)
+                        (delete 'configure)
+                        (add-before 'install 'build
+                          (lambda* (#:key inputs parallel-build?
+                                    #:allow-other-keys)
+                            (use-modules (ice-9 regex)
+                                         (srfi srfi-1))
+                            (let* ((src (assoc-ref inputs "source"))
+                                   (rx (make-regexp
+                                        "/gnu/store/(.*)-book-sparc.*"))
+                                   (src-hash (match:substring (regexp-exec rx
+                                                               src) 1))
+                                   (random-seed (fold (lambda (ch prev)
+                                                        (+ (char->integer ch)
+                                                           prev)) 0
+                                                      (string->list src-hash))))
+                              (setenv "RANDOMSEED"
+                                      (number->string random-seed))
+                              (setenv "REPRODUCIBILITY" "yes"))
+                            (invoke "make" "-j"
+                                    (if parallel-build?
+                                        (number->string (parallel-job-count))
+                                        "1")))))))
+    (home-page "https://github.com/artyom-poptsov/SPARC")
+    (synopsis "Book on combining art and technology")
+    (description
+     "Science, Programming, Art and Radioelectronics Club (SPARC) is a book that
+explains how to combine the topics mentined in the title to build projects.  The
+book can be used to teach programming classes in colleges and to organize
+workshops in hackerspaces or other community-driven spaces.  Currently the book
+is available only in Russian.")
+    (license license:cc-by-sa4.0)))

base-commit: e5ce59e2120d186730727b8fe5a8a4aeb276a82e
prerequisite-patch-id: 74efcf51192ed8535c1b2d06b98acc271719facc
-- 
2.34.1


[-- Attachment #1.3: Type: text/plain, Size: 1199 bytes --]


The book is available only in Russian for now.

I thought that it is a neat idea to make a reproducible version of the
book in Guix, so I did.

Not sure if there's any book packaging policy here, but at least a saw
"Free as in Freedom" packaged in Guix, so I decided to package mine book
as well.

I created a separate module named "books.scm" as I couldn't figure out a
better place for the new package (and maybe there will be other books in
Guix as well in the future.)

And yes, the repository contains a PDF version of the book, but that's
not the vibe of reproducibility, right?  Maybe I'll remove the PDF
version from the repository in the future.

Many thanks to Nicolas Goaziou who helped[2] me with figuring out how to
make to work the LaTeX black magic in GNU Guix, and for packaging so
many LaTeX packages for GNU Guix.

- avp

References:
1. https://github.com/artyom-poptsov/SPARC
2. https://mail.gnu.org/archive/html/help-guix/2023-08/msg00075.html

-- 
Artyom "avp" Poptsov <poptsov.artyom@gmail.com>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 519 bytes --]

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#65669] [PATCH] gnu: Add book-sparc.
  2023-09-01  3:44 [bug#65669] [PATCH] gnu: Add book-sparc Artyom V. Poptsov
@ 2023-09-01 15:16 ` Adam Faiz via Guix-patches via
  2023-09-06  0:51   ` bug#65669: " Maxim Cournoyer
  0 siblings, 1 reply; 3+ messages in thread
From: Adam Faiz via Guix-patches via @ 2023-09-01 15:16 UTC (permalink / raw)
  To: Artyom V. Poptsov; +Cc: 65669

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

Hi Artyom,

On 9/1/23 11:44, Artyom V. Poptsov wrote:
> Hello,
> 
> this patch adds my CreativeCommons-licensed book "Science, Programming,
> Art and Radioelectronics Club (SPARC)"[1] that covers such topics as
> basic electronics, programming, music and game development on Arduino
> controllers.
> 
> 
> 
> The book is available only in Russian for now.
> 
> I thought that it is a neat idea to make a reproducible version of the
> book in Guix, so I did.
Cool, thanks for sharing your book!

> Not sure if there's any book packaging policy here, but at least a saw
> "Free as in Freedom" packaged in Guix, so I decided to package mine book
> as well.
> 
> I created a separate module named "books.scm" as I couldn't figure out a
> better place for the new package (and maybe there will be other books in
> Guix as well in the future.)I think books are accepted in Guix, it's just that there weren't any packaged until now.

> And yes, the repository contains a PDF version of the book, but that's
> not the vibe of reproducibility, right?  Maybe I'll remove the PDF
> version from the repository in the future.
Right, I deleted the file in the package snippet, but it would be better to delete it in the future.
I attached an improved patch, that has other changes in the snippet that you might also want to add to your repository.

> Many thanks to Nicolas Goaziou who helped[2] me with figuring out how to
> make to work the LaTeX black magic in GNU Guix, and for packaging so
> many LaTeX packages for GNU Guix.
> 
> - avp
> 
> References:
> 1. https://github.com/artyom-poptsov/SPARC
> 2. https://mail.gnu.org/archive/html/help-guix/2023-08/msg00075.html
> 

[-- Attachment #2: v1-0001-gnu-books-Add-book-sparc.patch --]
[-- Type: text/x-patch, Size: 5902 bytes --]

From 5967c109c2b224b4aaf7e8480816814c421c01b3 Mon Sep 17 00:00:00 2001
Message-ID: <5967c109c2b224b4aaf7e8480816814c421c01b3.1693581197.git.adam.faiz@disroot.org>
From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
Date: Thu, 31 Aug 2023 20:11:29 +0300
Subject: [PATCH v1] gnu: books: Add book-sparc.

* gnu/packages/books.scm: New module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add 'books.scm'.

Co-authored-by: Adam Faiz <adam.faiz@disroot.org>
---
 gnu/local.mk           |   1 +
 gnu/packages/books.scm | 120 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 121 insertions(+)
 create mode 100644 gnu/packages/books.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 1773ef6f61..0720bcfdd3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -153,6 +153,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/bioinformatics.scm		\
   %D%/packages/bittorrent.scm			\
   %D%/packages/bison.scm			\
+  %D%/packages/books.scm			\
   %D%/packages/boost.scm			\
   %D%/packages/bootloaders.scm			\
   %D%/packages/bootstrap.scm			\
diff --git a/gnu/packages/books.scm b/gnu/packages/books.scm
new file mode 100644
index 0000000000..97a7e3b45c
--- /dev/null
+++ b/gnu/packages/books.scm
@@ -0,0 +1,120 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;; Copyright © 2023 Adam Faiz <adam.faiz@disroot.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages books)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
+  #:use-module (guix gexp)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages music)
+  #:use-module (gnu packages inkscape)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages tex)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages fontutils))
+
+(define-public book-sparc
+  (package
+    (name "book-sparc")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/artyom-poptsov/SPARC")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0dswwwkb3h88cl3mhiy79s8i7sa9lmw6fxaj782vxgif795lcpxs"))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet
+               #~(begin
+                   (delete-file "sparc.pdf")
+                   (substitute* "version.tex.in"
+                     (("@COMMIT@") ""))
+                   (substitute* "Makefile"
+                     (("all: sparc.pdf") "all: install")
+                     (("^sparc.pdf:") "install:")
+                     (("(cp out/sparc.pdf) sparc.pdf" all cp)
+                      (string-append
+                       "mkdir -p $(DESTDIR)$(PREFIX)/share/doc/book-sparc"
+                       " && " cp
+                       " $(DESTDIR)$(PREFIX)/share/doc/book-sparc/sparc.pdf")))))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list bash-minimal
+           fontconfig
+           inkscape
+           lilypond
+           perl
+           python-pygments
+           which))
+    (inputs
+     (list font-liberation
+           texlive-acronym
+           texlive-adjustbox
+           texlive-bibtex
+           texlive-bibtexperllibs
+           texlive-bigfoot
+           texlive-circuitikz
+           texlive-collection-langcyrillic
+           texlive-fontspec
+           texlive-glossaries
+           texlive-glossaries-extra
+           texlive-koma-script
+           texlive-lilyglyphs
+           texlive-minted
+           texlive-multirow
+           texlive-pgf
+           texlive-pgfplots
+           texlive-subfiles
+           texlive-svg
+           texlive-t1utils
+           texlive-textpos
+           texlive-transparent
+           texlive-trimspaces
+           texlive-xetex))
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (delete 'check)
+               (delete 'configure)
+               (add-before 'build 'set-envs
+                 (lambda _
+                   (setenv "REPRODUCIBILITY" "yes")
+                   (setenv "PREFIX" #$output))))))
+    (home-page "https://github.com/artyom-poptsov/SPARC")
+    (synopsis "Book on combining art and technology")
+    (description
+     "Science, Programming, Art and Radioelectronics Club (SPARC) is a book that
+explains how to combine the topics mentined in the title to build projects.  The
+book can be used to teach programming classes in colleges and to organize
+workshops in hackerspaces or other community-driven spaces.  Currently the book
+is available only in Russian.")
+    (license license:cc-by-sa4.0)))

base-commit: 4e531e55dcdc99c83bcfe3eec67c3fd95c7b6ca7
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#65669: [PATCH] gnu: Add book-sparc.
  2023-09-01 15:16 ` Adam Faiz via Guix-patches via
@ 2023-09-06  0:51   ` Maxim Cournoyer
  0 siblings, 0 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2023-09-06  0:51 UTC (permalink / raw)
  To: Adam Faiz; +Cc: Artyom V. Poptsov, 65669-done

Hi,

Adam Faiz <adam.faiz@disroot.org> writes:

> Hi Artyom,
>
> On 9/1/23 11:44, Artyom V. Poptsov wrote:
>> Hello,
>> 
>> this patch adds my CreativeCommons-licensed book "Science, Programming,
>> Art and Radioelectronics Club (SPARC)"[1] that covers such topics as
>> basic electronics, programming, music and game development on Arduino
>> controllers.

Installed, thank you!

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-09-06  0:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-01  3:44 [bug#65669] [PATCH] gnu: Add book-sparc Artyom V. Poptsov
2023-09-01 15:16 ` Adam Faiz via Guix-patches via
2023-09-06  0:51   ` bug#65669: " Maxim Cournoyer

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).