|
|
@ -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)
|
|
|
|
pkgman.remove(package_list)
|
|
|
|
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":
|
|
|
|
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)
|
|
|
|
pkgman.install(package_list, from_local=True)
|
|
|
|
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)
|
|
|
|
completed_packages += len(package_list)
|
|
|
|
libcalamares.job.setprogress(completed_packages * 1.0 / total_packages)
|
|
|
|
libcalamares.job.setprogress(completed_packages * 1.0 / total_packages)
|
|
|
|