Skip to content

Latest commit

 

History

History
737 lines (519 loc) · 21.5 KB

NEWS.md

File metadata and controls

737 lines (519 loc) · 21.5 KB

NEWS

1.4.0 - 2024-11-01

This release contains mostly backend changes and a fix to the CentOS Stream release configuration.

Added

  • backends: add experimental support for comps groups and environments. See the stability warning in the API documentation about experimental code.
  • backends base: add RepoqueryAlias for typing RepoqueryBase subclasses
  • config RQConfig: add get_dnf_rq and get_libdnf5_rq methods to more explicitly create a dnf- or libdnf5-based Repoquery object
  • data releases: add @koji:<tag> and @koji-src:<tag> --repo aliases to the epelX and epel-nextX branch configurations.
  • dev: add Github mirror for discoverability

Fixed

  • config RQConfig: ensure backend_mod and backend attributes are synced. If the user modifies the backend attribute, the backend property now returns the correct backend module instead of caching the old one.
  • data releases: adjust releases.toml for new EPEL 10+ branching model. This fixes fedrq ... -b c10s -r @epel. (Contributed by Michel Lind.)

1.3.0 - 2024-08-27

CLI improvements

  • Make automatic loading of filelists more intelligent. Filelists are now loaded automatically when the formatter name includes files or if any argument looks like a path

API changes/improvements

  • backends: add difference() and intersection() methods to PackageQuery
  • backends: add PackageQueryAlias to backend modules
  • backends base: add missing nevra_forms parameter to RepoqueryBase.resolve_pkg_specs(). The dnf and libdnf5 Repoquery implementations both accept this argument, but it wasn't included in the base class's definition.
  • backends base: convert PackageCompat to a Protocol
  • backends libdnf5: fix filter() and filterm()'s handling of __contains comparisons, such as query.filter(name__contains="substring"). Previously, name__contains mistakenly checked for packages whose names do not include the substring.
  • packaging: declare project as stable in classifiers

1.2.0 - 2024-08-03

Added

  • backends base: add fedrq.backends.base.PackageQueryAlias that should be used to type PackageQuery-like objects instead of PackageQueryCompat directly
  • contrib api_examples: add longest_license script

Changed

  • backends: fix TypeVar bound type cannot be generic error and refactor PackageQueryCompat and RepoqueryBase typing
  • contrib: adjust example scripts for PackageQueryCompat typing changes
  • config: allow environment variables (FEDRQ_BRANCH and FEDRQ_REPO) to override config file

Fixed

  • repos epel: fix epel-testing metalink url

1.1.0 - 2024-05-01

Added

  • backends libdnf5: add dnf 5.2.0.x compatibility

Changed

  • backends: revamp typing for Package and PackageQuery

1.0.0 - 2024-04-01

First stable release

Added

  • Containerfiles: add experimental UBI 8–based Containerfile
  • cli formatters: add source+requiresmatch and source+rm formatters

Changed

  • Containerfiles: license under GPL-2.0-or-later
  • doc fedrq.1: use formatting consistent with man-pages(7)

Fixed

  • doc: remove broken reference

Removed

  • cli formatters: remove long-deprecated _DefaultFormatters class (INTERNAL API)

0.15.0 - 2024-02-13

Added

  • backends dnf: add load_filelists() implementation. This makes sure that systems with dnf >= 4.19.0 can, for example, use -L always to load filelists.

Changed

  • doc: revamp and cleanup

Fixed

  • changelogs: fix off-by-one error with --entry-limit flag

0.14.0 - 2024-02-07

Added

  • api: add fedrq.cli.formatters.Formatters.formatters_it() method
  • cli: add formatters subcommand to list formatters
  • formatters: add -F multiline
  • formatters: add -F requiresmatch and related formatters
  • releases: add --branch=eln / --repo=buildroot repo definition

Changed

  • api: clean up INTERNAL fedrq.cli.formatters API

Deprecated

  • api: deprecate standalone fedrq.repoquery module

Removed

  • all: drop support for libdnf5 version less than 5.0.12

0.13.0 - 2023-12-18

!!! warning The next release will drop support for libdnf5<5.0.12

Added

CLI:

  • cli download / download-spec: mark commands as stable and document
  • cli: add new make-cache subcommand

