svn commit: r366435 - in head: . stand/lua

Kyle Evans kevans at FreeBSD.org
Sun Oct 4 22:41:45 UTC 2020


Author: kevans
Date: Sun Oct  4 22:41:43 2020
New Revision: 366435
URL: https://svnweb.freebsd.org/changeset/base/366435

Log:
  lualoader: improve the design of the brand-/logo- mechanism
  
  In the previous world order, any brand/logo was forced to pull in the
  drawer and call drawer.add{Brand,Logo} with the name their brand/logo is
  taking and a table describing it.
  
  In the new world order, these files just need to return a table that maps
  out graphics types to a table of the exact same format as what was
  previously being passed back into the drawer. The appeal here is not needing
  to grab a reference back to the drawer module and having a cleaner
  data-driven looking format for these. The format has been renamed to 'gfx-*'
  prefixes and each one can provide a logo and a brand.
  
  drawer.addBrand/drawer.addLogo will remain in place until FreeBSD 13, as
  there's no overhead to them and it's not yet worth the break in
  compatibility with any pre-existing brands and logos.
  
  Reviewed by:	freqlabs
  MFC after:	1 week
  Differential Revision:	https://reviews.freebsd.org/D24966

Added:
  head/stand/lua/gfx-beastie.lua
     - copied, changed from r366434, head/stand/lua/logo-beastie.lua
  head/stand/lua/gfx-beastiebw.lua
     - copied, changed from r366434, head/stand/lua/logo-beastiebw.lua
  head/stand/lua/gfx-fbsdbw.lua
     - copied, changed from r366434, head/stand/lua/logo-fbsdbw.lua
  head/stand/lua/gfx-orb.lua
     - copied, changed from r366434, head/stand/lua/logo-orb.lua
  head/stand/lua/gfx-orbbw.lua
     - copied, changed from r366434, head/stand/lua/logo-orbbw.lua
Deleted:
  head/stand/lua/logo-beastie.lua
  head/stand/lua/logo-beastiebw.lua
  head/stand/lua/logo-fbsdbw.lua
  head/stand/lua/logo-orb.lua
  head/stand/lua/logo-orbbw.lua
Modified:
  head/ObsoleteFiles.inc
  head/stand/lua/Makefile
  head/stand/lua/drawer.lua

Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc	Sun Oct  4 19:59:12 2020	(r366434)
+++ head/ObsoleteFiles.inc	Sun Oct  4 22:41:43 2020	(r366435)
@@ -36,6 +36,13 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20201004: logo files renamed to type-agnostic gfx-*.lua
+OLD_FILES+=boot/lua/logo-beastie.lua
+OLD_FILES+=boot/lua/logo-beastiebw.lua
+OLD_FILES+=boot/lua/logo-fbsdbw.lua
+OLD_FILES+=boot/lua/logo-orb.lua
+OLD_FILES+=boot/lua/logo-orbbw.lua
+
 # 20200923: memfd_test moved to /usr/tests/sys/posixshm
 OLD_FILES+=usr/tests/sys/kern/memfd_test
 

Modified: head/stand/lua/Makefile
==============================================================================
--- head/stand/lua/Makefile	Sun Oct  4 19:59:12 2020	(r366434)
+++ head/stand/lua/Makefile	Sun Oct  4 22:41:43 2020	(r366435)
@@ -20,11 +20,11 @@ FILES=	cli.lua \
 	drawer.lua \
 	hook.lua \
 	loader.lua \
-	logo-beastie.lua \
-	logo-beastiebw.lua \
-	logo-fbsdbw.lua \
-	logo-orb.lua \
-	logo-orbbw.lua \
+	gfx-beastie.lua \
+	gfx-beastiebw.lua \
+	gfx-fbsdbw.lua \
+	gfx-orb.lua \
+	gfx-orbbw.lua \
 	menu.lua \
 	password.lua \
 	screen.lua

Modified: head/stand/lua/drawer.lua
==============================================================================
--- head/stand/lua/drawer.lua	Sun Oct  4 19:59:12 2020	(r366434)
+++ head/stand/lua/drawer.lua	Sun Oct  4 22:41:43 2020	(r366435)
@@ -61,6 +61,35 @@ local function menuEntryName(drawing_menu, entry)
 	return entry.name
 end
 
