From mboxrd@z Thu Jan 1 00:00:00 1970 Subject: RFC for Edk2-Library To: devel@edk2.groups.io From: "Sean" X-Originating-IP: 131.107.174.83 User-Agent: GROUPS.IO Web Poster MIME-Version: 1.0 Date: Tue, 07 May 2019 14:35:17 -0700 Message-ID: <24030.1557264917803034398@groups.io> Content-Type: multipart/alternative; boundary="F7ZoQj5N73EMmiQyj6Tm" --F7ZoQj5N73EMmiQyj6Tm Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable RFC=C2=A0 Edk2-Library creation Create a new tianocore owned repository to host a python library package i= n support of UEFI development.=C2=A0 This package will allow easy sharing o= f python library code to facilitate reuse. =C2=A0Inclusion of this package = and dependency management should be managed using Pip/Pypi.=C2=A0 =C2=A0To = start this is a supplemental package and is not required to be used for edk= 2 builds. =C2=A0 Examples of content here * Edk2 file type parsing * UEFI structure encode/decode in python * Packaging tools (Capsules generation, signing, INF gen, Cat gen) * TPM support code * Potentially move content from basetools/source/python/common/* * No command line tools/interface Maintainers * Sean Brogan * Bret Barkelew * Placeholder for existing maintainer from the basetools License * BSD + Patent (edk2 aligned) Contribution process and issue tracking * Follow Github PR process for contributions and issue tracking * Contributor forks repo in github * Contributor creates branch for work * Contributor updates release notes to indicate change (if necessary) * Contributor submits PR to master branch of tianocore/Edk2-Library repo * Review feedback is given in PR * Python Tests are run on the repo (new contributions need unit tests) * Python Style (flake8) must pass * All review feedback must be completed, maintainers approved, and tests r= un successfully before PR is *squash merged* into master Documentation * Use Github IO documentation/wiki hosting * Example content =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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0i.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0https://microsoft.github= .io/mu/dyn/mu_pip_python_library/developing/ ( https://nam06.safelinks.prot= ection.outlook.com/?url=3Dhttps%3A%2F%2Fmicrosoft.github.io%2Fmu%2Fdyn%2Fmu= _pip_python_library%2Fdeveloping%2F&data=3D01%7C01%7Csean.brogan%40microsof= t.com%7C47c4ca03e19b4fffc8ad08d6d314774a%7C72f988bf86f141af91ab2d7cd011db47= %7C1&sdata=3DfKIb1Pfj4AqoGVOWudcyFMxMypJk%2FHTts9aMxZ8HukI%3D&reserved=3D0 = ) =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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ii= .=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0https://microsoft.github.io/mu/dyn/mu_pip_py= thon_library/publishing/ ( https://nam06.safelinks.protection.outlook.com/?= url=3Dhttps%3A%2F%2Fmicrosoft.github.io%2Fmu%2Fdyn%2Fmu_pip_python_library%= 2Fpublishing%2F&data=3D01%7C01%7Csean.brogan%40microsoft.com%7C47c4ca03e19b= 4fffc8ad08d6d314774a%7C72f988bf86f141af91ab2d7cd011db47%7C1&sdata=3DQJMUMB1= hIusaRVJhgsi9kF9KIbgdhS0WRnIXVkGeBCM%3D&reserved=3D0 ) * Readme at root of repo * Example: https://github.com/Microsoft/mu_pip_python_library ( https://na= m06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgithub.com%2FMicr= osoft%2Fmu_pip_python_library&data=3D01%7C01%7Csean.brogan%40microsoft.com%= 7C47c4ca03e19b4fffc8ad08d6d314774a%7C72f988bf86f141af91ab2d7cd011db47%7C1&s= data=3DDiuPnNMagvYYf0XXxDycSVHqijBBcDT0fXHzVY9U6%2Fw%3D&reserved=3D0 ) CI Builds * CI build process using dev ops * Validation is done thru build process * Release publication done thru manual CI Build * Examples from Mu-Python-Library * Windows CI - https://dev.azure.com/projectmu/mu%20pip/_build?definitionI= d=3D13 ( https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%= 2Fdev.azure.com%2Fprojectmu%2Fmu%2520pip%2F_build%3FdefinitionId%3D13&data= =3D01%7C01%7Csean.brogan%40microsoft.com%7C47c4ca03e19b4fffc8ad08d6d314774= a%7C72f988bf86f141af91ab2d7cd011db47%7C1&sdata=3DjQCCZo2u8JVisCchOoMLSgKJbG= 3YEk%2FG1JP9fI4g2JY%3D&reserved=3D0 ) * Linux CI - https://dev.azure.com/projectmu/mu%20pip/_build?definitionId= =3D12 ( https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%= 2Fdev.azure.com%2Fprojectmu%2Fmu%2520pip%2F_build%3FdefinitionId%3D12&data= =3D01%7C01%7Csean.brogan%40microsoft.com%7C47c4ca03e19b4fffc8ad08d6d314774= a%7C72f988bf86f141af91ab2d7cd011db47%7C1&sdata=3DCILlTdeEGpsi%2BCQNiZdIqd2V= t2RQV6L3qjz2rWEARYE%3D&reserved=3D0 ) * Publishing - https://dev.azure.com/projectmu/mu%20pip/_build?definitionI= d=3D16 ( https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%= 2Fdev.azure.com%2Fprojectmu%2Fmu%2520pip%2F_build%3FdefinitionId%3D16&data= =3D01%7C01%7Csean.brogan%40microsoft.com%7C47c4ca03e19b4fffc8ad08d6d314774= a%7C72f988bf86f141af91ab2d7cd011db47%7C1&sdata=3Dhkpzn9P6RBjduYBWjN56Y2qRBW= yOG32mFkP%2BwtY7KBQ%3D&reserved=3D0 ) Release * Release to Pypi as Edk2-Library for easy usage in product environment * Versioned follows: Aa.bb.cc.dd * AA =3D=3D Major version.=C2=A0 Changes don=E2=80=99t need to be backward= compatible * BB =3D=3D Minor version.=C2=A0 Significant new features.=C2=A0 Backward = compatibility maintained * CC =3D=3D Bug fix/patch/small optional feature * DD =3D=3D build/Release version.=C2=A0 * Package on Pypi will be owned by Tianocore group * Example for mu-python-library: https://pypi.org/project/mu-python-librar= y/ ( https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fpy= pi.org%2Fproject%2Fmu-python-library%2F&data=3D01%7C01%7Csean.brogan%40micr= osoft.com%7C47c4ca03e19b4fffc8ad08d6d314774a%7C72f988bf86f141af91ab2d7cd011= db47%7C1&sdata=3D5nTb93dDnAo%2FsWyfv1zYEIkJF8L58YY5P3BkzKi4Ivc%3D&reserved= =3D0 ) Other Notes * Only support Python 3 (prefer 3.7+) * This was discussed on the edk2 design meetings (4/18) https://edk2.group= s.io/g/devel/files/Designs/2019/0418 ( https://edk2.groups.io/g/devel/files= /Designs/2019/0418 ) * There will be one more RFC for another python package/repo for Build env= ironment.=C2=A0 =C2=A0 Timeline * RFC open for comment thru 5/21/2019 --F7ZoQj5N73EMmiQyj6Tm Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable

RFC=C2=A0 Edk2-Library creation

Create a new tianocore owned repository to host a python library package i= n support of UEFI development.=C2=A0 This package will allow easy sharing o= f python library code to facilitate reuse. =C2=A0Inclusion of this package = and dependency management should be managed using Pip/Pypi.=C2=A0 =C2=A0To = start this is a supplemental package and is not required to be used for edk= 2 builds.

=C2=A0

E= xamples of content here

  1. Edk2 file type parsing<= /span>
  2. UEFI structure encode/decode = in python
  3. Packaging tools (Capsules gen= eration, signing, INF gen, Cat gen)
  4. TPM support code
  5. Potentially move content from= basetools/source/python/common/*
  6. No command line tools/interface=

Maintainers

  1. Sean Brogan
  2. Bret Barkelew
  3. Placeholder for existing mainta= iner from the basetools

License

  1. BSD + Patent (edk2 aligned)

Contribution process and issue tracking

  1. Follow Github PR process for c= ontributions and issue tracking
    1. Contributor forks repo in git= hub
    2. Contributor creates branch fo= r work
    3. Contributor updates release n= otes to indicate change (if necessary)
    4. Contributor submits PR to mas= ter branch of tianocore/Edk2-Library repo
    5. Review feedback is given in P= R
    6. Python Tests are run on the r= epo (new contributions need unit tests)
    7. Python Style (flake8) must pa= ss
    8. All review feedback must be com= pleted, maintainers approved, and tests run successfully before PR is squash merged into master

Documentation

  1. Use Github IO documentation/wi= ki hosting
    1. Example content=

=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=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0https://microsof= t.github.io/mu/dyn/mu_pip_python_library/developing/

=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=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ii.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <= !--[endif]-->https://microsoft.github.io/mu/dyn/= mu_pip_python_library/publishing/

  1. Readme at root of repo=
    1. Example: https://github.= com/Microsoft/mu_pip_python_library= =

CI Builds

  1. CI build process using dev ops=
  2. Validation is done thru build= process
  3. Release publication done thru= manual CI Build
  4. Examples from Mu-Python-Libra= ry
    1. Windows CI - https://dev.azure.com/projectmu/mu%20pip/_build?definitionId=3D13=
    2. Linux CI - https://dev.azure.com/projectmu/mu%20pip/_build?definitionId=3D12
    3. Publishing - https://dev.azure.com/projectmu/mu%20pip/_build?definitionId=3D16

Release

  1. Release to Pypi as Edk2-Librar= y for easy usage in product environment
    1. Versioned follows: Aa.bb.cc.d= d
    2. AA =3D=3D Major version.=C2= =A0 Changes don=E2=80=99t need to be backward compatible
    3. BB =3D=3D Minor version.=C2= =A0 Significant new features.=C2=A0 Backward compatibility maintained
    4. CC =3D=3D Bug fix/patch/small= optional feature
    5. DD =3D=3D build/Release versi= on.=C2=A0
    6. Package on Pypi will be owned= by Tianocore group
  2. Example for mu-python-library: = = https://pypi.org/project/mu-python-library/

Other Notes

  1. Only support Python 3 (prefer = 3.7+)
  2. This was discus= sed on the edk2 design meetings (4/18) https://edk2.groups.io/g/devel/files/Designs/2019/0418
  3. There will be one= more RFC for another python package/repo for Build environment.=C2=A0

=C2=A0

T= imeline

  1. RFC open for comment thru 5/21/2019
--F7ZoQj5N73EMmiQyj6Tm--