Commit graph

9 commits

Author SHA1 Message Date
Achilleas Koutsou
cd775b540e tools/osbuild-depsolve-dnf5: translate ssl cert paths
Translate root_dir-based ssl cert paths after reading repo configs from
a directory.
2024-04-10 16:22:13 -07:00
Achilleas Koutsou
782c0d907d tools/osbuild-depsolve-dnf5: add gpg keys to repos in response
Add the full gpg keys to the repository configs in the response.

On each repository object from dnf, the gpg keys are URLs, either
file:// or http(s)://.  We need to resolve these and return them with
in the response.

When the URL is a file:// path, and it comes from a .repo config file,
we assume that the path is relative to the root_dir, so we prepend it to
the path in the file.  This is so that repo configs in OS root trees can
be used unmodified.  However, when a key is defined in the request, we
should assume that the path is valid, either because it was defined by
the caller as a URL, or because it was defined in-line in the request
and osbuild-depsolve-dnf5 wrote it to the persistdir itself.

A new exception is defined to identify errors during this process.
2024-04-10 16:22:13 -07:00
Achilleas Koutsou
629f171f72 tools/osbuild-depsolve-dnf5: load repos from dir
Support loading repositories from a root tree instead of supplying them
with the request.  The repositories should be in the standard yum repo
format.  Both repository sources can be defined simultaneously, but at
least one is required.

The root_dir is expected to contain files necessary for depsolving in
the standard paths.

These files are:
- Repository (.repo) configurations in <root_dir>/etc/yum.repos.d/
- GPG key files in <root_dir>/etc/pki/rpm-gpg/
    - This will be used to resolve gpg key paths specified in the .repo
      files that are relative to the root_dir.
- (Optional) Custom dnf config variables in <root_dir>/etc/dnf/vars or
  <root_dir>/usr/share/dnf5/vars.d.
    - This is used by CentOS Stream to set the value of $stream.

Custom repository configurations in arbitrary (non-root) paths will have
to follow this directory structure.

A new variable is added to the request, `releasever`, which is mandatory
when using `root_dir`.  This variable is used in repository URLs and GPG
key paths.  In the default case, dnf reads this variable by inspecting
the rpm database.  We will override it in the Solver the same way we
override the arch and basearch for variable substitution.  In the
future, we will make this variable mandatory in all cases, which will
make the variable available for repo configs defined in the request as
well.

The root_dir is used in three ways:
- Set the base.conf.installroot
- Set the base.conf.varsdir to <root_dir>/usr/share/dnf5/vars.d and
  <root_dir>/etc/dnf/vars to read resolve custom variables when loading
  repositories.
- Call create_repos_from_dir() with <root_dir>/etc/yum.repos.d.

base.setup() should be called before loading repositories otherwise
substitutions might not work.
See https://github.com/rpm-software-management/dnf5/issues/1374#issuecomment-2038995031
2024-04-10 16:22:13 -07:00
Achilleas Koutsou
285db19876 tools/osbuild-depsolve-dnf5: type annotation
Silence the mypy linter.
2024-04-10 16:22:13 -07:00
Michael Vogt
efcecd3867 tools: make osbuild-depsolve-dnf5 pylint clean 2024-02-20 14:52:23 -08:00
Brian C. Lane
b131d3cf57 osbuild-depsolve-dnf5: Fix url substitutions
Substitutions should be set on Base, not per-repo. Discovered this
in lorax's dnf5 code so I am updating it here as well.
2024-02-20 09:42:01 +01:00
Brian C. Lane
4f83cdc434 osbuild-depsolve-dnf5: module_hotfixes wasn't really set
Typo in the previous change, wasn't setting `repo.module_hotfixes`
2024-02-20 09:32:43 +01:00
Brian C. Lane
8389c6302e osbuild-depsolve-dnf5: Add module_hotfixes support 2024-02-12 17:08:32 +01:00
Brian C. Lane
18e5481ae8 osbuild-depsolve-dnf5: Add libdnf5 based depsolving for Fedora 40
dnf5-json will be used for building Fedora 40 and later.  RHEL and
Fedora < 40 will continue to use python3-libdnf via dnf-json.
2024-01-24 09:55:49 -08:00