]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/uklibid: Option to store "Compile date" to `.uklibid_info`
authorSimon Kuenzer <simon@unikraft.io>
Tue, 10 Oct 2023 11:37:56 +0000 (13:37 +0200)
committerRazvan Deaconescu <razvand@unikraft.io>
Fri, 20 Oct 2023 16:35:55 +0000 (19:35 +0300)
Adds the option to store the compile time and date for a library and
unikernel. When enabled, `libinfo.S` is recompiled on every rebuild. This
is achieved by handing over the current time and date as compile flag.
For this purpose, the build system provides `$(HOSTUTC)`, the current
time and date in UTC format.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Robert Kuban <robert.kuban@opensynergy.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1117

Makefile
lib/uklibid/Config.uk
lib/uklibid/Makefile.uk
lib/uklibid/libinfo.S

index ad3af1d5e659bc250880fa1a6e9948e3dfabfe28..8df14d93ea88684fc463f120fe855121b7630abe 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -440,6 +440,7 @@ HOSTOBJCOPY := $(shell which $(HOSTOBJCOPY) || type -p $(HOSTOBJCOPY) || echo ob
 HOSTRANLIB     := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranlib)
 HOSTCC_VERSION := $(shell $(HOSTCC_NOCCACHE) --version | \
                   $(SED) -n -r 's/^.* ([0-9]*)\.([0-9]*)\.([0-9]*)[ ]*.*/\1 \2/p')
+HOSTUTC                := $(shell date -u)
 HOSTNAME       := $(shell hostname -s)
 HOSTUSER       := $(shell whoami)
 
index a8599cd07d572405dbed912d121edede73b8753d..ac96c382676410700066b829f9d208cc5668fa8d 100644 (file)
@@ -38,6 +38,13 @@ config LIBUKLIBID_INFO
                                used for during compilation for the unikernel
                                image.
 
+               config LIBUKLIBID_INFO_COMPILEDATE
+                       bool "Compile date"
+                       default y
+                       help
+                               This option stores the compile date and time for
+                               the unikernel image.
+
                config LIBUKLIBID_INFO_UKCONFIGGZ
                        bool "Embed gzipped configuration (.config)"
                        help
@@ -74,6 +81,12 @@ config LIBUKLIBID_INFO
                        help
                                Enables storing the C compiler ($(CC)) that was
                                used for each library.
+
+               config LIBUKLIBID_INFO_LIB_COMPILEDATE
+                       bool "Compile date"
+                       help
+                               This option stores the compile date and time for
+                               each library.
        endmenu
 
        menuconfig LIBUKLIBID_INFO_COMPILEDBY
index 110b3c4868dfcbeb46218500ebdfb6a5cbce46a6..21fc52b9f482a7021adf2a0b08cabff8b0a3339a 100644 (file)
@@ -44,10 +44,14 @@ ASFLAGS += -D__LIBUKLIBID_COMPILER__="$(CC_INFO)"
 ASFLAGS-$(CONFIG_OPTIMIZE_PIE) += -D__LIBUKLIBID_COMPILEOPT_PIE__=1
 ASFLAGS-$(CONFIG_OPTIMIZE_LTO) += -D__LIBUKLIBID_COMPILEOPT_LTO__=1
 ASFLAGS-$(CONFIG_OPTIMIZE_DEADELIM) += -D__LIBUKLIBID_COMPILEOPT_DCE__=1
+# NOTE: We hand-over $(HOSTUTC) instead of using __DATE__ and __TIME__ in order
+#       to ensure recompilation of `libinfo.S` due to changed compile flags
+ASFLAGS-$(CONFIG_LIBUKLIBID_INFO_LIB_COMPILEDATE) += -D__LIBUKLIBID_UTCDATE__="$(HOSTUTC)"
 ASFLAGS-$(CONFIG_LIBUKLIBID_INFO_COMPILEDBY_HOST) += -D__LIBUKLIBID_COMPILEDBY_HOST__="$(HOSTUSER)@$(HOSTNAME)"
 LIBUKLIBID_SRCS-$(CONFIG_LIBUKLIBID_INFO) +=  $(LIBUKLIBID_BASE)/infosec.ld
 LIBUKLIBID_SRCS-$(CONFIG_LIBUKLIBID_INFO) += $(LIBUKLIBID_BASE)/libinfo.S|global
 LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-y += -D__GLOBALINFO__
+LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-$(CONFIG_LIBUKLIBID_INFO_COMPILEDATE) += -DUK_UTCDATE="$(HOSTUTC)"
 LIBUKLIBID_LIBINFO_GLOBAL_CDEPS-$(CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ) += $(LIBUKLIBID_BUILD)/config.gz
 LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-$(CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ) += -DUK_CONFIGGZINC="$(LIBUKLIBID_BUILD)/config.gz"
 
index 7178d1010d086af2d72f547131d7477946272796..15e54ceeba9c805c4ea8f626b189fd54a378dd59 100644 (file)
        RECORD(UKLI_REC_COMPILER,
               .asciz STRINGIFY(__LIBUKLIBID_COMPILER__))
 #endif /* CONFIG_LIBUKLIBID_INFO_COMPILER */
+#if CONFIG_LIBUKLIBID_INFO_COMPILEDATE
+       RECORD(UKLI_REC_COMPILEDATE,
+              .asciz STRINGIFY(UK_UTCDATE))
+#endif /* CONFIG_LIBUKLIBID_INFO_COMPILEDATE */
 #if CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ
        RECORD(UKLI_REC_UKCONFIGGZ,    .incbin STRINGIFY(UK_CONFIGGZINC))
 #endif /* CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ */
        RECORD(UKLI_REC_COMPILER,
               .asciz STRINGIFY(__LIBUKLIBID_COMPILER__))
 #endif /* CONFIG_LIBUKLIBID_INFO_COMPILER */
+#if CONFIG_LIBUKLIBID_INFO_LIB_COMPILEDATE
+       RECORD(UKLI_REC_COMPILEDATE,
+              .asciz STRINGIFY(__LIBUKLIBID_UTCDATE__))
+#endif /* CONFIG_LIBUKLIBID_INFO_COMPILEDATE */
        RECORD(UKLI_REC_COMPILEOPTS,   .__u32 (
                        (!(!__LIBUKLIBID_COMPILEOPT_PIE__) * UKLI_REC_CO_PIE) |\
                        (!(!__LIBUKLIBID_COMPILEOPT_DCE__) * UKLI_REC_CO_DCE) |\