Display Debian package version in hypervisor log
authorBastian Blank <waldi@debian.org>
Sat, 5 Jul 2014 09:46:43 +0000 (11:46 +0200)
committerHans van Kranenburg <hans@knorrie.org>
Mon, 9 May 2022 20:30:57 +0000 (22:30 +0200)
During hypervisor boot, disable the banner and nicely display the xen
version as well as the Maintainer address from debian/control.

For this to work the SOURCE_BASE_DIR variable needs to be set by the
build system to the top directory, i.e. where the debian folder is.

Original patch by Bastian Blank <waldi@debian.org>
Modified by
Hans van Kranenburg <hans@knorrie.org>
Maximilian Engelhardt <maxi@daemonizer.de>

xen/Makefile
xen/common/kernel.c
xen/common/version.c
xen/drivers/char/console.c
xen/include/xen/compile.h.in
xen/include/xen/version.h

index 8abc71cf73aa0247304c09b2a40164a66fc11743..503104fe6a9b31b8408e7e8d712cf1c25c9063b4 100644 (file)
@@ -430,7 +430,7 @@ endef
 targets += .banner
 
 # compile.h contains dynamic build info. Rebuilt on every 'make' invocation.
-include/xen/compile.h: include/xen/compile.h.in .banner
+include/xen/compile.h: include/xen/compile.h.in
        @sed -e 's/@@date@@/$(XEN_BUILD_DATE)/g' \
            -e 's/@@time@@/$(XEN_BUILD_TIME)/g' \
            -e 's/@@whoami@@/$(XEN_WHOAMI)/g' \
@@ -441,9 +441,11 @@ include/xen/compile.h: include/xen/compile.h.in .banner
            -e 's/@@subversion@@/$(XEN_SUBVERSION)/g' \
            -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \
            -e 's!@@changeset@@!$(shell tools/scmversion $(XEN_ROOT) || echo "unavailable")!g' \
+           -e 's/@@system_distribution@@/$(shell lsb_release -is)/g' \
+           -e 's/@@system_maintainer_domain@@/$(shell grep Maintainer ${SOURCE_BASE_DIR}/debian/control | sed -ne 's,^Maintainer: .[^<]*<[^@>]*@\([^>]*\)>,\1,p')/g' \
+           -e 's/@@system_maintainer_local@@/$(shell grep Maintainer ${SOURCE_BASE_DIR}/debian/control | sed -ne 's,^Maintainer: .[^<]*<\([^@>]*\)@.*>,\1,p')/g' \
+           -e 's/@@system_version@@/$(shell cd ${SOURCE_BASE_DIR}; dpkg-parsechangelog | awk '/^Version:/ {print $$2}')/g' \
            < include/xen/compile.h.in > $@.new
-       @cat .banner
-       @sed -rf tools/process-banner.sed < .banner >> $@.new
        @mv -f $@.new $@
 
 asm-offsets.s: arch/$(TARGET_ARCH)/$(TARGET_SUBARCH)/asm-offsets.c
index e119e5401f9dd8ef504d3d32179e8f0367aad6b7..a31e6171eab6c871fbee18154fc0810026a69532 100644 (file)
@@ -402,9 +402,9 @@ static int __init buildinfo_init(void)
 
     hypfs_add_dir(&buildinfo, &compileinfo, true);
     hypfs_string_set_reference(&compiler, xen_compiler());
-    hypfs_string_set_reference(&compile_by, xen_compile_by());
+    hypfs_string_set_reference(&compile_by, xen_compile_system_maintainer_local());
     hypfs_string_set_reference(&compile_date, xen_compile_date());
-    hypfs_string_set_reference(&compile_domain, xen_compile_domain());
+    hypfs_string_set_reference(&compile_domain, xen_compile_system_maintainer_domain());
     hypfs_add_leaf(&compileinfo, &compiler, true);
     hypfs_add_leaf(&compileinfo, &compile_by, true);
     hypfs_add_leaf(&compileinfo, &compile_date, true);
@@ -485,8 +485,8 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 
         memset(&info, 0, sizeof(info));
         safe_strcpy(info.compiler,       deny ? xen_deny() : xen_compiler());
-        safe_strcpy(info.compile_by,     deny ? xen_deny() : xen_compile_by());
-        safe_strcpy(info.compile_domain, deny ? xen_deny() : xen_compile_domain());
+        safe_strcpy(info.compile_by,     deny ? xen_deny() : xen_compile_system_maintainer_local());
+        safe_strcpy(info.compile_domain, deny ? xen_deny() : xen_compile_system_maintainer_domain());
         safe_strcpy(info.compile_date,   deny ? xen_deny() : xen_compile_date());
         if ( copy_to_guest(arg, &info, 1) )
             return -EFAULT;
