[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
09/15: system: grub: Convert grub background using rsvg-convert, not ink
From: |
Mark H. Weaver |
Subject: |
09/15: system: grub: Convert grub background using rsvg-convert, not inkscape. |
Date: |
Thu, 20 Aug 2015 06:55:05 +0000 |
mhw pushed a commit to branch wip-loongson2f
in repository guix.
commit da573e4d389645d8be1807956c8e069fbf6c5658
Author: Mark H Weaver <address@hidden>
Date: Wed Aug 19 17:26:02 2015 -0400
system: grub: Convert grub background using rsvg-convert, not inkscape.
* gnu/system/grub.scm (svg->png): Accept additional arguments 'width' and
'height'. Reimplement using rsvg-convert and emacs instead of inkscape.
(resize-image): Remove.
(grub-background-image): Remove 'resize-image' step. Pass 'width' and
'height' to 'svg->png'.
---
gnu/system/grub.scm | 57 ++++++++++++++++++++++++++++++++------------------
1 files changed, 36 insertions(+), 21 deletions(-)
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 7f85adf..1378f5f 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <address@hidden>
+;;; Copyright © 2015 Mark H Weaver <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -26,8 +27,8 @@
#:use-module (guix download)
#:use-module (gnu artwork)
#:autoload (gnu packages grub) (grub)
- #:autoload (gnu packages inkscape) (inkscape)
- #:autoload (gnu packages imagemagick) (imagemagick)
+ #:autoload (gnu packages emacs) (emacs)
+ #:autoload (gnu packages gnome) (librsvg)
#:autoload (gnu packages compression) (gzip)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@@ -119,25 +120,40 @@
;;; Background image & themes.
;;;
-(define (svg->png svg)
+(define (svg->png svg width height)
"Build a PNG from SVG."
;; Don't use #:local-build? so that it's substitutable.
- (gexp->derivation "grub-image.png"
- #~(zero?
- (system* (string-append #$inkscape "/bin/inkscape")
- "--without-gui"
- (string-append "--export-png=" #$output)
- #$svg))))
-
-(define (resize-image image width height)
- "Resize IMAGE to WIDTHxHEIGHT."
- ;; Don't use #:local-build? so that it's substitutable.
- (let ((size (string-append (number->string width)
- "x" (number->string height))))
- (gexp->derivation "grub-image.resized.png"
- #~(zero?
- (system* (string-append #$imagemagick "/bin/convert")
- "-resize" #$size #$image #$output)))))
+ (let ((width (number->string width))
+ (height (number->string height)))
+ (gexp->derivation
+ "grub-image.png"
+ #~(begin
+ (use-modules (guix build emacs-utils))
+ (let ((image-file "/tmp/image.svg"))
+ ;; The SVG images in the guix-artwork repository contain a bottom
+ ;; "Background" layer containing a checkerboard pattern. Here we
+ ;; remove that layer.
+ (copy-file #$svg image-file)
+ (chmod image-file #o644)
+ (parameterize ((%emacs (string-append #$emacs "/bin/emacs")))
+ (emacs-batch-edit-file image-file
+ '(progn (goto-char (point-min))
+ (when (re-search-forward "inkscape:label=\"Background\""
+ nil nil)
+ (nxml-backward-up-element)
+ (set-mark (point))
+ (nxml-forward-element)
+ (kill-region (mark) (point))
+ (basic-save-buffer)))))
+ (zero?
+ (system* (string-append #$librsvg "/bin/rsvg-convert")
+ "--width" #$width
+ "--height" #$height
+ "--background-color" "black"
+ "--format" "png"
+ "--output" #$output
+ image-file))))
+ #:modules '((guix build emacs-utils)))))
(define* (grub-background-image config #:key (width 640) (height 480))
"Return the GRUB background image defined in CONFIG with a ratio of
@@ -147,8 +163,7 @@ WIDTH/HEIGHT, or #f if none was found."
(= (grub-image-aspect-ratio image) ratio))
(grub-theme-images (grub-configuration-theme config)))))
(if image
- (mlet %store-monad ((png (svg->png (grub-image-file image))))
- (resize-image png width height))
+ (svg->png (grub-image-file image) width height)
(with-monad %store-monad
(return #f)))))
- 02/15: gnu: Add linux-libre-loongson2f., (continued)
- 02/15: gnu: Add linux-libre-loongson2f., Mark H. Weaver, 2015/08/20
- 06/15: gnu: grub: Install documentation., Mark H. Weaver, 2015/08/20
- 04/15: gnu: grub: Add comment noting that 'fuse' would be a desirable input., Mark H. Weaver, 2015/08/20
- 14/15: MIPS_ONLY: services: xorg: Remove several drivers (for Yeeloong)., Mark H. Weaver, 2015/08/20
- 13/15: MIPS_ONLY: Don't try to copy modules that don't exist in the loongson2f kernel., Mark H. Weaver, 2015/08/20
- 07/15: gnu: grub: Add support for Loongson-based machines., Mark H. Weaver, 2015/08/20
- 11/15: gnu: gst-plugins-base: Disable tests on MIPS and ARM., Mark H. Weaver, 2015/08/20
- 10/15: system: grub: Adjust eye-candy to work on non-Intel systems., Mark H. Weaver, 2015/08/20
- 15/15: MIPS_ONLY: file-systems: Remove hugetlb cgroup filesystem., Mark H. Weaver, 2015/08/20
- 12/15: PRELIMINARY: Fix problem with 'guix system init --nogrub'., Mark H. Weaver, 2015/08/20
- 09/15: system: grub: Convert grub background using rsvg-convert, not inkscape.,
Mark H. Weaver <=