unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems
@ 2015-08-23 18:29 Mark H Weaver
  2015-08-27 21:25 ` Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Mark H Weaver @ 2015-08-23 18:29 UTC (permalink / raw)
  To: guix-devel

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

This patch adjusts the 'eye-candy' portion of our GRUB configuration to
work properly on non-Intel systems, and specially on Loongson machines.

      Mark



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems --]
[-- Type: text/x-patch, Size: 3377 bytes --]

From 943a4a9e30e1e659a6e1591e965d215bf8e8f351 Mon Sep 17 00:00:00 2001
From: Mark H Weaver <mhw@netris.org>
Date: Sun, 9 Aug 2015 18:45:49 -0400
Subject: [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems.

* gnu/system/grub.scm (eye-candy): Accept additional 'system' argument.  Add
  local 'intel?' variable.  Replace the 'load_video' grub function with
  'setup_gfxterm', which includes everything in the 'if loadfont' form on
  Intel systems, but is empty on non-Intel.
  (grub-configuration-file): Pass 'system' to 'eye-candy.
---
 gnu/system/grub.scm | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 1378f5f..4e095c5 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -167,10 +167,14 @@ WIDTH/HEIGHT, or #f if none was found."
         (with-monad %store-monad
           (return #f)))))
 
-(define (eye-candy config port)
+(define (eye-candy config system port)
   "Return in %STORE-MONAD a gexp that writes to PORT (a port-valued gexp) the
 'grub.cfg' part concerned with graphics mode, background images, colors, and
 all that."
+  (define intel? (or (string-prefix? "x86_64-" system)
+                     (string-prefix? "i686-" system)
+                     (string-prefix? "i586-" system)))
+
   (define (theme-colors type)
     (let* ((theme  (grub-configuration-theme config))
            (colors (type theme)))
@@ -178,22 +182,27 @@ all that."
                      (symbol->string (assoc-ref colors 'bg)))))
 
   (mlet* %store-monad ((image (grub-background-image config)))
-    (return (and image #~(format #$port "
-function load_video {
+    (return (and image
+                 #~(let ((setup-gfxterm-body
+                          (if #$intel?
+                              "
+  set gfxmode=640x480
   insmod vbe
   insmod vga
   insmod video_bochs
   insmod video_cirrus
-}
+  insmod gfxterm
+  terminal_output gfxterm
+"
+                              "")))
+                     (format #$port "
+function setup_gfxterm {~a}
 
 # Set 'root' to the partition that contains /gnu/store.
 search --file --set ~a/share/grub/unicode.pf2
 
 if loadfont ~a/share/grub/unicode.pf2; then
-  set gfxmode=640x480
-  load_video
-  insmod gfxterm
-  terminal_output gfxterm
+  setup_gfxterm
 fi
 
 insmod png
@@ -204,10 +213,11 @@ else
   set menu_color_normal=cyan/blue
   set menu_color_highlight=white/blue
 fi~%"
-                        #$grub #$grub
-                        #$image
-                        #$(theme-colors grub-theme-color-normal)
-                        #$(theme-colors grub-theme-color-highlight))))))
+                             setup-gfxterm-body
+                             #$grub #$grub
+                             #$image
+                             #$(theme-colors grub-theme-color-normal)
+                             #$(theme-colors grub-theme-color-highlight)))))))
 
 \f
 ;;;
@@ -244,7 +254,7 @@ entries corresponding to old generations of the system."
                 #$linux #$linux-image-name (string-join (list #$@arguments))
                 #$initrd))))
 
-  (mlet %store-monad ((sugar (eye-candy config #~port)))
+  (mlet %store-monad ((sugar (eye-candy config system #~port)))
     (define builder
       #~(call-with-output-file #$output
           (lambda (port)
-- 
2.5.0


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

* Re: [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems
  2015-08-23 18:29 [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems Mark H Weaver
@ 2015-08-27 21:25 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2015-08-27 21:25 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

Mark H Weaver <mhw@netris.org> skribis:

> This patch adjusts the 'eye-candy' portion of our GRUB configuration to
> work properly on non-Intel systems, and specially on Loongson machines.

It effectively disables eye candy on non-Intel, no?  Or is it just that
those GRUB modules are not needed there?

> From 943a4a9e30e1e659a6e1591e965d215bf8e8f351 Mon Sep 17 00:00:00 2001
> From: Mark H Weaver <mhw@netris.org>
> Date: Sun, 9 Aug 2015 18:45:49 -0400
> Subject: [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems.
>
> * gnu/system/grub.scm (eye-candy): Accept additional 'system' argument.  Add
>   local 'intel?' variable.  Replace the 'load_video' grub function with
>   'setup_gfxterm', which includes everything in the 'if loadfont' form on
>   Intel systems, but is empty on non-Intel.
>   (grub-configuration-file): Pass 'system' to 'eye-candy.

[...]

> +    (return (and image
> +                 #~(let ((setup-gfxterm-body
> +                          (if #$intel?

Maybe just add a comment explicitly stating that on Loongson nothing
special is needed.

Otherwise LGTM, thanks!

Ludo’.

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

end of thread, other threads:[~2015-08-27 21:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-23 18:29 [PATCH] system: grub: Adjust eye-candy to work on non-Intel systems Mark H Weaver
2015-08-27 21:25 ` Ludovic Courtès

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).