0b1c5eda17
The property of removal overrides dropping out if the package was removed from the base layer felt a bit too magical and hacky. We really should remember that wish and re-apply it if the pkg comes back. This is similar to package layering: requests can become inactive (seems like a better word than "dormant") if the package is already part of the base layer, but they don't really go away. This patch reworks the logic so that removal overrides work the same way. In the status output, we now have both "RemovedBasePackages" and "InactiveBaseRemovals" (which is only printed in verbose mode), similarly to how we have "LayeredPackages" and "InactiveRequests". And similarly, we also print out in the upgrader during a transaction all the inactive base removals. Another cool thing is that we now allow any pattern to be specified at the CLI. E.g. `ex override remove /usr/bin/strace` will resolve to strace. Closes: #836 Approved by: cgwalters
49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (C) 2017 Red Hat, Inc.
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the
|
|
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
# Boston, MA 02111-1307, USA.
|
|
|
|
set -e
|
|
|
|
. ${commondir}/libtest.sh
|
|
. ${commondir}/libvm.sh
|
|
|
|
set -x
|
|
|
|
# make sure that package-related entries are always present,
|
|
# even when they're empty
|
|
vm_assert_status_jq \
|
|
'.deployments[0]["packages"]' \
|
|
'.deployments[0]["requested-packages"]' \
|
|
'.deployments[0]["requested-local-packages"]' \
|
|
'.deployments[0]["base-removals"]' \
|
|
'.deployments[0]["requested-base-removals"]'
|
|
echo "ok empty pkg arrays in status json"
|
|
|
|
# Be sure an unprivileged user exists
|
|
vm_cmd getent passwd bin
|
|
|
|
# Make sure we can't layer as non-root
|
|
if vm_cmd "runuser -u bin rpm-ostree pkg-add foo-1.0"; then
|
|
assert_not_reached "Was able to install a package as non-root!"
|
|
fi
|
|
echo "ok layering requires root"
|
|
|
|
# Assert that we can do status as non-root
|
|
vm_cmd "runuser -u bin rpm-ostree status"
|
|
echo "ok status doesn't require root"
|