~gary-lasker/software-center/launcher-integration-for-p

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Copyright (C) 2009 Canonical
#
# Authors:
#  Andrew Higginson
#
# 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

# ensure we don't create directories in /home/$user
if os.getuid() == 0 and "SUDO_USER" in os.environ and "HOME" in os.environ:
    del os.environ["HOME"]
# the check above must be *before* xdg is imported

# py3 possible compat mode (there is no python3-xdg yet)
# try:
#     from xdg import BaseDirectory as xdg
# except ImportError:
#     import collections
#     klass = collections.namedtuple('xdg', 'xdg_config_home, xdg_cache_home')
#     xdg = klass(xdg_config_home=os.path.expanduser("~/.config"),
#                 xdg_cache_home=os.path.expanduser("~/.cache"))
from xdg import BaseDirectory as xdg

from softwarecenter.toolkit import CURRENT_TOOLKIT, UIToolkits

# global datadir, this maybe overriden at startup
datadir = "/usr/share/software-center/"

# system pathes
APP_INSTALL_PATH = "/usr/share/app-install"
APP_INSTALL_DESKTOP_PATH = APP_INSTALL_PATH+"/desktop/"
APP_INSTALL_CHANNELS_PATH = APP_INSTALL_PATH+"/channels/"
ICON_PATH = APP_INSTALL_PATH+"/icons/"
APPSTREAM_BASE_PATH = "/usr/share/app-info"
APPSTREAM_XML_PATH = APPSTREAM_BASE_PATH + "/xmls/"

SOFTWARE_CENTER_BASE = "/usr/share/software-center"
SOFTWARE_CENTER_PLUGIN_DIRS = [
    os.environ.get("SOFTWARE_CENTER_PLUGINS_DIR", ""),
    os.path.join(SOFTWARE_CENTER_BASE, "plugins"),
    os.path.join(xdg.xdg_data_home, "software-center", "plugins"),
    ]

# FIXME: use relative paths here
INSTALLED_ICON = "/usr/share/software-center/icons/software-center-installed.png"
IMAGE_LOADING = "/usr/share/icons/hicolor/32x32/animations/softwarecenter-loading.gif"
IMAGE_LOADING_INSTALLED = "/usr/share/icons/hicolor/32x32/animations/softwarecenter-loading-installed.gif"

# xapian pathes
XAPIAN_BASE_PATH = "/var/cache/software-center"
XAPIAN_BASE_PATH_SOFTWARE_CENTER_AGENT = os.path.join(
    xdg.xdg_cache_home,
    "software-center", 
    "software-center-agent.db")
XAPIAN_PATH=os.path.join(XAPIAN_BASE_PATH, "xapian")

# ratings&review
# relative to datadir
class RNRApps:
    if CURRENT_TOOLKIT is UIToolkits.GTK2:
        SUBMIT_REVIEW = "submit_review.py"
        REPORT_REVIEW = "report_review.py"
        SUBMIT_USEFULNESS = "submit_usefulness.py"
        MODIFY_REVIEW = "modify_review.py"
        DELETE_REVIEW = "delete_review.py"
    elif CURRENT_TOOLKIT is UIToolkits.GTK3:
        SUBMIT_REVIEW = "submit_review_gtk3.py"
        REPORT_REVIEW = "report_review_gtk3.py"
        SUBMIT_USEFULNESS = "submit_usefulness_gtk3.py"
        MODIFY_REVIEW = "modify_review_gtk3.py"
        DELETE_REVIEW = "delete_review_gtk3.py"

# piston helpers
class PistonHelpers:
    GET_REVIEWS = "piston_get_reviews_helper.py"
    GET_REVIEW_STATS = "piston_get_review_stats_helper.py"
    GET_USEFUL_VOTES = "piston_get_useful_votes_helper.py"
    SOFTWARE_CENTER_AGENT = "piston_get_scagent_available_apps.py"

X2GO_HELPER = "x2go_helper.py"

# there was a bug in maverick 3.0.3 (#652151) that could lead to a empty
# root owned directory in ~/.cache/software-center - we remove it here
# so that it gets later re-created with the right permissions
def try_to_fixup_root_owned_dir_via_remove(directory):
    if os.path.exists(directory) and not os.access(directory, os.W_OK):
        try:
            logging.warn("trying to fix not writable cache directory")
            os.rmdir(directory)
        except:
            logging.exception("failed to fix not writable cache directory")

if "SOFTWARE_CENTER_FAKE_REVIEW_API" in os.environ:
    SOFTWARE_CENTER_CONFIG_DIR = os.path.join(xdg.xdg_config_home, "software-center", "fake-review")
    SOFTWARE_CENTER_CACHE_DIR = os.path.join(xdg.xdg_cache_home, "software-center", "fake-review")
else:
    SOFTWARE_CENTER_CONFIG_DIR = os.path.join(xdg.xdg_config_home, "software-center")
    SOFTWARE_CENTER_CACHE_DIR = os.path.join(xdg.xdg_cache_home, "software-center")
    
# FIXUP a brief broken software-center in maverick
try_to_fixup_root_owned_dir_via_remove(SOFTWARE_CENTER_CACHE_DIR)

SOFTWARE_CENTER_CONFIG_FILE = os.path.join(SOFTWARE_CENTER_CONFIG_DIR, "softwarecenter.cfg") 
SOFTWARE_CENTER_ICON_CACHE_DIR = os.path.join(SOFTWARE_CENTER_CACHE_DIR, "icons")