The module expects a list of strings in the `name` parameter,
but long-standing documentation showed space- and comma-delimited
lists as a valid way of telling the module to act on multiple
packages. Passing these lists through to the `pkg` command can
have unexpected side-effects of upgrading packages when
`state=present` rather than `state=latest` and could result
in the module reporting the wrong number of packages for each
action performed.
Writing tests caught a bug in PR #3393, which enabled
installing more than one package per `pkg` execution.
In converting the module's install/upgrade code to a
queue structure, check_mode got broken because the count
of actions performed was only updated in the `if not check_mode`
block that invokes `pkg`. This two-line change counts
the number of actions in the queue when check mode is
enabled.
`upgrade_packages()` only looked for the string
"Number of packages to be upgraded", but the
`pkg upgrade` command also reports "Number of packages to be
reinstalled". Reinstallation occurs when package metadata other
than version changes (e.g. build options, single architecture to `*`
architecture). In any other respect, though, a required
reinstallation is the same as an upgrade.
* pkgng: join package list into one command
Change the pkgng module so all packages being
installed (or upgraded) are acted on in one
command (per action). This will make installs
and upgrades a bit faster, because pkg will be
invoked fewer times per module run. More important,
module actions will be more atomic, making it less
likely that some packages are acted on because they
appear earlier in the argument list.
This change also improves the status reporting of
packages acted on, specifying the number of packages
for each action (install or upgrade).
* pkgng: make upgrade check lazily evaluated
Make upgrade_available an inner function so that the
if statement that checks whether installed packages
are up-to-date only runs the upgrade check on packages
that are already installed. This gets lazily evaluated
because of boolean operator short-circuiting:
https://docs.python.org/3.8/library/stdtypes.html#boolean-operations-and-or-not
Previously, the module would always check for upgrades,
even for not-installed packages, when running with
`state=latest`.
* pkgng: add changelog fragment
* pkgng: Apply changelog suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* pkgng: resolve pep8 style issue
Remove inline function. It's purpose would be confusing for
future maintainers, and someone refactoring it to a variable,
with good intentions, would introduce a performance regression.
Including the `query_update()` call in the if expression makes
the intent more legible and still ensures lazy evaluation of the
function call if the first `and` is `False`.
* pkgng: Fix changelog fragment syntax issue
Need to escape quotes so YAML doesn't eat them
Co-authored-by: Felix Fontein <felix@fontein.de>
* pkgng: Improve output message English grammar
Make word "package" plural only if reporting on more than one package
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
* [pkgng] introduce IGNORE_OSVERSION to pkgng
* [pkgng] add small description about IGNORE_OSVERSION
- source: https://www.freebsd.org/cgi/man.cgi?query=pkg.conf&sektion=5
* [pkgng] initialize default value of 'ignoreosver' as False
* [pkgng] replace double quotes by single ones, when setting 'ignoreosver'
* [pkgng] do not make 'ignoreosver' a required option for this module
* [pkgng] mode the point we set IGNORE_OSVER into install_packages()
* [pkgng] restrict the use of 'ignoreosver' to pkg versions >= 1.11
- https://github.com/freebsd/pkg/blob/release-1.11/NEWS#L51
* [pkgng] value of 'ignoreosver' passed to install_packages
- install_packages() contains a taks to update local pkgs cache;
- should that update be triggered, AND 'ignoreosver' is set to True,
we must change existing "batch_var" and add the IGNORE_OSVERSION=yes
to the environment;
- there pkg running on STABLE or CURRENT FreeBSD machines will have a
chance to proceed with the "update" action
* [pkgng] create option description for "ignoreosver" and its defaults
* [pkgng] make sure we do use IGNORE_OSVERSION when action is "update"
* [pkgng] add more information on how 'ignoreosver' works
Signed-off-by: Vinicius Zavam <egypcio@googlemail.com>
* [pkgng] create changelog fragment for PR #1243
Signed-off-by: Vinicius Zavam <egypcio@googlemail.com>
* [pkgng] add information about when we start to offer 'ignoreosver'
Signed-off-by: Vinicius Zavam <egypcio@googlemail.com>
* [pkgng] rename 'ignoreosver' -> 'ignore_osver'
Signed-off-by: Vinicius Zavam <egypcio@googlemail.com>
* [pkgng] remove unnecessary backslashes for install_packages() call
Signed-off-by: Vinicius Zavam <egypcio@googlemail.com>
* [pkgng] fix changelog fragment's formating
Signed-off-by: Vinicius Zavam <egypcio@googlemail.com>
* pkgng: Add support for upgrading all installed packages
Adds support for ``name: "*", state: latest`` to upgrade all installed
packages, similar to other package providers.
Co-authored-by: Felix Fontein <felix@fontein.de>
* pkgng: Improve wording for warning in example, fix formatting
* pkgng.py: Fix capitalization
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Davíð Steinn Geirsson <david@isnic.is>
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
* pkgng: Add stdout and stderr to response object
To ease debugging if something goes wrong during pkg run.
* pkgng: Fix crash when run with autoremove
Fix crash when run with "autoremove: yes" but no packages
need to be autoremoved.
* Add changelog fragment for pull request 560
* Formatting changes for changelogs/fragments/560-pkgng-add-stdout-and-stderr.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Davíð Steinn Geirsson <david@isnic.is>
Co-authored-by: Felix Fontein <felix@fontein.de>