[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04/13: chromium-extension: Simplify builder code.
From: |
guix-commits |
Subject: |
04/13: chromium-extension: Simplify builder code. |
Date: |
Thu, 16 Dec 2021 16:23:11 -0500 (EST) |
mbakke pushed a commit to branch master
in repository guix.
commit f59bb27557ee8d115efb120292112387a6d23490
Author: Marius Bakke <marius@gnu.org>
AuthorDate: Wed Dec 15 23:06:46 2021 +0100
chromium-extension: Simplify builder code.
* gnu/build/chromium-extension.scm (chromium-json->profile-object): Remove
variable.
(file-sha256): New variable.
(make-chromium-extension): Rename OUTPUT parameter to prevent conflict.
Adjust other variable names for clarity.
[inputs]: Clear.
[arguments]: Inline and simplify the final transformation with a gexp.
---
gnu/build/chromium-extension.scm | 93 ++++++++++++++++------------------------
1 file changed, 37 insertions(+), 56 deletions(-)
diff --git a/gnu/build/chromium-extension.scm b/gnu/build/chromium-extension.scm
index d65df09..81c68f2 100644
--- a/gnu/build/chromium-extension.scm
+++ b/gnu/build/chromium-extension.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -127,66 +127,47 @@ format."
"--outder")
#:local-build? #t))
-(define (chromium-json->profile-object json signing-key)
- "Return a derivation that installs JSON to the directory searched by
-Chromium, using a file name (aka extension ID) derived from SIGNING-KEY."
- (define der (signing-key->public-der signing-key))
-
+(define (file-sha256sum file)
(with-extensions (list guile-gcrypt)
- (with-imported-modules '((guix build utils))
- (computed-file
- "chromium-extension"
- #~(begin
- (use-modules (guix build utils)
- (gcrypt base16)
- (gcrypt hash))
- (define (base16-string->chromium-base16 str)
- ;; Translate STR, a hexadecimal string, to a Chromium-style
- ;; representation using the letters a-p (where a=0, p=15).
- (define s1 "0123456789abcdef")
- (define s2 "abcdefghijklmnop")
- (let loop ((chars (string->list str))
- (converted '()))
- (if (null? chars)
- (list->string (reverse converted))
- (loop (cdr chars)
- (cons (string-ref s2 (string-index s1 (car chars)))
- converted)))))
-
- (let* ((checksum (bytevector->base16-string (file-sha256 #$der)))
- (file-name (base16-string->chromium-base16
- (string-take checksum 32)))
- (extension-directory (string-append #$output
-
"/share/chromium/extensions")))
- (mkdir-p extension-directory)
- (symlink #$json (string-append extension-directory "/"
- file-name ".json"))))
- #:local-build? #t))))
+ #~(begin
+ (use-modules (gcrypt base16) (gcrypt hash))
+ (bytevector->base16-string (file-sha256 #$file)))))
-(define* (make-chromium-extension p #:optional (output "out"))
- "Create a Chromium extension from package P and return a package that,
-when installed, will make the extension contained in P available as a
-Chromium browser extension. OUTPUT specifies which output of P to use."
- (let* ((pname (package-name p))
- (version (package-version p))
- (signing-key (make-signing-key pname)))
+(define* (make-chromium-extension pkg #:optional (pkg-output "out"))
+ "Create a Chromium extension from package PKG and return a package that,
+when installed, will make the extension contained in PKG available as a
+Chromium browser extension. PKG-OUTPUT specifies which output of PKG to use."
+ (let* ((name (package-name pkg))
+ (version (package-version pkg))
+ (private-key (make-signing-key name))
+ (public-key (signing-key->public-der private-key))
+ (checksum (file-sha256sum public-key))
+ (crx (make-crx private-key pkg pkg-output))
+ (json (crx->chromium-json crx version)))
(package
- (inherit p)
- (name (string-append pname "-chromium"))
+ (inherit pkg)
+ (name (string-append name "-chromium"))
(source #f)
- (build-system trivial-build-system)
(native-inputs '())
- (inputs
- `(("extension" ,(chromium-json->profile-object
- (crx->chromium-json (make-crx signing-key p output)
- version)
- signing-key))))
+ (inputs '())
(propagated-inputs '())
(outputs '("out"))
+ (build-system trivial-build-system)
(arguments
- '(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (copy-recursively (assoc-ref %build-inputs "extension")
- (assoc-ref %outputs "out"))))))))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+ (define (base16-char->chromium-base16 char)
+ ;; Translate CHAR, a hexadecimal character, to a
Chromium-style
+ ;; representation using the letters a-p (where a=0, p=15).
+ (string-ref "abcdefghijklmnop"
+ (string-index "0123456789abcdef" char)))
+ (let ((file-name (string-map base16-char->chromium-base16
+ (string-take #$checksum 32)))
+ (extension-directory
+ (string-append #$output
+ "/share/chromium/extensions")))
+ (mkdir-p extension-directory)
+ (symlink #$json (string-append extension-directory "/"
+ file-name ".json")))))))))
- branch master updated (d2af1df -> 00ec9e3), guix-commits, 2021/12/16
- 04/13: chromium-extension: Simplify builder code.,
guix-commits <=
- 03/13: gnu: ungoogled-chromium: Improve Vulkan support., guix-commits, 2021/12/16
- 10/13: gnu: file: Add 5.41., guix-commits, 2021/12/16
- 12/13: gnu: python-vcrpy: Fix test failure., guix-commits, 2021/12/16
- 08/13: gnu: python-daemon: Fix test failure., guix-commits, 2021/12/16
- 11/13: gnu: python-magic: Work around crash on .crx files., guix-commits, 2021/12/16
- 09/13: gnu: python-magic: Run more tests., guix-commits, 2021/12/16
- 05/13: chromium-extension: Reduce imported-modules scope., guix-commits, 2021/12/16
- 01/13: gnu: ungoogled-chromium: Enable RUNPATH validation., guix-commits, 2021/12/16
- 07/13: chromium-extension: Build .crx files in a deterministic fashion., guix-commits, 2021/12/16
- 13/13: gnu: rtv: Disable sanity check., guix-commits, 2021/12/16