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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# -*- coding: utf-8 -*-
# Copyright John N. Laliberte <allanonjl@gentoo.org>
# LICENSE - GPL2
# the package module
import sys
sys.path = ["modules"]+sys.path
import portage_module
class Package(object):
special_cases = {
"cantarell-fonts":"cantarell",
"gfbgraph":"libgfbgraph",
"GConf":"gnome-base/gconf",
"ORBit2":"orbit",
"libidl":"libIDL",
"libxml++":"libxmlpp",
"pkg-config":"pkgconfig",
"glade":"dev-util/glade",
"glade3":"dev-util/glade",
"gdl":"dev-libs/gdl",
"network-manager-applet": "nm-applet",
"NetworkManager": "networkmanager",
"gtk-theme-engine-clearlooks": "gtk-engines-clearlooks",
"gom":"dev-libs/gom",
"gnome-themes-extra":"gnome-themes-standard",
# Perl package mappings
'Glib' : 'dev-perl/glib-perl',
'Gnome2-Canvas' : 'dev-perl/gnome2-canvas',
'Gnome2-GConf' : 'dev-perl/gnome2-gconf',
'Gnome2-VFS' : 'dev-perl/gnome2-vfs-perl',
'Gnome2' : 'dev-perl/gnome2-perl',
'Gtk2-GladeXML' : 'dev-perl/gtk2-gladexml',
'Gtk2' : 'dev-perl/gtk2-perl',
'Pango' : 'dev-perl/Pango',
# Haskell mess
"glib":"dev-libs/glib",
"gtk":"gui-libs/gtk",
"pango":"x11-libs/pango",
"gstreamer":"media-libs/gstreamer",
"vte":"x11-libs/vte",
}
def __init__(self, raw_data, suite=None):
self.raw_string = raw_data
self.suite = suite
self.name = None
self.version = None
self.revision = None
self.major_minor = None
self.raw_name = None
self.package_version = None
self.category = None
self.parse_raw_string(raw_data)
self.handle_special_cases()
@property
def name_plus_version(self):
return self.name + "-" + self.version
@property
def name_plus_version_plus_revision(self):
return self.name_plus_version + "-" + self.revision
def handle_special_cases(self):
if self.name in self.special_cases:
self.name = self.special_cases[self.name]
def parse_raw_string(self, raw_string):
split_string = portage_module.split_package_into_parts(raw_string)
if None != split_string:
#[cat, pkgname, version, rev ]
self.category, self.name, self.version, self.revision = split_string
self.raw_name = self.name
self.major_minor = self.parse_mm(self.version)
# else:
# print("Error, " + raw_string + " is not a valid package!")
def parse_mm(self, version):
return '.'.join(version.split('.')[0:2])
@property
def major(self):
return self.major_minor.split('.')[0]
@property
def minor(self):
return self.major_minor.split('.')[1] if self.major_minor.find('.') != -1 else 'NONE' # TODO: workaround for gudev, refactor
def print_info(self):
print("Name: " + str(self.name))
print("Version: " + str(self.package_version))
print("Name+Version: " + str(self.name_plus_version))
print("Raw: " + str(self.raw_string))
def __repr__(self):
return self.name_plus_version
class PackageStatus:
def __init__(self, name, portage_version, gnome_version, latest_version, status, stable_version = False, suite=None):
self.name = name
if stable_version is not False:
self.stable_version = stable_version
self.portage_version = portage_version
self.gnome_version = gnome_version
self.latest_version = latest_version
self.status = status
self.suite = suite
class Status(object):
def Compliant(self):
return 0
def NeedUpdate(self):
return 1
def NotFound(self):
return -1
def NewerVersion(self):
return 2
def StableNeedUpdate(self):
return 3
property(Compliant)
property(NeedUpdate)
property(NotFound)
property(NewerVersion)
property(StableNeedUpdate)
|