index d32013520863dd01626f991f2bcada5741d980fc..b44d41175ec078186d99ca2e4b64a20c880e8fac 100644 (file)
@@ -20,19 +20,24 @@ const char *xen_compile_time(void)
     return XEN_COMPILE_TIME;
 }
 
-const char *xen_compile_by(void)
+const char *xen_compile_system_distribution(void)
 {
-    return XEN_COMPILE_BY;
+    return XEN_COMPILE_SYSTEM_DISTRIBUTION;
 }
 
-const char *xen_compile_domain(void)
+const char *xen_compile_system_maintainer_local(void)
 {
-    return XEN_COMPILE_DOMAIN;
+    return XEN_COMPILE_SYSTEM_MAINTAINER_LOCAL;
 }
 
-const char *xen_compile_host(void)
+const char *xen_compile_system_maintainer_domain(void)
 {
-    return XEN_COMPILE_HOST;
+    return XEN_COMPILE_SYSTEM_MAINTAINER_DOMAIN;
+}
+
+const char *xen_compile_system_version(void)
+{
+    return XEN_COMPILE_SYSTEM_VERSION;
 }
 
 const char *xen_compiler(void)
@@ -60,11 +65,6 @@ const char *xen_changeset(void)
     return XEN_CHANGESET;
 }
 
-const char *xen_banner(void)
-{
-    return XEN_BANNER;
-}
-
 const char *xen_deny(void)
 {
     return "<denied>";
index 7d0a603d031183e0209a87fdca981a98009573c3..f1ec8108e0693a9067cdbe31314b662f8a53c911 100644 (file)
@@ -1000,14 +1000,11 @@ void __init console_init_preirq(void)
     pv_console_set_rx_handler(serial_rx);
 
     /* HELLO WORLD --- start-of-day banner text. */
-    spin_lock(&console_lock);
-    __putstr(xen_banner());
-    spin_unlock(&console_lock);
-    printk("Xen version %d.%d%s (%s@%s) (%s) %s %s\n",
+    printk("Xen version %d.%d%s (%s %s) (%s@%s) (%s) %s %s\n",
            xen_major_version(), xen_minor_version(), xen_extra_version(),
-           xen_compile_by(), xen_compile_domain(), xen_compiler(),
-           xen_build_info(), xen_compile_date());
-    printk("Latest ChangeSet: %s\n", xen_changeset());
+           xen_compile_system_distribution(), xen_compile_system_version(),
+           xen_compile_system_maintainer_local(), xen_compile_system_maintainer_domain(),
+           xen_compiler(), xen_build_info(), xen_compile_date());
 
     /* Locate and print the buildid, if applicable. */
     xen_build_init();
index 440ecb25c10bfa13a24293f0318937ee21ff8ca5..0c3ca583cd01d31e45e4f547becb8df100971293 100644 (file)
@@ -1,8 +1,9 @@
 #define XEN_COMPILE_DATE       "@@date@@"
 #define XEN_COMPILE_TIME       "@@time@@"
-#define XEN_COMPILE_BY         "@@whoami@@"
-#define XEN_COMPILE_DOMAIN     "@@domain@@"
-#define XEN_COMPILE_HOST       "@@hostname@@"
+#define XEN_COMPILE_SYSTEM_DISTRIBUTION                "@@system_distribution@@"
+#define XEN_COMPILE_SYSTEM_MAINTAINER_DOMAIN   "@@system_maintainer_domain@@"
+#define XEN_COMPILE_SYSTEM_MAINTAINER_LOCAL    "@@system_maintainer_local@@"
+#define XEN_COMPILE_SYSTEM_VERSION             "@@system_version@@"
 #define XEN_COMPILER           "@@compiler@@"
 
 #define XEN_VERSION            @@version@@
@@ -10,4 +11,3 @@
 #define XEN_EXTRAVERSION       "@@extraversion@@"
 
 #define XEN_CHANGESET          "@@changeset@@"
-#define XEN_BANNER             \
index 93c58773630ccadb9b4325a6d07bcb4d2c75e5eb..9d98d6ea276b3554da7f113f5e06c3bd5b848569 100644 (file)
@@ -6,9 +6,10 @@
 
 const char *xen_compile_date(void);
 const char *xen_compile_time(void);
-const char *xen_compile_by(void);
-const char *xen_compile_domain(void);
-const char *xen_compile_host(void);
+const char *xen_compile_system_distribution(void);
+const char *xen_compile_system_maintainer_domain(void);
+const char *xen_compile_system_maintainer_local(void);
+const char *xen_compile_system_version(void);
 const char *xen_compiler(void);
 unsigned int xen_major_version(void);
 unsigned int xen_minor_version(void);