* [bug#47392] [PATCH 0/2] Add Laminar.
@ 2021-03-25 15:23 Christopher Baines
2021-03-25 15:26 ` [bug#47392] [PATCH 1/2] gnu: Add laminar Christopher Baines
2021-04-05 9:56 ` Ludovic Courtès
0 siblings, 2 replies; 9+ messages in thread
From: Christopher Baines @ 2021-03-25 15:23 UTC (permalink / raw)
To: 47392
[-- Attachment #1: Type: text/plain, Size: 844 bytes --]
I've wrote these patches a long while ago, and I've been using Laminar
too, since Laminar fills a role in the patches testing setup I've been
working on.
I was holding off on submitting them until more could be done about the
JavaScript Laminar uses, but merging these patches would be useful, and
I think the line of including non-source JavaScript in packages has
already been crossed.
Christopher Baines (2):
gnu: Add laminar.
services: Add Laminar.
doc/guix.texi | 54 ++++++++++++++++++-
gnu/packages/ci.scm | 104 +++++++++++++++++++++++++++++++++++
gnu/services/ci.scm | 128 +++++++++++++++++++++++++++++++++++++++++++
gnu/tests/ci.scm | 129 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 413 insertions(+), 2 deletions(-)
create mode 100644 gnu/services/ci.scm
create mode 100644 gnu/tests/ci.scm
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 1/2] gnu: Add laminar.
2021-03-25 15:23 [bug#47392] [PATCH 0/2] Add Laminar Christopher Baines
@ 2021-03-25 15:26 ` Christopher Baines
2021-03-25 15:26 ` [bug#47392] [PATCH 2/2] services: Add Laminar Christopher Baines
2021-04-05 9:56 ` Ludovic Courtès
1 sibling, 1 reply; 9+ messages in thread
From: Christopher Baines @ 2021-03-25 15:26 UTC (permalink / raw)
To: 47392
* gnu/packages/ci.scm (laminar): New variable.
---
gnu/packages/ci.scm | 104 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index bafe997c82..4e13d01715 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -25,10 +25,13 @@
#:use-module ((guix licenses) #:prefix l:)
#:use-module (gnu packages)
#:use-module (guix packages)
+ #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix download)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
#:use-module (gnu packages docbook)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
@@ -40,11 +43,14 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-compression)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages serialization)
+ #:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu))
(define-public cuirass
@@ -170,3 +176,101 @@
intended as a replacement for Hydra.")
(home-page "https://www.gnu.org/software/guix/")
(license l:gpl3+))))
+
+(define-public laminar
+ (package
+ (name "laminar")
+ (version "1.0")
+ (source
+ (origin (method url-fetch)
+ (uri (string-append "https://github.com/ohwgiles/laminar/archive/"
+ version
+ ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "11m6h3rdmj2rsmsryy7r40gqccj4gg1cnqwy6blscs87gx4s423g"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; TODO Can't build tests
+ #:configure-flags
+ (list "-DCMAKE_CXX_STANDARD=17"
+ ;; "-DBUILD_TESTS=true" TODO: objcopy: js/stPskyUS: can't add
+ ;; section '.note.GNU-stack': file format not recognized
+ (string-append "-DLAMINAR_VERSION=" ,version))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-CMakeLists.txt
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("file\\(DOWNLOAD.*\n$")
+ "# file download removed by Guix --")
+ (("install\\(FILES etc/laminar.service DESTINATION \\$\\{SYSTEMD\\_UNITDIR\\}\\)")
+ "")
+ (("install\\(FILES \\$\\{CMAKE\\_CURRENT\\_BINARY\\_DIR\\}\\/laminar\\.service DESTINATION \\$\\{SYSTEMD\\_UNITDIR\\}\\)")
+ "")
+ (("install\\(FILES etc/laminar\\.conf DESTINATION \\/etc\\)") "")
+ (("\\/usr\\/") ""))
+ #t))
+ (add-after 'configure 'copy-in-javascript-and-css
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (mkdir-p "../build/js")
+ (for-each (lambda (file)
+ (copy-file
+ file
+ (string-append
+ "../build/js/" (strip-store-file-name file))))
+ (map (lambda (input)
+ (assoc-ref inputs input))
+ '("vue.min.js"
+ "vue-router.min.js"
+ "ansi_up.js"
+ "Chart.min.js")))
+ #t)))))
+ (inputs
+ `(("capnproto" ,capnproto)
+ ("rapidjson" ,rapidjson)
+ ("sqlite" ,sqlite)
+ ("boost" ,boost)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("googletest" ,googletest)
+
+ ("vue.min.js"
+ ,(origin (method url-fetch)
+ (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
+ "vue/2.6.12/vue.min.js"))
+ (sha256
+ (base32
+ "01zklp5cyik65dfn64m8h2y2dxzgbyzgmbf99y7fwgnf0155r7pq"))))
+ ("vue-router.min.js"
+ ,(origin (method url-fetch)
+ (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
+ "vue-router/3.4.8/vue-router.min.js"))
+ (sha256
+ (base32
+ "07gx7znb30rk1z7w6ca7dlfjp44q12bbq6jghwfm27mf6psa80as"))))
+ ("ansi_up.js"
+ ,(origin (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/"
+ "drudru/ansi_up/v1.3.0/ansi_up.js"))
+ (sha256
+ (base32
+ "1993dywxqi2ylnxybwk7m0s0bg2bq7kfllpyr0s8ck6chd0p8i6r"))))
+ ("Chart.min.js"
+ ,(origin (method url-fetch)
+ (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
+ "Chart.js/2.7.2/Chart.min.js"))
+ (sha256
+ (base32
+ "1jh4h12qchsba03dx03mrvs4r8g9qfjn56xm56jqzgqf7r209xq9"))))))
+ (synopsis "Lightweight Continuous Integration service")
+ (description
+ "Laminar is a lightweight and modular Continuous Integration service. It
+doesn't have a configuration web UI instead uses version-controllable
+configuration files and scripts.
+
+Laminar encourages the use of existing GNU/Linux tools such as bash and cron
+instead of reinventing them.")
+ (home-page "https://laminar.ohwg.net/")
+ (license l:gpl3+)))
--
2.30.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 2/2] services: Add Laminar.
2021-03-25 15:26 ` [bug#47392] [PATCH 1/2] gnu: Add laminar Christopher Baines
@ 2021-03-25 15:26 ` Christopher Baines
2021-04-05 9:58 ` [bug#47392] [PATCH 0/2] " Ludovic Courtès
0 siblings, 1 reply; 9+ messages in thread
From: Christopher Baines @ 2021-03-25 15:26 UTC (permalink / raw)
To: 47392
* gnu/services/ci.scm: New file.
* gnu/tests/ci.scm: New file.
* doc/guix.texi (Laminar): Document the Laminar service.
---
doc/guix.texi | 54 ++++++++++++++++++-
gnu/services/ci.scm | 128 +++++++++++++++++++++++++++++++++++++++++++
gnu/tests/ci.scm | 129 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 309 insertions(+), 2 deletions(-)
create mode 100644 gnu/services/ci.scm
create mode 100644 gnu/tests/ci.scm
diff --git a/doc/guix.texi b/doc/guix.texi
index 74f3fbd299..bd087dae05 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -342,7 +342,7 @@ Services
* DNS Services:: DNS daemons.
* VPN Services:: VPN daemons.
* Network File System:: NFS related services.
-* Continuous Integration:: The Cuirass service.
+* Continuous Integration:: Cuirass and Laminar services.
* Power Management Services:: Extending battery life.
* Audio Services:: The MPD.
* Virtualization Services:: Virtualization services.
@@ -14798,7 +14798,7 @@ declaration.
* DNS Services:: DNS daemons.
* VPN Services:: VPN daemons.
* Network File System:: NFS related services.
-* Continuous Integration:: The Cuirass service.
+* Continuous Integration:: Cuirass and Laminar services.
* Power Management Services:: Extending battery life.
* Audio Services:: The MPD.
* Virtualization Services:: Virtualization services.
@@ -27301,6 +27301,56 @@ the store items being published.
@end table
@end deftp
+@subsubheading Laminar
+
+@uref{https://laminar.ohwg.net/, Laminar} is a lightweight and modular
+Continuous Integration service. It doesn't have a configuration web UI
+instead uses version-controllable configuration files and scripts.
+
+Laminar encourages the use of existing GNU/Linux tools such as bash and
+cron instead of reinventing them.
+
+@defvr {Scheme Procedure} laminar-service-type
+The type of the Laminar service. Its value must be a
+@code{laminar-configuration} object, as described below.
+@end defvr
+
+@deftp {Data Type} laminar-configuration
+Data type representing the configuration of Laminar.
+
+@table @asis
+@item @code{laminar} (default: @code{laminar})
+The Laminar package to use.
+
+@item @code{home-directory} (default: @code{"/var/lib/laminar"})
+The directory for job configurations and run directories.
+
+@item @code{bind-http} (default: @code{"*:8080"})
+The interface/port or unix socket on which laminard should listen for
+incoming connections to the web frontend.
+
+@item @code{bind-rpc} (default: @code{"unix-abstract:laminar"})
+The interface/port or unix socket on which laminard should listen for
+incoming commands such as build triggers.
+
+@item @code{title} (default: @code{"Laminar"})
+The page title to show in the web frontend.
+
+@item @code{keep-rundirs} (default: @code{0})
+Set to an integer defining how many rundirs to keep per job. The
+lowest-numbered ones will be deleted. The default is 0, meaning all run
+dirs will be immediately deleted.
+
+@item @code{archive-url} (default: @code{#f})
+The web frontend served by laminard will use this URL to form links to
+artefacts archived jobs.
+
+@item @code{base-url} (default: @code{#f})
+Base URL to use for links to laminar itself.
+
+@end table
+@end deftp
+
@node Power Management Services
@subsection Power Management Services
diff --git a/gnu/services/ci.scm b/gnu/services/ci.scm
new file mode 100644
index 0000000000..400980dcd4
--- /dev/null
+++ b/gnu/services/ci.scm
@@ -0,0 +1,128 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
+;;;
+;;; 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 services ci)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages ci)
+ #:use-module (gnu services)
+ #:use-module (gnu services base)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu services admin)
+ #:use-module (gnu system shadow)
+ #:use-module (ice-9 match)
+ #:export (<laminar-configuration>
+ laminar-configuration
+ laminar-configuration?
+ laminar-configuration-home-directory
+ laminar-configuration-bind-http
+ laminar-configuration-bind-rpc
+ laminar-configuration-title
+ laminar-configuration-keep-rundirs
+ laminar-configuration-archive-url
+ laminar-configuration-base-url
+
+ laminar-service-type))
+
+;;;; Commentary:
+;;;
+;;; This module implements a service that to run instances of Laminar, a
+;;; continuous integration tool.
+;;;
+;;;; Code:
+
+(define-record-type* <laminar-configuration>
+ laminar-configuration make-laminar-configuration
+ laminar-configuration?
+ (laminar laminars-configuration-laminar
+ (default laminar))
+ (home-directory laminar-configuration-home-directory
+ (default "/var/lib/laminar"))
+ (bind-http laminar-configuration-bind-http
+ (default "*:8080"))
+ (bind-rpc laminar-configuration-bind-rpc
+ (default "unix-abstract:laminar"))
+ (title laminar-configuration-title
+ (default "Laminar"))
+ (keep-rundirs laminar-keep-rundirs
+ (default 0))
+ (archive-url laminar-archive-url
+ (default #f))
+ (base-url laminar-base-url
+ (default #f)))
+
+(define laminar-shepherd-service
+ (match-lambda
+ (($ <laminar-configuration> laminar home-directory
+ bind-http bind-rpc
+ title keep-rundirs archive-url
+ base-url)
+ (list (shepherd-service
+ (documentation "Run Laminar.")
+ (provision '(laminar))
+ (requirement '(networking))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append laminar "/sbin/laminard"))
+ #:environment-variables
+ `(,(string-append "LAMINAR_HOME="
+ #$home-directory)
+ ,(string-append "LAMINAR_BIND_HTTP="
+ #$bind-http)
+ ,(string-append "LAMINAR_TITLE="
+ #$title)
+ ,(string-append "LAMINAR_KEEP_RUNDIRS="
+ #$(number->string
+ keep-rundirs))
+ ,@(if #$archive-url
+ (list
+ (string-append "LAMINAR_ARCHIVE_URL="
+ #$archive-url))
+ '())
+ ,@(if #$base-url
+ (list
+ (string-append "LAMINAR_BASE_URL="
+ #$base-url))
+ '()))
+ #:user "laminar"
+ #:group "laminar"))
+ (stop #~(make-kill-destructor)))))))
+
+(define (laminar-account config)
+ "Return the user accounts and user groups for CONFIG."
+ (list (user-group
+ (name "laminar")
+ (system? #t))
+ (user-account
+ (name "laminar")
+ (group "laminar")
+ (system? #t)
+ (comment "Laminar privilege separation user")
+ (home-directory (laminar-configuration-home-directory config))
+ (shell #~(string-append #$shadow "/sbin/nologin")))))
+
+(define laminar-service-type
+ (service-type
+ (name 'laminar)
+ (extensions
+ (list
+ (service-extension shepherd-root-service-type laminar-shepherd-service)
+ (service-extension account-service-type laminar-account)))
+ (default-value (laminar-configuration))
+ (description
+ "Run the Laminar continuous integration service.")))
diff --git a/gnu/tests/ci.scm b/gnu/tests/ci.scm
new file mode 100644
index 0000000000..fe74e73e74
--- /dev/null
+++ b/gnu/tests/ci.scm
@@ -0,0 +1,129 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
+;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.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 tests ci)
+ #:use-module (gnu tests)
+ #:use-module (gnu system)
+ #:use-module (gnu system file-systems)
+ #:use-module (gnu system shadow)
+ #:use-module (gnu system vm)
+ #:use-module (gnu services)
+ #:use-module (gnu services ci)
+ #:use-module (gnu services web)
+ #:use-module (gnu services networking)
+ #:use-module (guix gexp)
+ #:use-module (guix store)
+ #:export (%test-laminar))
+
+
+\f
+(define %laminar-os
+ ;; Operating system under test.
+ (simple-operating-system
+ (service dhcp-client-service-type)
+ (service laminar-service-type)))
+
+(define* (run-laminar-test #:optional (http-port 8080))
+ "Run tests in %LAMINAR-OS, which has laminar running and listening on
+HTTP-PORT."
+ (define os
+ (marionette-operating-system
+ %laminar-os
+ #:imported-modules '((gnu services herd)
+ (guix combinators))))
+
+ (define vm
+ (virtual-machine
+ (operating-system os)
+ (port-forwardings `((,http-port . 8080)))))
+
+ (define test
+ (with-imported-modules '((gnu build marionette))
+ #~(begin
+ (use-modules (srfi srfi-11) (srfi srfi-64)
+ (ice-9 match)
+ (gnu build marionette)
+ (web uri)
+ (web client)
+ (web response))
+
+ (define marionette
+ ;; Forward the guest's HTTP-PORT, where laminar is listening, to
+ ;; port 8080 in the host.
+ (make-marionette (list #$vm)))
+
+ (mkdir #$output)
+ (chdir #$output)
+
+ (test-begin "laminar")
+
+ (test-assert "service running"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd))
+ (start-service 'laminar))
+ marionette))
+
+ (define* (retry-on-error f #:key times delay)
+ (let loop ((attempt 1))
+ (match (catch
+ #t
+ (lambda ()
+ (cons #t
+ (f)))
+ (lambda args
+ (cons #f
+ args)))
+ ((#t . return-value)
+ return-value)
+ ((#f . error-args)
+ (if (>= attempt times)
+ error-args
+ (begin
+ (sleep delay)
+ (loop (+ 1 attempt))))))))
+
+ (test-equal "http-get"
+ 200
+ (retry-on-error
+ (lambda ()
+ (let-values (((response text)
+ (http-get #$(format
+ #f
+ "http://localhost:~A/"
+ http-port)
+ ;; TODO: Why does decoding fail?
+ #:decode-body? #f)))
+ (response-code response)))
+ #:times 10
+ #:delay 5))
+
+ (test-end)
+ (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+ (gexp->derivation "laminar-test" test))
+
+(define %test-laminar
+ (system-test
+ (name "laminar")
+ (description "Connect to a running Laminar server.")
+ (value (run-laminar-test))))
--
2.30.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 0/2] Add Laminar.
2021-03-25 15:23 [bug#47392] [PATCH 0/2] Add Laminar Christopher Baines
2021-03-25 15:26 ` [bug#47392] [PATCH 1/2] gnu: Add laminar Christopher Baines
@ 2021-04-05 9:56 ` Ludovic Courtès
2021-04-07 6:35 ` Lars-Dominik Braun
2021-04-09 11:06 ` bug#47392: " Christopher Baines
1 sibling, 2 replies; 9+ messages in thread
From: Ludovic Courtès @ 2021-04-05 9:56 UTC (permalink / raw)
To: Christopher Baines; +Cc: 47392
Hi Chris,
Christopher Baines <mail@cbaines.net> skribis:
> I've wrote these patches a long while ago, and I've been using Laminar
> too, since Laminar fills a role in the patches testing setup I've been
> working on.
Neat.
> I was holding off on submitting them until more could be done about the
> JavaScript Laminar uses, but merging these patches would be useful, and
> I think the line of including non-source JavaScript in packages has
> already been crossed.
Heheh.
> + ("vue.min.js"
> + ,(origin (method url-fetch)
> + (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
> + "vue/2.6.12/vue.min.js"))
> + (sha256
> + (base32
> + "01zklp5cyik65dfn64m8h2y2dxzgbyzgmbf99y7fwgnf0155r7pq"))))
> + ("vue-router.min.js"
> + ,(origin (method url-fetch)
> + (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
> + "vue-router/3.4.8/vue-router.min.js"))
> + (sha256
> + (base32
> + "07gx7znb30rk1z7w6ca7dlfjp44q12bbq6jghwfm27mf6psa80as"))))
> + ("ansi_up.js"
> + ,(origin (method url-fetch)
> + (uri (string-append "https://raw.githubusercontent.com/"
> + "drudru/ansi_up/v1.3.0/ansi_up.js"))
> + (sha256
> + (base32
> + "1993dywxqi2ylnxybwk7m0s0bg2bq7kfllpyr0s8ck6chd0p8i6r"))))
> + ("Chart.min.js"
> + ,(origin (method url-fetch)
> + (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
> + "Chart.js/2.7.2/Chart.min.js"))
> + (sha256
> + (base32
> + "1jh4h12qchsba03dx03mrvs4r8g9qfjn56xm56jqzgqf7r209xq9"))))))
I wonder if it would be possible to, instead, get the non-minified files
upstream, and minify them with ‘uglify-js’, as is done in ‘hpcguix-web’.
WDYT?
That might also give more stable URLs that those above.
> + (synopsis "Lightweight Continuous Integration service")
> + (description
> + "Laminar is a lightweight and modular Continuous Integration service. It
Maybe s/Continuous Integration/continuous integration/.
The rest LGTM!
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 0/2] Add Laminar.
2021-03-25 15:26 ` [bug#47392] [PATCH 2/2] services: Add Laminar Christopher Baines
@ 2021-04-05 9:58 ` Ludovic Courtès
2021-04-09 11:06 ` Christopher Baines
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2021-04-05 9:58 UTC (permalink / raw)
To: Christopher Baines; +Cc: 47392
Christopher Baines <mail@cbaines.net> skribis:
> * gnu/services/ci.scm: New file.
> * gnu/tests/ci.scm: New file.
> * doc/guix.texi (Laminar): Document the Laminar service.
[...]
> +@defvr {Scheme Procedure} laminar-service-type
> +The type of the Laminar service. Its value must be a
> +@code{laminar-configuration} object, as described below.
> +@end defvr
It would be nice to add a config example with one or two sentences
explaining what it does.
> + #:export (<laminar-configuration>
Please don’t export the record type descriptor.
Otherwise LGTM, thanks!
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 0/2] Add Laminar.
2021-04-05 9:56 ` Ludovic Courtès
@ 2021-04-07 6:35 ` Lars-Dominik Braun
2021-04-09 11:09 ` Christopher Baines
2021-04-09 11:06 ` bug#47392: " Christopher Baines
1 sibling, 1 reply; 9+ messages in thread
From: Lars-Dominik Braun @ 2021-04-07 6:35 UTC (permalink / raw)
To: Christopher Baines; +Cc: 47392, Ludovic Courtès
[-- Attachment #1: Type: text/plain, Size: 649 bytes --]
Hi Chris,
> I wonder if it would be possible to, instead, get the non-minified files
> upstream, and minify them with ‘uglify-js’, as is done in ‘hpcguix-web’.
> WDYT?
you could also use the new node-build-system in combination with Jelle’s
WIP node importer in the branch wip-node-importer. Use something like:
guix environment guix --ad-hoc guile-semver
./pre-inst-env guix import npm-binary -r chart.js '^2.7'
I’ve run the imports for Laminar and attached a file with packages.
Usually there’s a dist/ directory in the output that contains minified
JavaScript. Obviously that isn’t a full source build (yet).
Cheers,
Lars
[-- Attachment #2: node.scm --]
[-- Type: application/vnd.lotus-screencam, Size: 7797 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 0/2] Add Laminar.
2021-04-05 9:58 ` [bug#47392] [PATCH 0/2] " Ludovic Courtès
@ 2021-04-09 11:06 ` Christopher Baines
0 siblings, 0 replies; 9+ messages in thread
From: Christopher Baines @ 2021-04-09 11:06 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 47392
[-- Attachment #1: Type: text/plain, Size: 818 bytes --]
Ludovic Courtès <ludo@gnu.org> writes:
> Christopher Baines <mail@cbaines.net> skribis:
>
>> * gnu/services/ci.scm: New file.
>> * gnu/tests/ci.scm: New file.
>> * doc/guix.texi (Laminar): Document the Laminar service.
>
> [...]
>
>> +@defvr {Scheme Procedure} laminar-service-type
>> +The type of the Laminar service. Its value must be a
>> +@code{laminar-configuration} object, as described below.
>> +@end defvr
>
> It would be nice to add a config example with one or two sentences
> explaining what it does.
Sure, I've added an example now, albeit the simplest one.
>> + #:export (<laminar-configuration>
>
> Please don’t export the record type descriptor.
I removed this.
> Otherwise LGTM, thanks!
Cool, I've pushed this as eda4bb4f16f74436b0caf1c584888c89b3c4c69b now.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#47392: [PATCH 0/2] Add Laminar.
2021-04-05 9:56 ` Ludovic Courtès
2021-04-07 6:35 ` Lars-Dominik Braun
@ 2021-04-09 11:06 ` Christopher Baines
1 sibling, 0 replies; 9+ messages in thread
From: Christopher Baines @ 2021-04-09 11:06 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 47392-done
[-- Attachment #1: Type: text/plain, Size: 2233 bytes --]
Ludovic Courtès <ludo@gnu.org> writes:
> Hi Chris,
>
> Christopher Baines <mail@cbaines.net> skribis:
>
>> + ("vue.min.js"
>> + ,(origin (method url-fetch)
>> + (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
>> + "vue/2.6.12/vue.min.js"))
>> + (sha256
>> + (base32
>> + "01zklp5cyik65dfn64m8h2y2dxzgbyzgmbf99y7fwgnf0155r7pq"))))
>> + ("vue-router.min.js"
>> + ,(origin (method url-fetch)
>> + (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
>> + "vue-router/3.4.8/vue-router.min.js"))
>> + (sha256
>> + (base32
>> + "07gx7znb30rk1z7w6ca7dlfjp44q12bbq6jghwfm27mf6psa80as"))))
>> + ("ansi_up.js"
>> + ,(origin (method url-fetch)
>> + (uri (string-append "https://raw.githubusercontent.com/"
>> + "drudru/ansi_up/v1.3.0/ansi_up.js"))
>> + (sha256
>> + (base32
>> + "1993dywxqi2ylnxybwk7m0s0bg2bq7kfllpyr0s8ck6chd0p8i6r"))))
>> + ("Chart.min.js"
>> + ,(origin (method url-fetch)
>> + (uri (string-append "https://cdnjs.cloudflare.com/ajax/libs/"
>> + "Chart.js/2.7.2/Chart.min.js"))
>> + (sha256
>> + (base32
>> + "1jh4h12qchsba03dx03mrvs4r8g9qfjn56xm56jqzgqf7r209xq9"))))))
>
> I wonder if it would be possible to, instead, get the non-minified files
> upstream, and minify them with ‘uglify-js’, as is done in ‘hpcguix-web’.
> WDYT?
>
> That might also give more stable URLs that those above.
Sure, I've adjusted the package definition to do this.
>> + (synopsis "Lightweight Continuous Integration service")
>> + (description
>> + "Laminar is a lightweight and modular Continuous Integration service. It
>
> Maybe s/Continuous Integration/continuous integration/.
Updated.
> The rest LGTM!
Great, I've pushed this as eda4bb4f16f74436b0caf1c584888c89b3c4c69b.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#47392] [PATCH 0/2] Add Laminar.
2021-04-07 6:35 ` Lars-Dominik Braun
@ 2021-04-09 11:09 ` Christopher Baines
0 siblings, 0 replies; 9+ messages in thread
From: Christopher Baines @ 2021-04-09 11:09 UTC (permalink / raw)
To: Lars-Dominik Braun; +Cc: 47392
[-- Attachment #1: Type: text/plain, Size: 1128 bytes --]
Lars-Dominik Braun <lars@6xq.net> writes:
> Hi Chris,
>
>> I wonder if it would be possible to, instead, get the non-minified files
>> upstream, and minify them with ‘uglify-js’, as is done in ‘hpcguix-web’.
>> WDYT?
> you could also use the new node-build-system in combination with Jelle’s
> WIP node importer in the branch wip-node-importer. Use something like:
>
> guix environment guix --ad-hoc guile-semver
> ./pre-inst-env guix import npm-binary -r chart.js '^2.7'
>
> I’ve run the imports for Laminar and attached a file with packages.
> Usually there’s a dist/ directory in the output that contains minified
> JavaScript. Obviously that isn’t a full source build (yet).
Thanks Lars, I did try a while back, but I think there are some hard
parts (babel) to address. I'd also prefer to keep the number of packages
tainted by Javascript blobs to a minimum, so I view what's going on in
the laminar package as a lesser evil.
I do really want to see proper packages for these things at some point
though, and I hope to be able to spend more time working on it at some
point.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-04-09 11:10 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-25 15:23 [bug#47392] [PATCH 0/2] Add Laminar Christopher Baines
2021-03-25 15:26 ` [bug#47392] [PATCH 1/2] gnu: Add laminar Christopher Baines
2021-03-25 15:26 ` [bug#47392] [PATCH 2/2] services: Add Laminar Christopher Baines
2021-04-05 9:58 ` [bug#47392] [PATCH 0/2] " Ludovic Courtès
2021-04-09 11:06 ` Christopher Baines
2021-04-05 9:56 ` Ludovic Courtès
2021-04-07 6:35 ` Lars-Dominik Braun
2021-04-09 11:09 ` Christopher Baines
2021-04-09 11:06 ` bug#47392: " Christopher Baines
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).