+local function processFile(gfxname)
+	if gfxname == nil then
+		return false, "Missing filename"
+	end
+
+	local ret = try_include('gfx-' .. gfxname)
+	if ret == nil then
+		return false, "Failed to include gfx-" .. gfxname
+	end
+
+	-- Legacy format
+	if type(ret) ~= "table" then
+		return true
+	end
+
+	for gfxtype, def in pairs(ret) do
+		if gfxtype == "brand" then
+			drawer.addBrand(gfxname, def)
+		elseif gfxtype == "logo" then
+			drawer.addLogo(gfxname, def)
+		else
+			return false, "Unknown graphics type '" .. gfxtype ..
+			    "'"
+		end
+	end
+
+	return true
+end
+
 local function getBranddef(brand)
 	if brand == nil then
 		return nil
@@ -70,7 +99,18 @@ local function getBranddef(brand)
 
 	-- Try to pull it in
 	if branddef == nil then
-		try_include('brand-' .. brand)
+		local res, err = processFile(brand)
+		if not res then
+			-- This fallback should go away after FreeBSD 13.
+			try_include('brand-' .. brand)
+			-- If the fallback also failed, print whatever error
+			-- we encountered in the original processing.
+			if branddefs[brand] == nil then
+				print(err)
+				return nil
+			end
+		end
+
 		branddef = branddefs[brand]
 	end
 
@@ -86,7 +126,18 @@ local function getLogodef(logo)
 
 	-- Try to pull it in
 	if logodef == nil then
-		try_include('logo-' .. logo)
+		local res, err = processFile(logo)
+		if not res then
+			-- This fallback should go away after FreeBSD 13.
+			try_include('logo-' .. logo)
+			-- If the fallback also failed, print whatever error
+			-- we encountered in the original processing.
+			if logodefs[logo] == nil then
+				print(err)
+				return nil
+			end
+		end
+
 		logodef = logodefs[logo]
 	end
 
@@ -364,6 +415,8 @@ drawer.default_bw_logodef = 'orbbw'
 -- drawer module in case it's a filesystem issue.
 drawer.default_fallback_logodef = 'none'
 
+-- These should go away after FreeBSD 13; only available for backwards
+-- compatibility with old logo- files.
 function drawer.addBrand(name, def)
 	branddefs[name] = def
 end

Copied and modified: head/stand/lua/gfx-beastie.lua (from r366434, head/stand/lua/logo-beastie.lua)
==============================================================================
--- head/stand/lua/logo-beastie.lua	Sun Oct  4 19:59:12 2020	(r366434, copy source)
+++ head/stand/lua/gfx-beastie.lua	Sun Oct  4 22:41:43 2020	(r366435)
@@ -27,33 +27,29 @@
 -- $FreeBSD$
 --
 
