`cargo xtask check-raw` is very strict to prevent higher-level or
sophisticated types in `uefi-raw`. Here, however, I think, it is perfectly
fine to allow this.
One example is `SerialIoProtocol_1_1`, which follows in the next commit.
- Refactored return type from standard BTreeSet to custom PciTree struct
- Removed special FullPciIoAddress type, since segment number is PciRoot dependent
- During enumeration, skip branches we have already seen
- During enumeration, collect tree topology information (which child bus linked from where)
- Add complicated pci structure in integration test vm
- Print child busses for every device entry in integration test
We were inconsistent with the use of the newtype_enum! macro.
Sometimes we imported it directly, sometimes we used it from
the global scope (#[macro_use]). We now prefer an explicit
dependency for every usage.
The allocator_api feature [0] is old and not developed in years. Since
then, understanding of memory safety and best practises has evolved.
It is unlikely that in its current form the functionality will ever
be merged.
Therefore, we drop the complexity we have from this feature for now,
leading to simpler code.
[0] https://github.com/rust-lang/rust/issues/32838
Apparently, still a lot of people are using uefi-services, probably mostly due to
auto-upgrades. This seems to cause upgrades when people keep upgrading `uefi`
while still using an outdated version of `uefi-services`.
This update will cause everyone using auto-updates to either rethink to pin
their crate versions or to finally migrate.
Let-chains are being stabilized in 1.88, so this lint triggers on nightly. Since
current stable is 1.87, we can't change the code to fix this lint, and we also
can't use `expect` here. For now, the best solution is just to allow the lint.
Use virtio-net instead of e1000. This gets network going on non-x86
platforms (aarch64, riscv64).
While being at it switch qemu network configuration to modern netdev
method.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Recently, `cargo xtask test` started doing a lot of rebuilding. Possibly this
started with cargo 1.85, but I'm not sure.
The behavior was: `cargo xtask test` builds `xtask` and all of its dependencies
in order to launch `xtask`. Then it would rebuild everything again to run the
test command. If you then ran `cargo xtask test` a second time, everything would
again be rebuilt. In other words, the build cache essentially wasn't working.
Fix by clearing all `CARGO` env vars in `fix_nested_cargo_env`.
Rather than maintaining a list of all variables cleared by
`fix_nested_cargo_env`, just skip over all variables that are cleared by
checking if the value is `Some`.
That PATH var is still excluded by name since it's set (usually to a long value)
rather than cleared.
This will be used to verify that source files (just *.rs for now) all have an
SPDX license header. In non-check mode, the license header will be added.
For now, in check mode an error is shown but it's not treated as fatal. Once all
files have been fixed, the error will be made fatal.