Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/slash-bedrock/libexec/pmm
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,19 @@ fi
#
# package_manager_canary_executables["xbps"] = "xbps-install"
#
# - A supersedes[] entry, mapping a package manager name to another indicates
# that the given package managers operations will take precedence
# over shared operations in the superseded package manager. For example:
#
# supersedes["yay"] = "pacman"
#
# - A auto_escalate[] entry, mapping a package manager name to a privilege
# escalating executable indicates the package manager has automatic privilege
# escalating behavior and will automatically escalate other package managers
# where appropriate using the mapped executable. For example:
#
# auto_escalate["yay"] = "sudo"
#
# - user_interfaces[], a map from either a [package-manager, operation] or a
# [package-manager, flag] to a string representing a user interface call
# requesting the corresponding operation or flag. Variable components, such as
Expand Down Expand Up @@ -267,6 +280,8 @@ $(cat /bedrock/share/pmm/package_managers/* /bedrock/share/pmm/help /bedrock/sha
# - operations[]
# - system_package_managers[]
# - package_manager_canary_executables[]
# - supersedes[]
# - auto_escalate[]
# - am_root
#
# Additional, the following values are gathered while parsing the provided
Expand Down Expand Up @@ -788,6 +803,12 @@ function prep_shell_environment(stratum, package_manager, items, cmd,
output = output " export unprivileged_user=\"sudo -u " unprivileged_user "\";"
}

if (am_root || cmd !~ /[$]\{root_user\}/ || auto_escalate[ui] == "") {
output = output " export root_user=\"\";"
} else {
output = output " export root_user=\"" auto_escalate[ui] "\";"
}

output = output " export flags=\""
count = 0
for (f in global_flags) {
Expand Down Expand Up @@ -828,6 +849,9 @@ function show_cmd(cmd, env,
if (env ~ /export unprivileged_user=""/) {
gsub(/\$\{unprivileged_user\} /,"", show)
}
if (env ~ /export root_user=""/) {
gsub(/\$\{root_user\} /,"", show)
}
# Escape everything except shell variables to ensure ${stratum} et al
# are expanded.
gsub(/[^\na-zA-Z0-9_\/${}-]/,"\\\\&", show)
Expand Down
30 changes: 15 additions & 15 deletions src/slash-bedrock/share/pmm/package_managers/apk
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,21 @@ user_interfaces["apk", "update-file-database"] = "" # file search command do
user_interfaces["apk", "upgrade-packages-limited"] = "" # no limited upgrade concept
user_interfaces["apk", "upgrade-packages-full"] = "pmm upgrade"

implementations["apk", "install-packages"] = "strat -r ${stratum} apk ${flags} add ${items}"
implementations["apk", "reinstall-packages"] = "strat -r ${stratum} apk ${flags} fix -r ${items}"
implementations["apk", "remove-packages-limited"] = "strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "remove-packages-full"] = "strat -r ${stratum} apk ${flags} del --purge ${items}"
implementations["apk", "install-packages"] = "${root_user} strat -r ${stratum} apk ${flags} add ${items}"
implementations["apk", "reinstall-packages"] = "${root_user} strat -r ${stratum} apk ${flags} fix -r ${items}"
implementations["apk", "remove-packages-limited"] = "${root_user} strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "remove-packages-full"] = "${root_user} strat -r ${stratum} apk ${flags} del --purge ${items}"
implementations["apk", "verify-packages"] = "" # could not find operation in package manager documentation
implementations["apk", "verify-all-packages"] = "strat -r ${stratum} apk ${flags} audit --system --check-permissions ${items}"
implementations["apk", "mark-packages-explicit"] = "strat -r ${stratum} apk ${flags} add ${items}"
implementations["apk", "mark-packages-implicit"] = "strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "show-package-information"] = "strat -r ${stratum} apk ${flags} info ${items}"
implementations["apk", "verify-all-packages"] = "strat -r ${stratum} apk ${flags} audit --system --check-permissions"
implementations["apk", "mark-packages-explicit"] = "${root_user} strat -r ${stratum} apk ${flags} add ${items}"
implementations["apk", "mark-packages-implicit"] = "${root_user} strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "show-package-information"] = "${root_user} strat -r ${stratum} apk ${flags} info ${items}"
implementations["apk", "clear-cache"] = "" # could not find operation in package manager documentation
implementations["apk", "remove-orphans"] = "" # implicit with apk del
implementations["apk", "update-package-database"] = "strat -r ${stratum} apk ${flags} update"
implementations["apk", "update-package-database"] = "${root_user} strat -r ${stratum} apk ${flags} update"
implementations["apk", "update-file-database"] = "" # no file database concept
implementations["apk", "upgrade-packages-limited"] = "strat -r ${stratum} apk ${flags} upgrade"
implementations["apk", "upgrade-packages-full"] = "strat -r ${stratum} apk ${flags} upgrade"
implementations["apk", "upgrade-packages-limited"] = "${root_user} strat -r ${stratum} apk ${flags} upgrade"
implementations["apk", "upgrade-packages-full"] = "${root_user} strat -r ${stratum} apk ${flags} upgrade"

#
# Combine operations.
Expand All @@ -79,10 +79,10 @@ user_interfaces["apk", "update-package-database,update-file-database,upgrade-pac
user_interfaces["apk", "update-package-database,update-file-database,upgrade-packages-full,install-packages"] = ""

implementations["apk", "clear-cache,remove-orphans"] = ""
implementations["apk", "mark-packages-implicit,remove-orphans"] = "strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "remove-packages-limited,remove-orphans"] = "strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "remove-packages-full,remove-orphans"] = "strat -r ${stratum} apk ${flags} del --purge ${items}"
implementations["apk", "update-package-database,update-file-database"] = "strat -r ${stratum} apk ${flags} update"
implementations["apk", "mark-packages-implicit,remove-orphans"] = "${root_user} strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "remove-packages-limited,remove-orphans"] = "${root_user} strat -r ${stratum} apk ${flags} del ${items}"
implementations["apk", "remove-packages-full,remove-orphans"] = "${root_user} strat -r ${stratum} apk ${flags} del --purge ${items}"
implementations["apk", "update-package-database,update-file-database"] = "${root_user} strat -r ${stratum} apk ${flags} update"
implementations["apk", "update-package-database,upgrade-packages-partial"] = ""
implementations["apk", "update-package-database,upgrade-packages-full"] = ""
implementations["apk", "update-package-database,update-file-database,upgrade-packages-partial"] = ""
Expand Down
28 changes: 14 additions & 14 deletions src/slash-bedrock/share/pmm/package_managers/apt
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,21 @@ user_interfaces["apt", "update-file-database"] = "pmm-file update"
user_interfaces["apt", "upgrade-packages-limited"] = "pmm upgrade"
user_interfaces["apt", "upgrade-packages-full"] = "pmm dist-upgrade/full-upgrade"

implementations["apt", "install-packages"] = "strat -r ${stratum} apt ${flags} install ${items}"
implementations["apt", "reinstall-packages"] = "strat -r ${stratum} apt ${flags} reinstall ${items}"
implementations["apt", "remove-packages-limited"] = "strat -r ${stratum} apt ${flags} remove ${items}"
implementations["apt", "remove-packages-full"] = "strat -r ${stratum} apt ${flags} purge ${items}"
implementations["apt", "verify-packages"] = "strat -r ${stratum} dpkg -V ${items}"
implementations["apt", "verify-all-packages"] = "strat -r ${stratum} dpkg -V"
implementations["apt", "mark-packages-explicit"] = "strat -r ${stratum} apt-mark manual ${items}"
implementations["apt", "mark-packages-implicit"] = "strat -r ${stratum} apt-mark auto ${items}"
implementations["apt", "install-packages"] = "${root_user} strat -r ${stratum} apt ${flags} install ${items}"
implementations["apt", "reinstall-packages"] = "${root_user} strat -r ${stratum} apt ${flags} reinstall ${items}"
implementations["apt", "remove-packages-limited"] = "${root_user} strat -r ${stratum} apt ${flags} remove ${items}"
implementations["apt", "remove-packages-full"] = "${root_user} strat -r ${stratum} apt ${flags} purge ${items}"
implementations["apt", "verify-packages"] = "${root_user} strat -r ${stratum} dpkg -V ${items}"
implementations["apt", "verify-all-packages"] = "${root_user} strat -r ${stratum} dpkg -V"
implementations["apt", "mark-packages-explicit"] = "${root_user} strat -r ${stratum} apt-mark manual ${items}"
implementations["apt", "mark-packages-implicit"] = "${root_user} strat -r ${stratum} apt-mark auto ${items}"
implementations["apt", "show-package-information"] = "strat -r ${stratum} apt ${flags} show ${items}"
implementations["apt", "clear-cache"] = "strat -r ${stratum} apt ${flags} clean"
implementations["apt", "remove-orphans"] = "strat -r ${stratum} apt ${flags} autoremove"
implementations["apt", "update-package-database"] = "strat -r ${stratum} apt ${flags} update"
implementations["apt", "update-file-database"] = "strat -r ${stratum} apt-file update"
implementations["apt", "upgrade-packages-limited"] = "strat -r ${stratum} apt ${flags} upgrade"
implementations["apt", "upgrade-packages-full"] = "strat -r ${stratum} apt ${flags} full-upgrade"
implementations["apt", "clear-cache"] = "${root_user} strat -r ${stratum} apt ${flags} clean"
implementations["apt", "remove-orphans"] = "${root_user} strat -r ${stratum} apt ${flags} autoremove"
implementations["apt", "update-package-database"] = "${root_user} strat -r ${stratum} apt ${flags} update"
implementations["apt", "update-file-database"] = "${root_user} strat -r ${stratum} apt-file update"
implementations["apt", "upgrade-packages-limited"] = "${root_user} strat -r ${stratum} apt ${flags} upgrade"
implementations["apt", "upgrade-packages-full"] = "${root_user} strat -r ${stratum} apt ${flags} full-upgrade"

#
# Combine operations.
Expand Down
16 changes: 8 additions & 8 deletions src/slash-bedrock/share/pmm/package_managers/brl
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ implementations["brl", "verify-all-packages"] = ""
implementations["brl", "mark-packages-explicit"] = ""
implementations["brl", "mark-packages-implicit"] = ""
implementations["brl", "show-package-information"] = ""
implementations["brl", "clear-cache"] = "rm -rf /bedrock/var/cache/"
implementations["brl", "clear-cache"] = "${root_user} rm -rf /bedrock/var/cache/"
implementations["brl", "remove-orphans"] = ""
implementations["brl", "update-package-database"] = "brl update"
implementations["brl", "update-package-database"] = "${root_user} brl update"
implementations["brl", "update-file-database"] = ""
implementations["brl", "upgrade-packages-limited"] = "brl update"
implementations["brl", "upgrade-packages-full"] = "brl update"
implementations["brl", "upgrade-packages-limited"] = "${root_user} brl update"
implementations["brl", "upgrade-packages-full"] = "${root_user} brl update"

#
# Combine operations.
Expand Down Expand Up @@ -94,10 +94,10 @@ implementations["brl", "mark-packages-implicit,remove-orphans"]
implementations["brl", "remove-packages-limited,remove-orphans"] = ""
implementations["brl", "remove-packages-full,remove-orphans"] = ""
implementations["brl", "update-package-database,update-file-database"] = ""
implementations["brl", "update-package-database,upgrade-packages-partial"] = "brl update"
implementations["brl", "update-package-database,upgrade-packages-full"] = "brl update"
implementations["brl", "update-package-database,update-file-database,upgrade-packages-partial"] = "brl update"
implementations["brl", "update-package-database,update-file-database,upgrade-packages-full"] = "brl update"
implementations["brl", "update-package-database,upgrade-packages-partial"] = "${root_user} brl update"
implementations["brl", "update-package-database,upgrade-packages-full"] = "${root_user} brl update"
implementations["brl", "update-package-database,update-file-database,upgrade-packages-partial"] = "${root_user} brl update"
implementations["brl", "update-package-database,update-file-database,upgrade-packages-full"] = "${root_user} brl update"
implementations["brl", "update-package-database,install-packages"] = ""
implementations["brl", "update-package-database,update-file-database,install-packages"] = ""
implementations["brl", "upgrade-packages-limited,install-packages"] = ""
Expand Down
34 changes: 17 additions & 17 deletions src/slash-bedrock/share/pmm/package_managers/dnf
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,21 @@ user_interfaces["dnf", "update-file-database"] = "" # uses combine
user_interfaces["dnf", "upgrade-packages-limited"] = "" # uses combine
user_interfaces["dnf", "upgrade-packages-full"] = "" # uses combine

implementations["dnf", "install-packages"] = "strat -r ${stratum} dnf ${flags} install ${items} && strat -r ${stratum} dnf ${flags} mark install ${items}"
implementations["dnf", "reinstall-packages"] = "strat -r ${stratum} dnf ${flags} reinstall ${items}"
implementations["dnf", "remove-packages-limited"] = "strat -r ${stratum} dnf -C ${flags} remove ${items}"
implementations["dnf", "remove-packages-full"] = "strat -r ${stratum} dnf -C ${flags} remove ${items}"
implementations["dnf", "verify-packages"] = "strat -r ${stratum} rpm -V ${items}"
implementations["dnf", "verify-all-packages"] = "strat -r ${stratum} rpm -Va"
implementations["dnf", "mark-packages-explicit"] = "strat -r ${stratum} dnf -C ${flags} mark install ${items}"
implementations["dnf", "mark-packages-implicit"] = "strat -r ${stratum} dnf -C ${flags} mark remove ${items}"
implementations["dnf", "install-packages"] = "${root_user} strat -r ${stratum} dnf ${flags} install ${items} && ${root_user} strat -r ${stratum} dnf ${flags} mark install ${items}"
implementations["dnf", "reinstall-packages"] = "${root_user} strat -r ${stratum} dnf ${flags} reinstall ${items}"
implementations["dnf", "remove-packages-limited"] = "${root_user} strat -r ${stratum} dnf -C ${flags} remove ${items}"
implementations["dnf", "remove-packages-full"] = "${root_user} strat -r ${stratum} dnf -C ${flags} remove ${items}"
implementations["dnf", "verify-packages"] = "${root_user} strat -r ${stratum} rpm -V ${items}"
implementations["dnf", "verify-all-packages"] = "${root_user} strat -r ${stratum} rpm -Va"
implementations["dnf", "mark-packages-explicit"] = "${root_user} strat -r ${stratum} dnf -C ${flags} mark install ${items}"
implementations["dnf", "mark-packages-implicit"] = "${root_user} strat -r ${stratum} dnf -C ${flags} mark remove ${items}"
implementations["dnf", "show-package-information"] = "strat -r ${stratum} dnf -C ${flags} info ${items}"
implementations["dnf", "clear-cache"] = "strat -r ${stratum} dnf -C ${flags} clean all"
implementations["dnf", "remove-orphans"] = "strat -r ${stratum} dnf -C ${flags} autoremove"
implementations["dnf", "clear-cache"] = "${root_user} strat -r ${stratum} dnf -C ${flags} clean all"
implementations["dnf", "remove-orphans"] = "${root_user} strat -r ${stratum} dnf -C ${flags} autoremove"
implementations["dnf", "update-package-database"] = "strat -r ${stratum} dnf --refresh ${flags} check-update || true"
implementations["dnf", "update-file-database"] = "strat -r ${stratum} dnf --refresh ${flags} check-update || true"
implementations["dnf", "upgrade-packages-limited"] = "strat -r ${stratum} dnf ${flags} upgrade"
implementations["dnf", "upgrade-packages-full"] = "strat -r ${stratum} dnf ${flags} upgrade"
implementations["dnf", "upgrade-packages-limited"] = "${root_user} strat -r ${stratum} dnf ${flags} upgrade"
implementations["dnf", "upgrade-packages-full"] = "${root_user} strat -r ${stratum} dnf ${flags} upgrade"

#
# Combine operations.
Expand Down Expand Up @@ -90,10 +90,10 @@ implementations["dnf", "mark-packages-implicit,remove-orphans"]
implementations["dnf", "remove-packages-limited,remove-orphans"] = ""
implementations["dnf", "remove-packages-full,remove-orphans"] = ""
implementations["dnf", "update-package-database,update-file-database"] = "strat -r ${stratum} dnf --refresh ${flags} check-update || true"
implementations["dnf", "update-package-database,upgrade-packages-partial"] = "strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,upgrade-packages-full"] = "strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,update-file-database,upgrade-packages-partial"] = "strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,update-file-database,upgrade-packages-full"] = "strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,upgrade-packages-partial"] = "${root_user} strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,upgrade-packages-full"] = "${root_user} strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,update-file-database,upgrade-packages-partial"] = "${root_user} strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,update-file-database,upgrade-packages-full"] = "${root_user} strat -r ${stratum} dnf --refresh ${flags} upgrade"
implementations["dnf", "update-package-database,install-packages"] = ""
implementations["dnf", "update-package-database,update-file-database,install-packages"] = ""
implementations["dnf", "upgrade-packages-limited,install-packages"] = ""
Expand Down Expand Up @@ -184,7 +184,7 @@ implementations["dnf", "is-package-installed"] = "strat -r ${strat
implementations["dnf", "is-package-available"] = "strat -r ${stratum} dnf -Cq info ${items} >/dev/null 2>&1"
implementations["dnf", "is-file-db-available"] = "true"
implementations["dnf", "print-file-db-install-instructions"] = ""
implementations["dnf", "print-package-version"] = "dnf -Cq info ${items} | awk '$1 == \"Version\" {print $3}'"
implementations["dnf", "print-package-version"] = "strat -r ${stratum} dnf -Cq info ${items} | awk '$1 == \"Version\" {print $3}'"
implementations["dnf", "cache-package-db"] = "strat -r ${stratum} dnf -Cq info --available |\
awk '\
$1 == \"Name\" {\
Expand Down
Loading