[RFC] EdkRepo - The Multi-Repository Tool for EDK II


Nate DeSimone
 

Hi All,

This RFC is raised to add EdkRepo, the multi-repository tool for EDK II firmware development to TianoCore.

EdkRepo is built on top of git. It is intended to automate common developer workflows for projects that use more than one git repository. For example many of the new projects in the edk2-platforms repository require the user to clone several git repositories. EdkRepo makes it easier to set up and upstream changes for these projects. EdkRepo does not replace git, rather it provides higher level extensions that make it easier to work with git. EdkRepo uses "manifest XML" files to describe the git repositories and EDK II packages that a project uses. EdkRepo is aware of the DSC file format and is able to combine this XML with metadata from DSC files to create a development experience tailored specifically for EDK II firmware development. EdkRepo is written in Python and is compatible with Python 3.5 or later.

EdkRepo has been internally developed at Intel for 2.5 years. EdkRepo was originally created to support our own product development. With the recent release of MinPlatformPkg, the number of complete open source UEFI firmware implementations available at TianoCore has been growing rapidly. We see that many of the development workflows we encounter for our product work now apply more broadly to the TianoCore community. Accordingly, we would like to open EdkRepo to community.

We see this process going through several phases. First, we provide an initial commit of EdkRepo via edk2-staging. We envision two branches being added to edk2-staging:

1. EdkRepo - Contains the source code for the EdkRepo tool.
2. EdkRepo-Manifest - Contains an initial set of example manifest files which can be used to try EdkRepo

I will send out patches to create these two branches shortly.

After these branches are created, we will send a series of commits to populate the first open source version of EdkRepo. At this point the community can take a look and provide feedback. There are several options for where the final location where this tool might live:

1. edk2-platforms
2. edk2-pytool-library
3. The edk2-toolenv repository proposed by Sean (assuming approval of Sean's RFC)
4. A new, separate repository created for EdkRepo

In addition, we recommend that a new TianoCore owned repository be created to host the manifest XML content.

The initial proposed maintainer list for EdkRepo is:

M: Nate DeSimone <nathaniel.l.desimone@intel.com>
M: Ashley DeSimone <ashley.e.desimone@intel.com>
R: Puja Pandya <puja.pandya@intel.com>

I believe a community discussion is needed to make a decision on the exact final location. Once consensus is reached, we can retire the edk2-staging version of EdkRepo. As always, feedback on this proposal is welcome and appreciated.

With Best Regards,
Nate


Nate DeSimone
 

Hi All,

The initial drop of EdkRepo has to edk2-staging has been completed!

https://github.com/tianocore/edk2-staging/tree/EdkRepo

For convenience, I have compiled binaries of the current state of EdkRepo and attached them to a personal fork of edk2-staging. By no means should these binaries be considered an official release, they are a snapshot that I created to help everyone give EdkRepo a try.

Linux: https://github.com/nate-desimone/edk2-staging/releases/download/EdkRepo-preview-2019-06-28/edkrepo-preview-2019-06-28.tar.gz
Windows: https://github.com/nate-desimone/edk2-staging/releases/download/EdkRepo-preview-2019-06-28/EdkRepoSetup-preview-2019-06-28.exe

To get started, you can try cloning the Intel-MinPlatform project, which we created as an example of how EdkRepo is used. This is also a convenient way to set up a MinPlatform development workspace:

edkrepo clone min_platform Intel-MinPlatform

Questions or comments, are always welcome!

Regards,
Nate

-----Original Message-----
From: rfc@edk2.groups.io <rfc@edk2.groups.io> On Behalf Of Nate DeSimone
Sent: Tuesday, June 11, 2019 4:59 PM
To: devel@edk2.groups.io; rfc@edk2.groups.io
Subject: [edk2-rfc] [RFC] EdkRepo - The Multi-Repository Tool for EDK II

Hi All,

This RFC is raised to add EdkRepo, the multi-repository tool for EDK II firmware development to TianoCore.

EdkRepo is built on top of git. It is intended to automate common developer workflows for projects that use more than one git repository. For example many of the new projects in the edk2-platforms repository require the user to clone several git repositories. EdkRepo makes it easier to set up and upstream changes for these projects. EdkRepo does not replace git, rather it provides higher level extensions that make it easier to work with git. EdkRepo uses "manifest XML" files to describe the git repositories and EDK II packages that a project uses. EdkRepo is aware of the DSC file format and is able to combine this XML with metadata from DSC files to create a development experience tailored specifically for EDK II firmware development. EdkRepo is written in Python and is compatible with Python 3.5 or later.

EdkRepo has been internally developed at Intel for 2.5 years. EdkRepo was originally created to support our own product development. With the recent release of MinPlatformPkg, the number of complete open source UEFI firmware implementations available at TianoCore has been growing rapidly. We see that many of the development workflows we encounter for our product work now apply more broadly to the TianoCore community. Accordingly, we would like to open EdkRepo to community.

We see this process going through several phases. First, we provide an initial commit of EdkRepo via edk2-staging. We envision two branches being added to edk2-staging:

1. EdkRepo - Contains the source code for the EdkRepo tool.
2. EdkRepo-Manifest - Contains an initial set of example manifest files which can be used to try EdkRepo

I will send out patches to create these two branches shortly.

After these branches are created, we will send a series of commits to populate the first open source version of EdkRepo. At this point the community can take a look and provide feedback. There are several options for where the final location where this tool might live:

1. edk2-platforms
2. edk2-pytool-library
3. The edk2-toolenv repository proposed by Sean (assuming approval of Sean's RFC) 4. A new, separate repository created for EdkRepo

In addition, we recommend that a new TianoCore owned repository be created to host the manifest XML content.

The initial proposed maintainer list for EdkRepo is:

M: Nate DeSimone <nathaniel.l.desimone@intel.com>
M: Ashley DeSimone <ashley.e.desimone@intel.com>
R: Puja Pandya <puja.pandya@intel.com>

I believe a community discussion is needed to make a decision on the exact final location. Once consensus is reached, we can retire the edk2-staging version of EdkRepo. As always, feedback on this proposal is welcome and appreciated.

With Best Regards,
Nate