[PackageKit-commit] packagekit: Branch 'master' - 6 commits

Richard Hughes hughsient at kemper.freedesktop.org
Fri Jul 31 06:13:52 PDT 2009


 backends/portage/portageBackend.py |   12 +-
 backends/yum/yumBackend.py         |    5 +
 backends/yum/yumMediaManager.py    |    4 
 backends/yum/yumMediaManagerGIO.py |  153 ++++++++++++++++++++++++++++++++++++
 backends/yum/yumMediaManagerHAL.py |   14 +--
 backends/yum/yumMediaManagerOS.py  |  136 ++++++++++++++++++++++++++++++++
 po/es.po                           |  155 +++++++++++++++++++++----------------
 7 files changed, 398 insertions(+), 81 deletions(-)

New commits:
commit 97ba7c687b872eecf622123aa56956b82fdf8dd2
Author: Muayyad Saleh Alsadi <alsadi at ojuba.org>
Date:   Fri Jul 31 14:11:38 2009 +0100

    Add a few fixes to the existing MediaManager implementation
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/backends/yum/yumMediaManager.py b/backends/yum/yumMediaManager.py
index 8b89c04..a8eaaa2 100644
--- a/backends/yum/yumMediaManager.py
+++ b/backends/yum/yumMediaManager.py
@@ -35,7 +35,7 @@ class MediaDevice(object):
         media_id argument is the implementation-specific id, provided by MediaManager.
         """
         self._unmount_needed = False
-        self._unlocked_needed = False
+        self._unlock_needed = False
         raise NotImplemented
 
     def __del__(self):
@@ -45,7 +45,7 @@ class MediaDevice(object):
         """
         if self._unmount_needed:
             self.unmount()
-        if self._unlocked_needed:
+        if self._unlock_needed:
             self.unlock()
 
     def is_removable(self):
diff --git a/backends/yum/yumMediaManagerHAL.py b/backends/yum/yumMediaManagerHAL.py
index b4068dd..6230ee3 100644
--- a/backends/yum/yumMediaManagerHAL.py
+++ b/backends/yum/yumMediaManagerHAL.py
@@ -23,7 +23,7 @@ This module is inteded to be a proof of concept and it is not supposed to be use
 
 it's used like this
 
-    from yumMediaManager import MediaManager
+    from yumMediaManagerHAL import MediaManagerHAL as MediaManager
     manager = MediaManager()
     media, found = None, False
     for media in manager:
