/usr/share/software-center/softwarecenter/db/utils.py is in software-center 13.10-0ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | # Copyright (C) 2011-2013 Canonical Ltd.
#
# 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; version 3.
#
# 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.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import logging
import os
from gi import version_info as gi_version
from gi.repository import GObject, GLib
import softwarecenter.paths
LOG = logging.getLogger(__name__)
def run_software_center_agent(db):
""" Helper that triggers the update-software-center-agent helper
and will also reopen the database on success
"""
def _on_update_software_center_agent_finished(pid, condition):
LOG.info("software-center-agent finished with status %i" %
os.WEXITSTATUS(condition))
if os.WEXITSTATUS(condition) == 0:
db.reopen()
# run the update
sc_agent_update = os.path.join(
softwarecenter.paths.datadir, "update-software-center-agent")
(pid, stdin, stdout, stderr) = GLib.spawn_async(
[sc_agent_update, "--datadir", softwarecenter.paths.datadir],
flags=GObject.SPAWN_DO_NOT_REAP_CHILD)
# python-gobject >= 3.7.3 has changed some API in incompatible
# ways, so we need to check the version for which one to use.
if gi_version < (3, 7, 3):
GLib.child_watch_add(
pid, _on_update_software_center_agent_finished)
else:
GLib.child_watch_add(
GLib.PRIORITY_DEFAULT,
pid, _on_update_software_center_agent_finished)
def get_installed_apps_list(db):
""" return a list of installed applications """
apps = set()
for doc in db:
if db.get_appname(doc):
pkgname = db.get_pkgname(doc)
if (pkgname in db._aptcache and
db._aptcache[pkgname].is_installed):
apps.add(db.get_application(doc))
return apps
def get_installed_package_list():
""" return a set of all of the currently installed packages """
from softwarecenter.db.pkginfo import get_pkg_info
installed_pkgs = set()
cache = get_pkg_info()
for pkg in cache:
if pkg.is_installed:
installed_pkgs.add(pkg.name)
return installed_pkgs
|