improved conflicts and provides handling
This commit is contained in:
parent
90b04d0319
commit
d08e0aac2f
@ -1,19 +1,46 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<interface>
|
<interface>
|
||||||
<!-- interface-requires gtk+ 3.0 -->
|
<!-- interface-requires gtk+ 3.0 -->
|
||||||
<object class="GtkWindow" id="ChooseDialog">
|
<object class="GtkDialog" id="ChooseDialog">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="border_width">5</property>
|
||||||
<property name="modal">True</property>
|
<property name="modal">True</property>
|
||||||
<property name="window_position">center-on-parent</property>
|
<property name="window_position">center-on-parent</property>
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<property name="skip_taskbar_hint">True</property>
|
<property name="skip_taskbar_hint">True</property>
|
||||||
<property name="urgency_hint">True</property>
|
<property name="urgency_hint">True</property>
|
||||||
<child>
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="box8">
|
<object class="GtkBox" id="dialog-vbox1">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="spacing">5</property>
|
<property name="spacing">2</property>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkButtonBox" id="dialog-action_area1">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="ChooseButton">
|
||||||
|
<property name="label">gtk-ok</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="clicked" handler="on_ChooseButton_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="chooselabel">
|
<object class="GtkLabel" id="chooselabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@ -23,7 +50,7 @@
|
|||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">0</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
@ -31,6 +58,8 @@
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="shadow_type">in</property>
|
<property name="shadow_type">in</property>
|
||||||
|
<property name="min_content_width">300</property>
|
||||||
|
<property name="min_content_height">250</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeView" id="treeview5">
|
<object class="GtkTreeView" id="treeview5">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@ -39,10 +68,9 @@
|
|||||||
<property name="headers_visible">False</property>
|
<property name="headers_visible">False</property>
|
||||||
<property name="headers_clickable">False</property>
|
<property name="headers_clickable">False</property>
|
||||||
<property name="enable_search">False</property>
|
<property name="enable_search">False</property>
|
||||||
|
<property name="search_column">0</property>
|
||||||
<child internal-child="selection">
|
<child internal-child="selection">
|
||||||
<object class="GtkTreeSelection" id="treeview-selection5">
|
<object class="GtkTreeSelection" id="treeview-selection5"/>
|
||||||
<property name="mode">multiple</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
|
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
|
||||||
@ -69,38 +97,14 @@
|
|||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="buttonbox3">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="ChooseButton">
|
|
||||||
<property name="label">gtk-ok</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="clicked" handler="on_ChooseButton_clicked" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<action-widgets>
|
||||||
|
<action-widget response="0">ChooseButton</action-widget>
|
||||||
|
</action-widgets>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkWindow" id="ConfDialog">
|
<object class="GtkWindow" id="ConfDialog">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
@ -133,13 +137,13 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow" id="scrolledwindow4">
|
<object class="GtkScrolledWindow" id="scrolledwindow4">
|
||||||
<property name="width_request">200</property>
|
|
||||||
<property name="height_request">120</property>
|
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="vexpand">True</property>
|
<property name="vexpand">True</property>
|
||||||
<property name="shadow_type">in</property>
|
<property name="shadow_type">in</property>
|
||||||
|
<property name="min_content_width">300</property>
|
||||||
|
<property name="min_content_height">250</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeView" id="treeview4">
|
<object class="GtkTreeView" id="treeview4">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -9,3 +9,11 @@ def format_size(size):
|
|||||||
else:
|
else:
|
||||||
size_string = '%.2f MiB' % (KiB_size / 1024)
|
size_string = '%.2f MiB' % (KiB_size / 1024)
|
||||||
return size_string
|
return size_string
|
||||||
|
|
||||||
|
def format_pkg_name(name):
|
||||||
|
unwanted = ['>','<','=']
|
||||||
|
for i in unwanted:
|
||||||
|
index = name.find(i)
|
||||||
|
if index != -1:
|
||||||
|
name = name[0:index]
|
||||||
|
return name
|
||||||
|
247
pamac/manager.py
247
pamac/manager.py
@ -226,6 +226,61 @@ def set_transaction_sum():
|
|||||||
#bottom_label.set_markup('<b>Total Download size: </b>'+common.format_size(totaldlcb))
|
#bottom_label.set_markup('<b>Total Download size: </b>'+common.format_size(totaldlcb))
|
||||||
top_label.set_markup('<big><b>Transaction Summary</b></big>')
|
top_label.set_markup('<big><b>Transaction Summary</b></big>')
|
||||||
|
|
||||||
|
def handle_error(error):
|
||||||
|
global transaction_type
|
||||||
|
global transaction_dict
|
||||||
|
if not 'DBus.Error.NoReply' in str(error):
|
||||||
|
transaction.ErrorDialog.format_secondary_text('Error:\n'+str(error))
|
||||||
|
response = transaction.ErrorDialog.run()
|
||||||
|
if response:
|
||||||
|
transaction.ErrorDialog.hide()
|
||||||
|
transaction.t_lock = False
|
||||||
|
transaction.Release()
|
||||||
|
transaction.ProgressWindow.hide()
|
||||||
|
transaction.to_add = []
|
||||||
|
transaction.to_remove = []
|
||||||
|
transaction_dict.clear()
|
||||||
|
transaction_type = None
|
||||||
|
set_packages_list()
|
||||||
|
print('error',error)
|
||||||
|
|
||||||
|
def handle_reply(reply):
|
||||||
|
global transaction_type
|
||||||
|
global transaction_dict
|
||||||
|
if str(reply):
|
||||||
|
transaction.ErrorDialog.format_secondary_text('Error:\n'+str(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()
|
||||||
|
if (transaction_type == "install") or (transaction_type == "remove"):
|
||||||
|
transaction_type = None
|
||||||
|
set_packages_list()
|
||||||
|
else:
|
||||||
|
transaction_type = None
|
||||||
|
if transaction.get_updates():
|
||||||
|
do_sysupgrade()
|
||||||
|
|
||||||
|
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...')
|
||||||
|
transaction.action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/refresh-cache.png')
|
||||||
|
transaction.ProgressWindow.show_all()
|
||||||
|
while Gtk.events_pending():
|
||||||
|
Gtk.main_iteration()
|
||||||
|
transaction.Refresh(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
|
||||||
|
|
||||||
def do_sysupgrade():
|
def do_sysupgrade():
|
||||||
global transaction_type
|
global transaction_type
|
||||||
"""Upgrade a system like pacman -Su"""
|
"""Upgrade a system like pacman -Su"""
|
||||||
@ -245,59 +300,18 @@ def do_sysupgrade():
|
|||||||
if transaction.init_transaction():
|
if transaction.init_transaction():
|
||||||
error = transaction.Sysupgrade()
|
error = transaction.Sysupgrade()
|
||||||
if error:
|
if error:
|
||||||
transaction.ErrorDialog.format_secondary_text(error)
|
handle_error(error)
|
||||||
response = transaction.ErrorDialog.run()
|
|
||||||
if response:
|
|
||||||
transaction.ErrorDialog.hide()
|
|
||||||
transaction.Release()
|
|
||||||
transaction.t_lock = False
|
|
||||||
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:
|
else:
|
||||||
|
transaction.get_to_remove()
|
||||||
|
transaction.get_to_add()
|
||||||
|
transaction.check_conflicts()
|
||||||
transaction.Release()
|
transaction.Release()
|
||||||
transaction.t_lock = False
|
if len(transaction.to_add) + len(transaction.to_update) + len(transaction.to_remove) != 0:
|
||||||
|
set_transaction_sum()
|
||||||
def handle_error(error):
|
ConfDialog.show_all()
|
||||||
global transaction_type
|
else:
|
||||||
global transaction_dict
|
transaction.Release()
|
||||||
if not 'DBus.Error.NoReply' in str(error):
|
transaction.t_lock = False
|
||||||
transaction.ErrorDialog.format_secondary_text('Commit Error:\n'+str(error))
|
|
||||||
response = transaction.ErrorDialog.run()
|
|
||||||
if response:
|
|
||||||
transaction.ErrorDialog.hide()
|
|
||||||
transaction.t_lock = False
|
|
||||||
transaction.Release()
|
|
||||||
transaction.ProgressWindow.hide()
|
|
||||||
transaction.to_add = []
|
|
||||||
transaction.to_remove = []
|
|
||||||
transaction_dict.clear()
|
|
||||||
transaction_type = None
|
|
||||||
set_packages_list()
|
|
||||||
|
|
||||||
def handle_reply(reply):
|
|
||||||
global transaction_type
|
|
||||||
global transaction_dict
|
|
||||||
if str(reply):
|
|
||||||
transaction.ErrorDialog.format_secondary_text('Commit Error:\n'+str(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_type = None
|
|
||||||
set_packages_list()
|
|
||||||
|
|
||||||
def choose_provides():
|
def choose_provides():
|
||||||
to_check = []
|
to_check = []
|
||||||
@ -311,7 +325,7 @@ def choose_provides():
|
|||||||
break
|
break
|
||||||
for target in to_check:
|
for target in to_check:
|
||||||
for name in target.depends:
|
for name in target.depends:
|
||||||
depends.append(name)
|
depends.append(common.format_pkg_name(name))
|
||||||
for installed_pkg in transaction.handle.get_localdb().pkgcache:
|
for installed_pkg in transaction.handle.get_localdb().pkgcache:
|
||||||
if installed_pkg.name in depends:
|
if installed_pkg.name in depends:
|
||||||
depends.remove(installed_pkg.name)
|
depends.remove(installed_pkg.name)
|
||||||
@ -320,20 +334,55 @@ def choose_provides():
|
|||||||
if pkg.name in depends:
|
if pkg.name in depends:
|
||||||
depends.remove(pkg.name)
|
depends.remove(pkg.name)
|
||||||
if depends:
|
if depends:
|
||||||
|
for installed_pkg in transaction.handle.get_localdb().pkgcache:
|
||||||
|
for name in pkg.provides:
|
||||||
|
if common.format_pkg_name(name) in depends:
|
||||||
|
depends.remove(common.format_pkg_name(name))
|
||||||
for repo in transaction.handle.get_syncdbs():
|
for repo in transaction.handle.get_syncdbs():
|
||||||
for pkg in repo.pkgcache:
|
for pkg in repo.pkgcache:
|
||||||
for depend in depends:
|
for depend in depends:
|
||||||
for name in pkg.provides:
|
for name in pkg.provides:
|
||||||
if name == depend:
|
if common.format_pkg_name(name) == depend:
|
||||||
if not provides.__contains__(depend):
|
if not provides.__contains__(depend):
|
||||||
provides[depend] = []
|
provides[depend] = []
|
||||||
provides.get(depend).append(pkg.name)
|
if not pkg.name in provides.get(depend):
|
||||||
if provides:
|
provides.get(depend).append(pkg.name)
|
||||||
|
if provides:
|
||||||
for virtualdep, liste in provides.items():
|
for virtualdep, liste in provides.items():
|
||||||
choose_list.clear()
|
if ('-module' in virtualdep) or ('linux' in virtualdep):
|
||||||
for name in liste:
|
print('choose module')
|
||||||
choose_list.append([False, name])
|
pkgs = transaction.handle.get_localdb().search('linux3')
|
||||||
ChooseDialog.show_all()
|
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)
|
||||||
|
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)
|
||||||
|
else:
|
||||||
|
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()
|
||||||
|
|
||||||
class Handler:
|
class Handler:
|
||||||
def on_MainWindow_delete_event(self, *arg):
|
def on_MainWindow_delete_event(self, *arg):
|
||||||
@ -366,34 +415,38 @@ class Handler:
|
|||||||
transaction.Remove(pkgname)
|
transaction.Remove(pkgname)
|
||||||
error = transaction.Prepare()
|
error = transaction.Prepare()
|
||||||
if error:
|
if error:
|
||||||
transaction.ErrorDialog.format_secondary_text(error)
|
handle_error(error)
|
||||||
response = transaction.ErrorDialog.run()
|
else:
|
||||||
if response:
|
transaction.get_to_remove()
|
||||||
transaction.ErrorDialog.hide()
|
transaction.get_to_add()
|
||||||
transaction.Release()
|
set_transaction_sum()
|
||||||
transaction.t_lock = False
|
ConfDialog.show_all()
|
||||||
transaction.get_to_remove()
|
|
||||||
transaction.get_to_add()
|
|
||||||
set_transaction_sum()
|
|
||||||
ConfDialog.show_all()
|
|
||||||
if transaction_type is "install":
|
if transaction_type is "install":
|
||||||
if transaction.init_transaction(noconflicts = True):
|
if transaction.init_transaction(noconflicts = True):
|
||||||
for pkgname in transaction_dict.keys():
|
for pkgname in transaction_dict.keys():
|
||||||
transaction.Add(pkgname)
|
transaction.Add(pkgname)
|
||||||
error = transaction.Prepare()
|
error = transaction.Prepare()
|
||||||
if error:
|
if error:
|
||||||
transaction.ErrorDialog.format_secondary_text(error)
|
handle_error(error)
|
||||||
response = transaction.ErrorDialog.run()
|
else:
|
||||||
if response:
|
transaction.get_to_remove()
|
||||||
transaction.ErrorDialog.hide()
|
transaction.get_to_add()
|
||||||
transaction.Release()
|
transaction.Release()
|
||||||
transaction.t_lock = False
|
choose_provides()
|
||||||
transaction.get_to_remove()
|
transaction.check_conflicts()
|
||||||
transaction.get_to_add()
|
if transaction.init_transaction(noconflicts = True):
|
||||||
#choose_provides()
|
for pkgname in transaction.to_add:
|
||||||
transaction.check_conflicts()
|
transaction.Add(pkgname)
|
||||||
transaction.Release()
|
for pkgname in transaction.to_remove:
|
||||||
if len(transaction.to_add) + len(transaction.to_update) + len(transaction.to_remove) != 0:
|
transaction.Remove(pkgname)
|
||||||
|
error = transaction.Prepare()
|
||||||
|
if error:
|
||||||
|
handle_error(error)
|
||||||
|
else:
|
||||||
|
transaction.get_to_remove()
|
||||||
|
transaction.get_to_add()
|
||||||
|
transaction.Release()
|
||||||
|
if len(transaction.to_add) + len(transaction.to_remove) != 0:
|
||||||
set_transaction_sum()
|
set_transaction_sum()
|
||||||
ConfDialog.show_all()
|
ConfDialog.show_all()
|
||||||
else:
|
else:
|
||||||
@ -412,7 +465,7 @@ class Handler:
|
|||||||
|
|
||||||
def on_RefreshButton_clicked(self, *arg):
|
def on_RefreshButton_clicked(self, *arg):
|
||||||
transaction.do_refresh()
|
transaction.do_refresh()
|
||||||
refresh_packages_list()
|
set_packages_list()
|
||||||
|
|
||||||
def on_TransCancelButton_clicked(self, *arg):
|
def on_TransCancelButton_clicked(self, *arg):
|
||||||
global transaction_type
|
global transaction_type
|
||||||
@ -427,6 +480,7 @@ class Handler:
|
|||||||
ConfDialog.hide()
|
ConfDialog.hide()
|
||||||
transaction.progress_label.set_text('Preparing...')
|
transaction.progress_label.set_text('Preparing...')
|
||||||
transaction.action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
|
transaction.action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
|
||||||
|
transaction.progress_bar.set_text('')
|
||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
Gtk.main_iteration()
|
Gtk.main_iteration()
|
||||||
if transaction_type == "remove":
|
if transaction_type == "remove":
|
||||||
@ -434,7 +488,7 @@ class Handler:
|
|||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
Gtk.main_iteration()
|
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)
|
||||||
if transaction_type == ("install" or "update"):
|
if (transaction_type == "install") or (transaction_type == "update"):
|
||||||
if transaction.init_transaction(noconflicts = True, nodeps = True):
|
if transaction.init_transaction(noconflicts = True, nodeps = True):
|
||||||
for pkgname in transaction.to_update:
|
for pkgname in transaction.to_update:
|
||||||
transaction.Add(pkgname)
|
transaction.Add(pkgname)
|
||||||
@ -444,12 +498,7 @@ class Handler:
|
|||||||
transaction.Remove(pkgname)
|
transaction.Remove(pkgname)
|
||||||
error = transaction.Prepare()
|
error = transaction.Prepare()
|
||||||
if error:
|
if error:
|
||||||
transaction.ErrorDialog.format_secondary_text(error)
|
handle_error(error)
|
||||||
response = transaction.ErrorDialog.run()
|
|
||||||
if response:
|
|
||||||
transaction.ErrorDialog.hide()
|
|
||||||
transaction.Release()
|
|
||||||
transaction.t_lock = False
|
|
||||||
else:
|
else:
|
||||||
transaction.ProgressWindow.show_all()
|
transaction.ProgressWindow.show_all()
|
||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
@ -543,23 +592,18 @@ class Handler:
|
|||||||
line = 0
|
line = 0
|
||||||
while line < len(choose_list):
|
while line < len(choose_list):
|
||||||
if choose_list[line][0] is True:
|
if choose_list[line][0] is True:
|
||||||
transaction.to_add.append(snap_list[line][1])
|
if not choose_list[line][1] in transaction.to_add:
|
||||||
elif choose_list[line][0] in transaction.to_add:
|
if not transaction.handle.get_localdb().get_pkg(choose_list[line][1]):
|
||||||
transaction.to_add.remove(snap_list[line][1])
|
transaction.to_add.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])
|
||||||
line += 1
|
line += 1
|
||||||
|
print(transaction.to_add)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
interface.connect_signals(Handler())
|
interface.connect_signals(Handler())
|
||||||
transaction.do_refresh()
|
do_refresh()
|
||||||
do_sysupgrade()
|
|
||||||
#~ if transaction.get_updates():
|
|
||||||
#~ transaction.QuestionDialog.format_secondary_text("Some updates are available.\nIt is higly recommended to update your system before installing/removing software.\nDo you want to update your system now ?")
|
|
||||||
#~ response = transaction.QuestionDialog.run()
|
|
||||||
#~ if response == Gtk.ResponseType.YES:
|
|
||||||
#~ transaction.QuestionDialog.hide()
|
|
||||||
#~ do_sysupgrade()
|
|
||||||
#~ else:
|
|
||||||
#~ transaction.QuestionDialog.hide()
|
|
||||||
MainWindow.show_all()
|
MainWindow.show_all()
|
||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
Gtk.main_iteration()
|
Gtk.main_iteration()
|
||||||
@ -567,4 +611,3 @@ def main():
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
Gtk.main()
|
Gtk.main()
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import pyalpm
|
|||||||
import dbus
|
import dbus
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
from dbus.mainloop.glib import DBusGMainLoop
|
||||||
|
|
||||||
from pamac import config
|
from pamac import config, common
|
||||||
|
|
||||||
interface = Gtk.Builder()
|
interface = Gtk.Builder()
|
||||||
interface.add_from_file('/usr/share/pamac/gui/dialogs.glade')
|
interface.add_from_file('/usr/share/pamac/gui/dialogs.glade')
|
||||||
@ -105,29 +105,29 @@ def check_conflicts():
|
|||||||
installed_pkg_name.append(installed_pkg.name)
|
installed_pkg_name.append(installed_pkg.name)
|
||||||
for target in to_check:
|
for target in to_check:
|
||||||
for name in target.replaces:
|
for name in target.replaces:
|
||||||
if name in installed_pkg_name:
|
if common.format_pkg_name(name) in installed_pkg_name:
|
||||||
if not name in to_remove:
|
if not common.format_pkg_name(name) in to_remove:
|
||||||
to_remove.append(name)
|
to_remove.append(common.format_pkg_name(name))
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning = warning+'\n'
|
||||||
warning = warning+name+' will be replaced by '+target.name
|
warning = warning+name+' will be replaced by '+target.name
|
||||||
for name in target.conflicts:
|
for name in target.conflicts:
|
||||||
if name in to_add:
|
if common.format_pkg_name(name) in to_add:
|
||||||
to_add.remove(name)
|
to_add.remove(common.format_pkg_name(name))
|
||||||
to_add.remove(target.name)
|
to_add.remove(target.name)
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning = warning+'\n'
|
||||||
warning = warning+name+' conflicts with '+target.name+'\nNone of them will be installed'
|
warning = warning+name+' conflicts with '+target.name+'\nNone of them will be installed'
|
||||||
if name in installed_pkg_name:
|
if common.format_pkg_name(name) in installed_pkg_name:
|
||||||
if not name in to_remove:
|
if not common.format_pkg_name(name) in to_remove:
|
||||||
to_remove.append(name)
|
to_remove.append(common.format_pkg_name(name))
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning = warning+'\n'
|
||||||
warning = warning+name+' conflicts with '+target.name
|
warning = warning+name+' conflicts with '+target.name
|
||||||
for installed_pkg in handle.get_localdb().pkgcache:
|
for installed_pkg in handle.get_localdb().pkgcache:
|
||||||
for name in installed_pkg.conflicts:
|
for name in installed_pkg.conflicts:
|
||||||
if name == target.name:
|
if common.format_pkg_name(name) == target.name:
|
||||||
if not name in to_remove:
|
if not common.format_pkg_name(name) in to_remove:
|
||||||
to_remove.append(installed_pkg.name)
|
to_remove.append(installed_pkg.name)
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning = warning+'\n'
|
||||||
@ -135,12 +135,12 @@ def check_conflicts():
|
|||||||
for repo in handle.get_syncdbs():
|
for repo in handle.get_syncdbs():
|
||||||
for pkg in repo.pkgcache:
|
for pkg in repo.pkgcache:
|
||||||
for name in pkg.replaces:
|
for name in pkg.replaces:
|
||||||
if name in installed_pkg_name:
|
if common.format_pkg_name(name) in installed_pkg_name:
|
||||||
if not name in to_remove:
|
if not common.format_pkg_name(name) in to_remove:
|
||||||
to_remove.append(name)
|
to_remove.append(common.format_pkg_name(name))
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning = warning+'\n'
|
||||||
warning = warning+name+' will be replaced by '+pkg.name
|
warning = warning+common.format_pkg_name(name)+' will be replaced by '+pkg.name
|
||||||
if not pkg.name in to_add:
|
if not pkg.name in to_add:
|
||||||
to_add.append(pkg.name)
|
to_add.append(pkg.name)
|
||||||
if warning:
|
if warning:
|
||||||
|
1
test.py
1
test.py
@ -13,6 +13,7 @@ for repo in config.handle.get_syncdbs():
|
|||||||
for pkg in syncpkgs.values():
|
for pkg in syncpkgs.values():
|
||||||
for name in pkg.depends:
|
for name in pkg.depends:
|
||||||
if (not name in syncpkgs.keys()) and (not '>' in name) and (not '<' in name) and (not '=' in name):
|
if (not name in syncpkgs.keys()) and (not '>' in name) and (not '<' in name) and (not '=' in name):
|
||||||
|
if 'module' in name:
|
||||||
if not virtualdeps.__contains__(name):
|
if not virtualdeps.__contains__(name):
|
||||||
virtualdeps[name] = []
|
virtualdeps[name] = []
|
||||||
virtualdeps.get(name).append(pkg.name)
|
virtualdeps.get(name).append(pkg.name)
|
||||||
|
Loading…
Reference in New Issue
Block a user