271954a41c
This adds support for a new `rpm-ostree compose extensions` command` which takes a treefile, a new extensions YAML file, and an OSTree repo and ref. It performs a depsolve and downloads the extensions to a provided output directory. This is intended to replace cosa's `download-extensions`: https://github.com/coreos/coreos-assembler/blob/master/src/download-extensions The input YAML schema matches the one accepted by that script. Some differences from the script: - We have a guaranteed depsolve match and thus can avoid silly issues we've hit in RHCOS (like downloading the wrong `libprotobuf` for `usbguard` -- rhbz#1889694). - We seamlessly re-use the same repos defined in the treefile, whereas the cosa script uses `reposdir=$dir` which doesn't have the same semantics (repo enablement is in that case purely based on the `enabled` flag in those repos, which may be different than what the rpm-ostree compose ran with). - We perform more sanity-checks against the requested extensions, such as whether the extension is already in the base. - We support no-change detection via a state SHA512 file for better integration in cosa and pipelines. - We support a `match-base-evr` key, which forces the extension to have the same EVR as the one from a base package: this is helpful in the case of extensions which complement a base package, esp. those which may not have strong enough reldeps to enforce matching EVRs by depsolve alone (`kernel-headers` is an example of this). - We don't try to organize the RPMs into separate directories by extension because IMO it's not at the right level. Instead, we should work towards higher-level metadata to represent extensions (see https://github.com/openshift/os/issues/409 which is related to this). Closes: #2055
72 lines
1.6 KiB
Markdown
72 lines
1.6 KiB
Markdown
---
|
|
nav_order: 9
|
|
---
|
|
|
|
# Repository structure
|
|
{: .no_toc }
|
|
|
|
1. TOC
|
|
{:toc}
|
|
|
|
## Rpm-ostree source code
|
|
|
|
```
|
|
.
|
|
└─ src
|
|
├── app rpm-ostree CLI application
|
|
├── daemon rpm-ostree daemon providing D-Bus API
|
|
├── lib Public library: contains APIs for exploring rpmdb in OSTrees
|
|
└── libpriv Private API shared between app and daemon
|
|
```
|
|
|
|
## Rust Libraries
|
|
|
|
```
|
|
.
|
|
└─ rust Contains rust libraries that rpm-ostree uses─
|
|
```
|
|
|
|
## CI
|
|
|
|
```
|
|
.
|
|
├── ci Contains scripts to install build dependencies and run tests locally
|
|
└── .cci.jenkinsfile Configuration to run CoreOS Jenkins CI
|
|
```
|
|
|
|
## tests
|
|
|
|
```
|
|
.
|
|
└── tests Contains tests
|
|
```
|
|
|
|
## Documentation
|
|
|
|
```
|
|
.
|
|
├── docs Contains documentation for this repository
|
|
├── HACKING.md Contains hacking information for developers
|
|
└── man Contains man page for rpm-ostree
|
|
```
|
|
|
|
## Makefiles
|
|
|
|
These files are used when doing raw build instructions. You can find more info [here](https://github.com/projectatomic/rpm-ostree/blob/master/HACKING.md#raw-build-instructions):
|
|
|
|
```
|
|
.
|
|
├── Makefile-daemon.am
|
|
├── Makefile-decls.am
|
|
├── Makefile-lib-defines.am
|
|
├── Makefile-lib.am
|
|
├── Makefile-libpriv.am
|
|
├── Makefile-libdnf.am
|
|
├── Makefile-man.am
|
|
├── Makefile-tests.am
|
|
├── Makefile.am
|
|
├── Makefile-rpm-ostree.am
|
|
├── configure.ac
|
|
└── autogen.sh
|
|
```
|