* Implement change detection for update_cache=true. Add cache_updated return value.
* ...
* Make sure pacman --sync --list is called only as often as necessary.
(cherry picked from commit cf4d68ac50)
Co-authored-by: Felix Fontein <felix@fontein.de>
* pacman: add support for remove_nosave
New parameter: remove_nosave
When enabled, will pass --nosave to pacman when removing packages.
--nosave cannot be used with --print-format and thus it couldn't be
passed via extra_args. See #4315
The code adds the option right before the actual removal of the pkgs.
(This is based on an initial diff from MorphBonehunter)
* changelog
* Update plugins/modules/packaging/os/pacman.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* wording
* ssss
* remove_package: simplify {force,extra,nosave}_args
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c698ecd201)
Co-authored-by: Jean Raby <jean@raby.sh>
* pacman: don't always return changed w/ update_cache
This used to be the behavior before the recent refactoring. [1]
Allows the following to return changed only when packages were upgraded:
- pacman:
update_cache: yes
upgrade: yes
And the following to return changed only when the foo package wasn't at
the latest version:
- pacman:
name: foo
state: latest
update_cache: yes
[1] https://github.com/ansible-collections/community.general/pull/3907
* Update changelogs/fragments/4318-pacman-restore-old-changed-behavior.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit cc8151f209)
Co-authored-by: Evangelos Foutras <evangelos@foutrelis.com>
* s/group/groups/
Pacman accepts --group but the actual option name is --groups.
Allows use of other binaries with the same CLI interface as pacman (yay)
* changelog
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add note regarding pacman compat + --print-format
* Update plugins/modules/packaging/os/pacman.py
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d4e92fc720)
Co-authored-by: Jean Raby <jean@raby.sh>
* pacman: re-adding support for URL based pkgs
* Update plugins/modules/packaging/os/pacman.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/packaging/os/pacman.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* cmd=cmd in every call to self.fail()
* pacman: integration test for mixed pkg sources
* Add more tests + fix minor bug with URL packages
Version checking for URL packages is left to pacman, so add a check
after the dry run to see if it would actually install anything.
* remove double templating
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a9db4742fc)
Co-authored-by: Jean Raby <jean@raby.sh>
* s/sys-upgrade/sysupgrade/
* changelog fragment
* yamllint
* more fragment tweaks
(cherry picked from commit b9f62bb4ef)
Co-authored-by: Jean Raby <jean@raby.sh>
* pacman: rewrite with a cache to speed up execution
- Use a cache (or inventory) to speed up lookups of:
- installed packages and groups
- available packages and groups
- upgradable packages
- Call pacman with the list of pkgs instead of one call per package (for
installations, upgrades and removals)
- Use pacman [--sync|--upgrade] --print-format [...] to gather list of
changes. Parsing that instead of the regular output of pacman, which
is error prone and can be changed by user configuration.
This can introduce a TOCTOU problem but unless something else calls
pacman between the invocations, it shouldn't be a concern.
- Given the above, "check mode" code is within the function that would
carry out the actual operation. This should make it harder for the
check code and the "real code" to diverge.
- Support for specifying alternate package name formats is a bit more
robust. pacman is used to extract the name of the package when the
specified package is a file or a URL.
The "<repo>/<pkgname>" format is also supported.
For "state: latest" with a list of ~35 pkgs, this module is about 5
times faster than the original.
* Let fail() actually work
* all unhappy paths now end up calling fail()
* Update copyright
* Argument changes
update_cache_extra_args handled as a list like the others
moved the module setup to its own function for easier testing
update and upgrade have no defaults (None) to let required_one_of() do
its job properly
* update_cache exit path
Shift successful exit without name or upgrade under "update_cache".
It is an error if name or upgrade isn't specified and update_cache wasn't specified
either. (Caught by ansiblemodule required_one_of but still)
* Add pkgs to output on success only
Also align both format, only pkg name for now
* Multiple fixes
Move VersionTuple to top level for import from tests
Add removed pkgs to the exit json when removing packages
fixup list of upgraded pkgs reported on upgrades (was tuple of list for
no reason)
use list idiom for upgrades, like the rest
drop unused expand_package_groups function
skip empty lines when building inventory
* pacman: add tests
* python 2.x compat + pep8
* python 2.x some more
* Fix failure when pacman emits warnings
Add tests covering that failure case
* typo
* Whitespace
black failed me...
* Adjust documentation to fit implicit defaults
* fix test failures on older pythons
* remove file not intended for commit
* Test exception str with e.match
* Build inventory after cache update + adjust tests
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/packaging/os/pacman.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* changelog
* bump copyright year and add my name to authors
* Update changelogs/fragments/3907-pacman-speedup.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* maintainer entry
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1580f3c2b4)
Co-authored-by: Jean Raby <jean@raby.sh>
* pacman: add stdout and stderr as return parameters
Following the model of ansible.builtin.apt
* Bugfix to PR: fix documentation formatting
* Add changelog fragment 3758-pacman-add-stdout-stderr.yml
* Apply suggestions from code review
* Update changelogs/fragments/3758-pacman-add-stdout-stderr.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c2068641f4)
Co-authored-by: Célestin Matte <tohwiq@gmail.com>
* Allow for the pacman repository check to be skipped when it's not needed
* Adding a changelog fragment
* Undo the variable rename because the lint doesn't like it
* Update changelogs/fragments/3606-pacman-speed-up-check-if-package-is-installed.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Elie Moreau <emoreau@atlassian.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
* pacman: Descriptive state documentation
* Update plugins/modules/packaging/os/pacman.py
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Martin Rys <martin@rys.pw>
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add 'bin' option to use an alternative pacman binary
* Add changelog entry
* Incorporate recommendations
* Update plugins/modules/packaging/os/pacman.py
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* fixed validation-modules for plugins/modules/packaging/language/composer.py
* fixed validation-modules for plugins/modules/packaging/os/apt_rpm.py
* fixed validation-modules for plugins/modules/packaging/os/homebrew.py
* fixed validation-modules for plugins/modules/packaging/os/homebrew_cask.py
* fixed validation-modules for plugins/modules/packaging/os/opkg.py
* fixed validation-modules for plugins/modules/packaging/os/pacman.py
* fixed validation-modules for plugins/modules/packaging/os/slackpkg.py
* fixed validation-modules for plugins/modules/packaging/os/urpmi.py
* fixed validation-modules for plugins/modules/packaging/os/xbps.py
* fixed validation-modules for plugins/modules/source_control/github/github_deploy_key.py
* fixed validation-modules for plugins/modules/system/puppet.py
* added changelog fragment
* adjustments from PR + fixes in changelog frag
* fixed deprecation of param "show_diff" in module "puppet"
* Update changelogs/fragments/1927-removed-parameter-invalid.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/system/puppet.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* removed unnecessary ignore lines, adjustment in changelog frag
* no need to explicitly call deprecate() when param marked for removal
* Update changelogs/fragments/1927-removed-parameter-invalid.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Adjustments in changelog fragment, per PR
* bumping deprecation to 7.0.0
Co-authored-by: Felix Fontein <felix@fontein.de>
For each package check membership in the list instead of checking each
package individually using pacman to see if it is a pacman group.
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
* pacman: Treat .zst package names as files
* pacman: add changelog for .zst support
* pacman: refer to pull-request in changelog fragment
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: gileri <e+git8413@linuxw.info>
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove all packaging sanity tests to see errors
* fix
* Fix
* Minor fixes
* Fix
* Fix redhat
* Fix redhat_subscription
* Fix redhat_subscription
* Fix redhat_subscription
* Ignore redhat_subscription return-syntax-error
* Remove more ignored sanity tests
* Remove force from xbps argument_spec as it doesn't do anything(?)
* Remove unnecessary sanity test for xbps
* Fix suggestions made by felixfontein
* Better changelog description, fix portage wrong default values
* Fix
* Fix
* Remove root default from urpmi doc
* Fix wrong type of default for booleans
* Add default value as suggested by felixfontein
* Fix changelog