API:

  • backends Repoquery.resolve_pkg_specs: add nevra_forms argument
  • backends Repoquery.resolve_pkg_specs: allow more granular resolve control
  • backends: add allow_multiple_backends_per_process argument to get_backend()
  • backends: make base a package instead of a single module

contrib:

  • Caddyfile: update for 404.html template

doc:

  • API Summary: add dnf and libdnf5 intersphinx links
  • dnf-repoquery-diff: fix inter-doc links
  • release_repo: add unstable API warning admonition
  • add _archive.md API doc

Changed

  • all: use metaclass=abc.ABCMeta instead of inheriting abc.ABC
  • backends: make libdnf5.backends.${NAME}.backend packages instead of single modules
  • cli: correct license of changelogs and download. They are now GPL-2.0-or-later as opposed to MIT.
  • doc: switch to google docstring style

Fixed

  • fedrq.repoquery: fix type checking
  • backends dnf: fix BaseMaker.set_var() error typo
  • cli whatrequires: fix typo (Exception: Unrecognized key name: recommend).

0.12.0 - 2023-09-11

Added

  • whatrequires: add experimental --extra-exact argument
  • add support for pydantic v2

0.11.0 - 2023-08-31

Added

API:

  • backends: add repo @property to PackageCompat
  • BaseMaker: add load_changelogs(); improve load_filelists()
  • BaseMaker: add conf property
  • backends: add API for accessing Package changelogs

CLI:

  • handle repo ssl client certificates in download subcommand
  • add changelog subcommand

Container images:

  • add @epel release group to the rhel9 release configuration in the ubi9 container

General:

  • Declare support for Python 3.12

Deprecated

API:

  • libdnf5 BaseMaker: deprecate config property

Fixed

  • fix importlib.abc DeprecationWarning.
  • improve CLI error handling by erroring out before loading metadata if other non-fatal errors have occurred.
  • fix help message in download subcommand

Removed

API:

  • config: remove pydantic validators from public API. These never should have been exposed in the first place.

0.10.0 - 2023-07-12

Added

  • add unconditional dependency on python3-rpm
  • container - refresh redhat.repo on entrypoint
  • add smartcache=always config option
  • add --smartcache-always CLI flag
  • add more documentation for the container builds

Changed

  • container - install config file to set smartcache=always
  • fedrq.backends.libdnf5.backend.Package - use libdnf5's getters for debug_name and source_debug_name instead of our copies from dnf4. There is still a fallback to the dnf4 versions for libdnf5 < 5.0.12.
  • fedrq.spec - favor python3-libdnf5 if dnf5 is installed

Deprecated

  • deprecate support for libdnf5 < 5.0.12 in the libdnf5 backend

Fixed

  • container - make sure cache persistence volume is actually used

Removed

  • remove deprecated config.get_rq() function
  • drop support for libdnf5 < 5.0.10 in the libdnf5 backend

0.9.0 - 2023-06-29

Added

  • add remote_location formatter
  • document CentOS 7 release configuration
  • add UBI release configuration
  • add Oracle Linux release configuration
  • add Rocky Linux release configuration
  • add experimental download and download-spec subcommands
  • add fedrq container builds
  • add @source-repos repo class
  • BaseMaker: add enable_source_repos() method
  • PackageCompat: add remote_location() method

Changed

  • Remove enabled=1 from built-in fedora repo defs. We want all repo to have enabled=0. We control which repos are enabled and disabled with repo groups configured in releases.toml. This previously led to divergent behavior with the --repo and --enablerepo options when querying Fedora releases on Fedora systems and non-Fedora systems (e.g. CentOS).

Deprecated

  • deprecate support for libdnf5 < 5.0.10 and raise warnings

Fixed

  • backends libdnf5: don't call rpm.ts.closeDB()

0.8.0 - 2023-06-21

