Comments (1)
Working on this.
Here is the current situation:
File | Relies on |
---|---|
edk2_git.py | N/A - Basis of repo functionality |
repo_resolver.py | edk2_git.py |
self_describing_environment.py | PyGit2 |
git_dependency.py | repo_resolver.py |
edk2_ci_setup.py | repo_resolver.py |
edk2_setup.py | Uses raw RunCmd git commands |
Here is the end state plan:
File | Relies on | Changes |
---|---|---|
edk2_git.py | N/A - Basis of repo functionality | Use PyGit2 as basis of Repo management |
edk2_git_resolver.py | edk2_git.py | repo_resolver + submodule resolve capability |
self_describing_environment.py | edk2_git.py | Use edk2_git for worktrees |
git_dependency.py | edk2_git_resolver.py | resolve() -> resolve_repo() |
edk2_ci_setup.py | edk2_git_resolver.py | resolve_submodule_all() |
edk2_setup.py | edk2_git_resolver.py | resolve_all() -> resolve_repo_all() |
Main issues
- edk2_git.py Repo() is currently static. No values change once the class is created, regardless of if the physical repo changes. Additionally, it uses way more "RunCmd"s then necessary, as PyGit2 can quickly read the git database rather than run git commands themselves. edk2_git will be updated to rely on PyGit2 where possible to reduce the amount of RunCmd's used. As a side effect, it allows attributes to change depending on repo state (As an example, if say a file is updated, repo.dirty will be updated also).
- edk2_git_resolver.py (changed from repo_resolver) currently provides a few functions to ensure a repo meets the dependency requirements. I plan on adding new functions to do the same but based off the submodule requirements of the base repo. I.e.
resolve()
->resolve_repo()
and add a newresolve_submodule()
function - self_describing_environmept.py uses raw PyGit2 for discovering subtrees. This will simply be abstracted away behind edk2_git.py
- git_dependency.py only needs API changes based on edk2_git_resolver.py
- edk2_ci_setup.py only needs API changes based on edk2_git_resolver.py
- edk2_setup.py's core logic will be used as the basis for
resolve_submodule()
, using edk2_git.py Repo commands rather than RunCmd and edk2_setup.py will just need to callresolve_submodule()
orresolve_submodule_all()
Overall, here is the current status of the project:
File` | Relies on | Updated? |
---|---|---|
edk2_git.py | N/A - Basis of repo functionality | Yes - #377 |
edk2_git_resolver.py | edk2_git.py | No |
self_describing_environment.py | edk2_git.py | Yes - #377 |
git_dependency.py | edk2_git_resolver.py | No |
edk2_ci_setup.py | edk2_git_resolver.py | No |
edk2_setup.py | edk2_git_resolver.py | No |
from edk2-pytool-extensions.
Related Issues (20)
- [Bug]: stuart_setup etc. report ERRORs if Linux-x86, Windows-x86 etc. directories are deleted, and doesn't recover HOT 3
- [Feature]: Print GCC Error Info at Cmd Line
- [Feature]: Add Advanced Logging
- [Feature]: transition stuart commands to subcommands
- [Feature]: merge and rename stuart setup / ci_setup
- [Feature] Remove stuart_ci_build
- [Feature]: snake-case function names
- [Feature]: Use pre-defined CI infrastructure variables to control log secret filtering HOT 1
- [Bug]: Executable files in zip external dependencies do not get extracted with the executable filemode enabled on Linux.
- [Bug]: Generic Directory Walking Prints All File Paths
- [Bug]: Extensions is Logging Orders of Magnitude More Information Than Previously
- [Bug]: secureboot_audit.py can no longer parse the provided file on uefi.org
- [Bug]: build dies if your project is not in Git HOT 1
- [Bug]: repo_resolver:repo_details does not populate some data
- [Feature]: Debug Expanded DSC
- [Feature]: Display Help even if missing Config file HOT 1
- [Feature]: Integrate https://github.com/spbrogan/edk2_dep
- [Bug]: Better recognize cargo/cargo-make errors HOT 1
- [Bug]: Calling platform build name --help starts a build HOT 1
- [Bug]: Documentation Fails to deploy
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from edk2-pytool-extensions.