@@ -63,9 +63,8 @@ class MediaDeviceHAL(MediaDevice):
         media_id argument is the implementation-specific id in our case it's udi in hal, 
         it's provided by MediaManager.
         """
-        MediaDevice.__init__(self, media_id)
-        self.__unmount_needed = False
-        self.__unlocked_needed = False
+        self._unmount_needed = False
+        self._unlock_needed = False
         self.__uid = media_id
         self.__dev = bus.get_object("org.freedesktop.Hal", media_id)
         storage_uid = self.__dev.GetPropertyString('block.storage_device', dbus_interface = interface)
@@ -95,7 +94,7 @@ class MediaDeviceHAL(MediaDevice):
         # FIXME: it does not work, it returns None instead of True
         r = self.__dev.Lock('needed by Package Manager', dbus_interface = interface) != False
         # print r
-        self.__unlocked_needed |= bool(r)
+        self._unlock_needed |= bool(r)
         return r
 
     def unlock(self):
@@ -130,7 +129,7 @@ class MediaDeviceHAL(MediaDevice):
         if r != 0:
             return None
 
-        self.__unmount_needed = True
+        self._unmount_needed = True
         return self.get_mount_point() # return Mount point
 
     def unmount(self):
@@ -148,7 +147,6 @@ class MediaDeviceHAL(MediaDevice):
 class MediaManagerHAL(MediaManager):
     """Just iterate over an instance of this class to get MediaDevice objects"""
     def __init__(self):
-        MediaManager.__init__(self)
         self.__dev = bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/Manager")
 
     def __close_tray_and_be_ready(self):
@@ -163,7 +161,7 @@ class MediaManagerHAL(MediaManager):
         self.__close_tray_and_be_ready()
         # use volume.disc to restrict that to optical discs
         for i in self.__dev.FindDeviceByCapability('volume', dbus_interface = 'org.freedesktop.Hal.Manager'):
-            o = MediaDevice(i)
+            o = MediaDeviceHAL(i)
             if o.is_removable():
                 yield o
 
commit 5d1dede4a5fd8e0712e2b737eff7a988841c9632
Author: Muayyad Saleh Alsadi <alsadi at ojuba.org>
Date:   Fri Jul 31 14:11:12 2009 +0100

    Add a linux native MediaManager implementation
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/backends/yum/yumMediaManagerOS.py b/backends/yum/yumMediaManagerOS.py
new file mode 100644
index 0000000..f8cd3a3
--- /dev/null
+++ b/backends/yum/yumMediaManagerOS.py
@@ -0,0 +1,136 @@
+# Licensed under the GNU General Public License Version 2
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Copyright (C) 2009
+#    Muayyad Saleh Alsadi <alsadi at ojuba.org>
+
+"""
+This is the os.system implementation of MediaManager module for dealing with removable media
+This module is inteded to be a proof of concept and it is not supposed to be used in final release
+
+it's used like this
+
+    from yumMediaManagerOS import MediaManagerOS as MediaManager
+    manager=MediaManager()
+    media,found=None,False
+    for media in manager:
+        mnt=media.acquire() # get mount point, mount and lock if needed
+        found=is_it_the_needed_media(mnt)
+        if found: break
+    if found: copy_files ..etc.
+    if media: del media
+
+NOTE: releasing (unmounting and unlocking) is done when media is destructed
+"""
+
+import re,sys, os, os.path
+from glob import glob
+from tempfile import mkdtemp
+from yumMediaManager import MediaManager,MediaDevice
+class MediaDeviceOS(MediaDevice):
+    """
+    You should just use acquire() to get the mount point (the implementation is
+    supposed to be smart enough to return mount point when it's already mounted)
+    You don't need to manually call release(), just destruct MediaDevice object
+    and the implementation should do that if needed.
+    """
+    __ch_re=re.compile(r'\\(0\d\d)')
+    def __init__(self,media_id):
+        """
+        media_id argument is the implementation-specific id
+        in our case it's a the device file in /dev/
+        """
+        self._unmount_needed = False
+        self._unlock_needed = False
+        self.__d = media_id
+
+    def is_removable(self):
+        return True
+
+    def is_mounted(self):
+        return self.get_mount_point()!=None
+
+    def is_locked(self):
+        # FIXME: there is no locks in OS
+        return False
+
+    def get_mount_point(self):
+        """
+        return the mount point or None if not mounted
+        """
+        l=map(lambda i: i.split(), open('/proc/mounts','rt').readlines())
+        d=filter(lambda i: len(i)==6 and i[0]==self.__d, l)
+        if not d: return None
+        mnt=self.__ch_re.sub(lambda m: chr(int(m.group(1),8)),d[0][1])
+        if not os.path.ismount(mnt): return None
+        return mnt
+
+    def lock(self):
+        """
+        return True if lock is successfully acquired.
+        """
+        # FIXME: there is no locks in OS
+        return False
+
+    def unlock(self):
+        """
+        return True if it was able to release the lock successfully.
+        """
+        # FIXME: there is no locks in OS
+        return False
+    
+    def mount(self):
+        """
+        mount the device and return the mount point.
+        If it's already mounted, just return the mount point.
+        """
+        mnt=self.get_mount_point()
+        if mnt!=None: return mnt
+        # do the actual mounting
+        mnt=mkdtemp(prefix='MediaRepo')
+        r=os.system('mount "%s" "%s"' % (self.__d, mnt))
+        if r:
+            try: os.rmdir(mnt)
+            except OSError: pass
+            return None
+        self._unmount_needed|=bool(r==0)
+        # return Mount point
+        return mnt
+
+    def unmount(self):
+        """
+        unmount the device and return True.
+        """
+        mnt=self.get_mount_point()
+        if mnt==None:
+            return True
+        r=os.system('umount "%s"' % (self.__d))
+        if os.path.isdir(mnt):
+            try: os.rmdir(mnt)
+            except OSError: pass
+        return bool(r==0)
+
+class MediaManagerOS(MediaManager):
+    """Just iterate over an instance of this class to get MediaDevice objects"""
+    def __init__(self):
+        pass
+
+    def __iter__(self):
+        l=glob('/dev/sr[0-9]*')
+        for d in l:
+            o=MediaDeviceOS(d)
+            yield o;
+
commit 9ae160e0a458882619a4375b4de9c684c6ea9ae2
Author: Muayyad Saleh Alsadi <alsadi at ojuba.org>
Date:   Fri Jul 31 14:10:57 2009 +0100

    Add a GIO MediaManager implementation
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/backends/yum/yumMediaManagerGIO.py b/backends/yum/yumMediaManagerGIO.py
new file mode 100644
index 0000000..772e6bd
--- /dev/null
+++ b/backends/yum/yumMediaManagerGIO.py
@@ -0,0 +1,153 @@
+# Licensed under the GNU General Public License Version 2
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Copyright (C) 2009
+#    Muayyad Saleh Alsadi <alsadi at ojuba.org>
+
+"""
+This is the GIO implementation of MediaManager module for dealing with removable media
+
+it's used like this
+
+    from yumMediaManagerGIO import MediaManagerGIO as MediaManager
+    manager=MediaManager()
+    media,found=None,False
+    for media in manager:
+        mnt=media.acquire() # get mount point, mount and lock if needed
+        found=is_it_the_needed_media(mnt)
+        if found: break
+    if found: copy_files ..etc.
+    if media: del media
+
+NOTE: releasing (unmounting and unlocking) is done when media is destructed
+"""
+import gio
+import glib
+import os.path
+
+from yumMediaManager import MediaManager,MediaDevice
+
+class MediaDeviceGIO(MediaDevice):
+    """
+    You should just use acquire() to get the mount point (the implementation is
+    supposed to be smart enough to return mount point when it's already mounted)
+    You don't need to manually call release(), just destruct MediaDevice object
+    and the implementation should do that if needed.
+    """
+    def __init__(self,media_id):
+        """
+        media_id argument is the implementation-specific id
+        in our case it's a tuble of device and volume in GIO,
+        the tuble is provided by MediaManager.
+        """
+        self._unmount_needed = False
+        self._unlock_needed = False
+        self.__d = media_id[0]
+        self.__v = media_id[1]
+        self.__loop=glib.MainLoop()
+
+    def is_removable(self):
+        return self.__d.is_media_removable()
+
+    def is_mounted(self):
+        m=self.__v.get_mount()
+        return bool(m and os.path.ismount(m.get_root().get_path()))
+
+    def is_locked(self):
+        # FIXME: there is no locks in GIO
+        return False
+
+    def get_mount_point(self):
+        """
+        return the mount point or None if not mounted
+        """
+        if not self.is_mounted(): return None
+        return self.__v.get_mount().get_root().get_path()
+
+    def lock(self):
+        """
+        return True if lock is successfully acquired.
+        """
+        # FIXME: there is no locks in GIO
+        return False
+
+    def unlock(self):
+        """
+        return True if it was able to release the lock successfully.
+        """
+        # FIXME: there is no locks in GIO
+        return False
+    
+    def __mount_cb(self,src,res):
+        "Internal method used for mounting"
+        self.__mount_r=src.mount_finish (res)
+        self.__loop.quit()
+    def mount(self):
+        """
+        mount the device and return the mount point.
+        If it's already mounted, just return the mount point.
+        """
+        if self.is_mounted():
+            return self.get_mount_point()
+        # do the actual mounting
+        self.__mount_r=False
+        self.__v.mount(gio.MountOperation(),self.__mount_cb)
+        self.__loop.run()
+        if not self.__mount_r: return None
+        self._unmount_needed|=self.__mount_r
+        # return Mount point
+        return self.get_mount_point()
+
+    def __unmount_cb(self,src,res):
+        "Internal method used for unmounting"
+        self.__unmount_r=src.unmount_finish (res)
+        self.__loop.quit()
+
+    def unmount(self):
+        """
+        unmount the device and return True.
+        """
+        m=self.__v.get_mount()
+        if not m or not self.is_mounted():
+            return True
+        self.__unmount_r=False
+        m.unmount(self.__unmount_cb)
+        self.__loop.run()
+        return self.__unmount_r
+
+class MediaManagerGIO(MediaManager):
+    """Just iterate over an instance of this class to get MediaDevice objects"""
+    def __init__(self):
+        self.vm=gio.volume_monitor_get()
+
+    def __iter__(self):
+        l=filter(lambda d: d.is_media_removable(),self.vm.get_connected_drives())
+        l2=[]
+        # loop over devices with media
+        for d in l:
+             if not d.has_media():
+                # skip devices without media
+                l2.append(d)
+                continue
+             # a device could contain many volumes eg. a flash with two partitions
+             for v in d.get_volumes():
+                 o=MediaDeviceGIO((d,v))
+                 yield o;
+        # loop over devices without media (ie. need to close tray and mount)
+        # FIXME: there is no way in GIO to close tray
+        #for i in l2:
+        #    pass
+
commit 8ba3164dd8159309ae4e6f122e580d2aae12c4f0
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Jul 31 08:55:51 2009 +0100

    yum: Abort initialisaton with an error if unfinished transactions are pending. Fixes rh#513557
    
    I'm not completely sold on asking the user to run a tool as root
    just to continue, but unfinished transactions shoulnd't happen,
    and it's not safe just to blunder on unregardless.

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 5c19f50..94e3f56 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -2510,6 +2510,11 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             except Exception, e:
                 raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
 
+        # should we suggest yum-complete-transaction?
+        unfinished = yum.misc.find_unfinished_transactions(yumlibpath=self.yumbase.conf.persistdir)
+        if unfinished:
+            raise PkError(ERROR_FAILED_INITIALIZATION, 'There are unfinished transactions remaining. Please run yum-complete-transaction as root.')
+
         # default to 100% unless method overrides
         self.yumbase.conf.throttle = "90%"
 
commit f6864005cd5e1993487c75a546b1858a31912e29
Author: Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>
Date:   Thu Jul 30 23:38:38 2009 +0200

    portage: don't allow_cancel functions that will affect system even if cancelled

diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
index e084016..19c8d1e 100755
--- a/backends/portage/portageBackend.py
+++ b/backends/portage/portageBackend.py
@@ -1018,7 +1018,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         # TODO: manage config file updates
 
         self.status(STATUS_RUNNING)
-        self.allow_cancel(True)
+        self.allow_cancel(False)
         self.percentage(None)
 
         cpv_list = []
@@ -1075,7 +1075,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         # TODO: do not wait for exception, check timestamp
         # TODO: message if overlay repo has changed (layman)
         self.status(STATUS_REFRESH_CACHE)
-        self.allow_cancel(True)
+        self.allow_cancel(False)
         self.percentage(None)
 
         myopts = {'--quiet': True}
@@ -1095,14 +1095,14 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
             for o in installed_layman_db.overlays.keys():
                 installed_layman_db.sync(o, True)
             _emerge.actions.action_sync(settings, trees, mtimedb, myopts, "")
+        finally:
             self.unblock_output()
         except:
-            self.unblock_output()
             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
 
     def remove_packages(self, allowdep, autoremove, pkgs):
         self.status(STATUS_RUNNING)
-        self.allow_cancel(True)
+        self.allow_cancel(False)
         self.percentage(None)
 
         cpv_list = []
@@ -1413,7 +1413,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
         # TODO: manage config file updates
 
         self.status(STATUS_RUNNING)
-        self.allow_cancel(True)
+        self.allow_cancel(False)
         self.percentage(None)
 
         cpv_list = []
@@ -1462,7 +1462,7 @@ class PackageKitPortageBackend(PackageKitBaseBackend, PackagekitPackage):
 
     def update_system(self, only_trusted):
         self.status(STATUS_RUNNING)
-        self.allow_cancel(True)
+        self.allow_cancel(False)
         self.percentage(None)
 
         if only_trusted:
commit f17051aaf07e987bf51142ca2903b784285eb31b
Author: logan <logan at fedoraproject.org>
Date:   Thu Jul 30 13:03:23 2009 +0000

    Sending translation for Spanish

diff --git a/po/es.po b/po/es.po
index 862cc10..7c642df 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,8 +9,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-23 14:41+0000\n"
-"PO-Revision-Date: 2009-07-23 15:11-0300\n"
+"POT-Creation-Date: 2009-07-30 08:45+0000\n"
+"PO-Revision-Date: 2009-07-30 10:02-0300\n"
 "Last-Translator: Héctor Daniel Cabrera <h.daniel.cabrera at gmail.com>\n"
 "Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -47,7 +47,7 @@ msgstr "Falso"
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
 #: ../client/pk-console.c:237
-#: ../src/pk-polkit-action-lookup.c:256
+#: ../src/pk-polkit-action-lookup.c:297
 msgid "Role"
 msgstr "Rol"
 
@@ -63,7 +63,7 @@ msgstr "(segundos)"
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
 #: ../client/pk-console.c:246
-#: ../src/pk-polkit-action-lookup.c:270
+#: ../src/pk-polkit-action-lookup.c:311
 msgid "Command line"
 msgstr "Línea de comandos"
 
@@ -138,9 +138,14 @@ msgid "Details about the update:"
 msgstr "Detalles acerca de la actualización:"
 
 #. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: title, the names of the packages that the method is processing
 #: ../client/pk-console.c:341
+#: ../src/pk-polkit-action-lookup.c:322
+#, fuzzy
 msgid "Package"
-msgstr "Paquete"
+msgid_plural "Packages"
+msgstr[0] "Paquete"
+msgstr[1] "Paquete"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
 #: ../client/pk-console.c:344
@@ -448,7 +453,7 @@ msgstr "No se encontró ningún paquete para instalar"
 #. TRANSLATORS: installing new packages from package list
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #: ../client/pk-console.c:1381
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:868
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:886
 #, c-format
 msgid "Installing packages"
 msgstr "Instalando paquetes"
@@ -540,8 +545,8 @@ msgstr "Subcomandos:"
 #: ../client/pk-console.c:1781
 #: ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:128
-#: ../contrib/command-not-found/pk-command-not-found.c:521
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:532
+#: ../contrib/command-not-found/pk-command-not-found.c:610
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:550
 #: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Mostrar información extra de depuración"
@@ -844,72 +849,92 @@ msgstr "Elija el paquete correcto: "
 msgid "Please enter a number from 1 to %i: "
 msgstr "Introduzca un número de 1 a %i: "
 
+#. TRANSLATORS: downloading repo data so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:349
+msgid "Downloading details about the software sources."
+msgstr "Descargando detalles acerca de las fuentes de software"
+
+#. TRANSLATORS: downloading file lists so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:353
+msgid "Downloading filelists (this may take some time to complete)."
+msgstr "Descargando listas de archivo (esto podría tardar un tiempo en completarse)."
+
+#. TRANSLATORS: waiting for native lock
+#: ../contrib/command-not-found/pk-command-not-found.c:357
+msgid "Waiting for package manager lock."
+msgstr "Esperando bloqueo del administrador de paquetes."
+
+#. TRANSLATORS: loading package cache so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:361
+msgid "Loading list of packages."
+msgstr "Cargando listas de paquetes"
+
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:372
+#: ../contrib/command-not-found/pk-command-not-found.c:414
 msgid "Failed to search for file"
 msgstr "Falló al buscar el archivo"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:496
+#: ../contrib/command-not-found/pk-command-not-found.c:551
 msgid "Failed to launch:"
 msgstr "Falló al iniciar:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:537
+#: ../contrib/command-not-found/pk-command-not-found.c:626
 msgid "PackageKit Command Not Found"
 msgstr "No se encontró el comando PackageKit"
 
 #. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:560
+#: ../contrib/command-not-found/pk-command-not-found.c:652
 msgid "Command not found."
 msgstr "Comando no encontrado."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:567
+#: ../contrib/command-not-found/pk-command-not-found.c:659
 msgid "Similar command is:"
 msgstr "Un comando similar es:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:576
+#: ../contrib/command-not-found/pk-command-not-found.c:668
 msgid "Run similar command:"
 msgstr "Ejecutar un comando similar:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:588
-#: ../contrib/command-not-found/pk-command-not-found.c:597
+#: ../contrib/command-not-found/pk-command-not-found.c:680
+#: ../contrib/command-not-found/pk-command-not-found.c:689
 msgid "Similar commands are:"
 msgstr "Los comandos similares son:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:604
+#: ../contrib/command-not-found/pk-command-not-found.c:696
 msgid "Please choose a command to run"
 msgstr "Elija un comando para ejecutar"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:619
+#: ../contrib/command-not-found/pk-command-not-found.c:715
 msgid "The package providing this file is:"
 msgstr "El paquete que proporciona este archivo es:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:624
+#: ../contrib/command-not-found/pk-command-not-found.c:720
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "¿Instalar el paquete «%s» para proporcionar el comando «%s»?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:645
+#: ../contrib/command-not-found/pk-command-not-found.c:741
 msgid "Packages providing this file are:"
 msgstr "Los paquetes que proporcionan este archivo son:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:654
+#: ../contrib/command-not-found/pk-command-not-found.c:750
 msgid "Suitable packages are:"
 msgstr "Los posibles paquetes son:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:662
+#: ../contrib/command-not-found/pk-command-not-found.c:758
 msgid "Please choose a package to install"
 msgstr "Elija un paquete para instalar"
 
@@ -968,185 +993,185 @@ msgid "Installing..."
 msgstr "Instalando..."
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:186
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:187
 msgid "Starting install"
 msgstr "Iniciando la instalación"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:379
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:397
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "No se ha podido encontrar el paquete %s, o tal vez ya se encuentre instalado: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:535
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:553
 msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "No se instala ningún paquete realmente, solo se indica cuáles serían instalados"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:538
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
 msgid "Do not install dependencies of the core packages"
 msgstr "No se instalan dependencias de los paquetes principales"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:541
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:559
 msgid "Do not display information or progress"
 msgstr "No se muestra información ni progreso"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:559
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:577
 msgid "PackageKit Debuginfo Installer"
 msgstr "Instalador de depuración de errores de PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:571
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:589
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "ERROR: Debe especificar los nombres de los paquetes a instalar."
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:605
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:623
 #, c-format
 msgid "Getting sources list"
 msgstr "Obteniendo lista desde las fuentes"
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:623
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:663
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:698
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:782
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:893
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:937
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:641
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:681
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:716
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:844
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:911
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:955
 #, c-format
 msgid "OK."
 msgstr "OK."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:626
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:644
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Se han encontrado %i fuentes activas y %i fuentes deshabilitadas."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:633
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:651
 #, c-format
 msgid "Finding debugging sources"
 msgstr "Buscando fuentes para depuración"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:666
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:684
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "Se han encontrado %i repositorios deshabilitados para depuración."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:673
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:691
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "Habilitando fuentes para depuración"
 
 #. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:683
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:767
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:811
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:878
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:922
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:701
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:829
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:940
 msgid "FAILED."
 msgstr "FALLO."
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:701
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:719
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "Se han habilitado %i fuentes para depuración."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:708
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:726
 #, c-format
 msgid "Finding debugging packages"
 msgstr "Buscando paquetes de depuración."
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:720
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:738
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Falló al buscar el paquete %s: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:743
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Fallo al buscar el paquete de depuración %s: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:771
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:789
 #, c-format
 msgid "Found no packages to install."
 msgstr "No se han encontrado paquetes para instalar."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
 #, c-format
 msgid "Found %i packages:"
 msgstr "Se han encontrado %i paquetes:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:801
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:819
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Buscando paquetes que dependan de esos paquetes."
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:814
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:832
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "No se han podido encontrar paquetes dependientes: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:830
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
 #, c-format
 msgid "Found %i extra packages."
 msgstr "Se han encontrado %i paquetes extra."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:834
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
 #, c-format
 msgid "No extra packages required."
 msgstr "No son necesarios paquetes extra."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:843
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:861
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Se han encontrado %i paquetes para instalar:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:856
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:874
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "No se instalan paquetes en modo de simulación"
 
-#. TRANSLATORS: coul dnot install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:881
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "No se han podido instalar paquetes: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:913
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "Deshabilitando fuentes previamente habilitadas"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:925
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:943
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "No es posible deshabilitar las fuentes para depuración:%s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:940
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:958
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "Se han deshabilitado %i fuentes para la depuración. "
@@ -1375,7 +1400,7 @@ msgid "Cannot connect to the system bus"
 msgstr "No se pudo conectar con el bus del sistema"
 
 #. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
-#: ../src/pk-main.c:331
+#: ../src/pk-main.c:334
 msgid "Error trying to start:"
 msgstr "Error intentando iniciar:"
 
@@ -1406,7 +1431,7 @@ msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr "No instale este paquete a menos que sepa con certeza que es seguro hacerlo."
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:263
+#: ../src/pk-polkit-action-lookup.c:304
 msgid "Only trusted"
 msgstr "Solo confiable"
 


More information about the PackageKit-commit mailing list