pamac-classic/pamac/transaction.py

103 lines
2.9 KiB
Python
Raw Normal View History

#! /usr/bin/python3
2013-03-31 14:31:33 -03:00
# -*- coding:utf-8 -*-
import pyalpm
2013-02-06 12:09:43 -03:00
from collections import OrderedDict
import dbus
2013-01-20 13:38:33 -03:00
from dbus.mainloop.glib import DBusGMainLoop
from pamac import config, common
2013-01-20 13:38:33 -03:00
to_remove = set()
to_add = set()
to_update = set()
to_provide = set()
2013-02-10 11:59:53 -03:00
handle = None
syncpkgs = OrderedDict()
localpkgs = OrderedDict()
2013-01-23 11:12:11 -03:00
def get_handle():
global handle
2013-03-25 13:51:20 -03:00
handle = config.handle()
2013-02-22 12:43:52 -03:00
print('get handle')
def update_db():
2013-03-26 10:26:16 -03:00
#get_handle()
2013-02-06 12:09:43 -03:00
global syncpkgs
global localpkgs
syncpkgs = OrderedDict()
localpkgs = OrderedDict()
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
2013-01-20 13:38:33 -03:00
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
proxy = bus.get_object('org.manjaro.pamac','/org/manjaro/pamac', introspect=False)
Refresh = proxy.get_dbus_method('Refresh','org.manjaro.pamac')
Init = proxy.get_dbus_method('Init','org.manjaro.pamac')
2013-01-20 13:38:33 -03:00
Sysupgrade = proxy.get_dbus_method('Sysupgrade','org.manjaro.pamac')
Remove = proxy.get_dbus_method('Remove','org.manjaro.pamac')
Add = proxy.get_dbus_method('Add','org.manjaro.pamac')
Prepare = proxy.get_dbus_method('Prepare','org.manjaro.pamac')
To_Remove = proxy.get_dbus_method('To_Remove','org.manjaro.pamac')
To_Add = proxy.get_dbus_method('To_Add','org.manjaro.pamac')
Commit = proxy.get_dbus_method('Commit','org.manjaro.pamac')
2013-03-15 13:15:34 -03:00
Interrupt = proxy.get_dbus_method('Interrupt','org.manjaro.pamac')
Release = proxy.get_dbus_method('Release','org.manjaro.pamac')
2013-01-23 11:12:11 -03:00
StopDaemon = proxy.get_dbus_method('StopDaemon','org.manjaro.pamac')
def init_transaction(**options):
2013-01-23 11:12:11 -03:00
error = Init(dbus.Dictionary(options, signature='sb'))
if not error:
return True
else:
return False
def get_to_remove():
2013-01-20 13:38:33 -03:00
global to_remove
to_remove = set(To_Remove())
def get_to_add():
2013-01-20 13:38:33 -03:00
global to_add
to_add = set(To_Add())
def get_updates():
"""Return a list of package objects in local db which can be updated"""
2013-02-06 12:09:43 -03:00
do_syncfirst = False
list_first = []
2013-04-10 11:20:54 -03:00
_ignorepkgs = []
update_db()
for group in handle.ignoregrps:
db = handle.get_localdb()
grp = db.read_grp(group)
if grp:
name, pkg_list = grp
for pkg in pkg_list:
if not pkg.name in _ignorepkgs:
_ignorepkgs.append(pkg.name)
for pkgname in handle.ignorepkgs:
if pkgname in localpkgs.keys():
if not pkgname in _ignorepkgs:
_ignorepkgs.append(pkgname)
if config.syncfirst:
for name in config.syncfirst:
2013-02-22 12:43:52 -03:00
if name in localpkgs.keys():
candidate = pyalpm.sync_newversion(localpkgs[name], handle.get_syncdbs())
2013-02-03 11:58:33 -03:00
if candidate:
2013-03-01 15:11:55 -03:00
list_first.append(candidate)
if list_first:
do_syncfirst = True
2013-02-06 12:09:43 -03:00
return do_syncfirst, list_first
result = []
2013-02-23 13:02:53 -03:00
for pkg in localpkgs.values():
2013-01-23 11:12:11 -03:00
candidate = pyalpm.sync_newversion(pkg, handle.get_syncdbs())
if candidate:
2013-04-10 11:20:54 -03:00
if not candidate.name in _ignorepkgs:
result.append(candidate)
2013-02-06 12:09:43 -03:00
return do_syncfirst, result