-local drawer = require("drawer")
-
-local beastie_color = {
-"               \027[31m,        ,",
-"              /(        )`",
-"              \\ \\___   / |",
-"              /- \027[37m_\027[31m  `-/  '",
-"             (\027[37m/\\/ \\\027[31m \\   /\\",
-"             \027[37m/ /   |\027[31m `    \\",
-"             \027[34mO O   \027[37m) \027[31m/    |",
-"             \027[37m`-^--'\027[31m`<     '",
-"            (_.)  _  )   /",
-"             `.___/`    /",
-"               `-----' /",
-"  \027[33m<----.\027[31m     __ / __   \\",
-"  \027[33m<----|====\027[31mO)))\027[33m==\027[31m) \\) /\027[33m====|",
-"  \027[33m<----'\027[31m    `--' `.__,' \\",
-"               |        |",
-"                \\       /       /\\",
-"           \027[36m______\027[31m( (_  / \\______/",
-"         \027[36m,'  ,-----'   |",
-"         `--{__________)\027[m"
+return {
+	logo = {
+		graphic = {
+		    "               \027[31m,        ,",
+		    "              /(        )`",
+		    "              \\ \\___   / |",
+		    "              /- \027[37m_\027[31m  `-/  '",
+		    "             (\027[37m/\\/ \\\027[31m \\   /\\",
+		    "             \027[37m/ /   |\027[31m `    \\",
+		    "             \027[34mO O   \027[37m) \027[31m/    |",
+		    "             \027[37m`-^--'\027[31m`<     '",
+		    "            (_.)  _  )   /",
+		    "             `.___/`    /",
+		    "               `-----' /",
+		    "  \027[33m<----.\027[31m     __ / __   \\",
+		    "  \027[33m<----|====\027[31mO)))\027[33m==\027[31m) \\) /\027[33m====|",
+		    "  \027[33m<----'\027[31m    `--' `.__,' \\",
+		    "               |        |",
+		    "                \\       /       /\\",
+		    "           \027[36m______\027[31m( (_  / \\______/",
+		    "         \027[36m,'  ,-----'   |",
+		    "         `--{__________)\027[m",
+		},
+		requires_color = true,
+	}
 }
-
-drawer.addLogo("beastie", {
-	requires_color = true,
-	graphic = beastie_color,
-})
-
-return true

Copied and modified: head/stand/lua/gfx-beastiebw.lua (from r366434, head/stand/lua/logo-beastiebw.lua)
==============================================================================
--- head/stand/lua/logo-beastiebw.lua	Sun Oct  4 19:59:12 2020	(r366434, copy source)
+++ head/stand/lua/gfx-beastiebw.lua	Sun Oct  4 22:41:43 2020	(r366435)
@@ -27,32 +27,28 @@
 -- $FreeBSD$
 --
 
-local drawer = require("drawer")
-
-local beastiebw = {
-"               ,        ,",
-"              /(        )`",
-"              \\ \\___   / |",
-"              /- _  `-/  '",
-"             (/\\/ \\ \\   /\\",
-"             / /   | `    \\",
-"             O O   ) /    |",
-"             `-^--'`<     '",
-"            (_.)  _  )   /",
-"             `.___/`    /",
-"               `-----' /",
-"  <----.     __ / __   \\",
-"  <----|====O)))==) \\) /====|",
-"  <----'    `--' `.__,' \\",
-"               |        |",
-"                \\       /       /\\",
-"           ______( (_  / \\______/",
-"         ,'  ,-----'   |",
-"         `--{__________)"
+return {
+	logo = {
+		graphic = {
+		    "               ,        ,",
+		    "              /(        )`",
+		    "              \\ \\___   / |",
+		    "              /- _  `-/  '",
+		    "             (/\\/ \\ \\   /\\",
+		    "             / /   | `    \\",
+		    "             O O   ) /    |",
+		    "             `-^--'`<     '",
+		    "            (_.)  _  )   /",
+		    "             `.___/`    /",
+		    "               `-----' /",
+		    "  <----.     __ / __   \\",
+		    "  <----|====O)))==) \\) /====|",
+		    "  <----'    `--' `.__,' \\",
+		    "               |        |",
+		    "                \\       /       /\\",
+		    "           ______( (_  / \\______/",
+		    "         ,'  ,-----'   |",
+		    "         `--{__________)",
+		},
+	}
 }
-
-drawer.addLogo("beastiebw", {
-	graphic = beastiebw,
-})
-
-return true

Copied and modified: head/stand/lua/gfx-fbsdbw.lua (from r366434, head/stand/lua/logo-fbsdbw.lua)
==============================================================================
--- head/stand/lua/logo-fbsdbw.lua	Sun Oct  4 19:59:12 2020	(r366434, copy source)
+++ head/stand/lua/gfx-fbsdbw.lua	Sun Oct  4 22:41:43 2020	(r366435)
@@ -27,27 +27,23 @@
 -- $FreeBSD$
 --
 
-local drawer = require("drawer")
-
-local fbsd_logo = {
-"  ______",
-" |  ____| __ ___  ___ ",
-" | |__ | '__/ _ \\/ _ \\",
-" |  __|| | |  __/  __/",
-" | |   | | |    |    |",
-" |_|   |_|  \\___|\\___|",
-"  ____   _____ _____",
-" |  _ \\ / ____|  __ \\",
-" | |_) | (___ | |  | |",
-" |  _ < \\___ \\| |  | |",
-" | |_) |____) | |__| |",
-" |     |      |      |",
-" |____/|_____/|_____/"
+return {
+	logo = {
+		graphic = {
+		    "  ______",
+		    " |  ____| __ ___  ___ ",
+		    " | |__ | '__/ _ \\/ _ \\",
+		    " |  __|| | |  __/  __/",
+		    " | |   | | |    |    |",
+		    " |_|   |_|  \\___|\\___|",
+		    "  ____   _____ _____",
+		    " |  _ \\ / ____|  __ \\",
+		    " | |_) | (___ | |  | |",
+		    " |  _ < \\___ \\| |  | |",
+		    " | |_) |____) | |__| |",
+		    " |     |      |      |",
+		    " |____/|_____/|_____/",
+		},
+		shift = {x = 5, y = 4},
+	}
 }
-
-drawer.addLogo("fbsdbw", {
-	graphic = fbsd_logo,
-	shift = {x = 5, y = 4},
-})
-
-return true

Copied and modified: head/stand/lua/gfx-orb.lua (from r366434, head/stand/lua/logo-orb.lua)
==============================================================================
--- head/stand/lua/logo-orb.lua	Sun Oct  4 19:59:12 2020	(r366434, copy source)
+++ head/stand/lua/gfx-orb.lua	Sun Oct  4 22:41:43 2020	(r366435)
@@ -27,30 +27,26 @@
 -- $FreeBSD$
 --
 
-local drawer = require("drawer")
-
-local orb_color = {
-"  \027[31m```                        \027[31;1m`\027[31m",
-" s` `.....---...\027[31;1m....--.```   -/\027[31m",
-" +o   .--`         \027[31;1m/y:`      +.\027[31m",
-"  yo`:.            \027[31;1m:o      `+-\027[31m",
-"   y/               \027[31;1m-/`   -o/\027[31m",
-"  .-                  \027[31;1m::/sy+:.\027[31m",
-"  /                     \027[31;1m`--  /\027[31m",
-" `:                          \027[31;1m:`\027[31m",
-" `:                          \027[31;1m:`\027[31m",
-"  /                          \027[31;1m/\027[31m",
-"  .-                        \027[31;1m-.\027[31m",
-"   --                      \027[31;1m-.\027[31m",
-"    `:`                  \027[31;1m`:`",
-"      \027[31;1m.--             `--.",
-"         .---.....----.\027[m"
+return {
+	logo = {
+		graphic = {
+		    "  \027[31m```                        \027[31;1m`\027[31m",
+		    " s` `.....---...\027[31;1m....--.```   -/\027[31m",
+		    " +o   .--`         \027[31;1m/y:`      +.\027[31m",
+		    "  yo`:.            \027[31;1m:o      `+-\027[31m",
+		    "   y/               \027[31;1m-/`   -o/\027[31m",
+		    "  .-                  \027[31;1m::/sy+:.\027[31m",
+		    "  /                     \027[31;1m`--  /\027[31m",
+		    " `:                          \027[31;1m:`\027[31m",
+		    " `:                          \027[31;1m:`\027[31m",
+		    "  /                          \027[31;1m/\027[31m",
+		    "  .-                        \027[31;1m-.\027[31m",
+		    "   --                      \027[31;1m-.\027[31m",
+		    "    `:`                  \027[31;1m`:`",
+		    "      \027[31;1m.--             `--.",
+		    "         .---.....----.\027[m",
+		},
+		requires_color = true,
+		shift = {x = 2, y = 4},
+	}
 }
-
-drawer.addLogo("orb", {
-	requires_color = true,
-	graphic = orb_color,
-	shift = {x = 2, y = 4},
-})
-
-return true

Copied and modified: head/stand/lua/gfx-orbbw.lua (from r366434, head/stand/lua/logo-orbbw.lua)
==============================================================================
--- head/stand/lua/logo-orbbw.lua	Sun Oct  4 19:59:12 2020	(r366434, copy source)
+++ head/stand/lua/gfx-orbbw.lua	Sun Oct  4 22:41:43 2020	(r366435)
@@ -27,29 +27,25 @@
 -- $FreeBSD$
 --
 
-local drawer = require("drawer")
-
-local orbbw = {
-"  ```                        `",
-" s` `.....---.......--.```   -/",
-" +o   .--`         /y:`      +.",
-"  yo`:.            :o      `+-",
-"   y/               -/`   -o/",
-"  .-                  ::/sy+:.",
-"  /                     `--  /",
-" `:                          :`",
-" `:                          :`",
-"  /                          /",
-"  .-                        -.",
-"   --                      -.",
-"    `:`                  `:`",
-"      .--             `--.",
-"         .---.....----."
+return {
+	logo = {
+		graphic = {
+		    "  ```                        `",
+		    " s` `.....---.......--.```   -/",
+		    " +o   .--`         /y:`      +.",
+		    "  yo`:.            :o      `+-",
+		    "   y/               -/`   -o/",
+		    "  .-                  ::/sy+:.",
+		    "  /                     `--  /",
+		    " `:                          :`",
+		    " `:                          :`",
+		    "  /                          /",
+		    "  .-                        -.",
+		    "   --                      -.",
+		    "    `:`                  `:`",
+		    "      .--             `--.",
+		    "         .---.....----.",
+		},
+		shift = {x = 2, y = 4},
+	}
 }
-
-drawer.addLogo("orbbw", {
-	graphic = orbbw,
-	shift = {x = 2, y = 4},
-})
-
-return true


More information about the svn-src-all mailing list