From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web09.6867.1578637629948241961 for ; Thu, 09 Jan 2020 22:27:10 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: bob.c.feng@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jan 2020 22:27:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,415,1571727600"; d="scan'208";a="272310224" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 09 Jan 2020 22:27:09 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jan 2020 22:27:09 -0800 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jan 2020 22:27:08 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.197]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.28]) with mapi id 14.03.0439.000; Fri, 10 Jan 2020 14:27:07 +0800 From: "Bob Feng" To: Pankaj Bansal , "devel@edk2.groups.io" CC: "Gao, Liming" Subject: Re: [PATCH] BaseTools: Retrieve git version info Thread-Topic: [PATCH] BaseTools: Retrieve git version info Thread-Index: AQHVw8Vzig5G4ZSN1UqM8VvoF9LNoKfh3RvwgAAPk1CAADG+0IAAAtYQgAFP7nA= Date: Fri, 10 Jan 2020 06:27:06 +0000 Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D1615A1AB5@SHSMSX104.ccr.corp.intel.com> References: <20200105180132.23306-1-pankaj.bansal@nxp.com> <08650203BA1BD64D8AD9B6D5D74A85D1615A0A5C@SHSMSX104.ccr.corp.intel.com> <08650203BA1BD64D8AD9B6D5D74A85D1615A135B@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: bob.c.feng@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Pankaj, With your example in previous mail, I understand the usage model. Thanks. What about adding a scripts in BaseTools/Scripts to implementing this funct= ion? I'd expect the build wrapper only have the simple logic of calling bui= ld.py. Thanks, Bob -----Original Message----- From: Pankaj Bansal [mailto:pankaj.bansal@nxp.com]=20 Sent: Thursday, January 9, 2020 6:10 PM To: Feng, Bob C ; devel@edk2.groups.io Cc: Gao, Liming Subject: RE: [PATCH] BaseTools: Retrieve git version info Hi Bob, This OS environment variable is only defined up until the point build comma= nd is running. As soon as build command finishes, these OS environment variables also vani= sh. Regards, Pankaj Bansal -----Original Message----- From: Feng, Bob C Sent: Thursday, January 9, 2020 3:31 PM To: Pankaj Bansal ; devel@edk2.groups.io Cc: Gao, Liming Subject: RE: [PATCH] BaseTools: Retrieve git version info Hi Pankaj, I think if the firmware module need to show git version information, the ve= rsion information need to build into firmware binary but not set to OS envi= ronment variable. Thanks Bob -----Original Message----- From: Pankaj Bansal [mailto:pankaj.bansal@nxp.com] Sent: Thursday, January 9, 2020 3:09 PM To: Feng, Bob C ; devel@edk2.groups.io Cc: Gao, Liming Subject: RE: [PATCH] BaseTools: Retrieve git version info Hi Bob, Thanks for replying. Please see inline -----Original Message----- From: Feng, Bob C Sent: Thursday, January 9, 2020 11:43 AM To: Pankaj Bansal ; devel@edk2.groups.io Cc: Gao, Liming Subject: RE: [PATCH] BaseTools: Retrieve git version info Hi Pankaj, I would have some questions. Which module or tool will read WORKSPACE_GIT_= VERSION and PACKAGES_PATH_GIT_VERSION? -> Any driver or library can use this. I had tested this patch in Qemu afte= r adding these changes : index 0a1469550d..8e318f776f 100644 --- a/ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.c +++ b/ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.c @@ -18,6 +18,9 @@ #include #include +#define XPRINT(x) PRINT(x)^M +#define PRINT(x) #x^M +^M EFI_STATUS EFIAPI PlatformPeim ( @@ -98,6 +101,8 @@ PlatformPeim ( } BuildFvHob (PcdGet64 (PcdFvBaseAddress), PcdGet32 (PcdFvSize)); + DEBUG ((EFI_D_ERROR, "Edk2 version is %a\n",=20 + XPRINT(WORKSPACE_GIT_VERSION)));^M + DEBUG ((EFI_D_ERROR, "Edk2 platforms version is %a\n",=20 + XPRINT(PACKAGES_PATH_GIT_VERSION)));^M return EFI_SUCCESS; } diff --git a/ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.inf b/ArmVirt= Pkg/Library/PlatformPeiLib/PlatformPeiLib.inf index 46db117ac2..992e89b210 100644 --- a/ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.inf +++ b/ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.inf @@ -15,6 +15,10 @@ VERSION_STRING =3D 1.0 LIBRARY_CLASS =3D PlatformPeiLib +[BuildOptions]^M + GCC:*_*_*_CC_FLAGS =3D +-DWORKSPACE_GIT_VERSION=3D"$(WORKSPACE_GIT_VERSION)"^M + GCC:*_*_*_CC_FLAGS =3D +-DPACKAGES_PATH_GIT_VERSION=3D"$(PACKAGES_PATH_GIT_VERSION)"^M +^M [Sources] PlatformPeiLib.c =20 PACKAGES_PATH can include multiple path separated by ";", looks this patch= can't handle such case. -> I did not know this information, maybe we can enhance this function for = handling ";" in PACKAGES_PATH ? I would need some time to work on it. I would really appreciate if any= body can help. Why is this function implemented in build wrapper? -> The purpose of this patch is to provide a user method to determine which= source code was booted? Or if a UEFI driver/application has been loaded in system from shell, = which was the commit version for that? This helps debugging in case we are provided logs of running system or= logs of driver/application.=20 Since a user can make a standalone driver/application using build comm= and, I added this function in build wrapper. Thanks, Bob -----Original Message----- From: Pankaj Bansal [mailto:pankaj.bansal@nxp.com] Sent: Sunday, January 5, 2020 8:41 PM To: devel@edk2.groups.io Cc: Pankaj Bansal ; Feng, Bob C ; Gao, Liming Subject: [PATCH] BaseTools: Retrieve git version info Retrieve git version info and save as environment variable These variables = can be used in modules to print the vesrion info when uefi boots. This helps in identifying the codebase from logs. Cc: Bob Feng Cc: Liming Gao Signed-off-by: Pankaj Bansal --- Notes: When i ran PatchCheck.py script on this patch i received two errors: 1. Line ending ('\n') is not CRLF 2. The commit message format is not valid: * Contributed-under! (Note: this must be removed by the code contribut= or!) =20 I have fixed the [2] but i have not fixed [1], as this file's line endi= ngs are already unix like. Please suggest if i need to change these to wind= ows like? BaseTools/BinWrappers/PosixLike/build | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/BaseTools/BinWrappers/PosixLike/build b/BaseTools/BinWrappers/= PosixLike/build index f3770eed42..f32796db5d 100755 --- a/BaseTools/BinWrappers/PosixLike/build +++ b/BaseTools/BinWrappers/PosixLike/build @@ -10,5 +10,23 @@ full_cmd=3D${BASH_SOURCE:-$0} # see https://eur01.safeli= nks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fmywiki.wooledge.org%2FBashFA= Q%2F028&data=3D02%7C01%7Cpankaj.bansal%40nxp.com%7C19b30bd4b7a842b5bcab= 08d794eae947%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63714160897548725= 3&sdata=3Dqq%2FYPydngaQUjvinGG5I46VRT4EMXH3j4tcIntBCBGI%3D&reserved= =3D0 for a d dir=3D$(dirname "$full_cmd") cmd=3D${full_cmd##*/} =20 +git_version() +{ + command -v git>/dev/null 2>&1 + if [ $? -eq 0 ] && [ -n "$1" ] + then + head_or_tag=3D`git -C $1 describe --always 2>/dev/null` + printf $head_or_tag + git -C $1 diff-index --ignore-submodules --exit-code HEAD>/dev/null + if [ $? -eq 1 ]; then + printf '%s' -dirty + fi + else + printf "unknown" + fi +} + +export WORKSPACE_GIT_VERSION=3D$(git_version $WORKSPACE) export=20 +PACKAGES_PATH_GIT_VERSION=3D$(git_version $PACKAGES_PATH) export PYTHONPATH=3D"$dir/../../Source/Python${PYTHONPATH:+:"$PYTHONPATH"}= " exec "${python_exe:-python}" "$dir/../../Source/Python/$cmd/$cmd.py" "$@" -- 2.17.1