Comments (3)
Hi @bcran, What situation brought about an external dependency being half-way deleted? I can probably make some changes to catch this when calling stuart update (which is responsible for updating the external dependnecies) by re-downloading any external dependency that throws the error mentioned, but I'm hoping to figure out the situation that this happens in and try and prevent that instead.
The expectation for external dependencies is that they are to remain untouched as they are dependencies that are used, not co-developed (think of them as pip packages, we download them, and use them, but we don't really ever edit them)
Thanks,
Joey
from edk2-pytool-extensions.
I can't remember why I deleted them, but it's possible I was trying to clean up the clone and hadn't realized the extdep_state.yaml wasn't part of the repo.
from edk2-pytool-extensions.
There are two reasons that this error can occur:
- The extdep has the "host_specific" flag which signals that the top-level directory of the external dependency contains folders specific to combination of os/arch/bit (see here) and that particular host combination is not supported.
- the extdep has the "host_specific" flag and that particular host combination was supported, but the folder was deleted.
My original intent was to add sha256 hashing to all dependencies as default by hashing all files in the dependency as follows:
- Download the external dependency
- Hash all files inside the external dependency and set the commit hash in the extdep_state.yaml file
- When environment verification is completing, re-hash the files and compare the commit hash.
- If the hashes don't match the external dependency is redownloaded
Unfortunately, this breaks down when the extdep has an extdep inside of it. In this situation, the old hash becomes incorrect when the internal extdep is downloaded. There are a few ways we could work around this, but honestly it is extra complexity for an extremely uncommon situation.
In light of keeping the detection of this issue simple, this will be the new approach:
If the external dependency is "host_specific", the supported host combinations will be recorded in the extdep_state.yaml file and verified all directories still exist. While this won't catch changes internal to those files, it will at least be able to:
- keep the current error, updating it slightly to say that the detected host combination is unsupported by this external dependency
- Detect when a particular host combination was deleted, and re-download the external dependency.
from edk2-pytool-extensions.
Related Issues (20)
- [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
- [Bug]: Incorrect usage of strip method in nuget_dependency.py
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.