[PackageKit-commit] packagekit: Branch 'master' - 21 commits
Richard Hughes
hughsient at kemper.freedesktop.org
Fri Jul 4 05:22:50 PDT 2008
backends/alpm/pk-backend-alpm.c | 295 ++++++++++++++++---------------
backends/pisi/pk-backend-pisi.c | 25 ++
backends/poldek/pk-backend-poldek.c | 69 ++++---
backends/razor/pk-backend-razor.c | 44 +++-
backends/smart/helpers/get-depends.py | 2
backends/smart/helpers/get-details.py | 2
backends/smart/helpers/get-files.py | 2
backends/smart/helpers/smartBackend.py | 147 +++++++--------
backends/smart/pk-backend-smart.c | 20 +-
backends/yum/helpers/remove-packages.py | 7
backends/yum/helpers/yumBackend.py | 73 +++----
backends/zypp/zypp-utils.cpp | 12 -
client/pk-console.c | 71 +++++++
libpackagekit/pk-client.c | 7
libpackagekit/pk-client.h | 2
libpackagekit/pk-control.c | 7
libpackagekit/pk-task-list.c | 2
libpackagekit/pk-update-detail-list.c | 2
po/pt_BR.po | 302 +++++++++++++-------------------
src/pk-backend-dbus.c | 5
src/pk-backend.c | 11 -
src/pk-engine.c | 2
src/pk-interface.xml | 11 -
src/pk-security-polkit.c | 2
src/pk-security.h | 4
src/pk-transaction.c | 10 -
26 files changed, 631 insertions(+), 505 deletions(-)
New commits:
commit c59ae932e70a8682742aeaf845219105c6cc8a0f
Author: Richard Hughes <richard at hughsie.com>
Date: Fri Jul 4 12:35:30 2008 +0100
yum: allow more than one package to be removed in one transaction
diff --git a/backends/yum/helpers/remove-packages.py b/backends/yum/helpers/remove-packages.py
index 4bec79c..3825d81 100755
--- a/backends/yum/helpers/remove-packages.py
+++ b/backends/yum/helpers/remove-packages.py
@@ -15,10 +15,9 @@ import sys
from yumBackend import PackageKitYumBackend
allowdeps = sys.argv[1]
-package = sys.argv[2]
+packages = sys.argv[2:]
backend = PackageKitYumBackend(sys.argv[1:])
-backend.remove_packages(allowdeps, package)
-backend.unLock()
-
+backend.remove_packages(allowdeps, packages)
sys.exit(0)
+
diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 7b4c167..25b0dde 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -1241,7 +1241,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
else:
self.error(ERROR_TRANSACTION_ERROR,message)
- def remove_packages(self,allowdep,package):
+ def remove_packages(self,allowdep,package_ids):
'''
Implement the {backend}-remove functionality
Needed to be implemented in a sub class
@@ -1251,21 +1251,21 @@ class PackageKitYumBackend(PackageKitBaseBackend):
self.percentage(0)
self.status(STATUS_RUNNING)
- pkg,inst = self._findPackage(package)
- if pkg and inst:
- try:
+ txmbrs = []
+ for package in package_ids:
+ pkg,inst = self._findPackage(package)
+ if pkg and inst:
txmbr = self.yumbase.remove(po=pkg)
- except yum.Errors.RepoError,e:
- self.error(ERROR_REPO_NOT_AVAILABLE,str(e))
- if txmbr:
- if allowdep != 'yes':
- self._runYumTransaction(removedeps=False)
- else:
- self._runYumTransaction(removedeps=True)
+ txmbrs.extend(txmbr)
+ if not inst:
+ self.error(ERROR_PACKAGE_NOT_INSTALLED,"The package %s is not installed" % pkg.name)
+ if txmbrs:
+ if allowdep != 'yes':
+ self._runYumTransaction(removedeps=False)
else:
- self.error(ERROR_PACKAGE_NOT_INSTALLED,"Package %s is not installed" % package)
+ self._runYumTransaction(removedeps=True)
else:
- self.error(ERROR_PACKAGE_NOT_INSTALLED,"Package %s is not installed" % package)
+ self.error(ERROR_PACKAGE_NOT_INSTALLED,"The packages failed to be removed")
def get_details(self,package_ids):
'''
commit 0560c248c8df93c227845796062c563d4d5d249c
Author: Shishir Goel <crazyontheedge at gmail.com>
Date: Fri Jul 4 14:08:46 2008 +0530
fix up download-packages for the yum backend
diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 4db1621..7b4c167 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -630,7 +630,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
found[str(pkg)] = 1
@handle_repo_error
- def download_packages(self,packages,directory):
+ def download_packages(self,directory,packages):
'''
Implement the {backend}-download-packages functionality
'''
@@ -639,28 +639,27 @@ class PackageKitYumBackend(PackageKitBaseBackend):
self.percentage(0)
self.status(STATUS_DOWNLOAD)
for package in packages:
- pkg,inst = self._findPackage(package)
- for pkg in packages:
- n,a,e,v,r = pkg.pkgtup
- packs = self.pkgSack.searchNevra(n,e,v,r,a)
- for download in packs:
- repo = self.repos.getRepo(download.repoid)
- remote = download.returnSimple('relativepath')
- local = os.path.basename(remote)
- if not os.path.exists(directory):
- self.error(ERROR_PACKAGE_DOWNLOAD_FAILED,"No destination directory exists")
- local = os.path.join(directory,local)
- if(os.path.exists(local) and os.path.getsize(local) == int(download.returnSimple('packagesize'))):
- self.error(ERROR_PACKAGE_DOWNLOAD_FAILED,"Package already exists")
- continue
- # Disable cache otherwise things won't download
- repo.cache = 0
- download.localpath = local #Hack:To set the localpath we want
- try:
- path = repo.getPackage(download)
- except IOError, e:
- self.error(ERROR_WRITE_ERROR,"Cannot write to file")
- continue
+ pkg,inst = self._findPackage(package)
+ n,a,e,v,r = pkg.pkgtup
+ packs = self.yumbase.pkgSack.searchNevra(n,e,v,r,a)
+ for download in packs:
+ repo = self.yumbase.repos.getRepo(download.repoid)
+ remote = download.returnSimple('relativepath')
+ local = os.path.basename(remote)
+ if not os.path.exists(directory):
+ self.error(ERROR_PACKAGE_DOWNLOAD_FAILED,"No destination directory exists")
+ local = os.path.join(directory,local)
+ if(os.path.exists(local) and os.path.getsize(local) == int(download.returnSimple('packagesize'))):
+ self.error(ERROR_PACKAGE_DOWNLOAD_FAILED,"Package already exists")
+ continue
+ # Disable cache otherwise things won't download
+ repo.cache = 0
+ download.localpath = local #Hack:To set the localpath we want
+ try:
+ path = repo.getPackage(download)
+ except IOError, e:
+ self.error(ERROR_WRITE_ERROR,"Cannot write to file")
+ continue
def _getEVR(self,idver):
'''
commit 051903fbaf5f8a67fae15f5a7ffdfadc70752886
Author: Igor Pires Soares <igorsoares at gmail.com>
Date: Fri Jul 4 00:50:44 2008 +0000
2008-07-04 Igor Pires Soares <igorsoares at gmail.com> (via
igor at fedoraproject.org)
* po/pt_BR.po: Updated Brazilian Portuguese translation
diff --git a/po/pt_BR.po b/po/pt_BR.po
index e261ac3..fd1b2ce 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PackageKit\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-18 21:33+0300\n"
-"PO-Revision-Date: 2008-04-23 23:58-0300\n"
+"POT-Creation-Date: 2008-06-10 17:51+0000\n"
+"PO-Revision-Date: 2008-07-03 21:49-0300\n"
"Last-Translator: Igor Pires Soares <igor at projetofedora.org>\n"
"Language-Team: Brazilian Portuguese <fedora-trans-pt_br at redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -19,339 +19,247 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: BRAZIL\n"
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
-msgid "Accept EULA"
-msgstr "Aceitar a licença EULA"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
-msgid "Authentication is required to accept a EULA"
-msgstr "à necessário autenticar para aceitar uma licença EULA"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to change software source parameters"
-msgstr "à necessário autenticar para alterar os parâmetros das fontes de programas"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
-msgid "Authentication is required to install a local file"
-msgstr "à necessário autenticar para instalar um arquivo local"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to install a package"
-msgstr "à necessário autenticar para instalar um pacote"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
-msgid "Authentication is required to install a security signature"
-msgstr "à necessário autenticar para instalar uma assinatura de segurança"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
-msgid "Authentication is required to refresh the package lists"
-msgstr "à necessário autenticar para recarregar a lista de pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
-msgid "Authentication is required to remove packages"
-msgstr "à necessário autenticar para remover pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to rollback a transaction"
-msgstr "à necessário autenticar para retroceder uma transação"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
-msgid "Authentication is required to update all packages"
-msgstr "à necessário autenticar para atualizar todos os pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to update packages"
-msgstr "à necessário autenticar para atualizar os pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Change software source parameters"
-msgstr "Altere parâmetros das fontes de programas"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
-msgid "Install local file"
-msgstr "Instalar um arquivo local"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
-msgid "Install package"
-msgstr "Instalar um pacote"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
-msgid "Install security signature"
-msgstr "Instalar uma assinatura de segurança"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Refresh package lists"
-msgstr "Recarregar listas de pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Remove package"
-msgstr "Remover pacote"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid "Rollback to a previous transaction"
-msgstr "Retroceder para uma transação anterior"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Update all packages"
-msgstr "Atualizar todos os pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
-msgid "Update package"
-msgstr "Atualizar pacote"
-
-#: ../client/pk-console.c:208
+#: ../client/pk-console.c:223
msgid "Update detail"
msgstr "Detalhe da atualização"
-#: ../client/pk-console.c:400
+#: ../client/pk-console.c:424
msgid "A system restart is required"
msgstr "à necessário reiniciar o sistema"
-#: ../client/pk-console.c:402
+#: ../client/pk-console.c:426
msgid "A logout and login is required"
msgstr "à necessário sair da sessão e autenticar novamente"
-#: ../client/pk-console.c:404
+#: ../client/pk-console.c:428
msgid "An application restart is required"
msgstr "à necessário reiniciar a aplicação"
-#: ../client/pk-console.c:443
+#: ../client/pk-console.c:473
#, c-format
msgid "Please enter a number from 1 to %i: "
msgstr "Por favor, insira um número entre 1 e %i: "
-#: ../client/pk-console.c:493
+#: ../client/pk-console.c:533
msgid "Could not find a package match"
msgstr "Não foi possÃvel encontrar um pacote correspondente"
-#: ../client/pk-console.c:507
+#: ../client/pk-console.c:547
msgid "There are multiple package matches"
msgstr "Há múltiplos pacotes correspondentes"
#. find out what package the user wants to use
-#: ../client/pk-console.c:514
+#: ../client/pk-console.c:554
msgid "Please enter the package number: "
msgstr "Por favor, insira o número do pacote: "
-#: ../client/pk-console.c:530
+#: ../client/pk-console.c:589
msgid "Could not find a package with that name to install, or package already installed"
msgstr "Não foi possÃvel encontrar um pacote com esse nome para instalar ou o pacote já está instalado"
-#: ../client/pk-console.c:612
-msgid "Could not find a package with that name to remove"
-msgstr "Não foi possÃvel encontrar um pacote com esse nome para remover"
+#: ../client/pk-console.c:737
+msgid "Could not find a package to remove"
+msgstr "Não foi possÃvel localizar um pacote a ser removido"
-#: ../client/pk-console.c:652
+#: ../client/pk-console.c:806
msgid "The following packages have to be removed"
msgstr "Os seguintes pacotes têm que ser removidos"
#. get user input
-#: ../client/pk-console.c:661
+#: ../client/pk-console.c:815
msgid "Okay to remove additional packages?"
msgstr "Os pacotes adicionais podem ser removidos?"
-#: ../client/pk-console.c:665
+#: ../client/pk-console.c:819
msgid "Cancelled!"
msgstr "Cancelado!"
-#: ../client/pk-console.c:687
+#: ../client/pk-console.c:844
msgid "Could not find a package with that name to update"
msgstr "Não foi possÃvel encontrar um pacote com esse nome para ser atualizado"
-#: ../client/pk-console.c:705
+#: ../client/pk-console.c:862
msgid "Could not find what packages require this package"
msgstr "Não foi possÃvel encontrar quais pacotes necessitam desse pacote"
-#: ../client/pk-console.c:723
+#: ../client/pk-console.c:880
msgid "Could not get dependencies for this package"
msgstr "Não foi possÃvel obter as dependências desse pacote"
-#: ../client/pk-console.c:741
-msgid "Could not find a description for this package"
-msgstr "Não foi possÃvel encontrar uma descrição para esse pacote"
+#: ../client/pk-console.c:898
+msgid "Could not find details for this package"
+msgstr "Não foi possÃvel localizar os detalhes deste pacote"
-#: ../client/pk-console.c:759
-#, c-format
+#: ../client/pk-console.c:916
msgid "Could not find the files for this package"
msgstr "Não foi possÃvel encontrar os arquivos para este pacote"
-#: ../client/pk-console.c:819
+#: ../client/pk-console.c:996
msgid "Package description"
msgstr "Descrição do pacote"
-#: ../client/pk-console.c:842
+#: ../client/pk-console.c:1019
msgid "Package files"
msgstr "Arquivos do pacote"
-#: ../client/pk-console.c:850
+#: ../client/pk-console.c:1027
msgid "No files"
msgstr "Nenhum arquivo"
#. get user input
-#: ../client/pk-console.c:882
+#: ../client/pk-console.c:1059
msgid "Okay to import key?"
msgstr "A chave pode ser importada?"
-#: ../client/pk-console.c:885
+#: ../client/pk-console.c:1062
msgid "Did not import key"
msgstr "Não importar a chave"
#. get user input
-#: ../client/pk-console.c:925
+#: ../client/pk-console.c:1102
msgid "Do you agree?"
msgstr "Você concorda?"
-#: ../client/pk-console.c:928
+#: ../client/pk-console.c:1105
msgid "Did not agree to licence, task will fail"
msgstr "Se você não concordar com a licença a tarefa irá falhar"
-#: ../client/pk-console.c:957
+#: ../client/pk-console.c:1134
msgid "The daemon crashed mid-transaction!"
msgstr "O daemon travou no meio da transação!"
#. header
-#: ../client/pk-console.c:1010
+#: ../client/pk-console.c:1187
msgid "PackageKit Console Interface"
msgstr "Interface em Console do PackageKit"
-#: ../client/pk-console.c:1010
+#: ../client/pk-console.c:1187
msgid "Subcommands:"
msgstr "Subcomandos:"
-#: ../client/pk-console.c:1114
-#: ../client/pk-monitor.c:100
+#: ../client/pk-console.c:1290
+#: ../client/pk-monitor.c:104
#: ../src/pk-main.c:189
msgid "Show extra debugging information"
msgstr "Mostrar informações extras de depuração"
-#: ../client/pk-console.c:1116
-#: ../client/pk-monitor.c:102
+#: ../client/pk-console.c:1292
+#: ../client/pk-monitor.c:106
msgid "Show the program version and exit"
msgstr "Mostrar a versão do programa e sair"
-#: ../client/pk-console.c:1118
+#: ../client/pk-console.c:1294
msgid "Set the filter, e.g. installed"
msgstr "Definir o filtro, p. ex.: instalados"
-#: ../client/pk-console.c:1120
+#: ../client/pk-console.c:1296
msgid "Exit without waiting for actions to complete"
msgstr "Sair sem esperar pelo término das ações"
-#: ../client/pk-console.c:1143
+#: ../client/pk-console.c:1319
msgid "Could not connect to system DBUS."
msgstr "Não foi possÃvel conectar ao DBUS do sistema."
-#: ../client/pk-console.c:1231
-#, c-format
+#: ../client/pk-console.c:1413
msgid "You need to specify a search type"
msgstr "Você precisa especificar um tipo de pesquisa"
-#: ../client/pk-console.c:1236
-#: ../client/pk-console.c:1243
-#: ../client/pk-console.c:1250
-#: ../client/pk-console.c:1257
-#: ../client/pk-console.c:1361
-#: ../client/pk-console.c:1368
-#: ../client/pk-console.c:1375
-#: ../client/pk-console.c:1382
-#, c-format
+#: ../client/pk-console.c:1418
+#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1432
+#: ../client/pk-console.c:1439
+#: ../client/pk-console.c:1538
+#: ../client/pk-console.c:1545
+#: ../client/pk-console.c:1552
+#: ../client/pk-console.c:1559
msgid "You need to specify a search term"
msgstr "Você precisa especificar um termo de pesquisa"
-#: ../client/pk-console.c:1262
-#, c-format
+#: ../client/pk-console.c:1444
msgid "Invalid search type"
msgstr "Tipo de pesquisa inválido"
-#: ../client/pk-console.c:1267
-#, c-format
+#: ../client/pk-console.c:1449
msgid "You need to specify a package or file to install"
msgstr "Você precisa especificar um pacote ou programa a ser instalado"
-#: ../client/pk-console.c:1280
-#, c-format
+#: ../client/pk-console.c:1456
msgid "You need to specify a type, key_id and package_id"
msgstr "Você precisa especificar um tipo, key_id e package_id"
-#: ../client/pk-console.c:1287
-#, c-format
+#: ../client/pk-console.c:1463
msgid "You need to specify a package to remove"
msgstr "Você precisa especificar um pacote a ser removido"
-#: ../client/pk-console.c:1294
-#, c-format
+#: ../client/pk-console.c:1470
msgid "You need to specify a eula-id"
msgstr "Você precisa especificar um eula-id"
-#: ../client/pk-console.c:1309
-#, c-format
+#: ../client/pk-console.c:1486
msgid "You need to specify a package name to resolve"
msgstr "Você precisa especificar um nome de pacote a ser analisado"
-#: ../client/pk-console.c:1316
-#: ../client/pk-console.c:1323
-#, c-format
+#: ../client/pk-console.c:1493
+#: ../client/pk-console.c:1500
msgid "You need to specify a repo name"
msgstr "Você precisa especificar um nome de repositório"
-#: ../client/pk-console.c:1330
-#, c-format
+#: ../client/pk-console.c:1507
msgid "You need to specify a repo name/parameter and value"
msgstr "Você precisa especificar um nome/parâmetro de repositório e um valor"
-#: ../client/pk-console.c:1343
-#, c-format
+#: ../client/pk-console.c:1520
msgid "You need to specify a time term"
msgstr "Você precisa especificar um termo de horário"
-#: ../client/pk-console.c:1348
-#, c-format
+#: ../client/pk-console.c:1525
msgid "You need to specify a correct role"
msgstr "Você precisa especificar um papel correto"
-#: ../client/pk-console.c:1353
-#, c-format
+#: ../client/pk-console.c:1530
msgid "Failed to get last time"
msgstr "Falha ao obter o último horário"
-#: ../client/pk-console.c:1389
-#, c-format
-msgid "You need to specify a package to find the description for"
-msgstr "Você precisa especificar o pacote para o qual você deseja localizar a descrição"
+#: ../client/pk-console.c:1566
+msgid "You need to specify a package to find the details for"
+msgstr "Você precisa especificar o pacote para o qual você quer localizar os detalhes"
-#: ../client/pk-console.c:1396
-#, c-format
+#: ../client/pk-console.c:1573
msgid "You need to specify a package to find the files for"
msgstr "Você precisa especificar o pacote para o qual você quer localizar os arquivos"
-#: ../client/pk-console.c:1441
+#: ../client/pk-console.c:1622
#, c-format
msgid "Option '%s' not supported"
msgstr "A opção \"%s\" não é suportada"
-#: ../client/pk-console.c:1452
+#: ../client/pk-console.c:1633
msgid "Command failed"
msgstr "O comando falhou"
-#: ../client/pk-console.c:1456
+#: ../client/pk-console.c:1637
msgid "You don't have the necessary privileges for this operation"
msgstr "Você não tem os privilégios necessários para esta operação"
-#: ../client/pk-monitor.c:113
-msgid "PackageKit Monitor"
-msgstr "Monitor do PackageKit"
-
-#: ../client/pk-import-desktop.c:283
-#: ../client/pk-import-specspo.c:169
+#: ../client/pk-import-desktop.c:298
+#: ../client/pk-import-specspo.c:173
#, c-format
msgid "Could not open database: %s"
msgstr "Não foi possÃvel abrir o banco de dados: %s"
-#: ../client/pk-import-desktop.c:284
-#: ../client/pk-import-specspo.c:170
+#: ../client/pk-import-desktop.c:299
+#: ../client/pk-import-specspo.c:174
msgid "You probably need to run this program as the root user"
msgstr "Você provavelmente precisa executar este programa como usuário root"
+#: ../client/pk-monitor.c:117
+msgid "PackageKit Monitor"
+msgstr "Monitor do PackageKit"
+
+#: ../data/packagekit-catalog.xml.in.h:1
+msgid "PackageKit Catalog"
+msgstr "Catálogo do PackageKit"
+
#: ../src/pk-main.c:83
msgid "Startup failed due to security policies on this machine."
msgstr "A inicialização falhou devido à polÃticas de segurança desta máquina"
@@ -405,3 +313,51 @@ msgstr "Não foi possÃvel conectar ao barramento do sistema"
msgid "Error trying to start: %s\n"
msgstr "Erro ao tentar iniciar: %s\n"
+#~ msgid "Accept EULA"
+#~ msgstr "Aceitar a licença EULA"
+#~ msgid "Authentication is required to accept a EULA"
+#~ msgstr "à necessário autenticar para aceitar uma licença EULA"
+#~ msgid "Authentication is required to change software source parameters"
+#~ msgstr ""
+#~ "à necessário autenticar para alterar os parâmetros das fontes de programas"
+#~ msgid "Authentication is required to install a local file"
+#~ msgstr "à necessário autenticar para instalar um arquivo local"
+#~ msgid "Authentication is required to install a package"
+#~ msgstr "à necessário autenticar para instalar um pacote"
+#~ msgid "Authentication is required to install a security signature"
+#~ msgstr "à necessário autenticar para instalar uma assinatura de segurança"
+#~ msgid "Authentication is required to refresh the package lists"
+#~ msgstr "à necessário autenticar para recarregar a lista de pacotes"
+#~ msgid "Authentication is required to remove packages"
+#~ msgstr "à necessário autenticar para remover pacotes"
+#~ msgid "Authentication is required to rollback a transaction"
+#~ msgstr "à necessário autenticar para retroceder uma transação"
+#~ msgid "Authentication is required to update all packages"
+#~ msgstr "à necessário autenticar para atualizar todos os pacotes"
+#~ msgid "Authentication is required to update packages"
+#~ msgstr "à necessário autenticar para atualizar os pacotes"
+#~ msgid "Change software source parameters"
+#~ msgstr "Altere parâmetros das fontes de programas"
+#~ msgid "Install local file"
+#~ msgstr "Instalar um arquivo local"
+#~ msgid "Install package"
+#~ msgstr "Instalar um pacote"
+#~ msgid "Install security signature"
+#~ msgstr "Instalar uma assinatura de segurança"
+#~ msgid "Refresh package lists"
+#~ msgstr "Recarregar listas de pacotes"
+#~ msgid "Remove package"
+#~ msgstr "Remover pacote"
+#~ msgid "Rollback to a previous transaction"
+#~ msgstr "Retroceder para uma transação anterior"
+#~ msgid "Update all packages"
+#~ msgstr "Atualizar todos os pacotes"
+#~ msgid "Update package"
+#~ msgstr "Atualizar pacote"
+#~ msgid "Could not find a description for this package"
+#~ msgstr "Não foi possÃvel encontrar uma descrição para esse pacote"
+#~ msgid "You need to specify a package to find the description for"
+#~ msgstr ""
+#~ "Você precisa especificar o pacote para o qual você deseja localizar a "
+#~ "descrição"
+
commit 01ebb3a42b61bcdf2974cfab34b747619b49cacc
Merge: bb13883... a5ae220...
Author: Anders F Bjorklund <afb at users.sourceforge.net>
Date: Thu Jul 3 20:24:17 2008 +0200
Merge branch 'master' of git+ssh://afb@git.packagekit.org/srv/git/PackageKit
commit bb1388304b42bb67d4172de39cc11c3e91c208cf
Author: Anders F Bjorklund <afb at users.sourceforge.net>
Date: Thu Jul 3 20:22:33 2008 +0200
change packageid to packageids (plural)
diff --git a/backends/smart/helpers/get-depends.py b/backends/smart/helpers/get-depends.py
index bba29b7..635b1a1 100755
--- a/backends/smart/helpers/get-depends.py
+++ b/backends/smart/helpers/get-depends.py
@@ -15,5 +15,5 @@ import sys
from smartBackend import PackageKitSmartBackend
package = sys.argv[1]
backend = PackageKitSmartBackend(sys.argv[1:])
-backend.get_depends(package)
+backend.get_depends(package.split('|'))
sys.exit(0)
diff --git a/backends/smart/helpers/get-details.py b/backends/smart/helpers/get-details.py
index 6ef43b5..065d72b 100755
--- a/backends/smart/helpers/get-details.py
+++ b/backends/smart/helpers/get-details.py
@@ -16,5 +16,5 @@ from smartBackend import PackageKitSmartBackend
package = sys.argv[1]
backend = PackageKitSmartBackend(sys.argv[1:])
-backend.get_details(package)
+backend.get_details(package.split('|'))
sys.exit(0)
diff --git a/backends/smart/helpers/get-files.py b/backends/smart/helpers/get-files.py
index b4d2d26..1b25134 100755
--- a/backends/smart/helpers/get-files.py
+++ b/backends/smart/helpers/get-files.py
@@ -15,5 +15,5 @@ import sys
from smartBackend import PackageKitSmartBackend
package = sys.argv[1]
backend = PackageKitSmartBackend(sys.argv[1:])
-backend.get_files(package)
+backend.get_files(package.split('|'))
sys.exit(0)
diff --git a/backends/smart/helpers/smartBackend.py b/backends/smart/helpers/smartBackend.py
index 20f1836..aeac569 100644
--- a/backends/smart/helpers/smartBackend.py
+++ b/backends/smart/helpers/smartBackend.py
@@ -176,90 +176,93 @@ class PackageKitSmartBackend(PackageKitBaseBackend):
self.ctrl.saveSysConf()
@needs_cache
- def get_details(self, packageid):
- ratio, results, suggestions = self._search_packageid(packageid)
-
- packages = self._process_search_results(results)
-
- if len(packages) != 1:
- return
-
- package = packages[0]
- infos = []
- for loader in package.loaders:
- info = loader.getInfo(package)
- infos.append(info)
-
- infos.sort()
- info = infos[0]
-
- version, arch = package.version.split('@')
- description = info.GetDetails()
- description = description.replace("\n\n", ";")
- description = description.replace("\n", " ")
- urls = info.getReferenceURLs()
- if urls:
- url = urls[0]
- else:
- url = "unknown"
-
- pkgsize = None
- seen = {}
- for loader in package.loaders:
- info = loader.getInfo(package)
- for pkgurl in info.getURLs():
- size = info.getSize(pkgurl)
- if size:
- pkgsize = size
+ def get_details(self, packageids):
+ for packageid in packageids:
+ ratio, results, suggestions = self._search_packageid(packageid)
+
+ packages = self._process_search_results(results)
+
+ if len(packages) != 1:
+ return
+
+ package = packages[0]
+ infos = []
+ for loader in package.loaders:
+ info = loader.getInfo(package)
+ infos.append(info)
+
+ infos.sort()
+ info = infos[0]
+
+ version, arch = package.version.split('@')
+ description = info.GetDetails()
+ description = description.replace("\n\n", ";")
+ description = description.replace("\n", " ")
+ urls = info.getReferenceURLs()
+ if urls:
+ url = urls[0]
+ else:
+ url = "unknown"
+
+ pkgsize = None
+ seen = {}
+ for loader in package.loaders:
+ info = loader.getInfo(package)
+ for pkgurl in info.getURLs():
+ size = info.getSize(pkgurl)
+ if size:
+ pkgsize = size
+ break
+ if pkgsize:
break
- if pkgsize:
- break
- if not pkgsize:
- pkgsize = "unknown"
+ if not pkgsize:
+ pkgsize = "unknown"
- self.details(packageid, "unknown", "unknown", description, url,
- pkgsize)
+ self.details(packageid, "unknown", "unknown", description, url,
+ pkgsize)
@needs_cache
- def get_files(self, packageid):
- ratio, results, suggestions = self._search_packageid(packageid)
-
- packages = self._process_search_results(results)
-
- if len(packages) != 1:
- return
-
- package = packages[0]
- # FIXME: Only installed packages have path lists.
- paths = []
- for loader in package.loaders:
- info = loader.getInfo(package)
- paths = info.getPathList()
- if len(paths) > 0:
- break
+ def get_files(self, packageids):
+ for packageid in packageids:
+ ratio, results, suggestions = self._search_packageid(packageid)
+
+ packages = self._process_search_results(results)
+
+ if len(packages) != 1:
+ return
+
+ package = packages[0]
+ # FIXME: Only installed packages have path lists.
+ paths = []
+ for loader in package.loaders:
+ info = loader.getInfo(package)
+ paths = info.getPathList()
+ if len(paths) > 0:
+ break
- self.files(packageid, ";".join(paths))
+ self.files(packageid, ";".join(paths))
@needs_cache
- def get_depends(self, packageid):
- ratio, results, suggestions = self._search_packageid(packageid)
+ def get_depends(self, packageids):
+ for packageid in packageids:
+ ratio, results, suggestions = self._search_packageid(packageid)
- packages = self._process_search_results(results)
+ packages = self._process_search_results(results)
- if len(packages) != 1:
- return
+ if len(packages) != 1:
+ return
- package = packages[0]
+ package = packages[0]
- providers = {}
- for required in package.requires:
- for provider in self.ctrl.getCache().getProvides(str(required)):
- for package in provider.packages:
- if not providers.has_key(package):
- providers[package] = True
+ providers = {}
+ for required in package.requires:
+ for provider in self.ctrl.getCache().getProvides(str(required)):
+ for package in provider.packages:
+ if not providers.has_key(package):
+ providers[package] = True
- for package in providers.keys():
- self._show_package(package)
+ for package in providers.keys():
+ self._show_package(package)
def get_repo_list(self, filters):
channels = smart.sysconf.get("channels", ())
diff --git a/backends/smart/pk-backend-smart.c b/backends/smart/pk-backend-smart.c
index c67612f..950208c 100644
--- a/backends/smart/pk-backend-smart.c
+++ b/backends/smart/pk-backend-smart.c
@@ -57,10 +57,13 @@ static void
backend_get_depends (PkBackend *backend, PkFilterEnum filters, gchar **package_ids, gboolean recursive)
{
gchar *filters_text;
+ gchar *package_ids_temp;
/* FIXME: Use recursive and filter here */
filters_text = pk_filter_enums_to_text (filters);
- pk_backend_spawn_helper (spawn, "get-depends.py", package_id, NULL);
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "get-depends.py", package_ids_temp, NULL);
g_free (filters_text);
+ g_free (package_ids_temp);
}
/**
@@ -69,7 +72,10 @@ backend_get_depends (PkBackend *backend, PkFilterEnum filters, gchar **package_i
static void
backend_get_details (PkBackend *backend, gchar **package_ids)
{
- pk_backend_spawn_helper (spawn, "get-details.py", package_id, NULL);
+ gchar *package_ids_temp;
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "get-details.py", package_ids_temp, NULL);
+ g_free (package_ids_temp);
}
/**
@@ -78,7 +84,10 @@ backend_get_details (PkBackend *backend, gchar **package_ids)
static void
backend_get_files (PkBackend *backend, gchar **package_ids)
{
- pk_backend_spawn_helper (spawn, "get-files.py", package_id, NULL);
+ gchar *package_ids_temp;
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "get-files.py", package_ids_temp, NULL);
+ g_free (package_ids_temp);
}
/**
@@ -178,9 +187,12 @@ static void
backend_resolve (PkBackend *backend, PkFilterEnum filters, gchar **package_ids)
{
gchar *filters_text;
+ gchar *package_ids_temp;
filters_text = pk_filter_enums_to_text (filters);
- pk_backend_spawn_helper (spawn, "resolve.py", filters_text, package_id, NULL);
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "resolve.py", filters_text, package_ids_temp, NULL);
g_free (filters_text);
+ g_free (package_ids_temp);
}
/**
commit a5ae220104d12e18233c1526fb910674b35222fc
Author: Shishir Goel <crazyontheedge at gmail.com>
Date: Thu Jul 3 19:00:12 2008 +0530
remove the check for client permissions on download-packages
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 5f8affb..a47df87 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -1218,7 +1218,6 @@ pk_transaction_download_packages (PkTransaction *transaction, gchar **package_id
{
gboolean ret;
GError *error;
- gchar *sender;
gchar *package_ids_temp;
g_return_if_fail (PK_IS_TRANSACTION (transaction));
@@ -1246,15 +1245,6 @@ pk_transaction_download_packages (PkTransaction *transaction, gchar **package_id
return;
}
- /* check if the action is allowed from this client - if not, set an error */
- sender = dbus_g_method_get_sender (context);
- ret = pk_transaction_action_is_allowed (transaction, sender, FALSE, PK_ROLE_ENUM_DOWNLOAD_PACKAGES, &error);
- g_free (sender);
- if (!ret) {
- dbus_g_method_return_error (context, error);
- return;
- }
-
/* set the dbus name, so we can get the disconnect */
pk_transaction_set_dbus_name (transaction, dbus_g_method_get_sender (context));
commit 85c1279953f561ef673c9d6c540d6535b1efbdcd
Author: Shishir Goel <crazyontheedge at gmail.com>
Date: Thu Jul 3 18:12:22 2008 +0530
change mode for yum/helpers/download-packages.py
diff --git a/backends/yum/helpers/download-packages.py b/backends/yum/helpers/download-packages.py
old mode 100644
new mode 100755
commit 2fa1c44b6e672186ff0f938fb28c42ef977e88be
Author: Shishir Goel <crazyontheedge at gmail.com>
Date: Thu Jul 3 16:24:19 2008 +0530
Added download packages functionality to pkcon
diff --git a/client/pk-console.c b/client/pk-console.c
index 973450a..23b70ae 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -108,7 +108,7 @@ pk_console_start_bar (const gchar *text)
{
gchar *text_pad;
- /* make these all the same lenght */
+ /* make these all the same length */
text_pad = pk_strpad (text, 50);
g_print ("%s", text_pad);
g_free (text_pad);
@@ -811,6 +811,64 @@ out:
}
/**
+ * pk_console_download_packages:
+ **/
+static gboolean
+pk_console_download_packages (PkClient *client, gchar **packages, const gchar *directory, GError **error)
+{
+ gboolean ret = TRUE;
+ gchar *package_id = NULL;
+ gchar **package_ids = NULL;
+ guint i;
+ guint length;
+ GPtrArray *array_packages;
+
+
+ array_packages = g_ptr_array_new ();
+ length = g_strv_length (packages);
+ for (i=2; i<length; i++) {
+ package_id = pk_console_perhaps_resolve (client, PK_FILTER_ENUM_NONE, packages[i], error);
+ if (package_id == NULL) {
+ g_print ("%s\n", _("Could not find a package to download"));
+ ret = FALSE;
+ break;
+ }
+ g_ptr_array_add (array_packages, package_id);
+ }
+
+ /* one of the resolves failed */
+ if (!ret) {
+ pk_warning ("resolve failed");
+ goto out;
+ }
+
+
+ /* any to process? */
+ if (array_packages->len > 0) {
+ /* convert to strv */
+ package_ids = pk_ptr_array_to_argv (array_packages);
+
+ /* reset */
+ ret = pk_client_reset (client, error);
+ if (!ret) {
+ pk_warning ("failed to reset");
+ goto out;
+ }
+
+ ret = pk_client_download_packages (client, package_ids, directory, error);
+ if (!ret) {
+ pk_warning ("failed to download the packages");
+ goto out;
+ }
+ }
+
+out:
+ g_strfreev (package_ids);
+ g_ptr_array_free (array_packages, TRUE);
+ return ret;
+}
+
+/**
* pk_console_update_package:
**/
static gboolean
@@ -1199,6 +1257,9 @@ pk_console_get_summary (PkRoleEnum roles)
pk_enums_contain (roles, PK_ROLE_ENUM_INSTALL_FILES)) {
g_string_append_printf (string, " %s\n", "install [packages|files]");
}
+ if (pk_enums_contain (roles, PK_ROLE_ENUM_DOWNLOAD_PACKAGES)) {
+ g_string_append_printf (string, " %s\n", "download [packages] [directory]");
+ }
if (pk_enums_contain (roles, PK_ROLE_ENUM_INSTALL_SIGNATURE)) {
g_string_append_printf (string, " %s\n", "install-sig [type] [key_id] [package_id]");
}
@@ -1276,6 +1337,7 @@ main (int argc, char *argv[])
const gchar *value = NULL;
const gchar *details = NULL;
const gchar *parameter = NULL;
+ const gchar *directory = "/tmp";
PkGroupEnum groups;
gchar *text;
ret = FALSE;
@@ -1461,7 +1523,12 @@ main (int argc, char *argv[])
goto out;
}
ret = pk_console_remove_packages (client, argv, &error);
-
+ } else if (strcmp (mode, "download") == 0) {
+ if (value == NULL || directory == NULL) {
+ g_print (_("You need to specify the package to download and the destination directory"));
+ goto out;
+ }
+ ret = pk_console_download_packages (client, argv, directory, &error);
} else if (strcmp (mode, "accept-eula") == 0) {
if (value == NULL) {
g_print (_("You need to specify a eula-id"));
diff --git a/libpackagekit/pk-client.h b/libpackagekit/pk-client.h
index 24e680d..c4a4d4e 100644
--- a/libpackagekit/pk-client.h
+++ b/libpackagekit/pk-client.h
@@ -189,7 +189,7 @@ gboolean pk_client_get_package (PkClient *client,
gboolean pk_client_cancel (PkClient *client,
GError **error)
G_GNUC_WARN_UNUSED_RESULT;
-gboolean pk_download_packages (PkClient *client,
+gboolean pk_client_download_packages (PkClient *client,
gchar **package_ids,
const gchar *directory,
GError **error)
commit 8a88eaabce391f332bbbf182b531d65590b294b8
Merge: a3322aa... 0220b60...
Author: Richard Hughes <richard at hughsie.com>
Date: Thu Jul 3 10:36:55 2008 +0100
Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit
commit a3322aa3253909105a62724783e92142d7c511a4
Author: Richard Hughes <richard at hughsie.com>
Date: Thu Jul 3 10:36:27 2008 +0100
detect the download-packages role and export it in the action list
diff --git a/src/pk-backend.c b/src/pk-backend.c
index d2f78fe..4b5d2c5 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -219,6 +219,9 @@ pk_backend_get_actions (PkBackend *backend)
if (desc->remove_packages != NULL) {
pk_enums_add (roles, PK_ROLE_ENUM_REMOVE_PACKAGES);
}
+ if (desc->download_packages != NULL) {
+ pk_enums_add (roles, PK_ROLE_ENUM_DOWNLOAD_PACKAGES);
+ }
if (desc->resolve != NULL) {
pk_enums_add (roles, PK_ROLE_ENUM_RESOLVE);
}
commit 0220b60d5600d9a95a8548a99b6286a759db289a
Merge: 0687382... 212306a...
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Thu Jul 3 11:36:51 2008 +0300
Merge branch 'master' of git+ssh://onestep_ua@git.packagekit.org/srv/git/PackageKit
commit 068738220854db9b7f12da4adf70be52b437d657
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Thu Jul 3 11:35:25 2008 +0300
alpm: fix build for PK 0.3.0
diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
index 49fc22d..52e905e 100644
--- a/backends/alpm/pk-backend-alpm.c
+++ b/backends/alpm/pk-backend-alpm.c
@@ -880,10 +880,10 @@ backend_get_filters (PkBackend *backend)
}
/**
- * backend_get_cancel:
+ * backend_cancel:
**/
static void
-backend_get_cancel (PkBackend *backend)
+backend_cancel (PkBackend *backend)
{
pk_backend_set_status (backend, PK_STATUS_ENUM_CANCEL);
}
@@ -892,62 +892,65 @@ backend_get_cancel (PkBackend *backend)
* backend_get_depends:
*/
static void
-backend_get_depends (PkBackend *backend, PkFilterEnum filters, const gchar *package_id, gboolean recursive)
+backend_get_depends (PkBackend *backend, PkFilterEnum filters, gchar **package_ids, gboolean recursive)
{
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_allow_cancel (backend, FALSE);
- pmpkg_t *pkg = pkg_from_package_id_str (package_id);
- if (pkg == NULL) {
- pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
- pk_backend_finished (backend);
- return;
- }
+ int iterator;
+ for (iterator = 0; iterator < g_strv_length (package_ids); ++iterator) {
+ pmpkg_t *pkg = pkg_from_package_id_str (package_ids[iterator]);
+ if (pkg == NULL) {
+ pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
+ pk_backend_finished (backend);
+ return;
+ }
- pk_debug ("alpm: filters is: %i", filters);
+ pk_debug ("alpm: filters is: %i", filters);
- alpm_list_t *iterator;
- for (iterator = alpm_pkg_get_depends (pkg); iterator; iterator = alpm_list_next (iterator)) {
- pmdepend_t *dep = alpm_list_getdata (iterator);
- pmpkg_t *dep_pkg;
- gboolean found = FALSE;
+ alpm_list_t *list_iterator;
+ for (list_iterator = alpm_pkg_get_depends (pkg); list_iterator; list_iterator = alpm_list_next (list_iterator)) {
+ pmdepend_t *dep = alpm_list_getdata (list_iterator);
+ pmpkg_t *dep_pkg;
+ gboolean found = FALSE;
- if (!pk_enums_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
- /* search in sync dbs */
- alpm_list_t *db_iterator;
- for (db_iterator = alpm_option_get_syncdbs (); found == FALSE && db_iterator; db_iterator = alpm_list_next (db_iterator)) {
- pmdb_t *syncdb = alpm_list_getdata (db_iterator);
+ if (!pk_enums_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
+ /* search in sync dbs */
+ alpm_list_t *db_iterator;
+ for (db_iterator = alpm_option_get_syncdbs (); found == FALSE && db_iterator; db_iterator = alpm_list_next (db_iterator)) {
+ pmdb_t *syncdb = alpm_list_getdata (db_iterator);
+
+ pk_debug ("alpm: searching for %s in %s", alpm_dep_get_name (dep), alpm_db_get_name (syncdb));
- pk_debug ("alpm: searching for %s in %s", alpm_dep_get_name (dep), alpm_db_get_name (syncdb));
+ dep_pkg = alpm_db_get_pkg (syncdb, alpm_dep_get_name (dep));
+ if (dep_pkg && alpm_depcmp (dep_pkg, dep)) {
+ found = TRUE;
+ gchar *dep_package_id_str = pkg_to_package_id_str (dep_pkg, alpm_db_get_name (syncdb));
+ pk_backend_package (backend, PK_INFO_ENUM_AVAILABLE, dep_package_id_str, alpm_pkg_get_desc (dep_pkg));
+ g_free (dep_package_id_str);
+ }
+ }
+ }
- dep_pkg = alpm_db_get_pkg (syncdb, alpm_dep_get_name (dep));
+ if (!pk_enums_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+ pk_debug ("alpm: searching for %s in local db", alpm_dep_get_name (dep));
+
+ /* search in local db */
+ dep_pkg = alpm_db_get_pkg (alpm_option_get_localdb (), alpm_dep_get_name (dep));
if (dep_pkg && alpm_depcmp (dep_pkg, dep)) {
found = TRUE;
- gchar *dep_package_id_str = pkg_to_package_id_str (dep_pkg, alpm_db_get_name (syncdb));
- pk_backend_package (backend, PK_INFO_ENUM_AVAILABLE, dep_package_id_str, alpm_pkg_get_desc (dep_pkg));
+ gchar *dep_package_id_str = pkg_to_package_id_str (dep_pkg, ALPM_LOCAL_DB_ALIAS);
+ pk_backend_package (backend, PK_INFO_ENUM_INSTALLED, dep_package_id_str, alpm_pkg_get_desc (dep_pkg));
g_free (dep_package_id_str);
}
}
- }
- if (!pk_enums_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
- pk_debug ("alpm: searching for %s in local db", alpm_dep_get_name (dep));
-
- /* search in local db */
- dep_pkg = alpm_db_get_pkg (alpm_option_get_localdb (), alpm_dep_get_name (dep));
- if (dep_pkg && alpm_depcmp (dep_pkg, dep)) {
- found = TRUE;
- gchar *dep_package_id_str = pkg_to_package_id_str (dep_pkg, ALPM_LOCAL_DB_ALIAS);
- pk_backend_package (backend, PK_INFO_ENUM_INSTALLED, dep_package_id_str, alpm_pkg_get_desc (dep_pkg));
- g_free (dep_package_id_str);
+ if (found == FALSE) {
+ pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
+ pk_backend_finished (backend);
+ return;
}
}
-
- if (found == FALSE) {
- pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
- pk_backend_finished (backend);
- return;
- }
}
pk_backend_finished (backend);
@@ -962,30 +965,40 @@ backend_get_details (PkBackend *backend, gchar **package_ids)
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_allow_cancel (backend, FALSE);
- pmpkg_t *pkg = pkg_from_package_id_str (package_id);
- if (pkg == NULL) {
- pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
- pk_backend_finished (backend);
- return;
- }
+ int iterator;
+ for (iterator = 0; iterator < g_strv_length (package_ids); ++iterator) {
+ pmpkg_t *pkg = pkg_from_package_id_str (package_ids[iterator]);
+ if (pkg == NULL) {
+ pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
+ pk_backend_finished (backend);
+ return;
+ }
- GString *licenses_str;
- alpm_list_t *licenses_list = alpm_pkg_get_licenses (pkg);
- if (licenses_list == NULL)
- licenses_str = g_string_new ("unknown");
- else {
- licenses_str = g_string_new ("");
- alpm_list_t *iterator;
- for (iterator = licenses_list; iterator; iterator = alpm_list_next (iterator)) {
- if (iterator != licenses_list)
- g_string_append (licenses_str, ", ");
- g_string_append (licenses_str, (char *) alpm_list_getdata (iterator));
+ GString *licenses_str;
+
+ alpm_list_t *licenses_list = alpm_pkg_get_licenses (pkg);
+ if (licenses_list == NULL)
+ licenses_str = g_string_new ("unknown");
+ else {
+ licenses_str = g_string_new ("");
+ alpm_list_t *list_iterator;
+ for (list_iterator = licenses_list; list_iterator; list_iterator = alpm_list_next (list_iterator)) {
+ if (list_iterator != licenses_list)
+ g_string_append (licenses_str, ", ");
+ g_string_append (licenses_str, (char *) alpm_list_getdata (list_iterator));
+ }
}
+
+ // get licenses_str content to licenses array
+ gchar *licenses = g_string_free (licenses_str, FALSE);
+
+ // return details
+ pk_backend_details (backend, package_ids[iterator], licenses, PK_GROUP_ENUM_OTHER, alpm_pkg_get_desc (pkg), alpm_pkg_get_url(pkg), alpm_pkg_get_size (pkg));
+
+ // free licenses array as we no longer need it
+ g_free (licenses);
}
- gchar *licenses = g_string_free (licenses_str, FALSE);
- pk_backend_details (backend, package_id, licenses, PK_GROUP_ENUM_OTHER, alpm_pkg_get_desc (pkg), alpm_pkg_get_url(pkg), alpm_pkg_get_size (pkg));
- g_free (licenses);
pk_backend_finished (backend);
}
@@ -998,27 +1011,32 @@ backend_get_files (PkBackend *backend, gchar **package_ids)
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_allow_cancel (backend, FALSE);
- pmpkg_t *pkg = pkg_from_package_id_str (package_id);
- if (pkg == NULL) {
- pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
- pk_backend_finished (backend);
- return;
- }
+ int iterator;
+ for (iterator = 0; iterator < g_strv_length (package_ids); ++iterator) {
+ pmpkg_t *pkg = pkg_from_package_id_str (package_ids[iterator]);
- GString *files_str = g_string_new ("");
- alpm_list_t *pkg_files = alpm_pkg_get_files (pkg);
- if (pkg_files != NULL) {
- alpm_list_t *iterator;
- for (iterator = pkg_files; iterator; iterator = alpm_list_next (iterator)) {
- if (iterator != pkg_files)
- g_string_append (files_str, ";");
- g_string_append (files_str, alpm_option_get_root ());
- g_string_append (files_str, (char *) alpm_list_getdata (iterator));
+ if (pkg == NULL) {
+ pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, alpm_strerrorlast ());
+ pk_backend_finished (backend);
+ return;
}
+
+ GString *files_str = g_string_new ("");
+ alpm_list_t *pkg_files = alpm_pkg_get_files (pkg);
+ if (pkg_files != NULL) {
+ alpm_list_t *list_iterator;
+ for (list_iterator = pkg_files; list_iterator; list_iterator = alpm_list_next (list_iterator)) {
+ if (list_iterator != pkg_files)
+ g_string_append (files_str, ";");
+ g_string_append (files_str, alpm_option_get_root ());
+ g_string_append (files_str, (char *) alpm_list_getdata (list_iterator));
+ }
+ }
+ gchar *files = g_string_free (files_str, FALSE);
+
+ pk_backend_files (backend, package_ids[iterator], files);
}
- gchar *files = g_string_free (files_str, FALSE);
- pk_backend_files (backend, package_id, files);
pk_backend_finished (backend);
}
@@ -1079,20 +1097,23 @@ backend_get_repo_list (PkBackend *backend, PkFilterEnum filters)
}
static void
-backend_get_update_detail (PkBackend *backend, const gchar *package_id)
+backend_get_update_detail (PkBackend *backend, gchar **package_ids)
{
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_allow_cancel (backend, FALSE);
- // TODO: add changelog code here
- PkPackageId *pk_package_id = pk_package_id_new_from_string (package_id);
+ int iterator;
+ for (iterator = 0; iterator < g_strv_length (package_ids); ++iterator) {
+ // TODO: add changelog code here
+ PkPackageId *pk_package_id = pk_package_id_new_from_string (package_ids[iterator]);
- pmpkg_t *obsolete_pkg = alpm_db_get_pkg (alpm_option_get_localdb (), pk_package_id->name);
+ pmpkg_t *installed_pkg = alpm_db_get_pkg (alpm_option_get_localdb (), pk_package_id->name);
- gchar *obsolete_package_id = obsolete_pkg ? pkg_to_package_id_str (obsolete_pkg, ALPM_LOCAL_DB_ALIAS) : NULL;
- pk_backend_update_detail (backend, package_id, obsolete_package_id, "", "", "", "", PK_RESTART_ENUM_NONE,
- obsolete_pkg ? "Update to latest available version" : "Install as a dependency for another update");
- g_free (obsolete_package_id);
+ gchar *installed_package_id = installed_pkg ? pkg_to_package_id_str (installed_pkg, ALPM_LOCAL_DB_ALIAS) : NULL;
+ pk_backend_update_detail (backend, package_ids[iterator], installed_package_id, "", "", "", "", PK_RESTART_ENUM_NONE,
+ installed_pkg ? "Update to latest available version" : "Install as a dependency for another update");
+ g_free (installed_package_id);
+ }
pk_backend_finished (backend);
}
@@ -1401,31 +1422,34 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
* backend_resolve:
*/
static void
-backend_resolve (PkBackend *backend, PkFilterEnum filters, const gchar *package)
+backend_resolve (PkBackend *backend, PkFilterEnum filters, gchar **packages)
{
alpm_list_t *result = NULL;
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
- gboolean search_installed = pk_enums_contain (filters, PK_FILTER_ENUM_INSTALLED);
- gboolean search_not_installed = pk_enums_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
+ int iterator;
+ for (iterator = 0; iterator < g_strv_length (packages); ++iterator) {
+ gboolean search_installed = pk_enums_contain (filters, PK_FILTER_ENUM_INSTALLED);
+ gboolean search_not_installed = pk_enums_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
- if (!search_not_installed) {
- // Search in local db
- result = alpm_list_join (result, find_packages_by_name (package, alpm_option_get_localdb (), TRUE));
- }
+ if (!search_not_installed) {
+ // Search in local db
+ result = alpm_list_join (result, find_packages_by_name (packages[iterator], alpm_option_get_localdb (), TRUE));
+ }
- if (!search_installed) {
- // Search in sync dbs
- alpm_list_t *iterator;
- for (iterator = alpm_option_get_syncdbs (); iterator; iterator = alpm_list_next (iterator))
- result = alpm_list_join (result, find_packages_by_name (package, (pmdb_t *) alpm_list_getdata(iterator), TRUE));
- }
+ if (!search_installed) {
+ // Search in sync dbs
+ alpm_list_t *db_iterator;
+ for (db_iterator = alpm_option_get_syncdbs (); db_iterator; db_iterator = alpm_list_next (db_iterator))
+ result = alpm_list_join (result, find_packages_by_name (packages[iterator], (pmdb_t *) alpm_list_getdata(db_iterator), TRUE));
+ }
- add_packages_from_list (backend, alpm_list_first (result));
+ add_packages_from_list (backend, alpm_list_first (result));
- alpm_list_free_inner (result, (alpm_list_fn_free) package_source_free);
- alpm_list_free (result);
+ alpm_list_free_inner (result, (alpm_list_fn_free) package_source_free);
+ alpm_list_free (result);
+ }
pk_backend_finished (backend);
}
@@ -1540,37 +1564,38 @@ backend_update_packages (PkBackend *backend, gchar **package_ids)
}
PK_BACKEND_OPTIONS (
- "alpm", /* description */
- "Andreas Obergrusberger <tradiaz at yahoo.de>", /* author */
- backend_initialize, /* initialize */
- backend_destroy, /* destroy */
- backend_get_groups, /* get_groups */
- backend_get_filters, /* get_filters */
- backend_get_cancel, /* cancel */
- NULL, /* download_packages */
- backend_get_depends, /* get_depends */
- backend_get_details, /* get_details */
- backend_get_files, /* get_files */
- backend_get_packages, /* get_packages */
- backend_get_repo_list, /* get_repo_list */
- NULL, /* get_requires */
- backend_get_update_detail, /* get_update_detail */
- backend_get_updates, /* get_updates */
- backend_install_files, /* install_files */
- backend_install_packages, /* install_packages */
- NULL, /* install_signature */
- backend_refresh_cache, /* refresh_cache */
- backend_remove_packages, /* remove_packages */
- NULL, /* repo_enable */
- NULL, /* repo_set_data */
- backend_resolve, /* resolve */
- NULL, /* rollback */
- backend_search_details, /* search_details */
- NULL, /* search_file */
- backend_search_group, /* search_group */
- backend_search_name, /* search_name */
- NULL, /* service_pack */
- backend_update_packages, /* update_packages */
- NULL, /* update_system */
- NULL /* what_provides */
+ "alpm", /* description */
+ "Andreas Obergrusberger <tradiaz at yahoo.de>", /* author */
+ backend_initialize, /* initialize */
+ backend_destroy, /* destroy */
+ backend_get_groups, /* get_groups */
+ backend_get_filters, /* get_filters */
+ backend_cancel, /* cancel */
+ NULL, /* download_packages */
+ backend_get_depends, /* get_depends */
+ backend_get_details, /* get_details */
+ backend_get_files, /* get_files */
+ backend_get_packages, /* get_packages */
+ backend_get_repo_list, /* get_repo_list */
+ NULL, /* get_requires */
+ backend_get_update_detail, /* get_update_detail */
+ backend_get_updates, /* get_updates */
+ backend_install_files, /* install_files */
+ backend_install_packages, /* install_packages */
+ NULL, /* install_signature */
+ backend_refresh_cache, /* refresh_cache */
+ backend_remove_packages, /* remove_packages */
+ NULL, /* repo_enable */
+ NULL, /* repo_set_data */
+ backend_resolve, /* resolve */
+ NULL, /* rollback */
+ backend_search_details, /* search_details */
+ NULL, /* search_file */
+ backend_search_group, /* search_group */
+ backend_search_name, /* search_name */
+ NULL, /* service_pack */
+ backend_update_packages, /* update_packages */
+ NULL, /* update_system */
+ NULL /* what_provides */
);
+
commit 1c723829d4a547beac7aa66d6101d4e2bd26f7ec
Merge: 33edecb... 212306a...
Author: Richard Hughes <richard at hughsie.com>
Date: Thu Jul 3 09:18:25 2008 +0100
Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit
commit 212306afe3d06762d45dc38edf80901f8ba989dd
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date: Wed Jul 2 22:57:44 2008 +0200
poldek: trivial: display properly status when updating
(cherry picked from commit 247e48f402064994b70e9ed03cc7855965b10397)
diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index 27528a1..42d691d 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -1566,11 +1566,40 @@ show_rpm_progress (PkBackend *backend, gchar *message)
}
}
+/* Returns NULL if not found */
+static gchar*
+get_filename_from_message (char *message)
+{
+ gchar *msg = NULL, *p;
+
+ if ((p = strchr (message, ':')) == NULL)
+ return NULL;
+
+ /* check if it's really rpm progress
+ * example: ' 4:foo ###'
+ */
+ if (g_ascii_isdigit (*(p - 1))) {
+ p++;
+
+ msg = p;
+
+ while (p) {
+ if (*p == '#' || g_ascii_isspace (*p)) {
+ *p = '\0';
+ break;
+ }
+
+ p++;
+ }
+ }
+
+ return msg;
+}
+
static void
poldek_backend_log (void *data, int pri, char *message)
{
PkBackend *backend = (PkBackend*)data;
- gchar *p;
/* skip messages that we don't want to show */
if (g_str_has_prefix (message, "Nothing")) // 'Nothing to do'
@@ -1618,37 +1647,23 @@ poldek_backend_log (void *data, int pri, char *message)
pberror->rpmstate &= (~PB_RPM_STATE_ENUM_REPACKAGING);
}
if (pberror->rpmstate != PB_RPM_STATE_ENUM_NONE) {
- p = g_strchug (message);
- if (p && g_ascii_isdigit(*p)) {
- gchar *n;
-
- /* extract package name */
- if ((n = strchr (p, ':') + 1) == NULL)
- return;
-
- p = n;
+ gchar *fn;
- while (*p != '\0') {
- if (g_ascii_isspace (*p)) {
- *p = '\0';
- break;
- }
- p++;
- }
+ if ((fn = get_filename_from_message (message)) == NULL)
+ return;
- if ((pberror->rpmstate & PB_RPM_STATE_ENUM_REPACKAGING) == FALSE) {
- guint ts_type = pk_backend_get_uint (backend, "ts_type");
+ if ((pberror->rpmstate & PB_RPM_STATE_ENUM_REPACKAGING) == FALSE) {
+ guint ts_type = pk_backend_get_uint (backend, "ts_type");
- /* set proper status */
- if (ts_type == TS_TYPE_ENUM_INSTALL) {
- pk_backend_set_status (backend, PK_STATUS_ENUM_INSTALL);
- } else if (ts_type == TS_TYPE_ENUM_UPDATE) {
- pk_backend_set_status (backend, PK_STATUS_ENUM_UPDATE);
- }
+ /* set proper status */
+ if (ts_type == TS_TYPE_ENUM_INSTALL) {
+ pk_backend_set_status (backend, PK_STATUS_ENUM_INSTALL);
+ } else if (ts_type == TS_TYPE_ENUM_UPDATE) {
+ pk_backend_set_status (backend, PK_STATUS_ENUM_UPDATE);
}
-
- show_rpm_progress (backend, n);
}
+
+ show_rpm_progress (backend, fn);
}
}
commit c63b0cd85dd11fae769b77fb83703a8759067593
Author: Scott Reeves <sreeves at novell.com>
Date: Fri Jun 27 11:21:47 2008 -0600
change to return all restart_suggested patches not just the first one
(cherry picked from commit b46d22182369920639fb1fbd55d06440b19ed936)
diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index ad1d86f..293dba3 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -640,15 +640,19 @@ zypp_get_patches ()
it != zypp->poolProxy ().byKindEnd<zypp::Patch>(); it ++) {
// check if patch is needed
if((*it)->candidateObj ().isRelevant() && !((*it)->candidateObj ().isSatisfied())) {
- patches->insert ((*it)->candidateObj ());
zypp::Patch::constPtr patch = zypp::asKind<zypp::Patch>((*it)->candidateObj ().resolvable ());
+ if (_updating_self) {
+ if (patch->restartSuggested ())
+ patches->insert ((*it)->candidateObj ());
+ }
+ else
+ patches->insert ((*it)->candidateObj ());
- // check if the patch updates libzypp or packageKit and show only this one
- if (patch->restartSuggested ()) {
+ // check if the patch updates libzypp or packageKit and show only these
+ if (!_updating_self && patch->restartSuggested ()) {
_updating_self = TRUE;
patches->clear ();
patches->insert ((*it)->candidateObj ());
- break;
}
}
commit 0ea7ad31b6c9833476b070cfa238f0b2de9875d8
Author: S.ÃaÄlar Onur <caglar at pardus.org.tr>
Date: Wed Jul 2 19:44:21 2008 +0300
PiSi: compile with trunk changes
diff --git a/backends/pisi/pk-backend-pisi.c b/backends/pisi/pk-backend-pisi.c
index 74d2c31..07e7d16 100644
--- a/backends/pisi/pk-backend-pisi.c
+++ b/backends/pisi/pk-backend-pisi.c
@@ -116,9 +116,12 @@ static void
backend_get_depends (PkBackend *backend, PkFilterEnum filters, gchar **package_ids, gboolean recursive)
{
gchar *filters_text;
+ gchar *package_ids_temp;
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
filters_text = pk_filter_enums_to_text (filters);
- pk_backend_spawn_helper (spawn, "get-depends.py", filters_text, package_id, pk_backend_bool_to_text (recursive), NULL);
+ pk_backend_spawn_helper (spawn, "get-depends.py", filters_text, package_ids_temp, pk_backend_bool_to_text (recursive), NULL);
g_free (filters_text);
+ g_free (package_ids_temp);
}
/**
@@ -127,7 +130,10 @@ backend_get_depends (PkBackend *backend, PkFilterEnum filters, gchar **package_i
static void
backend_get_details (PkBackend *backend, gchar **package_ids)
{
- pk_backend_spawn_helper (spawn, "get-details.py", package_id, NULL);
+ gchar *package_ids_temp;
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "get-details.py", package_ids_temp, NULL);
+ g_free (package_ids_temp);
}
/**
@@ -136,7 +142,10 @@ backend_get_details (PkBackend *backend, gchar **package_ids)
static void
backend_get_files (PkBackend *backend, gchar **package_ids)
{
- pk_backend_spawn_helper (spawn, "get-files.py", package_id, NULL);
+ gchar *package_ids_temp;
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "get-files.py", package_ids_temp, NULL);
+ g_free (package_ids_temp);
}
/**
@@ -146,9 +155,12 @@ static void
backend_get_requires (PkBackend *backend, PkFilterEnum filters, gchar **package_ids, gboolean recursive)
{
gchar *filters_text;
+ gchar *package_ids_temp;
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
filters_text = pk_filter_enums_to_text (filters);
- pk_backend_spawn_helper (spawn, "get-requires.py", filters_text, package_id, pk_backend_bool_to_text (recursive), NULL);
+ pk_backend_spawn_helper (spawn, "get-requires.py", filters_text, package_ids_temp, pk_backend_bool_to_text (recursive), NULL);
g_free (filters_text);
+ g_free (package_ids_temp);
}
/**
@@ -314,9 +326,12 @@ static void
backend_resolve (PkBackend *backend, PkFilterEnum filters, gchar **package_ids)
{
gchar *filters_text;
+ gchar *package_ids_temp;
filters_text = pk_filter_enums_to_text (filters);
- pk_backend_spawn_helper (spawn, "resolve.py", filters_text, package_id, NULL);
+ package_ids_temp = pk_package_ids_to_text (package_ids, "|");
+ pk_backend_spawn_helper (spawn, "resolve.py", filters_text, package_ids_temp, NULL);
g_free (filters_text);
+ g_free (package_ids_temp);
}
/**
commit 33edecbaf61ed6565c64cc20e9969a6f388f7460
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jul 2 17:10:47 2008 +0100
yum: fix an error message which can lead to printf debug breakage in the daemon
diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 40e2e43..4db1621 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -1019,7 +1019,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
txmbr = self.yumbase.install(po=pkg)
txmbrs.extend(txmbr)
if inst:
- self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"The package %s is already installed", pkg.name)
+ self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"The package %s is already installed" % pkg.name)
if txmbrs:
self._runYumTransaction()
else:
commit f37502a69ef11ccfdc4f8e00c1357e8fc09f93e5
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jul 2 10:19:01 2008 +0100
bugfix: audit the use of FIXME and TODO and fix up some of the issues
diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index ddc0562..8fdf878 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -3517,9 +3517,10 @@ pk_client_connect (PkClient *client)
static void
pk_connection_changed_cb (PkConnection *pconnection, gboolean connected, PkClient *client)
{
- pk_debug ("connected=%i", connected);
-
- /* TODO: if PK re-started mid-transaction then show a big fat warning */
+ /* if PK re-started mid-transaction then show a big fat warning */
+ if (!connected && client->priv->tid != NULL && !client->priv->is_finished) {
+ pk_warning ("daemon disconnected mid-transaction!");
+ }
}
/**
diff --git a/libpackagekit/pk-control.c b/libpackagekit/pk-control.c
index c243f94..fbb83fa 100644
--- a/libpackagekit/pk-control.c
+++ b/libpackagekit/pk-control.c
@@ -718,7 +718,8 @@ pk_control_class_init (PkControlClass *klass)
* PkControl::transaction-list-changed:
* @control: the #PkControl instance that emitted the signal
*
- * The ::transaction-list-changed signal is emitted when TODO
+ * The ::transaction-list-changed signal is emitted when the list
+ * of transactions handled by the daemon is changed.
**/
signals [PK_CONTROL_LIST_CHANGED] =
g_signal_new ("transaction-list-changed",
@@ -730,7 +731,9 @@ pk_control_class_init (PkControlClass *klass)
* PkControl::locked:
* @control: the #PkControl instance that emitted the signal
*
- * The ::locked signal is emitted when TODO
+ * The ::locked signal is emitted when the backend instance has been
+ * locked by PackageKit.
+ * This may mean that other native package tools will not work.
**/
signals [PK_CONTROL_LOCKED] =
g_signal_new ("locked",
diff --git a/libpackagekit/pk-update-detail-list.c b/libpackagekit/pk-update-detail-list.c
index 99de8bf..987c1be 100644
--- a/libpackagekit/pk-update-detail-list.c
+++ b/libpackagekit/pk-update-detail-list.c
@@ -129,7 +129,7 @@ pk_update_detail_list_finalize (GObject *object)
g_return_if_fail (PK_IS_UPDATE_DETAIL_LIST (object));
list = PK_UPDATE_DETAIL_LIST (object);
- //TODO: FREE!
+ /* free the list */
len = list->priv->array->len;
for (i=0; i<len; i++) {
obj = (PkUpdateDetailObj *) g_ptr_array_index (list->priv->array, i);
diff --git a/src/pk-backend-dbus.c b/src/pk-backend-dbus.c
index 9256faa..530b0b2 100644
--- a/src/pk-backend-dbus.c
+++ b/src/pk-backend-dbus.c
@@ -383,9 +383,8 @@ pk_backend_dbus_startup (PkBackendDbus *backend_dbus)
G_TYPE_INVALID, G_TYPE_INVALID);
if (!ret) {
pk_warning ("%s", error->message);
- /* FIXME: might be insane... */
- pk_backend_error_code (backend_dbus->priv->backend, PK_ERROR_ENUM_INTERNAL_ERROR, error->message);
- pk_backend_finished (backend_dbus->priv->backend);
+ /* cannot use ErrorCode as not in transaction */
+ pk_backend_message (backend_dbus->priv->backend, PK_MESSAGE_ENUM_DAEMON, error->message);
g_error_free (error);
goto out;
}
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 3a57589..d2f78fe 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -1842,6 +1842,12 @@ pk_backend_reset (PkBackend *backend)
{
g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
+ /* we can't reset when we are running */
+ if (backend->priv->status == PK_STATUS_ENUM_RUNNING) {
+ pk_warning ("cannot reset %s when running", backend->priv->c_tid);
+ return FALSE;
+ }
+
/* do finish now, as we might be unreffing quickly */
if (backend->priv->signal_finished != 0) {
g_source_remove (backend->priv->signal_finished);
@@ -1854,8 +1860,6 @@ pk_backend_reset (PkBackend *backend)
g_source_remove (backend->priv->signal_error_timeout);
}
- /* TODO: need to wait for Finished() if running */
-
pk_package_obj_free (backend->priv->last_package);
backend->priv->set_error = FALSE;
backend->priv->set_signature = FALSE;
diff --git a/src/pk-engine.c b/src/pk-engine.c
index c85b0b9..f8df943 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -523,7 +523,7 @@ pk_engine_set_proxy (PkEngine *engine, const gchar *proxy_http, const gchar *pro
sender = dbus_g_method_get_sender (context);
/* use security model to get auth */
- ret = pk_security_action_is_allowed (engine->priv->security, sender, FALSE, PK__ROLE_ENUM_SET_PROXY, &error_detail);
+ ret = pk_security_action_is_allowed (engine->priv->security, sender, FALSE, PK_ROLE_ENUM_SET_PROXY_PRIVATE, &error_detail);
if (!ret) {
error = g_error_new (PK_ENGINE_ERROR, PK_ENGINE_ERROR_REFUSED_BY_POLICY, "%s", error_detail);
dbus_g_method_return_error (context, error);
diff --git a/src/pk-interface.xml b/src/pk-interface.xml
index 90c7a3c..ae89d58 100644
--- a/src/pk-interface.xml
+++ b/src/pk-interface.xml
@@ -186,7 +186,9 @@
<doc:doc>
<doc:summary>
<doc:para>
- The reason of the state change, FIXME
+ The reason of the state change. Valid reasons are <literal>resume</literal> or
+ <literal>posttrans</literal>.
+ Resume is given a lower priority than posttrans.
</doc:para>
</doc:summary>
</doc:doc>
@@ -219,7 +221,8 @@
<doc:doc>
<doc:summary>
<doc:para>
- The network state, e.g. FIXME
+ The network state, e.g. <literal>unknown</literal>,
+ <literal>offline</literal> or <literal>online</literal>.
</doc:para>
</doc:summary>
</doc:doc>
@@ -241,7 +244,7 @@
<doc:doc>
<doc:summary>
<doc:para>
- The HTTP proxy, e.g. FIXME
+ The HTTP proxy, e.g. <literal>username:password at server:port</literal>.
</doc:para>
</doc:summary>
</doc:doc>
@@ -250,7 +253,7 @@
<doc:doc>
<doc:summary>
<doc:para>
- The FTP proxy, e.g. FIXME
+ The FTP proxy, e.g. <literal>username:password at server:port</literal>.
</doc:para>
</doc:summary>
</doc:doc>
diff --git a/src/pk-security-polkit.c b/src/pk-security-polkit.c
index 81332d0..0b13fe4 100644
--- a/src/pk-security-polkit.c
+++ b/src/pk-security-polkit.c
@@ -129,7 +129,7 @@ pk_security_role_to_action (PkSecurity *security, gboolean trusted, PkRoleEnum r
} else if (role == PK_ROLE_ENUM_REFRESH_CACHE) {
policy = "org.freedesktop.packagekit.refresh-cache";
/* PRIVATE: not actually roles */
- } else if (role == PK__ROLE_ENUM_SET_PROXY) {
+ } else if (role == PK_ROLE_ENUM_SET_PROXY_PRIVATE) {
policy = "org.freedesktop.packagekit.refresh-cache";
}
return policy;
diff --git a/src/pk-security.h b/src/pk-security.h
index eb55932..3037c8e 100644
--- a/src/pk-security.h
+++ b/src/pk-security.h
@@ -34,8 +34,8 @@ G_BEGIN_DECLS
#define PK_IS_SECURITY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PK_TYPE_SECURITY))
#define PK_SECURITY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PK_TYPE_SECURITY, PkSecurityClass))
-/* FIXME: not actually a role */
-#define PK__ROLE_ENUM_SET_PROXY 1 << 31
+/* not actually a role, but treated as one */
+#define PK_ROLE_ENUM_SET_PROXY_PRIVATE 1 << 31
typedef struct PkSecurityPrivate PkSecurityPrivate;
commit 78e1a966de4aa1838aad752a78890dc2be75e113
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jul 2 09:28:55 2008 +0100
bugfix: don't use-after-free in pk_task_list_status_changed_cb()
diff --git a/libpackagekit/pk-task-list.c b/libpackagekit/pk-task-list.c
index e22b226..e203462 100644
--- a/libpackagekit/pk-task-list.c
+++ b/libpackagekit/pk-task-list.c
@@ -165,10 +165,10 @@ pk_task_list_status_changed_cb (PkClient *client, PkStatusEnum status, PkTaskLis
/* get correct item */
item = pk_task_list_find_existing_tid (tlist, tid);
item->status = status;
- g_free (tid);
pk_debug ("emit status-changed(%s) for %s", pk_status_enum_to_text (status), tid);
g_signal_emit (tlist, signals [PK_TASK_LIST_STATUS_CHANGED], 0);
+ g_free (tid);
}
/**
commit d7445880562d552ac3029adc88e20e32a2fe92d4
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jul 2 09:28:23 2008 +0100
trivial: remove some debugging that crept in
diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index dfedbd6..ddc0562 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -352,7 +352,6 @@ pk_client_get_tid (PkClient *client)
if (client->priv->tid == NULL) {
return NULL;
}
- pk_warning ("client->priv->tid=%s", client->priv->tid);
return g_strdup (client->priv->tid);
}
commit f2408cf4a8cb6d438d24de3c771ef17f96cc46f1
Author: Richard Hughes <richard at hughsie.com>
Date: Wed Jul 2 09:15:17 2008 +0100
razor: upstream API changes
diff --git a/backends/razor/pk-backend-razor.c b/backends/razor/pk-backend-razor.c
index 5d9c780..a2246c5 100644
--- a/backends/razor/pk-backend-razor.c
+++ b/backends/razor/pk-backend-razor.c
@@ -159,7 +159,7 @@ backend_get_details_thread (PkBackend *backend)
const gchar *name, *version, *arch, *summary, *description, *url, *license;
gchar *package_id;
gchar **package_ids;
- PkPackageId *ident;
+ PkPackageId *id;
package_ids = pk_backend_get_strv (backend, "package_ids");
length = g_strv_length (package_ids);
@@ -172,8 +172,8 @@ backend_get_details_thread (PkBackend *backend)
RAZOR_DETAIL_LAST)) {
for (i=0; i<length; i++) {
/* TODO: we should cache this */
- ident = pk_package_id_new_from_string (package_ids[i]);
- if (pk_strequal (name, ident->name)) {
+ id = pk_package_id_new_from_string (package_ids[i]);
+ if (pk_strequal (name, id->name)) {
package_id = pk_package_id_build (name, version, arch, "installed");
razor_package_get_details (set, package,
RAZOR_DETAIL_SUMMARY, &summary,
@@ -184,7 +184,7 @@ backend_get_details_thread (PkBackend *backend)
pk_backend_details (backend, package_ids[i], license, PK_GROUP_ENUM_UNKNOWN, description, url, 0);
g_free (package_id);
}
- pk_package_id_free (ident);
+ pk_package_id_free (id);
}
}
@@ -202,6 +202,32 @@ backend_get_details (PkBackend *backend, gchar **package_ids)
}
/**
+ * backend_resolve_package_id:
+ */
+static struct razor_package *
+backend_resolve_package_id (const PkPackageId *id)
+{
+ struct razor_package_iterator *pi;
+ struct razor_package *package;
+ struct razor_package *package_retval = NULL;
+ const gchar *name, *version, *arch;
+
+ pi = razor_package_iterator_create (set);
+ while (razor_package_iterator_next (pi, &package,
+ RAZOR_DETAIL_NAME, &name,
+ RAZOR_DETAIL_VERSION, &version,
+ RAZOR_DETAIL_ARCH, &arch,
+ RAZOR_DETAIL_LAST)) {
+ if (pk_strequal (name, id->name)) {
+ package_retval = package;
+ break;
+ }
+ }
+ razor_package_iterator_destroy (pi);
+ return package_retval;
+}
+
+/**
* backend_get_files:
*/
static void
@@ -210,16 +236,18 @@ backend_get_files (PkBackend *backend, gchar **package_ids)
guint i;
guint length;
const gchar *package_id;
- PkPackageId *ident;
+ struct razor_package *package;
+ PkPackageId *id;
length = g_strv_length (package_ids);
for (i=0; i<length; i++) {
package_id = package_ids[i];
- ident = pk_package_id_new_from_string (package_id);
+ id = pk_package_id_new_from_string (package_id);
/* TODO: we need to get this list! */
- razor_set_list_package_files (set, ident->name);
+ package = backend_resolve_package_id (id);
+ razor_set_list_package_files (set, package);
pk_backend_files (backend, package_id, "/usr/bin/dave;/usr/share/brian");
- pk_package_id_free (ident);
+ pk_package_id_free (id);
}
pk_backend_finished (backend);
}
diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index ddc0562..dfedbd6 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -352,6 +352,7 @@ pk_client_get_tid (PkClient *client)
if (client->priv->tid == NULL) {
return NULL;
}
+ pk_warning ("client->priv->tid=%s", client->priv->tid);
return g_strdup (client->priv->tid);
}
More information about the PackageKit-commit
mailing list