commit
e074959ede
3
CHANGES
3
CHANGES
@ -40,6 +40,9 @@ This release contains contributions from (alphabetically by first name):
|
||||
and then sized to the actual SD card the user has used.
|
||||
* The *mount* module now handles missing *extraMounts* and *extraMountsEfi*
|
||||
keys gracefully (this is probably a misconfiguration issue).
|
||||
* The *packages* module now supports pre- and post-script options
|
||||
for all operations, not just during install (keep in mind that
|
||||
these run as three separate shells, though).
|
||||
|
||||
# 3.2.2 (2018-09-04) #
|
||||
|
||||
|
@ -126,7 +126,8 @@ class PackageManager(metaclass=abc.ABCMeta):
|
||||
"""
|
||||
Install a package from a single entry in the install list.
|
||||
This can be either a single package name, or an object
|
||||
with pre- and post-scripts.
|
||||
with pre- and post-scripts. If @p packagedata is a dict,
|
||||
it is assumed to follow the documented structure.
|
||||
|
||||
@param packagedata: str|dict
|
||||
@param from_local: bool
|
||||
@ -139,6 +140,22 @@ class PackageManager(metaclass=abc.ABCMeta):
|
||||
self.install([packagedata["package"]], from_local=from_local)
|
||||
self.run(packagedata["post-script"])
|
||||
|
||||
def remove_package(self, packagedata):
|
||||
"""
|
||||
Remove a package from a single entry in the remove list.
|
||||
This can be either a single package name, or an object
|
||||
with pre- and post-scripts. If @p packagedata is a dict,
|
||||
it is assumed to follow the documented structure.
|
||||
|
||||
@param packagedata: str|dict
|
||||
"""
|
||||
if isinstance(packagedata, str):
|
||||
self.remove([packagedata], from_local=from_local)
|
||||
else:
|
||||
self.run(packagedata["pre-script"])
|
||||
self.remove([packagedata["package"]], from_local=from_local)
|
||||
self.run(packagedata["post-script"])
|
||||
|
||||
|
||||
class PMPackageKit(PackageManager):
|
||||
backend = "packagekit"
|
||||
@ -440,19 +457,27 @@ def run_operations(pkgman, entry):
|
||||
libcalamares.utils.warning(warn_text)
|
||||
elif key == "remove":
|
||||
_change_mode(REMOVE)
|
||||
if all([isinstance(x, str) for x in package_list]):
|
||||
pkgman.remove(package_list)
|
||||
else:
|
||||
for package in package_list:
|
||||
pkgman.remove_package(package)
|
||||
elif key == "try_remove":
|
||||
_change_mode(REMOVE)
|
||||
for package in package_list:
|
||||
try:
|
||||
pkgman.remove([package])
|
||||
pkgman.remove_package(package)
|
||||
except subprocess.CalledProcessError:
|
||||
warn_text = "Could not remove package "
|
||||
warn_text += package
|
||||
warn_text += str(package)
|
||||
libcalamares.utils.warning(warn_text)
|
||||
elif key == "localInstall":
|
||||
_change_mode(INSTALL)
|
||||
if all([isinstance(x, str) for x in package_list]):
|
||||
pkgman.install(package_list, from_local=True)
|
||||
else:
|
||||
for package in package_list:
|
||||
pkgman.install_package(package, from_local=True)
|
||||
|
||||
completed_packages += len(package_list)
|
||||
libcalamares.job.setprogress(completed_packages * 1.0 / total_packages)
|
||||
|
@ -64,6 +64,8 @@ update_system: false
|
||||
# - localInstall: this is used to call the package manager
|
||||
# to install a package from a path-to-a-package. This is
|
||||
# useful if you have a static package archive on the install media.
|
||||
# The *pacman* package manager is the only one to specially support
|
||||
# this operation (all others treat this the same as *install*).
|
||||
# - remove, try_remove: will call the package manager to
|
||||
# remove one or more packages. The remove target will
|
||||
# abort the whole installation if package-removal fails,
|
||||
@ -91,18 +93,20 @@ update_system: false
|
||||
#
|
||||
# Any package name may be localized; this is used to install localization
|
||||
# packages for software based on the selected system locale. By including
|
||||
# the string LOCALE in the package name, the following happens:
|
||||
# the string `LOCALE` in the package name, the following happens:
|
||||
#
|
||||
# - if the system locale is English (any variety), then the package is not
|
||||
# installed at all,
|
||||
# - otherwise $LOCALE or ${LOCALE} is replaced by the 'lower-cased' BCP47
|
||||
# - otherwise `$LOCALE` or `${LOCALE}` is replaced by the 'lower-cased' BCP47
|
||||
# name of the 'language' part of the selected system locale (not the
|
||||
# country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
|
||||
# here.
|
||||
#
|
||||
# Take care that just plain LOCALE will not be replaced, so foo-LOCALE will
|
||||
# be left unchanged, while foo-$LOCALE will be changed. However, foo-LOCALE
|
||||
# 'will' be removed from the list of packages, if English is selected.
|
||||
# Take care that just plain `LOCALE` will not be replaced, so `foo-LOCALE` will
|
||||
# be left unchanged, while `foo-$LOCALE` will be changed. However, `foo-LOCALE`
|
||||
# **will** be removed from the list of packages (i.e. not installed), if
|
||||
# English is selected. If a non-English locale is selected, then `foo-LOCALE`
|
||||
# will be installed, unchanged (no language-name-substitution occurs).
|
||||
#
|
||||
# The following installs localizations for vi, if they are relevant; if
|
||||
# there is no localization, installation continues normally.
|
||||
|
Loading…
Reference in New Issue
Block a user