many fixes
This commit is contained in:
parent
73e1e8d6c0
commit
8a5abb4b47
@ -5,6 +5,6 @@ STATUS=$2 # The new state of the interface
|
|||||||
|
|
||||||
case "$STATUS" in
|
case "$STATUS" in
|
||||||
'up') # $INTERFACE is up
|
'up') # $INTERFACE is up
|
||||||
/usr/bin/pamac-check-updates
|
/usr/bin/pamac-refresh
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
#! /usr/bin/python
|
|
||||||
# -*-coding:utf-8-*-
|
|
||||||
|
|
||||||
from pamac import common, transaction
|
|
||||||
|
|
||||||
if not common.pid_file_exists():
|
|
||||||
print('checking updates')
|
|
||||||
common.write_pid_file()
|
|
||||||
try:
|
|
||||||
transaction.Refresh()
|
|
||||||
transaction.StopDaemon()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
finally:
|
|
||||||
common.rm_pid_file()
|
|
||||||
print('check updates done')
|
|
@ -180,11 +180,11 @@ class PamacDBusService(dbus.service.Object):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def CheckUpdates(self):
|
def CheckUpdates(self):
|
||||||
updates = False
|
updates = 0
|
||||||
for pkg in config.handle.get_localdb().pkgcache:
|
for pkg in config.handle.get_localdb().pkgcache:
|
||||||
candidate = pyalpm.sync_newversion(pkg, config.handle.get_syncdbs())
|
candidate = pyalpm.sync_newversion(pkg, config.handle.get_syncdbs())
|
||||||
if candidate:
|
if candidate:
|
||||||
updates = True
|
updates += 1
|
||||||
self.EmitAvailableUpdates(updates)
|
self.EmitAvailableUpdates(updates)
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 's', async_callbacks=('success', 'nosuccess'))
|
@dbus.service.method('org.manjaro.pamac', '', 's', async_callbacks=('success', 'nosuccess'))
|
||||||
@ -205,6 +205,8 @@ class PamacDBusService(dbus.service.Object):
|
|||||||
self.CheckUpdates()
|
self.CheckUpdates()
|
||||||
if self.error:
|
if self.error:
|
||||||
self.EmitTransactionError(self.error)
|
self.EmitTransactionError(self.error)
|
||||||
|
else:
|
||||||
|
self.EmitTransactionDone('')
|
||||||
self.task = Process(target=refresh)
|
self.task = Process(target=refresh)
|
||||||
self.task.start()
|
self.task.start()
|
||||||
success('')
|
success('')
|
||||||
|
74
pamac-install
Executable file
74
pamac-install
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#! /usr/bin/python
|
||||||
|
# -*-coding:utf-8 -*-
|
||||||
|
|
||||||
|
from gi.repository import GObject
|
||||||
|
from sys import argv
|
||||||
|
import dbus
|
||||||
|
from pamac import common, transaction, main
|
||||||
|
|
||||||
|
def error(error):
|
||||||
|
transaction.StopDaemon()
|
||||||
|
common.rm_pid_file()
|
||||||
|
print('exiting')
|
||||||
|
loop.quit()
|
||||||
|
|
||||||
|
def reply(reply):
|
||||||
|
transaction.StopDaemon()
|
||||||
|
common.rm_pid_file()
|
||||||
|
print('exiting')
|
||||||
|
loop.quit()
|
||||||
|
|
||||||
|
def install(pkgnames):
|
||||||
|
transaction.to_add = []
|
||||||
|
transaction.to_remove = []
|
||||||
|
pkg_to_install = []
|
||||||
|
for pkgname in pkgnames:
|
||||||
|
if not pkgname in transaction.localpkgs.keys():
|
||||||
|
transaction.to_add.append(pkgname)
|
||||||
|
pkg_to_install.append(transaction.syncpkgs[pkgname])
|
||||||
|
main.check_conflicts(pkg_to_install)
|
||||||
|
if transaction.to_add:
|
||||||
|
if transaction.init_transaction(noconflicts = True, needed =True):
|
||||||
|
for pkgname in transaction.to_add:
|
||||||
|
transaction.Add(pkgname)
|
||||||
|
for pkgname in transaction.to_remove:
|
||||||
|
transaction.Remove(pkgname)
|
||||||
|
_error = transaction.Prepare()
|
||||||
|
if _error:
|
||||||
|
main.handle_error(_error)
|
||||||
|
error(_error)
|
||||||
|
else:
|
||||||
|
main.finalize()
|
||||||
|
loop.run()
|
||||||
|
else:
|
||||||
|
transaction.WarningDialog.format_secondary_text('Nothing to do')
|
||||||
|
response = transaction.WarningDialog.run()
|
||||||
|
if response:
|
||||||
|
transaction.WarningDialog.hide()
|
||||||
|
reply('')
|
||||||
|
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
bus.add_signal_receiver(reply, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionDone")
|
||||||
|
bus.add_signal_receiver(error, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionError")
|
||||||
|
|
||||||
|
loop = GObject.MainLoop()
|
||||||
|
|
||||||
|
transaction.update_db()
|
||||||
|
do_syncfirst, updates = transaction.get_updates()
|
||||||
|
|
||||||
|
if common.pid_file_exists():
|
||||||
|
transaction.ErrorDialog.format_secondary_text('Another instance of Pamac is running')
|
||||||
|
response = transaction.ErrorDialog.run()
|
||||||
|
if response:
|
||||||
|
transaction.ErrorDialog.hide()
|
||||||
|
transaction.StopDaemon()
|
||||||
|
elif updates:
|
||||||
|
transaction.ErrorDialog.format_secondary_text('Some updates are available.\nPlease update your system first')
|
||||||
|
response = transaction.ErrorDialog.run()
|
||||||
|
if response:
|
||||||
|
transaction.ErrorDialog.hide()
|
||||||
|
transaction.StopDaemon()
|
||||||
|
else:
|
||||||
|
common.write_pid_file()
|
||||||
|
pkgname_to_install = argv[1:]
|
||||||
|
install(pkgname_to_install)
|
30
pamac-refresh
Executable file
30
pamac-refresh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#! /usr/bin/python
|
||||||
|
# -*-coding:utf-8-*-
|
||||||
|
|
||||||
|
from gi.repository import GObject
|
||||||
|
from pamac import common, transaction
|
||||||
|
import dbus
|
||||||
|
|
||||||
|
def reply(reply):
|
||||||
|
transaction.StopDaemon()
|
||||||
|
common.rm_pid_file()
|
||||||
|
print('check updates done')
|
||||||
|
loop.quit()
|
||||||
|
|
||||||
|
def error(error):
|
||||||
|
transaction.StopDaemon()
|
||||||
|
common.rm_pid_file()
|
||||||
|
print('check updates failed')
|
||||||
|
loop.quit()
|
||||||
|
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
bus.add_signal_receiver(reply, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionDone")
|
||||||
|
bus.add_signal_receiver(error, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionError")
|
||||||
|
|
||||||
|
loop = GObject.MainLoop()
|
||||||
|
|
||||||
|
if not common.pid_file_exists():
|
||||||
|
print('checking updates')
|
||||||
|
common.write_pid_file()
|
||||||
|
transaction.Refresh()
|
||||||
|
loop.run()
|
30
pamac-tray
30
pamac-tray
@ -3,13 +3,20 @@
|
|||||||
|
|
||||||
from gi.repository import Gtk, GObject
|
from gi.repository import Gtk, GObject
|
||||||
from subprocess import call
|
from subprocess import call
|
||||||
from pamac import transaction
|
from pamac import common, transaction
|
||||||
import dbus
|
import dbus
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
GObject.threads_init()
|
GObject.threads_init()
|
||||||
bus = dbus.SystemBus()
|
bus = dbus.SystemBus()
|
||||||
|
|
||||||
|
icon = ''
|
||||||
|
info = ''
|
||||||
|
update_icon = '/usr/share/pamac/icons/scalable/status/update-normal.svg'
|
||||||
|
update_info = '{} Updates Available'
|
||||||
|
noupdate_icon = '/usr/share/pamac/icons/scalable/status/update-enhancement.svg'
|
||||||
|
noupdate_info = ' No Update Available'
|
||||||
|
|
||||||
class Tray:
|
class Tray:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.statusIcon = Gtk.StatusIcon()
|
self.statusIcon = Gtk.StatusIcon()
|
||||||
@ -27,6 +34,7 @@ class Tray:
|
|||||||
self.menu.append(self.menuItem)
|
self.menu.append(self.menuItem)
|
||||||
|
|
||||||
self.statusIcon.connect('popup-menu', self.popup_menu_cb, self.menu)
|
self.statusIcon.connect('popup-menu', self.popup_menu_cb, self.menu)
|
||||||
|
self.statusIcon.connect('activate', self.activate_cb, self.menu)
|
||||||
|
|
||||||
def execute_update(self, widget, event, data = None):
|
def execute_update(self, widget, event, data = None):
|
||||||
call(['/usr/bin/pamac-updater'])
|
call(['/usr/bin/pamac-updater'])
|
||||||
@ -44,6 +52,9 @@ class Tray:
|
|||||||
data.show_all()
|
data.show_all()
|
||||||
data.popup(None, None, Gtk.StatusIcon.position_menu, self.statusIcon, 3, time)
|
data.popup(None, None, Gtk.StatusIcon.position_menu, self.statusIcon, 3, time)
|
||||||
|
|
||||||
|
def activate_cb(self, widget, data = None):
|
||||||
|
call(['notify-send', '-i', icon, '-u', 'normal', 'Pamac', info])
|
||||||
|
|
||||||
def update_icon(self, icon, info):
|
def update_icon(self, icon, info):
|
||||||
self.statusIcon.set_from_file(icon)
|
self.statusIcon.set_from_file(icon)
|
||||||
self.statusIcon.set_tooltip_markup(info)
|
self.statusIcon.set_tooltip_markup(info)
|
||||||
@ -72,18 +83,19 @@ class PeriodicTask(threading.Thread):
|
|||||||
self._finished.wait(self._interval)
|
self._finished.wait(self._interval)
|
||||||
|
|
||||||
def task(self):
|
def task(self):
|
||||||
call(['/usr/bin/pamac-check-updates'])
|
call(['/usr/bin/pamac-refresh'])
|
||||||
|
|
||||||
def set_icon(updates):
|
def set_icon(updates):
|
||||||
print('set-icon')
|
global icon
|
||||||
#transaction.get_handle()
|
global info
|
||||||
#do_syncfirst, updates = transaction.get_updates()
|
|
||||||
if updates:
|
if updates:
|
||||||
icon = '/usr/share/pamac/icons/24x24/status/update-normal.png'
|
icon = update_icon
|
||||||
info = 'Updates available'
|
info = update_info.format(updates)
|
||||||
|
if not common.pid_file_exists():
|
||||||
|
call(['notify-send', '-i', icon, '-u', 'normal', 'Pamac', info])
|
||||||
else:
|
else:
|
||||||
icon = '/usr/share/pamac/icons/24x24/status/update-enhancement.png'
|
icon = noupdate_icon
|
||||||
info = ' No update available'
|
info = noupdate_info
|
||||||
print(info)
|
print(info)
|
||||||
tray.update_icon(icon, info)
|
tray.update_icon(icon, info)
|
||||||
|
|
||||||
|
@ -186,8 +186,8 @@ class PacmanConfig(object):
|
|||||||
|
|
||||||
pacman_conf = PacmanConfig(conf = "/etc/pacman.conf")
|
pacman_conf = PacmanConfig(conf = "/etc/pacman.conf")
|
||||||
handle = pacman_conf.initialize_alpm()
|
handle = pacman_conf.initialize_alpm()
|
||||||
holpkg = None
|
holdpkg = []
|
||||||
syncfirst = None
|
syncfirst = []
|
||||||
if 'HoldPkg' in pacman_conf.options:
|
if 'HoldPkg' in pacman_conf.options:
|
||||||
holdpkg = pacman_conf.options['HoldPkg']
|
holdpkg = pacman_conf.options['HoldPkg']
|
||||||
if 'SyncFirst' in pacman_conf.options:
|
if 'SyncFirst' in pacman_conf.options:
|
||||||
|
126
pamac/main.py
126
pamac/main.py
@ -275,6 +275,8 @@ def handle_error(error):
|
|||||||
global transaction_type
|
global transaction_type
|
||||||
global transaction_dict
|
global transaction_dict
|
||||||
ProgressWindow.hide()
|
ProgressWindow.hide()
|
||||||
|
#while Gtk.events_pending():
|
||||||
|
# Gtk.main_iteration()
|
||||||
if error:
|
if error:
|
||||||
if not 'DBus.Error.NoReply' in str(error):
|
if not 'DBus.Error.NoReply' in str(error):
|
||||||
print('error:', error)
|
print('error:', error)
|
||||||
@ -299,6 +301,8 @@ def handle_reply(reply):
|
|||||||
global transaction_type
|
global transaction_type
|
||||||
global transaction_dict
|
global transaction_dict
|
||||||
ProgressWindow.hide()
|
ProgressWindow.hide()
|
||||||
|
#while Gtk.events_pending():
|
||||||
|
# Gtk.main_iteration()
|
||||||
if reply:
|
if reply:
|
||||||
transaction.InfoDialog.format_secondary_text(reply)
|
transaction.InfoDialog.format_secondary_text(reply)
|
||||||
response = transaction.InfoDialog.run()
|
response = transaction.InfoDialog.run()
|
||||||
@ -332,10 +336,12 @@ def do_refresh():
|
|||||||
transaction.t_lock = True
|
transaction.t_lock = True
|
||||||
progress_label.set_text('Refreshing...')
|
progress_label.set_text('Refreshing...')
|
||||||
action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/refresh-cache.png')
|
action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/refresh-cache.png')
|
||||||
|
progress_bar.set_text('')
|
||||||
|
progress_bar.set_fraction(0)
|
||||||
ProgressWindow.show_all()
|
ProgressWindow.show_all()
|
||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
Gtk.main_iteration()
|
Gtk.main_iteration()
|
||||||
transaction.Refresh(reply_handler = handle_reply, error_handler = handle_error)#, timeout = 2000*1000)
|
transaction.Refresh()#reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
|
||||||
|
|
||||||
def have_updates():
|
def have_updates():
|
||||||
do_syncfirst, updates = transaction.get_updates()
|
do_syncfirst, updates = transaction.get_updates()
|
||||||
@ -361,8 +367,8 @@ def do_sysupgrade():
|
|||||||
if updates:
|
if updates:
|
||||||
transaction.to_add = []
|
transaction.to_add = []
|
||||||
transaction.to_remove = []
|
transaction.to_remove = []
|
||||||
check_conflicts(updates)
|
|
||||||
if do_syncfirst:
|
if do_syncfirst:
|
||||||
|
check_conflicts('normal', updates)
|
||||||
for pkg in updates:
|
for pkg in updates:
|
||||||
transaction.to_add.append(pkg.name)
|
transaction.to_add.append(pkg.name)
|
||||||
if transaction.init_transaction(recurse = True, needed = True):
|
if transaction.init_transaction(recurse = True, needed = True):
|
||||||
@ -385,6 +391,7 @@ def do_sysupgrade():
|
|||||||
if mode == 'manager':
|
if mode == 'manager':
|
||||||
ConfDialog.show_all()
|
ConfDialog.show_all()
|
||||||
else:
|
else:
|
||||||
|
check_conflicts('updating', updates)
|
||||||
if transaction.init_transaction(noconflicts = True):
|
if transaction.init_transaction(noconflicts = True):
|
||||||
error = transaction.Sysupgrade()
|
error = transaction.Sysupgrade()
|
||||||
if error:
|
if error:
|
||||||
@ -413,12 +420,13 @@ def finalize():
|
|||||||
progress_label.set_text('Preparing...')
|
progress_label.set_text('Preparing...')
|
||||||
action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
|
action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
|
||||||
progress_bar.set_text('')
|
progress_bar.set_text('')
|
||||||
|
progress_bar.set_fraction(0)
|
||||||
ProgressWindow.show_all()
|
ProgressWindow.show_all()
|
||||||
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)
|
||||||
|
|
||||||
def check_conflicts(pkg_list):
|
def check_conflicts(mode, pkg_list):
|
||||||
depends = [pkg_list]
|
depends = [pkg_list]
|
||||||
warning = ''
|
warning = ''
|
||||||
error = ''
|
error = ''
|
||||||
@ -495,24 +503,35 @@ def check_conflicts(pkg_list):
|
|||||||
transaction.to_add.append(_pkg.name)
|
transaction.to_add.append(_pkg.name)
|
||||||
else:
|
else:
|
||||||
depends[i+1].append(provide)
|
depends[i+1].append(provide)
|
||||||
for replace in pkg.replaces:
|
if mode == 'updating':
|
||||||
provide = pyalpm.find_satisfier(transaction.localpkgs.values(), replace)
|
for replace in pkg.replaces:
|
||||||
if provide:
|
provide = pyalpm.find_satisfier(transaction.localpkgs.values(), replace)
|
||||||
if provide.name != pkg.name:
|
if provide:
|
||||||
if not provide.name in transaction.to_remove:
|
if provide.name != pkg.name:
|
||||||
transaction.to_remove.append(provide.name)
|
if not provide.name in transaction.to_remove:
|
||||||
if warning:
|
transaction.to_remove.append(provide.name)
|
||||||
warning = warning+'\n'
|
if warning:
|
||||||
warning = warning+provide.name+' will be replaced by '+pkg.name
|
warning += '\n'
|
||||||
|
warning += provide.name+' will be replaced by '+pkg.name
|
||||||
for conflict in pkg.conflicts:
|
for conflict in pkg.conflicts:
|
||||||
provide = pyalpm.find_satisfier(transaction.localpkgs.values(), conflict)
|
provide = pyalpm.find_satisfier(transaction.localpkgs.values(), conflict)
|
||||||
if provide:
|
if provide:
|
||||||
if provide.name != pkg.name:
|
if provide.name != pkg.name:
|
||||||
if not provide.name in transaction.to_remove:
|
required = pkg.compute_requiredby()
|
||||||
|
if required:
|
||||||
|
str_required = ''
|
||||||
|
for i in required:
|
||||||
|
if str_required:
|
||||||
|
str_required += ', '
|
||||||
|
str_required += i
|
||||||
|
if error:
|
||||||
|
error += '\n'
|
||||||
|
error += '{} conflicts with {} but cannot be removed because it is needed by {}'.format(provide.name, pkg.name, str_required)
|
||||||
|
elif not provide.name in transaction.to_remove:
|
||||||
transaction.to_remove.append(provide.name)
|
transaction.to_remove.append(provide.name)
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning += '\n'
|
||||||
warning = warning+pkg.name+' conflicts with '+provide.name
|
warning += pkg.name+' conflicts with '+provide.name
|
||||||
provide = pyalpm.find_satisfier(depends[0], conflict)
|
provide = pyalpm.find_satisfier(depends[0], conflict)
|
||||||
if provide:
|
if provide:
|
||||||
if not common.format_pkg_name(conflict) == pkg.name:
|
if not common.format_pkg_name(conflict) == pkg.name:
|
||||||
@ -521,60 +540,51 @@ def check_conflicts(pkg_list):
|
|||||||
transaction.to_add.remove(common.format_pkg_name(conflict))
|
transaction.to_add.remove(common.format_pkg_name(conflict))
|
||||||
transaction.to_add.remove(pkg.name)
|
transaction.to_add.remove(pkg.name)
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning += '\n'
|
||||||
warning = warning+pkg.name+' conflicts with '+common.format_pkg_name(conflict)+'\nNone of them will be installed'
|
warning += pkg.name+' conflicts with '+common.format_pkg_name(conflict)+'\nNone of them will be installed'
|
||||||
i += 1
|
i += 1
|
||||||
for pkg in transaction.localpkgs.values():
|
for pkg in transaction.localpkgs.values():
|
||||||
for conflict in pkg.conflicts:
|
for conflict in pkg.conflicts:
|
||||||
provide = pyalpm.find_satisfier(depends[0], conflict)
|
provide = pyalpm.find_satisfier(depends[0], conflict)
|
||||||
if provide:
|
if provide:
|
||||||
if provide.name != pkg.name:
|
if provide.name != pkg.name:
|
||||||
if not provide.name in transaction.to_remove:
|
required = pkg.compute_requiredby()
|
||||||
|
if required:
|
||||||
|
str_required = ''
|
||||||
|
for i in required:
|
||||||
|
if str_required:
|
||||||
|
str_required += ', '
|
||||||
|
str_required += i
|
||||||
|
if error:
|
||||||
|
error += '\n'
|
||||||
|
error += '{} conflicts with {} but cannot be removed because it is needed by {}'.format(provide.name, pkg.name, str_required)
|
||||||
|
elif not provide.name in transaction.to_remove:
|
||||||
transaction.to_remove.append(pkg.name)
|
transaction.to_remove.append(pkg.name)
|
||||||
if warning:
|
if warning:
|
||||||
warning = warning+'\n'
|
warning += '\n'
|
||||||
warning = warning+provide.name+' conflicts with '+pkg.name
|
warning += provide.name+' conflicts with '+pkg.name
|
||||||
for pkg in transaction.syncpkgs.values():
|
if mode == 'updating':
|
||||||
for replace in pkg.replaces:
|
for pkg in transaction.syncpkgs.values():
|
||||||
provide = pyalpm.find_satisfier(transaction.localpkgs.values(), replace)
|
for replace in pkg.replaces:
|
||||||
if provide:
|
provide = pyalpm.find_satisfier(transaction.localpkgs.values(), replace)
|
||||||
if not common.format_pkg_name(replace) in transaction.syncpkgs.keys():
|
if provide:
|
||||||
if provide.name != pkg.name:
|
if not common.format_pkg_name(replace) in transaction.syncpkgs.keys():
|
||||||
if not pkg.name in transaction.localpkgs.keys():
|
if provide.name != pkg.name:
|
||||||
if common.format_pkg_name(replace) in transaction.localpkgs.keys():
|
if not pkg.name in transaction.localpkgs.keys():
|
||||||
if not provide.name in transaction.to_remove:
|
if common.format_pkg_name(replace) in transaction.localpkgs.keys():
|
||||||
transaction.to_remove.append(provide.name)
|
if not provide.name in transaction.to_remove:
|
||||||
if warning:
|
transaction.to_remove.append(provide.name)
|
||||||
warning = warning+'\n'
|
if warning:
|
||||||
warning = warning+provide.name+' will be replaced by '+pkg.name
|
warning += '\n'
|
||||||
if not pkg.name in transaction.to_add:
|
warning += provide.name+' will be replaced by '+pkg.name
|
||||||
transaction.to_add.append(pkg.name)
|
if not pkg.name in transaction.to_add:
|
||||||
print(transaction.to_add,transaction.to_remove)
|
transaction.to_add.append(pkg.name)
|
||||||
|
print('check result:', 'to add:', transaction.to_add, 'to remove:', transaction.to_remove)
|
||||||
if warning:
|
if warning:
|
||||||
transaction.WarningDialog.format_secondary_text(warning)
|
transaction.WarningDialog.format_secondary_text(warning)
|
||||||
response = transaction.WarningDialog.run()
|
response = transaction.WarningDialog.run()
|
||||||
if response:
|
if response:
|
||||||
transaction.WarningDialog.hide()
|
transaction.WarningDialog.hide()
|
||||||
pkg_list = {}
|
|
||||||
for pkgname in transaction.to_remove:
|
|
||||||
pkg_list[pkgname] = transaction.localpkgs[pkgname]
|
|
||||||
for pkgname in transaction.to_add:
|
|
||||||
pkg = transaction.syncpkgs[pkgname]
|
|
||||||
for replace in pkg.replaces:
|
|
||||||
provide = pyalpm.find_satisfier(pkg_list.values(), replace)
|
|
||||||
if provide:
|
|
||||||
pkg_list.pop(provide.name)
|
|
||||||
for pkg in pkg_list.values():
|
|
||||||
required = pkg.compute_requiredby()
|
|
||||||
if required:
|
|
||||||
str_required = ''
|
|
||||||
for i in required:
|
|
||||||
if str_required:
|
|
||||||
str_required += ', '
|
|
||||||
str_required += i
|
|
||||||
if error:
|
|
||||||
error = error+'\n'
|
|
||||||
error += 'Cannot remove {} because it is needed by {}'.format(pkgname, str_required)
|
|
||||||
if error:
|
if error:
|
||||||
handle_error(error)
|
handle_error(error)
|
||||||
|
|
||||||
@ -638,7 +648,7 @@ class Handler:
|
|||||||
for pkgname in transaction_dict.keys():
|
for pkgname in transaction_dict.keys():
|
||||||
transaction.to_add.append(pkgname)
|
transaction.to_add.append(pkgname)
|
||||||
transaction.to_remove = []
|
transaction.to_remove = []
|
||||||
check_conflicts(transaction_dict.values())
|
check_conflicts('normal', transaction_dict.values())
|
||||||
if transaction.to_add:
|
if transaction.to_add:
|
||||||
if transaction.init_transaction(noconflicts = True):
|
if transaction.init_transaction(noconflicts = True):
|
||||||
for pkgname in transaction.to_add:
|
for pkgname in transaction.to_add:
|
||||||
@ -781,7 +791,7 @@ class Handler:
|
|||||||
transaction.to_provide.remove(choose_list[line][1])
|
transaction.to_provide.remove(choose_list[line][1])
|
||||||
line += 1
|
line += 1
|
||||||
|
|
||||||
#Updater Handlers
|
#Updater Handlers
|
||||||
def on_UpdaterWindow_delete_event(self, *arg):
|
def on_UpdaterWindow_delete_event(self, *arg):
|
||||||
transaction.StopDaemon()
|
transaction.StopDaemon()
|
||||||
common.rm_pid_file()
|
common.rm_pid_file()
|
||||||
|
Loading…
Reference in New Issue
Block a user