1
2
3
4
5
6
7 """utility functions for up2date"""
8
9 import os
10 import gettext
11 from up2date_client import up2dateErrors
12 from up2date_client import config
13 from up2date_client.pkgplatform import getPlatform
14 from rhn.i18n import sstr
15
16 t = gettext.translation('rhn-client-tools', fallback=True)
17
18 if not hasattr(t, 'ugettext'):
19 t.ugettext = t.gettext
20 _ = t.ugettext
21
22 if getPlatform() == 'deb':
23 import lsb_release
25 dist_info = lsb_release.get_distro_information()
26 os_name = dist_info['ID']
27 os_version = 'n/a'
28 if 'CODENAME' in dist_info:
29 os_version = dist_info['CODENAME']
30 os_release = dist_info['RELEASE']
31 return os_name, os_version, os_release
32
33 else:
34 from up2date_client import transaction
36 ts = transaction.initReadOnlyTransaction()
37 for h in ts.dbMatch('Providename', "oraclelinux-release"):
38 SYSRELVER = 'system-release(releasever)'
39 version = sstr(h['version'])
40 release = sstr(h['release'])
41 if SYSRELVER in (sstr(provide) for provide in h['providename']):
42 provides = dict((sstr(n), sstr(v))
43 for n,v in zip(h['providename'], h['provideversion']))
44 release = '%s-%s' % (version, release)
45 version = provides[SYSRELVER]
46 osVersionRelease = (sstr(h['name']), version, release)
47 return osVersionRelease
48 else:
49 for h in ts.dbMatch('Providename', "redhat-release"):
50 SYSRELVER = 'system-release(releasever)'
51 version = sstr(h['version'])
52 release = sstr(h['release'])
53 if SYSRELVER in (sstr(provide) for provide in h['providename']):
54 provides = dict((sstr(n), sstr(v))
55 for n,v in zip(h['providename'], h['provideversion']))
56 release = '%s-%s' % (version, release)
57 version = provides[SYSRELVER]
58 osVersionRelease = (sstr(h['name']), version, release)
59 return osVersionRelease
60 else:
61 for h in ts.dbMatch('Providename', "distribution-release"):
62 osVersionRelease = (sstr(h['name']), sstr(h['version']), sstr(h['release']))
63
64
65 ts.ts.closeDB()
66 return osVersionRelease
67 else:
68 raise up2dateErrors.RpmError(
69 "Could not determine what version of Red Hat Linux you "\
70 "are running.\nIf you get this error, try running \n\n"\
71 "\t\trpm --rebuilddb\n\n")
72
82
89
96
98 if os.access("/etc/rpm/platform", os.R_OK):
99 fd = open("/etc/rpm/platform", "r")
100 platform = fd.read().strip()
101
102
103
104 replace = {"ia32e-redhat-linux": "x86_64-redhat-linux"}
105 if platform in replace:
106 platform = replace[platform]
107 return platform
108 arch = os.uname()[4]
109 if getPlatform() == 'deb':
110
111 if arch in ['i486', 'i586', 'i686']:
112 arch = 'i386'
113 if arch == 'x86_64':
114 arch = 'amd64'
115 arch += '-debian-linux'
116 return arch
117
119
120 return "@VERSION@"
121