Skip to content

Commit 439b984

Browse files
author
Pawel Winogrodzki
authored
feat: adding feature requirements for azldev (#311)
feat: add feature requirements for `azldev`
1 parent c3ee3e9 commit 439b984

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

FUTURE.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Feature requirements for `azldev`
2+
3+
## Package building
4+
5+
### Full builds happen in build dependency order
6+
7+
For full package build within one project, if a package (A) depends on another package (B), the dependent package (A) must be built after the package it depends on (B). The freshly-built (B) must be present in the build environment while (A) is built.
8+
9+
### The build orchestrator understands static and dynamic build dependencies
10+
11+
The build orchestrator is responsible for determining the correct build order based on both static and dynamic dependencies. Static dependencies are those explicitly declared through the `BuildRequires` tags in the spec file. Dynamic dependencies are the ones generated in the `%generate_buildrequires` section of the spec file.
12+
13+
### Parameterized components
14+
15+
A single component can be defined to be built with a matrix of parameters, where each set of parameters results in a different "flavour" of the component being built. The build orchestrator must be able to handle such parameterized components and build all combinations of the parameters.
16+
17+
Sample use cases:
18+
19+
- Building different configurations of the kernel.
20+
- Building a bootstrap and full version of a component to resolve circular dependencies.
21+
22+
### One project can define and build different versions of the kernel
23+
24+
### OOT module components can build with all or selected versions of the kernels
25+
26+
Components providing OOT kernel modules must have a way to build against all supported kernel versions or a specific subset of them.
27+
28+
**IMPORTANT:** it must be possible to define OOT components in such way, that packages built for a newer kernel version are **NOT** considered as updates of the ones built for the older kernel versions. This is required, so that updating the OOT components does not inadvertently update the kernel as well due to the package's dependency on a specific kernel version.
29+
30+
Example:
31+
32+
- Project defines `kernel-older` version 1.0.0 and `kernel-newer` version 1.1.0.
33+
- Project builds `OOT-comp` for both kernels.
34+
- Having the package manager update `OOT-comp` on `kernel-older` does not automatically update to `kernel-newer`.
35+
36+
Effectively this means that the `OOT-comp` packages defined for both kernels are not considered the same package by the package manager/RPM.
37+
38+
## Supported origins for component sources
39+
40+
### Fedora SRPM repos
41+
42+
### Blob stores with anonymous access
43+
44+
### Azure blob stores requiring authentication
45+
46+
For such blob stores, the tool should at minimum be able to use the credentials set by logging into Azure with `az login`.

0 commit comments

Comments
 (0)