[equo] implement support for split package files
This commit is contained in:
+77
-41
@@ -437,15 +437,16 @@ def upgrade_packages(entropy_client, onlyfetch = False, replay = False,
|
||||
|
||||
equo_client_settings['collisionprotect'] = oldcollprotect
|
||||
|
||||
installed_repo = entropy_client.installed_repository()
|
||||
# verify that client database idpackage still exist,
|
||||
# validate here before passing removePackage() wrong info
|
||||
remove = [x for x in remove if entropy_client.installed_repository().isPackageIdAvailable(x)]
|
||||
remove = [x for x in remove if installed_repo.isPackageIdAvailable(x)]
|
||||
# Filter out packages installed from unavailable repositories, this is
|
||||
# mainly required to allow 3rd party packages installation without
|
||||
# erroneously inform user about unavailability.
|
||||
unavail_pkgs = [x for x in remove if \
|
||||
entropy_client.installed_repository().getInstalledPackageRepository(x) \
|
||||
not in entropy_client.repositories()]
|
||||
installed_repo.getInstalledPackageRepository(x) \
|
||||
not in entropy_client.repositories()]
|
||||
remove = [x for x in remove if x not in unavail_pkgs]
|
||||
# drop system packages for automatic removal, user has to do it manually.
|
||||
system_unavail_pkgs = [x for x in remove if \
|
||||
@@ -501,7 +502,7 @@ def upgrade_packages(entropy_client, onlyfetch = False, replay = False,
|
||||
do_run = False
|
||||
elif rc == 3: # selective
|
||||
new_remove = []
|
||||
c_repo = entropy_client.installed_repository()
|
||||
c_repo = installed_repo
|
||||
for idpackage in remove:
|
||||
c_atom = c_repo.retrieveAtom(idpackage)
|
||||
if c_atom is None:
|
||||
@@ -810,22 +811,25 @@ def _show_package_removal_info(entropy_client, package_identifiers, manual = Fal
|
||||
totalatoms = str(len(package_identifiers))
|
||||
|
||||
atomscounter = 0
|
||||
inst_repo = entropy_client.installed_repository()
|
||||
for idpackage in package_identifiers:
|
||||
|
||||
atomscounter += 1
|
||||
rematom = entropy_client.installed_repository().retrieveAtom(idpackage)
|
||||
rematom = inst_repo.retrieveAtom(idpackage)
|
||||
if not rematom:
|
||||
continue
|
||||
|
||||
installedfrom = \
|
||||
entropy_client.installed_repository().getInstalledPackageRepository(
|
||||
idpackage)
|
||||
installedfrom = inst_repo.getInstalledPackageRepository(idpackage)
|
||||
if installedfrom is None:
|
||||
installedfrom = _("Not available")
|
||||
|
||||
on_disk_size = entropy_client.installed_repository().retrieveOnDiskSize(
|
||||
idpackage)
|
||||
pkg_size = entropy_client.installed_repository().retrieveSize(idpackage)
|
||||
on_disk_size = inst_repo.retrieveOnDiskSize(idpackage)
|
||||
pkg_size = inst_repo.retrieveSize(idpackage)
|
||||
extra_downloads = inst_repo.retrieveExtraDownload(idpackage)
|
||||
for extra_download in extra_downloads:
|
||||
pkg_size += extra_download['size']
|
||||
on_disk_size += extra_download['disksize']
|
||||
|
||||
disksize = entropy.tools.bytes_into_human(on_disk_size)
|
||||
repositoryInfo = bold("[") + brown(installedfrom) \
|
||||
+ bold("]")
|
||||
@@ -845,6 +849,8 @@ def _show_package_info(entropy_client, found_pkg_atoms, deps, action_name = None
|
||||
print_info(red(" @@ ")+blue("%s:" % (_("These are the chosen packages"),) ))
|
||||
totalatoms = len(found_pkg_atoms)
|
||||
atomscounter = 0
|
||||
installed_repo = entropy_client.installed_repository()
|
||||
|
||||
for idpackage, reponame in found_pkg_atoms:
|
||||
atomscounter += 1
|
||||
# open database
|
||||
@@ -867,19 +873,19 @@ def _show_package_info(entropy_client, found_pkg_atoms, deps, action_name = None
|
||||
installedTag = "NoTag"
|
||||
installedRev = "NoRev"
|
||||
installedRepo = _("Not available")
|
||||
pkginstalled = entropy_client.installed_repository().atomMatch(
|
||||
pkginstalled = installed_repo.atomMatch(
|
||||
entropy.dep.dep_getkey(pkgatom), matchSlot = pkgslot)
|
||||
if (pkginstalled[1] == 0):
|
||||
# found
|
||||
idx = pkginstalled[0]
|
||||
installedVer = entropy_client.installed_repository().retrieveVersion(idx)
|
||||
installedTag = entropy_client.installed_repository().retrieveTag(idx)
|
||||
installedRepo = entropy_client.installed_repository().getInstalledPackageRepository(idx)
|
||||
installedVer = installed_repo.retrieveVersion(idx)
|
||||
installedTag = installed_repo.retrieveTag(idx)
|
||||
installedRepo = installed_repo.getInstalledPackageRepository(idx)
|
||||
if installedRepo is None:
|
||||
installedRepo = _("Not available")
|
||||
if not installedTag:
|
||||
installedTag = "NoTag"
|
||||
installedRev = entropy_client.installed_repository().retrieveRevision(idx)
|
||||
installedRev = installed_repo.retrieveRevision(idx)
|
||||
|
||||
mytxt = " # %s%s/%s%s [%s] %s" % (
|
||||
red("("),
|
||||
@@ -1241,6 +1247,7 @@ def install_packages(entropy_client,
|
||||
sys_set_client_plg_id = \
|
||||
etpConst['system_settings_plugins_ids']['client_plugin']
|
||||
equo_client_settings = entropy_client.Settings()[sys_set_client_plg_id]['misc']
|
||||
splitdebug = equo_client_settings['splitdebug']
|
||||
|
||||
if check_critical_updates and equo_client_settings.get('forcedupdates'):
|
||||
crit_atoms, crit_matches = entropy_client.calculate_critical_updates()
|
||||
@@ -1296,6 +1303,7 @@ def install_packages(entropy_client,
|
||||
pkgsToReinstall = 0
|
||||
pkgsToDowngrade = 0
|
||||
pkgsToRemove = len(removal_queue)
|
||||
installed_repo = entropy_client.installed_repository()
|
||||
|
||||
if run_queue:
|
||||
|
||||
@@ -1319,6 +1327,13 @@ def install_packages(entropy_client,
|
||||
onDiskUsedSize += dbconn.retrieveOnDiskSize(idpackage)
|
||||
|
||||
pkgsize = dbconn.retrieveSize(idpackage)
|
||||
extra_downloads = dbconn.retrieveExtraDownload(idpackage)
|
||||
for extra_download in extra_downloads:
|
||||
if not splitdebug and (extra_download['type'] == "debug"):
|
||||
continue
|
||||
pkgsize += extra_download['size']
|
||||
onDiskUsedSize += extra_download['disksize']
|
||||
|
||||
unpackSize += int(pkgsize)*2
|
||||
|
||||
fetch_path = ClientPkg.get_standard_fetch_disk_path(pkgfile)
|
||||
@@ -1336,18 +1351,22 @@ def install_packages(entropy_client,
|
||||
installedTag = ''
|
||||
installedRev = 0
|
||||
installedRepo = None
|
||||
pkginstalled = entropy_client.installed_repository().atomMatch(
|
||||
pkginstalled = installed_repo.atomMatch(
|
||||
entropy.dep.dep_getkey(pkgatom), matchSlot = pkgslot)
|
||||
if pkginstalled[1] == 0:
|
||||
# found an installed package
|
||||
idx = pkginstalled[0]
|
||||
installedVer = entropy_client.installed_repository().retrieveVersion(idx)
|
||||
installedTag = entropy_client.installed_repository().retrieveTag(idx)
|
||||
installedRev = entropy_client.installed_repository().retrieveRevision(idx)
|
||||
installedRepo = entropy_client.installed_repository().getInstalledPackageRepository(idx)
|
||||
installedVer = installed_repo.retrieveVersion(idx)
|
||||
installedTag = installed_repo.retrieveTag(idx)
|
||||
installedRev = installed_repo.retrieveRevision(idx)
|
||||
installedRepo = installed_repo.getInstalledPackageRepository(idx)
|
||||
if installedRepo is None:
|
||||
installedRepo = _("Not available")
|
||||
onDiskFreedSize += entropy_client.installed_repository().retrieveOnDiskSize(idx)
|
||||
onDiskFreedSize += installed_repo.retrieveOnDiskSize(idx)
|
||||
extra_downloads = installed_repo.retrieveExtraDownload(idx)
|
||||
for extra_download in extra_downloads:
|
||||
onDiskFreedSize += extra_download['disksize']
|
||||
|
||||
|
||||
if etpUi['quiet']:
|
||||
continue
|
||||
@@ -1419,11 +1438,16 @@ def install_packages(entropy_client,
|
||||
print_info(red(" @@ ")+mytxt)
|
||||
|
||||
for idpackage in removal_queue:
|
||||
pkgatom = entropy_client.installed_repository().retrieveAtom(idpackage)
|
||||
pkgatom = installed_repo.retrieveAtom(idpackage)
|
||||
if not pkgatom:
|
||||
continue
|
||||
onDiskFreedSize += entropy_client.installed_repository().retrieveOnDiskSize(idpackage)
|
||||
installedfrom = entropy_client.installed_repository().getInstalledPackageRepository(idpackage)
|
||||
onDiskFreedSize += installed_repo.retrieveOnDiskSize(idpackage)
|
||||
extra_downloads = installed_repo.retrieveExtraDownload(
|
||||
idpackage)
|
||||
for extra_download in extra_downloads:
|
||||
onDiskFreedSize += extra_download['disksize']
|
||||
|
||||
installedfrom = installed_repo.getInstalledPackageRepository(idpackage)
|
||||
if installedfrom is None:
|
||||
installedfrom = _("Not available")
|
||||
repoinfo = red("[")+brown("%s: " % (_("from"),) )+bold(installedfrom)+red("] ")
|
||||
@@ -1641,7 +1665,7 @@ def install_packages(entropy_client,
|
||||
elif choice == 2:
|
||||
break
|
||||
elif choice == 3:
|
||||
entropy_client.installed_repository().acceptLicense(key)
|
||||
installed_repo.acceptLicense(key)
|
||||
break
|
||||
|
||||
ugc_th = None
|
||||
@@ -1819,9 +1843,10 @@ def _configure_packages(entropy_client, packages):
|
||||
|
||||
found_pkg_atoms = []
|
||||
packages = entropy_client.packages_expand(packages)
|
||||
installed_repo = entropy_client.installed_repository()
|
||||
|
||||
for package in packages:
|
||||
idpackage, result = entropy_client.installed_repository().atomMatch(package)
|
||||
idpackage, result = installed_repo.atomMatch(package)
|
||||
if idpackage == -1:
|
||||
mytxt = "!!! %s: %s %s." % (
|
||||
purple(_("Warning")),
|
||||
@@ -1848,12 +1873,11 @@ def _configure_packages(entropy_client, packages):
|
||||
atomscounter += 1
|
||||
|
||||
# get needed info
|
||||
pkgatom = entropy_client.installed_repository().retrieveAtom(idpackage)
|
||||
pkgatom = installed_repo.retrieveAtom(idpackage)
|
||||
if not pkgatom:
|
||||
continue
|
||||
|
||||
installedfrom = entropy_client.installed_repository().getInstalledPackageRepository(
|
||||
idpackage)
|
||||
installedfrom = installed_repo.getInstalledPackageRepository(idpackage)
|
||||
if installedfrom is None:
|
||||
installedfrom = _("Not available")
|
||||
mytxt = " | %s: " % (_("Installed from"),)
|
||||
@@ -1980,6 +2004,10 @@ def remove_packages(entropy_client, packages = None, atomsdata = None,
|
||||
installedfrom = _("Not available")
|
||||
on_disk_size = installed_repo.retrieveOnDiskSize(idpackage)
|
||||
pkg_size = installed_repo.retrieveSize(idpackage)
|
||||
extra_downloads = installed_repo.retrieveExtraDownload(idpackage)
|
||||
for extra_download in extra_downloads:
|
||||
pkg_size += extra_download['size']
|
||||
on_disk_size += extra_download['disksize']
|
||||
disksize = entropy.tools.bytes_into_human(on_disk_size)
|
||||
disksizeinfo = " [%s]" % (bold(str(disksize)),)
|
||||
|
||||
@@ -2021,8 +2049,7 @@ def remove_packages(entropy_client, packages = None, atomsdata = None,
|
||||
empty = empty, system_packages = system_packages_check)
|
||||
except DependenciesNotRemovable as err:
|
||||
non_rm_pkg_ids = sorted([x[0] for x in err.value],
|
||||
key = lambda x: \
|
||||
entropy_client.installed_repository().retrieveAtom(x))
|
||||
key = lambda x: installed_repo.retrieveAtom(x))
|
||||
# otherwise we need to deny the request
|
||||
print_error("")
|
||||
print_error(" %s, %s:" % (
|
||||
@@ -2031,7 +2058,7 @@ def remove_packages(entropy_client, packages = None, atomsdata = None,
|
||||
)
|
||||
)
|
||||
for pkg_in in non_rm_pkg_ids:
|
||||
pkg_name = entropy_client.installed_repository().retrieveAtom(pkg_in)
|
||||
pkg_name = installed_repo.retrieveAtom(pkg_in)
|
||||
print_error(" %s %s" % (purple("#"), teal(pkg_name),))
|
||||
print_error("")
|
||||
return 128, -1
|
||||
@@ -2063,11 +2090,20 @@ def remove_packages(entropy_client, packages = None, atomsdata = None,
|
||||
|
||||
for idpackage in set(removal_queue):
|
||||
on_disk_size = installed_repo.retrieveOnDiskSize(idpackage)
|
||||
if on_disk_size is None:
|
||||
on_disk_size = 0
|
||||
|
||||
pkg_size = installed_repo.retrieveSize(idpackage)
|
||||
if on_disk_size is not None:
|
||||
total_removal_size += on_disk_size
|
||||
if pkg_size is not None:
|
||||
total_pkg_size += pkg_size
|
||||
if pkg_size is None:
|
||||
pkg_size = 0
|
||||
|
||||
extra_downloads = installed_repo.retrieveExtraDownload(idpackage)
|
||||
for extra_download in extra_downloads:
|
||||
pkg_size += extra_download['size']
|
||||
on_disk_size += extra_download['disksize']
|
||||
|
||||
total_removal_size += on_disk_size
|
||||
total_pkg_size += pkg_size
|
||||
|
||||
human_removal_size = entropy.tools.bytes_into_human(total_removal_size)
|
||||
human_pkg_size = entropy.tools.bytes_into_human(total_pkg_size)
|
||||
@@ -2188,13 +2224,13 @@ def _unused_packages_test(entropy_client, do_size_sort = False):
|
||||
print_info(red(" @@ ")+blue("%s ..." % (
|
||||
_("Running unused packages test, pay attention, there are false positives"),) ))
|
||||
|
||||
installed_repo = entropy_client.installed_repository()
|
||||
def unused_packages_test():
|
||||
inst_repo = entropy_client.installed_repository()
|
||||
return [x for x in inst_repo.retrieveUnusedPackageIds() if \
|
||||
return [x for x in installed_repo.retrieveUnusedPackageIds() if \
|
||||
entropy_client.validate_package_removal(x)]
|
||||
|
||||
data = [(entropy_client.installed_repository().retrieveOnDiskSize(x), x, \
|
||||
entropy_client.installed_repository().retrieveAtom(x),) for x in \
|
||||
data = [(installed_repo.retrieveOnDiskSize(x), x, \
|
||||
installed_repo.retrieveAtom(x),) for x in \
|
||||
unused_packages_test()]
|
||||
|
||||
if do_size_sort:
|
||||
|
||||
Reference in New Issue
Block a user