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.
|
and then sized to the actual SD card the user has used.
|
||||||
* The *mount* module now handles missing *extraMounts* and *extraMountsEfi*
|
* The *mount* module now handles missing *extraMounts* and *extraMountsEfi*
|
||||||
keys gracefully (this is probably a misconfiguration issue).
|
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) #
|
# 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.
|
Install a package from a single entry in the install list.
|
||||||
This can be either a single package name, or an object
|
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 packagedata: str|dict
|
||||||
@param from_local: bool
|
@param from_local: bool
|
||||||
@ -139,6 +140,22 @@ class PackageManager(metaclass=abc.ABCMeta):
|
|||||||
self.install([packagedata["package"]], from_local=from_local)
|
self.install([packagedata["package"]], from_local=from_local)
|
||||||
self.run(packagedata["post-script"])
|
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):
|
class PMPackageKit(PackageManager):
|
||||||
backend = "packagekit"
|
backend = "packagekit"
|
||||||
@ -440,19 +457,27 @@ def run_operations(pkgman, entry):
|
|||||||
libcalamares.utils.warning(warn_text)
|
libcalamares.utils.warning(warn_text)
|
||||||
elif key == "remove":
|
elif key == "remove":
|
||||||
_change_mode(REMOVE)
|
_change_mode(REMOVE)
|
||||||
|
if all([isinstance(x, str) for x in package_list]):
|
||||||
pkgman.remove(package_list)
|
pkgman.remove(package_list)
|
||||||
|
else:
|
||||||
|
for package in package_list:
|
||||||
|
pkgman.remove_package(package)
|
||||||
elif key == "try_remove":
|
elif key == "try_remove":
|
||||||
_change_mode(REMOVE)
|
_change_mode(REMOVE)
|
||||||
for package in package_list:
|
for package in package_list:
|
||||||
try:
|
try:
|
||||||
pkgman.remove([package])
|
pkgman.remove_package(package)
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
warn_text = "Could not remove package "
|
warn_text = "Could not remove package "
|
||||||
warn_text += package
|
warn_text += str(package)
|
||||||
libcalamares.utils.warning(warn_text)
|
libcalamares.utils.warning(warn_text)
|
||||||
elif key == "localInstall":
|
elif key == "localInstall":
|
||||||
_change_mode(INSTALL)
|
_change_mode(INSTALL)
|
||||||
|
if all([isinstance(x, str) for x in package_list]):
|
||||||
pkgman.install(package_list, from_local=True)
|
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)
|
completed_packages += len(package_list)
|
||||||
libcalamares.job.setprogress(completed_packages * 1.0 / total_packages)
|
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
|
# - localInstall: this is used to call the package manager
|
||||||
# to install a package from a path-to-a-package. This is
|
# to install a package from a path-to-a-package. This is
|
||||||
# useful if you have a static package archive on the install media.
|
# 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, try_remove: will call the package manager to
|
||||||
# remove one or more packages. The remove target will
|
# remove one or more packages. The remove target will
|
||||||
# abort the whole installation if package-removal fails,
|
# 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
|
# Any package name may be localized; this is used to install localization
|
||||||
# packages for software based on the selected system locale. By including
|
# 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
|
# - if the system locale is English (any variety), then the package is not
|
||||||
# installed at all,
|
# 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
|
# name of the 'language' part of the selected system locale (not the
|
||||||
# country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
|
# country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
|
||||||
# here.
|
# here.
|
||||||
#
|
#
|
||||||
# Take care that just plain LOCALE will not be replaced, so foo-LOCALE will
|
# 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
|
# be left unchanged, while `foo-$LOCALE` will be changed. However, `foo-LOCALE`
|
||||||
# 'will' be removed from the list of packages, if English is selected.
|
# **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
|
# The following installs localizations for vi, if they are relevant; if
|
||||||
# there is no localization, installation continues normally.
|
# there is no localization, installation continues normally.
|
||||||
|
Loading…
Reference in New Issue
Block a user