From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mx.groups.io with SMTP id smtpd.web10.7196.1649169741847273080 for ; Tue, 05 Apr 2022 07:42:22 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@linux.microsoft.com header.s=default header.b=kKLHv51Z; spf=pass (domain: linux.microsoft.com, ip: 13.77.154.182, mailfrom: mikuback@linux.microsoft.com) Received: from [192.168.4.22] (unknown [47.201.46.36]) by linux.microsoft.com (Postfix) with ESMTPSA id E36E120DFD7B; Tue, 5 Apr 2022 07:42:20 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com E36E120DFD7B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1649169741; bh=X6PmgY0JsQ32ONSpqJmu4lxth2f825OViPB5D+8u/MI=; h=Date:Subject:From:To:References:In-Reply-To:From; b=kKLHv51ZREiGHnnunpsBqZ48bj0cJcqhUbv+B3e4Gtw2AfaSOAQrh4Dd2gUS+5bhA ukbU9ve6FXH5GBpuIgGX8Cus2B4TNr6OxkToi9AAb61w8Tcgi9upoQrrybJ6MjAZIA QJLufcXGmVjoBjT6sijJm98Xhm/LDSUrvoDe41p4= Message-ID: <0b388484-6d36-e620-df6f-e1ee5cbb71d7@linux.microsoft.com> Date: Tue, 5 Apr 2022 10:42:20 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [edk2-devel] EDK2 CI build error "Uncrustify Coding Standard" From: "Michael Kubacki" To: devel@edk2.groups.io, ashish.kalra@amd.com References: <14608.1649138274027224886@groups.io> <18598.1649138980553258823@groups.io> <5d3f6c47-1de9-ba06-d1e1-0099288c54c1@linux.microsoft.com> In-Reply-To: <5d3f6c47-1de9-ba06-d1e1-0099288c54c1@linux.microsoft.com> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable In my previous mail, I showed how to see the Uncrustify diff from your=20 server build. This mail is about local execution. I'll start by saying that the easiest way I've found to run Uncrustify=20 locally is as a VS Code plugin. It works on both Linux and Windows and=20 it allows you to easily format code as you work with your choice of=20 keyboard shortcut. Instructions for this approach are here: https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Code-Formattin= g#recommended-usage-visual-studio-vs-code-plugin If there's something missing there for Linux support, let me know and I=20 will update it. If you use a different IDE, you will need to port those=20 instructions if you want similar functionality. The instructions for manual usage in a terminal are here: https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Code-Formattin= g#manual-usage-run-in-a-terminal The Linux command to generate the file list is given and I believe only=20 the executable and path details will differ in the example given to call=20 the executable with the generated file list. Again, please give more specific details about where you're stuck on=20 Linux if you're having issues here. Thanks, Michael On 4/5/2022 10:40 AM, Michael Kubacki wrote: > Before discussing how to see the issues locally, here's how to see them= =20 > in the pipelines. I will send a separate reply with local details. >=20 > 1. Go to the build that is failing Uncrustify. >=20 > I am using this PR for your case: > https://github.com/tianocore/edk2/pull/2742 >=20 > 2. Click "Details" >=20 > I am using "Ubuntu GCC5 PR" for your case >=20 > At this point the issue is described: >=20 > "Check file coding standard compliance in Edk2CiBuild.Edk2.OvmfPkg > UncrustifyCheck failed due to 3 incorrectly formatted files." >=20 > 3. Click "View more details on Azure Pipelines" >=20 > https://github.com/tianocore/edk2/pull/2742/checks?check_run_id=3D5826935= 687 >=20 > 4. Find the failing job and click it. >=20 > In your case it is "Build_GCC5_TARGET_PLATFORMS". >=20 > https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=3D47536&vi= ew=3Dresults=20 >=20 >=20 > 5. It will now have a link showing "XX%" tests passed (65% in this=20 > instance). >=20 > Click that link to see the tests that failed. >=20 > https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=3D47536&vi= ew=3Dlogs&j=3Dec42d809-3c3b-54a9-276c-e54a8b9aaee9=20 >=20 >=20 > 6. Now, in the tests summary it will show the same message you saw in=20 > step (2): >=20 > "Check file coding standard compliance in Edk2CiBuild.Edk2.OvmfPkg > UncrustifyCheck failed due to 3 incorrectly formatted files." >=20 > https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=3D47536&vi= ew=3Dms.vss-test-web.build-test-results-tab=20 >=20 >=20 > Click that text to open more details. >=20 > https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=3D47536&vi= ew=3Dms.vss-test-web.build-test-results-tab&runId=3D345782&resultId=3D10000= 9&paneView=3Ddebug=20 >=20 >=20 > 7. Now, you will see the following error message in the "Debug" tab by=20 > default: >=20 > "UncrustifyCheck failed due to 3 incorrectly formatted files." >=20 > Click the "Attachments" tab to get more details. >=20 > https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=3D47536&vi= ew=3Dms.vss-test-web.build-test-results-tab&runId=3D345782&resultId=3D10000= 9&paneView=3Dattachments=20 >=20 >=20 > 8. Now, you will see details about the Uncrustify run in the=20 > "Standard_Console_Output.log" attachment: >=20 > """ > Uncrustify version: Uncrustify-c82ee034 > =C2=A0Found Uncrustify at=20 > /home/vsts/work/1/s/.pytool/Plugin/UncrustifyCheck/mu-uncrustify-release_= extdep/Linux-x86/uncrustify=20 >=20 > =C2=A0Uncrustify version: Uncrustify-c82ee034 >=20 > =C2=A0Uncrustify executed against 513 files in OvmfPkg in 2.31 seconds. > """ >=20 > Click on the "Standard_Error_Output.log" attachment to get more details= =20 > about the error. >=20 > Those details for your job are as follows. This is a diff of the changes= =20 > needed. >=20 > """ > Files with formatting errors: > =C2=A0Formatting errors in=20 > Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c > =C2=A0---=20 > /home/vsts/work/1/s/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncrypt= SevLibInternal.c=20 >=20 > =C2=A0+++=20 > /home/vsts/work/1/s/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncrypt= SevLibInternal.c.uncrustify_plugin=20 >=20 > =C2=A0@@ -36,8 +36,8 @@ > =C2=A0RETURN_STATUS > =C2=A0EFIAPI > =C2=A0MemEncryptSevLocateInitialSmramSaveStateMapPages ( > =C2=A0-=C2=A0 OUT UINTN *BaseAddress, > =C2=A0-=C2=A0 OUT UINTN *NumberOfPages > =C2=A0+=C2=A0 OUT UINTN=C2=A0 *BaseAddress, > =C2=A0+=C2=A0 OUT UINTN=C2=A0 *NumberOfPages > =C2=A0) > =C2=A0{ > =C2=A0UINTN=C2=A0 MapStart; > =C2=A0@@ -50,8 +50,8 @@ > =C2=A0return RETURN_UNSUPPORTED; > =C2=A0} >=20 > =C2=A0-=C2=A0 MapStart =3D SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFF= SET; > =C2=A0-=C2=A0 MapEnd=C2=A0=C2=A0 =3D MapStart + sizeof (QEMU_SMRAM_SAVE_= STATE_MAP); > =C2=A0+=C2=A0 MapStart=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D SMM_DEFAULT_SMB= ASE + SMRAM_SAVE_STATE_MAP_OFFSET; > =C2=A0+=C2=A0 MapEnd=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D MapSt= art + sizeof (QEMU_SMRAM_SAVE_STATE_MAP); > =C2=A0MapPagesStart =3D MapStart & ~(UINTN)EFI_PAGE_MASK; > =C2=A0MapPagesEnd=C2=A0=C2=A0 =3D ALIGN_VALUE (MapEnd, EFI_PAGE_SIZE); > =C2=A0MapPagesSize=C2=A0 =3D MapPagesEnd - MapPagesStart; > =C2=A0@@ -87,34 +87,34 @@ > =C2=A0Signature[12] =3D '\0'; > =C2=A0for (mKvmLeaf =3D 0x40000000; mKvmLeaf < 0x40010000; mKvmLeaf +=3D= 0x100) { > =C2=A0AsmCpuid ( > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 mKvmLeaf, > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 NULL, > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 (UINT32 *)&Signature[0], > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 (UINT32 *)&Signature[4], > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 (UINT32 *)&Signature[8] > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 ); > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 mKvmLeaf, > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NULL, > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (UINT32 *)&Signature[0], > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (UINT32 *)&Signature[4], > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (UINT32 *)&Signature[8] > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >=20 > =C2=A0if (AsciiStrCmp (Signature, "KVMKVMKVM") =3D=3D 0) { > =C2=A0DEBUG ( > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 ( > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 DEBUG_INFO, > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 "%a: KVM Detected, signature =3D %a\n", > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 __FUNCTION__, > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 Signature > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 ) > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 ); > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ( > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DEBUG_INFO, > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "%a: KVM Detecte= d, signature =3D %a\n", > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 __FUNCTION__, > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Signature > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ) > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >=20 > =C2=A0RegEax =3D mKvmLeaf + 1; > =C2=A0RegEcx =3D 0; > =C2=A0AsmCpuid (mKvmLeaf + 1, &RegEax, &RegEbx, &RegEcx, &RegEdx); > =C2=A0if ((RegEax & KVM_FEATURE_MIGRATION_CONTROL) !=3D 0) { > =C2=A0DEBUG ( > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 ( > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 DEBUG_INFO, > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 "%a: SEV Live Migration feature supported\n", > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 __FUNCTION__ > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 ) > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 ); > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ( > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DEBU= G_INFO, > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "%a:= SEV Live Migration feature supported\n", > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 __FU= NCTION__ > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ) > =C2=A0+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >=20 > =C2=A0return TRUE; > =C2=A0} >=20 > =C2=A0Formatting errors in=20 > Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c > =C2=A0---=20 > /home/vsts/work/1/s/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSev= LibInternal.c=20 >=20 > =C2=A0+++=20 > /home/vsts/work/1/s/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSev= LibInternal.c.uncrustify_plugin=20 >=20 > =C2=A0@@ -20,11 +20,11 @@ >=20 > =C2=A0#include "PeiDxeMemEncryptSevLibInternal.h" >=20 > =C2=A0-STATIC UINT64=C2=A0=C2=A0 mCurrentAttr=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D 0; > =C2=A0-STATIC BOOLEAN=C2=A0 mCurrentAttrRead=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 =3D FALSE; > =C2=A0-STATIC UINT64=C2=A0=C2=A0 mSevEncryptionMask=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 =3D 0; > =C2=A0-STATIC BOOLEAN=C2=A0 mSevEncryptionMaskSaved =3D FALSE; > =C2=A0-STATIC BOOLEAN=C2=A0 mSevLiveMigrationStatus =3D FALSE; > =C2=A0+STATIC UINT64=C2=A0=C2=A0 mCurrentAttr=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 =3D 0; > =C2=A0+STATIC BOOLEAN=C2=A0 mCurrentAttrRead=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D FALSE; > =C2=A0+STATIC UINT64=C2=A0=C2=A0 mSevEncryptionMask=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D 0; > =C2=A0+STATIC BOOLEAN=C2=A0 mSevEncryptionMaskSaved=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 =3D FALSE; > =C2=A0+STATIC BOOLEAN=C2=A0 mSevLiveMigrationStatus=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 =3D FALSE; > =C2=A0STATIC BOOLEAN=C2=A0 mSevLiveMigrationStatusChecked =3D FALSE; >=20 > =C2=A0/** > =C2=A0@@ -127,7 +127,7 @@ > =C2=A0) > =C2=A0{ > =C2=A0if (KvmDetectSevLiveMigrationFeature ()) { > =C2=A0-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 mSevLiveMigrationStatu= s =3D TRUE; > =C2=A0+=C2=A0=C2=A0=C2=A0 mSevLiveMigrationStatus =3D TRUE; > =C2=A0} >=20 > =C2=A0mSevLiveMigrationStatusChecked =3D TRUE; >=20 > =C2=A0Formatting errors in=20 > Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c > =C2=A0---=20 > /home/vsts/work/1/s/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSev= LibInternal.c=20 >=20 > =C2=A0+++=20 > /home/vsts/work/1/s/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSev= LibInternal.c.uncrustify_plugin=20 >=20 > =C2=A0@@ -19,8 +19,8 @@ >=20 > =C2=A0#include "PeiDxeMemEncryptSevLibInternal.h" >=20 > =C2=A0-STATIC BOOLEAN mSevLiveMigrationStatus =3D FALSE; > =C2=A0-STATIC BOOLEAN mSevLiveMigrationStatusChecked =3D FALSE; > =C2=A0+STATIC BOOLEAN=C2=A0 mSevLiveMigrationStatus=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 =3D FALSE; > =C2=A0+STATIC BOOLEAN=C2=A0 mSevLiveMigrationStatusChecked =3D FALSE; >=20 > =C2=A0/** > =C2=A0Read the workarea to determine whether SEV is enabled. If enabled, > """ >=20 > Thanks, > Michael >=20 > On 4/5/2022 2:09 AM, Ashish Kalra via groups.io wrote: >> Hi Mike, >> >> I am following up on Brijesh's email, i am running the CI tests=20 >> related to my SEV live migration patches, >> which i am in process of posting. >> >> I am running the CI tests locally and getting errors while building=20 >> OvmfPkg, my patches include two new >> header files, error log is copied below. >> >> Do you have updated instructions on how to run through uncrustify=20 >> locally and >> get my patch updated with those formatting changes, especially for=20 >> Linux ? >> (your above instructions seem specific to Windows). >> >> Thanks, >> Ashish >> >> Error log: >> >> ../.local/bin/stuart_ci_build -c .pytool/CISettings.py=20 >> TOOL_CHAIN_TAG=3DGCC5 -p OvmfPkg SECTION - Init SDE WARNING - Using Pip= =20 >> Tools based BaseTools SECTION - Loading Plugins SECTION - Start=20 >> Invocable Tool SECTION - Getting Environment SECTION - Loading plugins= =20 >> SECTION - Building OvmfPkg Package PROGRESS - --Running OvmfPkg:=20 >> Uncrustify Coding Standard Test NO-TARGET -- WARNING - A file header=20 >> template is not specified in the config file. WARNING - A function=20 >> header template is not specified in the config file. ERROR -=20 >> /home/amd/edk2-upstream/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncry= ptSevLibInternal.c=20 >> ERROR -=20 >> /home/amd/edk2-upstream/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncry= ptSevLibInternal.c=20 >> ERROR - --->Test Failed: Uncrustify Coding Standard Test NO-TARGET=20 >> returned 2 PROGRESS - --Running OvmfPkg: Guid Check Test NO-TARGET --=20 >> PROGRESS - --->Test Success: Guid Check Test NO-TARGET PROGRESS -=20 >> --Running OvmfPkg: Char Encoding Check Test NO-TARGET -- PROGRESS -=20 >> --->Test Success: Char Encoding Check Test NO-TARGET PROGRESS -=20 >> --Running OvmfPkg: Spell Check Test NO-TARGET -- WARNING - NodeJs not=20 >> installed. Test can't run WARNING - --->Test Skipped: in plugin! Spell= =20 >> Check Test NO-TARGET PROGRESS - --Running OvmfPkg: Dsc Complete Check=20 >> Test NO-TARGET -- PROGRESS - --->Test Success: Dsc Complete Check Test= =20 >> NO-TARGET PROGRESS - --Running OvmfPkg: Host Unit Test Dsc Complete=20 >> Check Test NO-TARGET -- PROGRESS - --->Test Success: Host Unit Test=20 >> Dsc Complete Check Test NO-TARGET PROGRESS - --Running OvmfPkg: Host=20 >> Unit Test Compiler Plugin NOOPT -- WARNING - --->Test Skipped: in=20 >> plugin! Host Unit Test Compiler Plugin NOOPT PROGRESS - --Running=20 >> OvmfPkg: Library Class Check Test NO-TARGET -- PROGRESS - --->Test=20 >> Success: Library Class Check Test NO-TARGET PROGRESS - --Running=20 >> OvmfPkg: EccCheck Test NO-TARGET -- PROGRESS - --->Test Skipped by=20 >> package! EccCheck Test PROGRESS - --Running OvmfPkg: Compiler Plugin=20 >> DEBUG -- WARNING - --->Test Skipped: in plugin! Compiler Plugin DEBUG=20 >> PROGRESS - --Running OvmfPkg: Compiler Plugin RELEASE -- WARNING -=20 >> --->Test Skipped: in plugin! Compiler Plugin RELEASE PROGRESS -=20 >> --Running OvmfPkg: Dependency Check Test NO-TARGET -- PROGRESS -=20 >> --->Test Success: Dependency Check Test NO-TARGET PROGRESS - --Running= =20 >> OvmfPkg: License Check Test NO-TARGET -- PROGRESS - --->Test Success:=20 >> License Check Test NO-TARGET ERROR - Overall Build Status: Error=20 >> PROGRESS - There were 1 failures out of 13 attempts SECTION - Summary=20 >> ERROR - Error >>=20