From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.92.18.43]) by mx.groups.io with SMTP id smtpd.web12.143301.1598046652688140173 for ; Fri, 21 Aug 2020 14:50:53 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@outlook.com header.s=selector1 header.b=dwAvcvTu; spf=pass (domain: outlook.com, ip: 40.92.18.43, mailfrom: spbrogan@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JYeL0tbhH7uf+eDtvNP1PhU09ekQE2QR4qk9O42275F/0K3fyX9NuomTnbOBHPKn0N9+nj8hx3g9lCJmYXBR8po/i1iE+8dEn8AyVGiJUVuGwKcoo+Zbb5vrS6XmqJUldH7eWMa9k2aXIykPhLrGn6C672nqx3c3gAkI+DUlvVkwP7RSM4IflWRlcGE6TsHuBFdq7ukNDY94nRkHIq784gSll86m9s15WGMNZAIbZKv/PDPZXZxzI3xoyACGSGB67y56QmCzlYAJkzA1eMtt6STGr5dlslHcMbWpDhOj0doVolTOFSLZKC0i+jw+S4qUxNr2AZiuF80pMlhTaeFGvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FtARbixy2d/p6xX9JIWY16n0P1h8NLIEjqO3a2ZgS/Y=; b=H6krheWnYcuMPuti9a7qh6Mddqzn15cfzKWOOXNldMk+pP6JrSRgJMo20DS0z1nOTkmTKhgkXmCzvUST7f+Npc3uR5kPqbVlXvckpetHp8iKR9HLI6qPCnEZ3RSBzUPdPtXJDJLyht18tzP186MiAk7SRoz+pu+ugUk3XTEDn1Cy8gEiIO6l6sJ8HEDxzCIX6+reWneOsG1RYvSHMzyoc5AorbCb+3uNtOuoenWEK4y5v3MSTnQ+DbECZdOgEN/C5jIUqOuQZ2hWHAlYTM5JJQnceM0tp3s6LMA6wM/WlWYr8JexQmB9+OmFIoyEgp+YP+zbN4L9NAufD2I7qZwLkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FtARbixy2d/p6xX9JIWY16n0P1h8NLIEjqO3a2ZgS/Y=; b=dwAvcvTuQseeIzKkkwRmf81ynh78EdBWhKFK+X1CZslSUMIytB1q2jtBAUTHT5QTXWuL2GIgaU3bCUvqdCg/uIHL2UTePq+QDdaTm/+h43CH3IlW0pmsBP/dP0AX8Q/UmDTXEHbdvIh3fGGJYUbW6dpHfVqZs1jvXMSVfknJlLdfGyIqMGpCqYUHIO+eTqqGF3klwN8gLA8//AER7nd9e8DzfCRr4umZzZG6HYyCKzkn/OfWWGlcPuovROGEmJYvLyo+TDN6MNQZpxgziItmsKUMVfMG8ly/DEgQIGj4HnwrkJOvLgcxZ2bUTKM+prMriIa6DcWh2CIODgz+XGzMlQ== Received: from BN8NAM11FT054.eop-nam11.prod.protection.outlook.com (2a01:111:e400:fc4b::41) by BN8NAM11HT092.eop-nam11.prod.protection.outlook.com (2a01:111:e400:fc4b::473) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.24; Fri, 21 Aug 2020 21:50:50 +0000 Received: from BN8PR07MB6962.namprd07.prod.outlook.com (2a01:111:e400:fc4b::4d) by BN8NAM11FT054.mail.protection.outlook.com (2a01:111:e400:fc4b::358) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.24 via Frontend Transport; Fri, 21 Aug 2020 21:50:50 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:93EBA0DFB65F76FB071CFFF6AB183A30002FB64CFC35382057985D00118FEB4B;UpperCasedChecksum:72C56D9944113853BEBCEECCE1039606DD711013C1CDAB8B2E90AFB21A49F8F4;SizeAsReceived:9307;Count:50 Received: from BN8PR07MB6962.namprd07.prod.outlook.com ([fe80::b1be:f3e4:f6e:66c3]) by BN8PR07MB6962.namprd07.prod.outlook.com ([fe80::b1be:f3e4:f6e:66c3%4]) with mapi id 15.20.3305.026; Fri, 21 Aug 2020 21:50:50 +0000 Subject: Re: [edk2-devel] running CI locally From: "Sean" To: Laszlo Ersek , devel@edk2.groups.io, michael.d.kinney@intel.com, Sean Brogan , Bret Barkelew CC: Vladimir Olovyannikov , Rebecca Cran , Tom Lendacky Reply-To: devel@edk2.groups.io, spbrogan@outlook.com References: <2d9572c6-7549-d0ae-3ec9-95158cfef484@redhat.com> <5ca9187c-96f3-53f1-0ac0-809bc1156ece@redhat.com> <162D662A3371B4DC.7353@groups.io> Message-ID: Date: Fri, 21 Aug 2020 14:50:47 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 In-Reply-To: <162D662A3371B4DC.7353@groups.io> X-ClientProxiedBy: MWHPR11CA0036.namprd11.prod.outlook.com (2603:10b6:300:115::22) To BN8PR07MB6962.namprd07.prod.outlook.com (2603:10b6:408:d6::11) Return-Path: spbrogan@outlook.com X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from 255.255.255.255 (255.255.255.255) by MWHPR11CA0036.namprd11.prod.outlook.com (2603:10b6:300:115::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.24 via Frontend Transport; Fri, 21 Aug 2020 21:50:49 +0000 X-Microsoft-Original-Message-ID: X-TMN: [viwJlZMKa4QgnCf4hEDoSwW96SDQO7uZ] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 50 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 3ac64bf4-d4bc-42e3-4e4b-08d8461c450d X-MS-TrafficTypeDiagnostic: BN8NAM11HT092: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aei5mH1m09ncKjx81X8aiwPmYdpydJR8Em/sqTcZgsUos1joP4SuU2UwkfFyeYUbLkjLCTnt/bWG8kSSQ54ZuZtj1ee+0tW6rJXwIr/M1tL7rHHGyIWW95cEhERbCZYiUjGfzZ29TewWHjoycTkZ7YEKmkXF66qCRO+l4bBurApoMrRNhLLqoAMm36STg1cN5CFE9B4LIPIfnZy4bF7h7y3NCL/sQRkTH07HzjZUGR/N/ybzyujNu/jDH2BxvxkV X-MS-Exchange-AntiSpam-MessageData: wZsnOc0QU5YPw+R6k+ddIyurSOvXBb7uknz8Acs2Uisw9UCBfTXTVhRGNRCXIqP5tdqyhAx51heZHDGIv/PJF0Mh94+vA3iqI46oUclv7aRRZUZcebo4QUkcQZqLu4TTBZDnxgs7ElI45MgzUmGEnQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ac64bf4-d4bc-42e3-4e4b-08d8461c450d X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2020 21:50:50.5967 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT054.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8NAM11HT092 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable sorry. In my last email I started typing at top and then moved inline=20 and didn't delete my initial comments. Please ignore the comments on=20 top and look inline for details. :) Thanks Sean On 8/21/2020 2:36 PM, Sean wrote: > Laszlo, >=20 >=20 >=20 > Idea being if the package supports host based unit tests it will scan=20 > package to make sure all host based unit tests and libraries are listed= =20 > in the DSC. >=20 > As to why you see a different set of packages...that is interesting.=C2= =A0 If=20 > you can include your full build logs i can look a little closer.=C2=A0 I= know=20 > on the Azure CI servers we don't run the >=20 >=20 > On 8/21/2020 12:23 AM, Laszlo Ersek wrote: >> Hi Mike, Sean; >> >> On 08/19/20 19:59, Laszlo Ersek wrote: >> >>> I'll report back with more results. >> >> I installed a Fedora 32 Server VM. >> >> Installed the "mono-complete" package (+its deps). >> >> Installed the "nodejs" package. >> >> Installed "cspell" (+deps) with "npm" (with the latter coming from the >> nodejs package). >> >> Edk2 checked out at current HEAD >> (5a6d764e1d073d28e8f398289ccb5592bf9a72ba). >> >> >> * Platform CI results: >> >> - : >> >> =C2=A0=C2=A0 Built successfully for IA32, X64, and IA32X64 (toolchain: = GCC5). >> >> - = : >> >> =C2=A0=C2=A0 Built successfully for ARM and AARCH64 (toolchain: GCC5). >> >> >> * Core CI results: >> >> - >> >> =C2=A0=C2=A0 Complete run successful (toolchain: GCC5); no package / ar= ch / target >> =C2=A0=C2=A0 / test restrictions. >> >> =C2=A0=C2=A0 I got the following WARNINGs: >> >> =C2=A0=C2=A0 - ArmVirtPkg, EmulatorPkg, and OvmfPkg are covered by Plat= form CI, not >> =C2=A0=C2=A0=C2=A0=C2=A0 Core CI -- these are expected: >> >>> PROGRESS - --Running ArmVirtPkg: Compiler Plugin DEBUG -- >>> WARNING - --->Test Skipped: in plugin! Compiler Plugin DEBUG >>> PROGRESS - --Running ArmVirtPkg: Compiler Plugin RELEASE -- >>> WARNING - --->Test Skipped: in plugin! Compiler Plugin RELEASE >> >>> PROGRESS - --Running EmulatorPkg: Compiler Plugin DEBUG -- >>> WARNING - --->Test Skipped: in plugin! Compiler Plugin DEBUG >>> PROGRESS - --Running EmulatorPkg: Compiler Plugin RELEASE -- >>> WARNING - --->Test Skipped: in plugin! Compiler Plugin RELEASE >> >>> PROGRESS - --Running OvmfPkg: Compiler Plugin DEBUG -- >>> WARNING - --->Test Skipped: in plugin! Compiler Plugin DEBUG >>> PROGRESS - --Running OvmfPkg: Compiler Plugin RELEASE -- >>> WARNING - --->Test Skipped: in plugin! Compiler Plugin RELEASE >> >> =C2=A0=C2=A0 - ArmVirtPkg, DynamicTablesPkg, CryptoPkg, EmulatorPkg, Fa= tPkg, >> =C2=A0=C2=A0=C2=A0=C2=A0 NetworkPkg, OvmfPkg, PcAtChipsetPkg, SecurityP= kg and ShellPkg are >> =C2=A0=C2=A0=C2=A0=C2=A0 not covered by host-based unit tests -- I thin= k also expected: >> >>> PROGRESS - --Running ArmVirtPkg: Host Unit Test Compiler Plugin NOOPT = -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running DynamicTablesPkg: Host Unit Test Compiler Plugin= =20 >>> NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running CryptoPkg: Host Unit Test Compiler Plugin NOOPT -= - >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running EmulatorPkg: Host Unit Test Compiler Plugin=20 >>> NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running FatPkg: Host Unit Test Compiler Plugin NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running NetworkPkg: Host Unit Test Compiler Plugin NOOPT = -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running OvmfPkg: Host Unit Test Compiler Plugin NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running PcAtChipsetPkg: Host Unit Test Compiler Plugin=20 >>> NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running SecurityPkg: Host Unit Test Compiler Plugin=20 >>> NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >>> PROGRESS - --Running ShellPkg: Host Unit Test Compiler Plugin NOOPT -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Compiler Plugin= =20 >>> NOOPT >> >> =C2=A0=C2=A0 - I'm not really sure about the following warnings. They w= ere emitted >> =C2=A0=C2=A0=C2=A0=C2=A0 for a subset of the above packages. I read the= docs at >> >> =20 >> >> =C2=A0=C2=A0=C2=A0=C2=A0 but I still don't understand :) >=20 > Each plugin/test has a readme as well.=C2=A0 Not sure if this helps expl= ain=20 > the HostUnitTestDscCompleteCheck more. >=20 > https://github.com/tianocore/edk2/tree/master/.pytool/Plugin/HostUnitTes= tDscCompleteCheck=20 >=20 >=20 > As to why you don't see it skipped for ArmVirtPkg or a few others: I=20 > think this is a bug. >=20 > In Azure CI i see it as test passed. >=20 > PROGRESS - --Running ArmVirtPkg: Host Unit Test Dsc Complete Check Test= =20 > NO-TARGET -- > PROGRESS - --->Test Success: Host Unit Test Dsc Complete Check Test=20 > NO-TARGET >=20 > When i look at the code > https://github.com/tianocore/edk2/blob/master/.pytool/Plugin/HostUnitTes= tDscCompleteCheck/HostUnitTestDscCompleteCheck.py#L59=20 >=20 >=20 > I see that how those packages *.ci.yaml have it configured is different= =20 > than those that show skipped below.=C2=A0 It avoids the skip conditions = but=20 > since those packages don't have any host unit test libraries or modules= =20 > there is no failure. >=20 > This should probably be a bugzilla on the=20 > HostUnitTestDscCompleteCheck.py as the reporting is not correct.=C2=A0 T= est=20 > should show up as skipped. >=20 >=20 > You can see them here showing up as success > https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=3D11309&v= iew=3Dlogs&j=3D780eaa17-fc2d-5131-b9d2-21b19bc9bec5&t=3D0791c90f-e7d8-5372-= c9c5-edbe30bf6aeb&l=3D32=20 >=20 >=20 >> >>> PROGRESS - --Running CryptoPkg: Host Unit Test Dsc Complete Check=20 >>> Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET >> >>> PROGRESS - --Running FatPkg: Host Unit Test Dsc Complete Check Test=20 >>> NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET >> >>> PROGRESS - --Running NetworkPkg: Host Unit Test Dsc Complete Check=20 >>> Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET >> >>> PROGRESS - --Running PcAtChipsetPkg: Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET >> >>> PROGRESS - --Running SecurityPkg: Host Unit Test Dsc Complete Check=20 >>> Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET >> >>> PROGRESS - --Running ShellPkg: Host Unit Test Dsc Complete Check Test= =20 >>> NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Host Unit Test Dsc Complete=20 >>> Check Test NO-TARGET >> >> =C2=A0=C2=A0 - Still related to host-based unit tests, I believe the fo= llowing >> =C2=A0=C2=A0=C2=A0=C2=A0 warnings, for FmpDevicePkg, MdeModulePkg, MdeP= kg, UefiCpuPkg, and >> =C2=A0=C2=A0=C2=A0=C2=A0 UnitTestFrameworkPkg, report that running the = tests on the build >> =C2=A0=C2=A0=C2=A0=C2=A0 host (understandably) prevents the tests from = covering all edk2 >> =C2=A0=C2=A0=C2=A0=C2=A0 architectures: >=20 > Yes this message is because we override the arch for NOOPT to match that= = =20 > of the build system since we are going to run these executables in the= =20 > host environment. >=20 >> >>> PROGRESS - --Running FmpDevicePkg: Host Unit Test Compiler Plugin=20 >>> NOOPT -- >>> WARNING - Allowing Override for key TARGET_ARCH >> >>> PROGRESS - --Running MdeModulePkg: Host Unit Test Compiler Plugin=20 >>> NOOPT -- >>> WARNING - Allowing Override for key TARGET_ARCH >> >>> PROGRESS - --Running MdePkg: Host Unit Test Compiler Plugin NOOPT -- >>> WARNING - Allowing Override for key TARGET_ARCH >> >>> PROGRESS - --Running UefiCpuPkg: Host Unit Test Compiler Plugin NOOPT = -- >>> WARNING - Allowing Override for key TARGET_ARCH >> >>> PROGRESS - --Running UnitTestFrameworkPkg: Host Unit Test Compiler=20 >>> Plugin NOOPT -- >>> WARNING - Allowing Override for key TARGET_ARCH >> >> =C2=A0=C2=A0=C2=A0=C2=A0 - The below seems to be related to the "spell = checking in audit >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 mode" known issues at >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 . >> >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 What does "audit mode" mean? >=20 > see readme here. > https://github.com/tianocore/edk2/tree/master/.pytool/Plugin/SpellCheck#= configuration=20 >=20 >=20 > Basically runs the tests and reports all the errors as warnings and then= = =20 > reports the test as skipped. > It was hopefully to encourage package maintainers to fix their spelling= =20 > issues but not breaking the build on day 1. >=20 >=20 >> >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FWIW, the packages listed below (E= mulatorPkg, MdeModulePkg, >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 MdePkg, NetworkPkg, OvmfPkg, Shell= Pkg, UefiCpuPkg) is a proper >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 subset of the packges noted in ".p= ytool/Readme.md" -- the latter >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 mentions CryptoPkg and SecurityPkg= in addition. >> >>> PROGRESS - --Running EmulatorPkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >>> PROGRESS - --Running MdeModulePkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >>> PROGRESS - --Running MdePkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >>> PROGRESS - --Running NetworkPkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >>> PROGRESS - --Running OvmfPkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >>> PROGRESS - --Running ShellPkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >>> PROGRESS - --Running UefiCpuPkg: Spell Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET >> >> =C2=A0=C2=A0 - Not sure about the last one: >> >>> PROGRESS - --Running FatPkg: Library Class Check Test NO-TARGET -- >>> WARNING - --->Test Skipped: in plugin! Library Class Check Test=20 >>> NO-TARGET >> >> >> * One suggestion (in addition to the others made in this thread): >> >> - Please add "BaseToolsBuild" to "BaseTools/.gitignore". >=20 > There is a bugzilla for this already. > https://bugzilla.tianocore.org/show_bug.cgi?id=3D2581 >=20 >=20 >> >> >> * A question: >> >> - On github, there is some logic that restricts the full Core CI build >> =C2=A0=C2=A0 to packages that may be affected by a patch series. Is thi= s available >> =C2=A0=C2=A0 locally? >> >> =C2=A0=C2=A0 According to the Core CI documentation, the "stuart_ci_bui= ld" command >> =C2=A0=C2=A0 can be limited with "-p" / "-a" / "-t" flags; given a comm= it range, >> =C2=A0=C2=A0 how do we calculate the "tightest" flag values? >=20 > A couple things here. > You can always look at the azurepipelines files to get a better=20 > understanding of the CI process.=C2=A0 Hopefully there is no magic (besi= des=20 > being able to read yaml).=C2=A0 You can see here:=20 > https://github.com/tianocore/edk2/blob/master/.azurepipelines/templates/= pr-gate-steps.yml#L35=20 >=20 >=20 > It is actually another stuart tool. > stuart_pr_eval. > We have bug to document it. > https://github.com/tianocore/edk2-pytool-extensions/issues/89 > But the python file is pretty well documented. There are 4 policies that= = =20 > can trigger the need for a change to build a package. > See here > https://github.com/tianocore/edk2-pytool-extensions/blob/master/edk2tool= ext/invocables/edk2_pr_eval.py#L117=20 >=20 >=20 >=20 >=20 >> >> Thank you very much! >> Laszlo >> >=20 >=20 >=20