回复: Follow-up for the issue about DSC LibraryClass precedence rule


gaoliming
 

Bob:

This is a good enhancement in BaseTools development process. Will you also
update TianoCore Wiki?



Thanks

Liming

发件人: Feng, Bob C <bob.c.feng@...>
发送时间: 2022年10月2日 23:01
收件人: discuss@edk2.groups.io
抄送: Kinney, Michael D <michael.d.kinney@...>; Gao, Liming
<gaoliming@...>; Chen, Christine <yuwei.chen@...>; Huang,
Long1 <long1.huang@...>; Ni, Ray <ray.ni@...>
主题: Follow-up for the issue about DSC LibraryClass precedence rule



Hello,



On 30th June, we merged a BaseTools patch “Fix DSC LibraryClass precedence
rule” to edk2 repo. This patch changed the DSC LibraryClass precedence rule
to make the basetools behavior consistent with DSC spec. About 21th Aug, it
was found that that patch introduced a regression issue that cause
MdeModulePkg gcc build to fail. And after syncing that basetools patch to
edk2-repo and updating edk2 pip-requirements.txt, that regression issue was
also caught by edk2 CI. Finally, that patch was reverted from edk2 repo and
edk2-basetools repo.



But the issue about that the DSC LibraryClass precedence rule is
inconsistent in BaseTools implementation and DSC spec still exists. As the
follow-up, the bug submitter, me and other stakeholders did an offline
discussion, we got aligned that we will update DSC spec to make basetools
implantation and DSC spec consistent. If there is no objection from the
community, we will update DSC spec and reuse bug
https://bugzilla.tianocore.org/show_bug.cgi?id=3965 to track DSC spec
update.



Further, to avoid similar issues happening, I’d suggest the improvement in
basetools python tools work process. We must merge the basetools changes to
edk2-basetools first and then sync them to edk2 repo.

1. Maintain process

a. After the patch gets reviewed, the maintainer creates a PR to
edk-basetools repo, and merges it into edk2-basetools repo if the CI checks
pass
b. Wait for the new version pip module generated in pypi.org
c. Update edk2-basetools value to the latest basetools pip module
version from edk2/pip-requirements.txt file. Create a PR to edk2 repo to
trigger edk2 CI to do the packages build tests.

Notes: The above 3 steps is to make edk2 CI test the basetools changes.

d. Create a pip-requirement patch and send it to community review.
e. Get the Reviewed-by

Notes: Can we remove the above 2 steps to optimize the process since the
basetools patch has been got reviewed and tested?

f. Create a PR and merge the pip-requirement change to edk2 repo
g. Create a PR and merge the basetools patch to edk2 repo

2. edk2-basetools repo CI enhancement

a. enable the edk2 packages build test in edk2-basetools CI, so that we
can remove the step c from the above maintain process.



Also, we need every edk2 downstream consumer to be ready to use basetools
pip module so that we can remove the python code from edk2 repo and reduce
the edk2 basetools maintenance efforts.





Thanks,

Bob