Added

  • add --version flag to CLI
  • improve repo loading error handling (#31)
  • add CentOS 7 release configuration

Changed

  • fedrq.config.Release.get_base - allow omitting config arg. This previously emitted a deprecation warning (efc2828).
  • ReleaseConfig - make repogs a proper pydantic model field (d8cff5a).

Fixed

  • fix Changelog URL in Python/PyPI metadata
  • fix typo in help message for --latest. Contributed by Sandro (~penguinpee).
  • backends - fix MissingBackendError message grammar

New contributors

Thanks to Sandro (~penguinpee) for your first fedrq contribution!

0.7.1 - 2023-05-31

Fixed

0.7.0 - 2023-05-30

Highlighted examples

fedrq now has a Fedora ELN release configuration builtin!

You can preform simple queries

$ fedrq pkgs -b eln -F plainwithrepo ansible-core
ansible-core-2.15.0-2.eln126.noarch eln-appstream
ansible-core-2.15.0-2.eln126.src eln-appstream-source

or use more complex pipelines to determine how a package's build dependencies differ between ELN and Rawhide

$ comm -13 \
    <(fedrq pkgs -b eln -s -F requires ansible-core | sort -u) \
    <(fedrq pkgs -b rawhide -s -F requires ansible-core | sort -u)
git-core
glibc-all-langpacks
python3dist(bcrypt)
python3dist(passlib)
python3dist(pexpect)
python3dist(pytest)
python3dist(pytest-forked)
python3dist(pytest-mock)
python3dist(pytest-xdist)
python3dist(pywinrm)
python3dist(pyyaml)
python3-systemd
/usr/bin/python

(This difference is expected, as tests are disabled when %rhel is defined.)

fedrq also has a new repolist command to list enabled repos for a release.

$ fedrq repolist -b eln -r @no-crb
eln-baseos
eln-baseos-source
eln-appstream
eln-appstream-source

Added

  • add local and local:... branches to allow querying the enabled system repos in
  • add repolist sucommand to display enabled repos the same way that plain dnf repoquery does.
  • add Fedora ELN release configuration
  • add/document @koji and @koji-src generic repo classes

  • add EPEL 9 packages to the upstream gotmax23/copr and gotmax23/copr-dev repositories
  • doc: add sig_policy.py to API examples
  • doc: add dnf and libdnf5 intersphinx

Changed

  • docs: show full function signatures w/ annotations
  • relicense CI files that are shared with tomcli to MIT
  • libdnf5 backend: use libdnf5.conf.Vars.detect_release() when available (libdnf5 >= 5.0.10)
  • backends: cache result of get_releasever()
  • config: check that release matchers match the entire --branch not just the beginning of it.

Fixed

  • doc: fix improper NEWS.md formatting
  • doc: correct smartcache description in fedrq(5).
  • libdnf5 backend: make the BaseMaker.load_filelists() method compatible with libdnf5 >= 5.0.12.
  • packaging: remove remanent rpmautospec changelog file
  • packaging: remove unneeded fedora-repos-rawhide BR

0.6.0 - 2023-04-06

Changed

This release shouldn't introduce any backwards incompatibilities.

Added

  • add @metaurl repo class
  • add builtin amazonlinux release configuration
  • add builtin almalinux release configuration
  • add @kojihub alias to the cXs (CentOS Stream) release configuration.
  • add @compose-latest repo group to the the cXs (CentOS Stream) release configuration.
  • add initial shell completions
  • README: update links (by Benson Muite)
  • README: expand section about installation with pip
  • doc: create a mkdocs docsite at https://fedrq.gtmx.me
  • doc: add dnf repoquery comparison

Fixed

  • releases: fix regression in @epel from the CentOS Stream release configurations. previously, fedrq CMD -b cXs -r epel resulted in an Exception.
  • config: fix docstring typos and add links

New contributors

Thank you to Benson Muite (~bvkcm) for improving the README and correcting outdated information.

0.5.0 - 2023-03-18

New dependencies

  • requests

Highlighted examples

Find the latest version of fedrq available in the gotmax23/fedrq-dev copr. No extra configuration is required!

$ fedrq pkgs -F nevrr -b f36 -r @copr:gotmax23/fedrq-dev fedrq
fedrq-0.4.1^25.20230318.76d7910-1.fc36.noarch copr:copr.fedorainfracloud.org:gotmax23:fedrq-dev
fedrq-0.4.1^25.20230318.76d7910-1.fc36.src copr:copr.fedorainfracloud.org:gotmax23:fedrq-dev

Find the packages in Fedora and RPMFusion that depend on any subpackage of ffmpeg. Currently, fedrq does not have a builtin rpmfusion configuration, but with the repo loading revamp, fedrq can read arbitrary repositories from the system configuration. It's just not as nice and convenient.

$ fedrq wrsrc ffmpeg -b f37 --enablerepo=rpmfusion-{non,}free{,-updates}{,-source} -Fline:na,repoid
HandBrake.src : rpmfusion-free-source
HandBrake.x86_64 : rpmfusion-free
HandBrake-gui.x86_64 : rpmfusion-free
[...]
mpv.src : updates-source
mpv.x86_64 : updates
mpv-libs.i686 : updates
mpv-libs.x86_64 : updates
[...]

Changed

  • Release: use releasever as cache directory key (https://todo.sr.ht/~gotmax23/fedrq/18)
  • change format of copr_chroot_fmt in ReleaseConfig
  • config: improve Release repository loading. Previously, a repository id that was defined in one of the repo files in a release's defpaths and also defined in the system configuration (when system_repos=true) would cause fedrq to crash when loading repositories. Now, system repositories are loaded first and then only repositories that are not already defined are loaded from defpaths. system_repos=false works the same as before
  • add new repository loading API and dep on requests (https://todo.sr.ht/~gotmax23/fedrq/21, More details)
  • config: plug in new repository loading API (More details)
  • release.toml: update for new reoo loading API

Added

  • Add centos-stream8 release configuration
  • Add whatobsoletes subcommand
  • formatters: add full_nevra formatter
  • config: implement recursive config file merging
  • cli: add --enablerepo and --disablerepo
  • docs: elaborate on new repo classes

BaseMaker API:

This includes changes to the BaseMaker API (fedrq.backends.(lib)dnf(5).backend.BaseMaker).

  • add disable_repo() method
  • add repolist() method

fedrq.spec:

  • include api_examples in %doc
  • explicitly require python3-rpm

Fixed

  • releases.toml: Fix typo in epel_next release def

Testing and development workflow

  • nox: remove fclogr venv workarounds
  • ruff: enable unused-arguments rules
  • improve test_subpkgs_match2 integration test
  • ruff: ignore no-explicit-stacklevel for now
  • test Release._copr_repo() formatting
  • nox publish: install all deps into the venv

0.4.1 - 2023-03-13

This is a minor bugfix release that accounts for breaking libdnf5 API changes.

Fixed

  • BaseMaker: make compatible with libdnf5 changes. libdnf5 changed its configuration API so BaseMaker needs to be adjusted accordingly. For now, fedrq maintains compatibility with both API versions.
  • Clarify explanatory comments in api_examples

Added

  • Add location attr to PackageCompat and formatters. Example: fedrq pkgs ansible -Flocation

Testing and Dev Workflow

  • Add nox targets to release fedrq

0.4.0 - 2023-02-21

Changed

  • fedrq is now in beta.
  • fedrq.spec: Always Require distribution-gpg-keys
  • Command: simplify smartcache and load_filelists
  • change logging format to include line numbers

Added

CLI:

  • Add CentOS Stream 9 release configuration

  • Add new formatter plainwithrepo. Try it with fedrq CMD -F plainwithrepo. Contributed by ~amoralej.

  • Document whatrequires-src subcommand.

  • Cleanup fedrq.cli.formatters interface (PRIVATE API)

API:

  • Cleanup API interface and mark it as public. Add docstrings.
  • Add initial API documentation and examples. More to come.
  • Make fedrq.backends.libdnf5.backend.Package hashable.
  • Add lt and gt methods to fedrq.backends.libdnf5.backend.Package. Use the same sort algorithm as hawkey.
  • Add create_repo() method to BaseMaker
  • BaseMaker and Repoquery: add backend property to access the current backend module
  • libdnf5: add config_loaded param to BaseMaker

Tests

  • .builds f36: don't run unit tests twice
  • Remove lint.sh in favor of nox and switch to ruff
  • Fix ruff linting errors

New Contributors

  • Thanks to Alfredo Moralejo (~amoralej) for contributing the plainwithrepo formatter.

0.3.0 - 2023-02-13

Changed

  • Get rid of importlib_resources on Python 3.9. We can use the stdlib version.
  • Stop excluding files from the sdist.
  • Abstract dnf code into backends. (INTERNAL API)
    • fedrq.repoquery is now a shim module that tries to import Repoquery and BaseMaker from fedrq.backends.dnf.backend and then falls back to fedrq.backends.dnf.backend.
    • fedrq.repoquery.Repoquery and fedrq.repoquery.BaseMaker's interfaces are mostly unchanged, but they now point to the appropriate backend in fedrq.backends.
  • Make loading filelists optional.

Added

  • Add a libdnf5 backend.
    • Use -b / --backend or backend in the config file to explicitly choose a backend. Otherwise, the default backend (currently dnf) will be used.
  • Add whatrequires-src subcommand and a wrsrc alias.
  • Add wr alias for whatrequires subcommand.
  • Add --forcearch flag
  • Add a fedrq.backends.get_default_backend() function to import backends. This provides more flexibility than fedrq.repoquery which is now a shim module and is the recommended approach. (INTERNAL API)

Fixed

  • whatrequires -P: don't resolve SRPM names
  • Repoquery: ensure all Provides are resolved

Documentation

  • fedrq.1: add --backend and --filelists.
  • fedrq.5: document backend and filelist config options

Testing

  • .builds: Use fclogr main branch
  • Fix Copr dev builds
  • .builds: Run rpmlint
  • Allow test parallelization
  • Adopt nox as a test runner.
  • noxfile: Use editable install for local testing
  • Test libdnf5 backend
  • .builds: test libdnf5 backend on f36
  • nox: add libdnf5_test target
  • nox: add testa target to test both backends at once

0.2.0 - 2023-01-14

Changed

  • Use $XDG_CACHE_HOME/fedrq to store instead of /var/tmp to store smartcache. This removes fedrq.cli.Command.v_cachedir(), fedrq._utils.make_cachedir(), and fedrq.config.SMARTCACHE_BASEDIR; they're no longer needed after this change.

Fixed

  • Fix EL 9 and Python 3.9 compatibility
    • Add fallback Fedora repository definitions.
    • Use importlib_resources backport.
    • Don't use @staticmethod as a decorator. This doesn't work with Python 3.9.

Dev Changes

  • Remove unnecessary argparse.ArgumentParser.parse_args workaround
  • Fix importlib_resources.abc.Traversable type checking
  • Test and lint on EPEL 9 and Fedora 36 in CI
  • lint.sh: Ensure all test files are formatted
  • Ditch rpmautospec in favor of fclogr

0.1.0 - 2033-01-02

Summary

  • New JSON formatter

  • fedrq subpkgs --match to filter fedrq subpkgs output packages

  • Add smartcache CLI flag and config option to avoid clearing the system cache when repoquerying different versions.

  • Backend improvements and cleanup

  • More test coverage

  • Docs improvements

Bugfixes

  • Tweak README wording
  • Command: Fix configuration error handling
  • Make _v_fatal_error and _v_handle_errors DRY
  • Fix --notsrc on 32 bit x86
  • Fix cli.Subpkgs v_arch() method
  • Add more config validation

Tests

  • Reorganize tests
  • tests: Don't hardcode x86_64
  • Add basic fedrq pkgs integration test
  • Test --exclude-subpackages
  • Reformat fedrq.1 yet again
  • Add formatters sanity test
  • formatters: Add tests and improve error handling
  • Test smartcache config option

New Features

  • Add initial --smartcache implementation
  • Allow setting smartcache in config file and enable it by default
  • formatters: Add missing attrs
  • Add json formatter
  • subpkgs: Add --match option
  • Add fedrq(5) manpage

Breaking API Changes

Note that fedrq's API is currently unstable and not intended for outside usage.

  • Rearchitect make_base()
  • Replace cli.base.get_packages with Repoquery method
  • Reimplement FormatterContainer (private API)

0.0.2 - 2022-12-20

  • pyproject.toml: Add project.urls
  • pyproject.toml: Change Development Status to Alpha
  • Truncate RPM changelog
  • Exclude rpmautospec changelog from sdist
  • fedrq.spec: Workaround F36's old flit-core
  • fedrq.spec: Remove unnecessary rpmdevtools BR
  • Add fedrq-dev copr

0.0.1 - 2022-12-19

Initial release