diff --git a/pamac/common.py b/pamac/common.py
index 2c49619..e0d26de 100644
--- a/pamac/common.py
+++ b/pamac/common.py
@@ -17,3 +17,4 @@ def format_pkg_name(name):
if index != -1:
name = name[0:index]
return name
+
diff --git a/pamac/manager.py b/pamac/manager.py
index eaefa37..ca832fc 100644
--- a/pamac/manager.py
+++ b/pamac/manager.py
@@ -4,6 +4,7 @@
from gi.repository import Gtk
import pyalpm
+from collections import OrderedDict
from time import strftime, localtime
from pamac import config, common, transaction
@@ -35,7 +36,6 @@ installed_column.set_sort_column_id(1)
name_column.set_sort_column_id(0)
transaction.get_handle()
-
tmp_list = []
for repo in transaction.handle.get_syncdbs():
for name, pkgs in repo.grpcache:
@@ -128,7 +128,6 @@ def refresh_packages_list():
def set_packages_list():
global list_dict
- transaction.get_handle()
if list_dict == "search":
search_strings_list = search_entry.get_text().split()
set_list_dict_search(*search_strings_list)
@@ -242,6 +241,7 @@ def handle_error(error):
transaction.to_remove = []
transaction_dict.clear()
transaction_type = None
+ transaction.get_handle()
set_packages_list()
print('error',error)
@@ -253,26 +253,24 @@ def handle_reply(reply):
response = transaction.ErrorDialog.run()
if response:
transaction.ErrorDialog.hide()
- if transaction.do_syncfirst is True:
- transaction.do_syncfirst = False
- transaction.list_first = []
transaction.t_lock = False
transaction.Release()
transaction.ProgressWindow.hide()
transaction.to_add = []
transaction.to_remove = []
transaction_dict.clear()
+ transaction.get_handle()
if (transaction_type == "install") or (transaction_type == "remove"):
transaction_type = None
set_packages_list()
else:
transaction_type = None
- if transaction.get_updates():
- do_sysupgrade()
+ do_syncfirst, updates = transaction.get_updates()
+ if updates:
+ do_sysupgrade(do_syncfirst, updates)
def do_refresh():
"""Sync databases like pacman -Sy"""
- transaction.get_handle()
if transaction.t_lock is False:
transaction.t_lock = True
transaction.progress_label.set_text('Refreshing...')
@@ -282,112 +280,183 @@ def do_refresh():
Gtk.main_iteration()
transaction.Refresh(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
-def do_sysupgrade():
+def do_sysupgrade(do_syncfirst, updates_list):
global transaction_type
"""Upgrade a system like pacman -Su"""
if transaction.t_lock is False:
transaction_type = "update"
- if transaction.do_syncfirst is True:
+ do_syncfirst, updates = transaction.get_updates()
+ if updates:
+ transaction.to_add = []
+ transaction.to_remove = []
+ check_conflicts(updates)
+ if do_syncfirst is True:
+ for pkg in updates:
+ transaction.to_add.append(pkg.name)
if transaction.init_transaction(recurse = True):
- for pkg in transaction.list_first:
- transaction.Add(pkg.name)
- transaction.get_to_remove()
- transaction.get_to_add()
- transaction.check_conflicts()
- transaction.Release()
- set_transaction_sum()
- ConfDialog.show_all()
- else:
- if transaction.init_transaction():
- error = transaction.Sysupgrade()
+ for pkgname in transaction.to_add:
+ transaction.Add(pkgname)
+ for pkgname in transaction.to_remove:
+ transaction.Remove(pkgname)
+ error = transaction.Prepare()
if error:
handle_error(error)
else:
transaction.get_to_remove()
transaction.get_to_add()
- transaction.check_conflicts()
- transaction.Release()
- if len(transaction.to_add) + len(transaction.to_update) + len(transaction.to_remove) != 0:
+ set_transaction_sum()
+ ConfDialog.show_all()
+ else:
+ if transaction.init_transaction(noconflicts = True):
+ error = transaction.Sysupgrade()
+ if error:
+ handle_error(error)
+ else:
+ for pkgname in transaction.to_add:
+ transaction.Add(pkgname)
+ for pkgname in transaction.to_remove:
+ transaction.Remove(pkgname)
+ error = transaction.Prepare()
+ if error:
+ handle_error(error)
+ else:
+ transaction.get_to_remove()
+ transaction.get_to_add()
set_transaction_sum()
ConfDialog.show_all()
- else:
- transaction.Release()
- transaction.t_lock = False
-def choose_provides():
- to_check = []
- depends = []
- provides = {}
- already_provided = False
- for pkgname in transaction.to_add:
- for repo in transaction.handle.get_syncdbs():
- pkg = repo.get_pkg(pkgname)
- if pkg:
- to_check.append(pkg)
- break
- for target in to_check:
- for name in target.depends:
- depends.append(name)
- for installed_pkg in transaction.handle.get_localdb().pkgcache:
- if installed_pkg.name in depends:
- depends.remove(installed_pkg.name)
- for repo in transaction.handle.get_syncdbs():
- for pkg in repo.pkgcache:
- if pkg.name in depends:
- depends.remove(pkg.name)
- if depends:
- for repo in transaction.handle.get_syncdbs():
- for pkg in repo.pkgcache:
- for depend in depends:
- for name in pkg.provides:
- if name == depend:
- if not provides.__contains__(depend):
- provides[depend] = []
- if not pkg.name in provides.get(depend):
- provides.get(depend).append(pkg.name)
- if provides:
- for virtualdep, liste in provides.items():
- if ('-module' in virtualdep) or ('linux' in virtualdep):
- pkgs = transaction.handle.get_localdb().search('linux3')
- installed_linux = []
- to_remove_from_add = []
- for i in pkgs:
- if len(i.name) == 7:
- installed_linux.append(i.name)
- for to_install in transaction.to_add:
- if 'linux3' in to_install:
- if len(to_install) == 7:
- if to_install in transaction_dict.keys():
- installed_linux.append(to_install)
+def check_conflicts(pkg_list):
+ #~ global to_add
+ #~ global to_remove
+ #~ global to_provide
+ depends = [pkg_list]
+ warning = ''
+ #transaction.get_handle()
+ pkgs = transaction.handle.get_localdb().search('linux3')
+ installed_linux = []
+ for i in pkgs:
+ if len(i.name) == 7:
+ installed_linux.append(i.name)
+ for to_install in transaction.to_add:
+ if 'linux3' in to_install:
+ if len(to_install) == 7:
+ installed_linux.append(to_install)
+ i = 0
+ while depends[i]:
+ depends.append([])
+ for pkg in depends[i]:
+ for depend in pkg.depends:
+ provide = pyalpm.find_satisfier(transaction.localpkgs.values(), depend)
+ if provide:
+ print(i,'local',provide)
+ if provide.name != common.format_pkg_name(depend):
+ if ('linux' in depend) or ('-module' in depend):
+ for pkg in transaction.syncpkgs.values():
+ if not pkg.name in transaction.localpkgs.keys():
+ for name in pkg.provides:
+ for linux in installed_linux:
+ if linux in pkg.name:
+ if common.format_pkg_name(depend) == common.format_pkg_name(name):
+ depends[i+1].append(pkg)
+ transaction.to_add.append(pkg.name)
+ else:
+ provide = pyalpm.find_satisfier(transaction.syncpkgs.values(), depend)
+ if provide:
+ print(i,'sync',provide)
+ if provide.name != common.format_pkg_name(depend):
+ if ('linux' in depend) or ('-module' in depend):
+ for pkg in transaction.syncpkgs.values():
+ if not pkg.name in transaction.localpkgs.keys():
+ for name in pkg.provides:
+ for linux in installed_linux:
+ if linux in pkg.name:
+ if common.format_pkg_name(depend) == common.format_pkg_name(name):
+ depends[i+1].append(pkg)
+ transaction.to_add.append(pkg.name)
else:
- to_remove_from_add.append(to_install)
- for name in liste:
- if name == to_install:
- if not to_install in transaction_dict.keys():
- to_remove_from_add.append(to_install)
- for to_remove in to_remove_from_add:
- transaction.to_add.remove(to_remove)
- for name in liste:
- for linux in installed_linux:
- if not transaction.handle.get_localdb().get_pkg(name):
- if linux in name:
- transaction.to_add.append(name)
- already_provided = True
- for installed_pkg in transaction.handle.get_localdb().pkgcache:
- for name in installed_pkg.provides:
- if name == virtualdep:
- already_provided = True
- if already_provided:
- pass
+ to_add_to_depends = choose_provides(depend)
+ print(to_add_to_depends)
+ for pkg in to_add_to_depends:
+ depends[i+1].append(pkg)
+ transaction.to_add.append(pkg.name)
+ else:
+ depends[i+1].append(provide)
+ for replace in pkg.replaces:
+ provide = pyalpm.find_satisfier(transaction.localpkgs.values(), replace)
+ if provide:
+ if provide.name != pkg.name:
+ if not provide.name in transaction.to_remove:
+ transaction.to_remove.append(provide.name)
+ if warning:
+ warning = warning+'\n'
+ warning = warning+provide.name+' will be replaced by '+pkg.name
+ for conflict in pkg.conflicts:
+ provide = pyalpm.find_satisfier(transaction.localpkgs.values(), conflict)
+ if provide:
+ if provide.name != pkg.name:
+ if not provide.name in transaction.to_remove:
+ transaction.to_remove.append(provide.name)
+ if warning:
+ warning = warning+'\n'
+ warning = warning+pkg.name+' conflicts with '+provide.name
+ provide = pyalpm.find_satisfier(depends[0], conflict)
+ if provide:
+ if not common.format_pkg_name(conflict) in transaction.to_remove:
+ if pkg.name in transaction.to_add and common.format_pkg_name(conflict) in transaction.to_add:
+ transaction.to_add.remove(common.format_pkg_name(conflict))
+ transaction.to_add.remove(pkg.name)
+ if warning:
+ warning = warning+'\n'
+ warning = warning+pkg.name+' conflicts with '+common.format_pkg_name(conflict)+'\nNone of them will be installed'
+ i += 1
+ for pkg in transaction.localpkgs.values():
+ for conflict in pkg.conflicts:
+ provide = pyalpm.find_satisfier(depends[0], conflict)
+ if provide:
+ if provide.name != pkg.name:
+ if not provide.name in transaction.to_remove:
+ transaction.to_remove.append(pkg.name)
+ if warning:
+ warning = warning+'\n'
+ warning = warning+provide.name+' conflicts with '+pkg.name
+ for pkg in transaction.syncpkgs.values():
+ for replace in pkg.replaces:
+ provide = pyalpm.find_satisfier(transaction.localpkgs.values(), replace)
+ if provide:
+ if provide.name != pkg.name:
+ if not provide.name in transaction.localpkgs.keys():
+ if not provide.name in transaction.to_remove:
+ transaction.to_remove.append(provide.name)
+ if warning:
+ warning = warning+'\n'
+ warning = warning+provide.name+' will be replaced by '+pkg.name
+ if not pkg.name in transaction.to_add:
+ transaction.to_add.append(pkg.name)
+ print(transaction.to_add,transaction.to_remove)
+ if warning:
+ transaction.WarningDialog.format_secondary_text(warning)
+ response = transaction.WarningDialog.run()
+ if response:
+ transaction.WarningDialog.hide()
+
+def choose_provides(name):
+ provides = OrderedDict()
+ already_add = []
+ for pkg in transaction.syncpkgs.values():
+ for provide in pkg.provides:
+ if common.format_pkg_name(name) == common.format_pkg_name(provide):
+ if not pkg.name in provides.keys():
+ provides[pkg.name] = pkg
+ if provides:
+ choose_label.set_markup('{} is provided by {} packages.\nPlease choose the one(s) you want to install:'.format(name,str(len(provides.keys()))))
+ choose_list.clear()
+ for name in provides.keys():
+ if transaction.handle.get_localdb().get_pkg(name):
+ choose_list.append([True, name])
else:
- choose_label.set_markup('{} is provided by {} packages.\nPlease choose the one(s) you want to install:'.format(virtualdep,str(len(liste))))
- choose_list.clear()
- for name in liste:
- if transaction.handle.get_localdb().get_pkg(name):
- choose_list.append([True, name])
- else:
- choose_list.append([False, name])
- ChooseDialog.run()
+ choose_list.append([False, name])
+ ChooseDialog.run()
+ return [provides[pkgname] for pkgname in transaction.to_provide]
class Handler:
def on_MainWindow_delete_event(self, *arg):
@@ -427,19 +496,12 @@ class Handler:
set_transaction_sum()
ConfDialog.show_all()
if transaction_type is "install":
- if transaction.init_transaction(noconflicts = True):
- for pkgname in transaction_dict.keys():
- transaction.Add(pkgname)
- error = transaction.Prepare()
- if error:
- handle_error(error)
- else:
- transaction.get_to_remove()
- transaction.get_to_add()
- transaction.Release()
- choose_provides()
- transaction.check_conflicts()
- if set(transaction_dict.keys()).intersection(transaction.to_add):
+ transaction.to_add = []
+ for pkgname in transaction_dict.keys():
+ transaction.to_add.append(pkgname)
+ transaction.to_remove = []
+ check_conflicts(transaction_dict.values())
+ if transaction.to_add:
if transaction.init_transaction(noconflicts = True):
for pkgname in transaction.to_add:
transaction.Add(pkgname)
@@ -451,17 +513,13 @@ class Handler:
else:
transaction.get_to_remove()
transaction.get_to_add()
- transaction.Release()
- if len(transaction.to_add) + len(transaction.to_remove) != 0:
set_transaction_sum()
ConfDialog.show_all()
- else:
- transaction.WarningDialog.format_secondary_text('Nothing to do due to packages conflicts')
- response = transaction.WarningDialog.run()
- if response:
- transaction.WarningDialog.hide()
- transaction.t_lock = False
else:
+ transaction.WarningDialog.format_secondary_text('Nothing to do')
+ response = transaction.WarningDialog.run()
+ if response:
+ transaction.WarningDialog.hide()
transaction.t_lock = False
def on_EraseButton_clicked(self, *arg):
@@ -473,7 +531,7 @@ class Handler:
refresh_packages_list()
def on_RefreshButton_clicked(self, *arg):
- transaction.do_refresh()
+ do_refresh()
set_packages_list()
def on_TransCancelButton_clicked(self, *arg):
@@ -490,29 +548,10 @@ class Handler:
transaction.progress_label.set_text('Preparing...')
transaction.action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
transaction.progress_bar.set_text('')
+ transaction.ProgressWindow.show_all()
while Gtk.events_pending():
Gtk.main_iteration()
- if transaction_type == "remove":
- transaction.ProgressWindow.show_all()
- while Gtk.events_pending():
- Gtk.main_iteration()
- transaction.Commit(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
- if (transaction_type == "install") or (transaction_type == "update"):
- if transaction.init_transaction(noconflicts = True):#, nodeps = True):
- for pkgname in transaction.to_update:
- transaction.Add(pkgname)
- for pkgname in transaction.to_add:
- transaction.Add(pkgname)
- for pkgname in transaction.to_remove:
- transaction.Remove(pkgname)
- error = transaction.Prepare()
- if error:
- handle_error(error)
- else:
- transaction.ProgressWindow.show_all()
- while Gtk.events_pending():
- Gtk.main_iteration()
- transaction.Commit(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
+ transaction.Commit(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
def on_search_button_clicked(self, widget):
global list_dict
@@ -599,14 +638,15 @@ class Handler:
def on_ChooseButton_clicked(self, *arg):
ChooseDialog.hide()
line = 0
+ transaction.to_provide = []
while line < len(choose_list):
if choose_list[line][0] is True:
- if not choose_list[line][1] in transaction.to_add:
- if not transaction.handle.get_localdb().get_pkg(choose_list[line][1]):
- transaction.to_add.append(choose_list[line][1])
+ if not choose_list[line][1] in transaction.to_provide:
+ if not choose_list[line][1] in transaction.localpkgs.keys():
+ transaction.to_provide.append(choose_list[line][1])
if choose_list[line][0] is False:
- if choose_list[line][1] in transaction.to_add:
- transaction.to_add.remove(choose_list[line][1])
+ if choose_list[line][1] in transaction.to_provide:
+ transaction.to_provide.remove(choose_list[line][1])
line += 1
def main():
diff --git a/pamac/pamac-daemon.py b/pamac/pamac-daemon.py
index 42365b5..b54291f 100644
--- a/pamac/pamac-daemon.py
+++ b/pamac/pamac-daemon.py
@@ -198,6 +198,7 @@ class PamacDBusService(dbus.service.Object):
error = ''
try:
t.sysupgrade(downgrade=False)
+ print('to_upgrade:',t.to_add)
except pyalpm.error:
error = traceback.format_exc()
finally:
diff --git a/pamac/transaction.py b/pamac/transaction.py
index 892a437..3e58ead 100644
--- a/pamac/transaction.py
+++ b/pamac/transaction.py
@@ -4,6 +4,7 @@
from gi.repository import Gtk
import pyalpm
+from collections import OrderedDict
import dbus
from dbus.mainloop.glib import DBusGMainLoop
@@ -22,16 +23,29 @@ action_icon = interface.get_object('action_icon')
ProgressCancelButton = interface.get_object('ProgressCancelButton')
t_lock = False
-do_syncfirst = False
-list_first = []
to_remove = []
to_add = []
+to_provide = []
to_update = []
handle = None
+syncpkgs = OrderedDict()
+localpkgs = OrderedDict()
def get_handle():
global handle
+ global syncpkgs
+ global localpkgs
+ syncpkgs = OrderedDict()
+ localpkgs = OrderedDict()
handle = config.pacman_conf.initialize_alpm()
+ for repo in handle.get_syncdbs():
+ for pkg in repo.pkgcache:
+ if not pkg.name in syncpkgs.keys():
+ syncpkgs[pkg.name] = pkg
+ for pkg in handle.get_localdb().pkgcache:
+ if not pkg.name in localpkgs.keys():
+ localpkgs[pkg.name] = pkg
+ print('get handle')
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
@@ -88,69 +102,6 @@ def init_transaction(**options):
ErrorDialog.hide()
return False
-def check_conflicts():
- global to_add
- global to_remove
- to_check = []
- installed_pkg_name = []
- syncdbs_pkg_name = []
- warning = ''
- for pkgname in to_add:
- for repo in handle.get_syncdbs():
- pkg = repo.get_pkg(pkgname)
- if pkg:
- to_check.append(pkg)
- break
- for installed_pkg in handle.get_localdb().pkgcache:
- installed_pkg_name.append(installed_pkg.name)
- for target in to_check:
- for name in target.replaces:
- if name in installed_pkg_name:
- if not name in to_remove:
- to_remove.append(name)
- if warning:
- warning = warning+'\n'
- warning = warning+name+' will be replaced by '+target.name
- for name in target.conflicts:
- #if common.format_pkg_name(name) in to_add:
- if name in to_add:
- #to_add.remove(common.format_pkg_name(name))
- to_add.remove(name)
- to_add.remove(target.name)
- if warning:
- warning = warning+'\n'
- warning = warning+name+' conflicts with '+target.name+'\nNone of them will be installed'
- if name in installed_pkg_name:
- if not name in to_remove:
- to_remove.append(name)
- if warning:
- warning = warning+'\n'
- warning = warning+name+' conflicts with '+target.name
- for installed_pkg in handle.get_localdb().pkgcache:
- for name in installed_pkg.conflicts:
- if name == target.name:
- if not name in to_remove:
- to_remove.append(installed_pkg.name)
- if warning:
- warning = warning+'\n'
- warning = warning+installed_pkg.name+' conflicts with '+target.name
- for repo in handle.get_syncdbs():
- for pkg in repo.pkgcache:
- for name in pkg.replaces:
- if name in installed_pkg_name:
- if not name in to_remove:
- to_remove.append(name)
- if warning:
- warning = warning+'\n'
- warning = warning+name+' will be replaced by '+pkg.name
- if not pkg.name in to_add:
- to_add.append(pkg.name)
- if warning:
- WarningDialog.format_secondary_text(warning)
- response = WarningDialog.run()
- if response:
- WarningDialog.hide()
-
def get_to_remove():
global to_remove
to_remove = To_Remove()
@@ -161,30 +112,31 @@ def get_to_add():
def get_updates():
"""Return a list of package objects in local db which can be updated"""
- global do_syncfirst
- global list_first
- get_handle()
+ do_syncfirst = False
+ list_first = []
+ #get_handle()
if config.syncfirst:
for name in config.syncfirst:
pkg = handle.get_localdb().get_pkg(name)
if pkg:
candidate = pyalpm.sync_newversion(pkg, handle.get_syncdbs())
if candidate:
- list_first.append(candidate)
+ for repo in handle.get_syncdbs():
+ pkg = repo.get_pkg(candidate.name)
+ if pkg:
+ list_first.append(pkg)
+ break
if list_first:
do_syncfirst = True
- return list_first
+ return do_syncfirst, list_first
result = []
installed_pkglist = handle.get_localdb().pkgcache
for pkg in installed_pkglist:
candidate = pyalpm.sync_newversion(pkg, handle.get_syncdbs())
if candidate:
- result.append(candidate)
- return result
-
-def get_new_version_available(pkgname):
- for repo in handle.get_syncdbs():
- pkg = repo.get_pkg(pkgname)
- if pkg is not None:
- return pkg.version
- break
+ for repo in handle.get_syncdbs():
+ pkg = repo.get_pkg(candidate.name)
+ if pkg:
+ result.append(pkg)
+ break
+ return do_syncfirst, result
diff --git a/test.py b/test.py
index b24dfa0..0e98fb1 100755
--- a/test.py
+++ b/test.py
@@ -4,17 +4,28 @@
import pyalpm
from pamac import config, common
from collections import OrderedDict
-syncpkgs = OrderedDict()
-localpkgs = OrderedDict()
-virtualdeps = {}
+#~ syncpkgs = OrderedDict()
+#~ localpkgs = OrderedDict()
+#~ virtualdeps = {}
-for repo in config.handle.get_syncdbs():
- for pkg in repo.pkgcache:
- if not pkg.name in syncpkgs.keys():
- syncpkgs[pkg.name] = pkg
-for pkg in config.handle.get_localdb().pkgcache:
- if not pkg.name in localpkgs.keys():
- localpkgs[pkg.name] = pkg
+class MyOrderedDict(OrderedDict):
+ def keys(self):
+ return [i for i in self]
+ def values(self):
+ return [self[i] for i in self]
+
+d=MyOrderedDict()
+d['pear']=3
+d['apple']=2
+print(d.items())
+
+#~ for repo in config.handle.get_syncdbs():
+ #~ for pkg in repo.pkgcache:
+ #~ if not pkg.name in syncpkgs.keys():
+ #~ syncpkgs[pkg.name] = pkg
+#~ for pkg in config.handle.get_localdb().pkgcache:
+ #~ if not pkg.name in localpkgs.keys():
+ #~ localpkgs[pkg.name] = pkg
#~ for pkg in syncpkgs.values():
#~ for name in pkg.depends:
#~ if (not name in syncpkgs.keys()) and (not '>' in name) and (not '<' in name) and (not '=' in name):
@@ -23,68 +34,68 @@ for pkg in config.handle.get_localdb().pkgcache:
#~ virtualdeps[name] = []
#~ virtualdeps.get(name).append(pkg.name)
-to_add = ['libreoffice-writer', 'anjuta']
-depends = [[syncpkgs['libreoffice-writer'],syncpkgs['anjuta']]]
-to_provide = []
-to_remove = []
-warning = ''
-i = 0
-while depends[i]:
- depends.append([])
- for pkg in depends[i]:
- for depend in pkg.depends:
- provide = pyalpm.find_satisfier(localpkgs.values(), depend)
- if provide:
- print(i,'local',provide)
- if provide.name != common.format_pkg_name(depend):
- if ('-module' in depend) or ('linux' in depend):
- to_provide.append(depend)
- else:
- provide = pyalpm.find_satisfier(syncpkgs.values(), depend)
- if provide:
- print(i,'sync',provide)
- if provide.name != common.format_pkg_name(depend):
- print(provide.name,common.format_pkg_name(depend))
- to_provide.append(depend)
- else:
- depends[i+1].append(provide)
- for replace in pkg.replaces:
- provide = pyalpm.find_satisfier(localpkgs.values(), replace)
- if provide:
- if not provide.name in to_remove:
- to_remove.append(provide.name)
- if warning:
- warning = warning+'\n'
- warning = warning+provide.name+' will be replaced by '+pkg.name
- for conflict in pkg.conflicts:
- provide = pyalpm.find_satisfier(localpkgs.values(), conflict)
- if provide:
- if not provide.name in to_remove:
- to_remove.append(provide.name)
- if warning:
- warning = warning+'\n'
- warning = warning+pkg.name+' conflicts with '+provide.name
- provide = pyalpm.find_satisfier(depends[0], conflict)
- if provide:
- if not common.format_pkg_name(conflict) in to_remove:
- if pkg.name in to_add and common.format_pkg_name(conflict) in to_add:
- to_add.remove(common.format_pkg_name(conflict))
- to_add.remove(pkg.name)
- if warning:
- warning = warning+'\n'
- warning = warning+pkg.name+' conflicts with '+common.format_pkg_name(conflict)+'\nNone of them will be installed'
- i = i + 1
-for pkg in localpkgs.values():
- for conflict in pkg.conflicts:
- provide = pyalpm.find_satisfier(depends[0], conflict)
- if provide:
- if not provide.name in to_remove:
- to_remove.append(pkg.name)
- if warning:
- warning = warning+'\n'
- warning = warning+provide.name+' conflicts with '+pkg.name
-print('depends:',depends)
-print('to provide:',to_provide)
-print('to add:',to_add)
-print('to remove:',to_remove)
-print(warning)
+#~ to_add = ['libreoffice-writer', 'anjuta']
+#~ depends = [[syncpkgs['libreoffice-writer'],syncpkgs['anjuta']]]
+#~ to_provide = []
+#~ to_remove = []
+#~ warning = ''
+#~ i = 0
+#~ while depends[i]:
+ #~ depends.append([])
+ #~ for pkg in depends[i]:
+ #~ for depend in pkg.depends:
+ #~ provide = pyalpm.find_satisfier(localpkgs.values(), depend)
+ #~ if provide:
+ #~ print(i,'local',provide)
+ #~ if provide.name != common.format_pkg_name(depend):
+ #~ if ('-module' in depend) or ('linux' in depend):
+ #~ to_provide.append(depend)
+ #~ else:
+ #~ provide = pyalpm.find_satisfier(syncpkgs.values(), depend)
+ #~ if provide:
+ #~ print(i,'sync',provide)
+ #~ if provide.name != common.format_pkg_name(depend):
+ #~ print(provide.name,common.format_pkg_name(depend))
+ #~ to_provide.append(depend)
+ #~ else:
+ #~ depends[i+1].append(provide)
+ #~ for replace in pkg.replaces:
+ #~ provide = pyalpm.find_satisfier(localpkgs.values(), replace)
+ #~ if provide:
+ #~ if not provide.name in to_remove:
+ #~ to_remove.append(provide.name)
+ #~ if warning:
+ #~ warning = warning+'\n'
+ #~ warning = warning+provide.name+' will be replaced by '+pkg.name
+ #~ for conflict in pkg.conflicts:
+ #~ provide = pyalpm.find_satisfier(localpkgs.values(), conflict)
+ #~ if provide:
+ #~ if not provide.name in to_remove:
+ #~ to_remove.append(provide.name)
+ #~ if warning:
+ #~ warning = warning+'\n'
+ #~ warning = warning+pkg.name+' conflicts with '+provide.name
+ #~ provide = pyalpm.find_satisfier(depends[0], conflict)
+ #~ if provide:
+ #~ if not common.format_pkg_name(conflict) in to_remove:
+ #~ if pkg.name in to_add and common.format_pkg_name(conflict) in to_add:
+ #~ to_add.remove(common.format_pkg_name(conflict))
+ #~ to_add.remove(pkg.name)
+ #~ if warning:
+ #~ warning = warning+'\n'
+ #~ warning = warning+pkg.name+' conflicts with '+common.format_pkg_name(conflict)+'\nNone of them will be installed'
+ #~ i = i + 1
+#~ for pkg in localpkgs.values():
+ #~ for conflict in pkg.conflicts:
+ #~ provide = pyalpm.find_satisfier(depends[0], conflict)
+ #~ if provide:
+ #~ if not provide.name in to_remove:
+ #~ to_remove.append(pkg.name)
+ #~ if warning:
+ #~ warning = warning+'\n'
+ #~ warning = warning+provide.name+' conflicts with '+pkg.name
+#~ print('depends:',depends)
+#~ print('to provide:',to_provide)
+#~ print('to add:',to_add)
+#~ print('to remove:',to_remove)
+#~ print(warning)