Package platformids :: Package dist :: Module centos

Source Code for Module platformids.dist.centos

  1  # -*- coding: utf-8 -*- 
  2  """CentOS releases. 
  3  """ 
  4  from __future__ import absolute_import 
  5   
  6  import re 
  7   
  8  from pythonids import PYV35Plus 
  9  from platformids import RTE_CENTOS, rte2num, num2rte, num2pretty, decode_version_str_to_segments, \ 
 10      PlatformIDsFileCheck 
 11   
 12  __author__ = 'Arno-Can Uestuensoez' 
 13  __license__ = "Artistic-License-2.0 + Forced-Fairplay-Constraints" 
 14  __copyright__ = "Copyright (C) 2010-2018 Arno-Can Uestuensoez" \ 
 15                  " @Ingenieurbuero Arno-Can Uestuensoez" 
 16  __version__ = '0.1.35' 
 17  __uuid__ = "7add5ded-c39b-4b6e-8c87-1b3a1c150ee9" 
 18   
 19   
 20  # 
 21  # for bit mapping scheme see manuals "2-number version" 
 22  # 
 23   
 24  RTE_CENTOS5    = RTE_CENTOS     + 0x00001400  #: CentOS-5 - EOL-2007 
 25   
 26  RTE_CENTOS6    = RTE_CENTOS     + 0x00001800  #: CentOS-6.0 
 27  RTE_CENTOS60   = RTE_CENTOS6    + 0x00000000  #: CentOS-6.0 
 28  RTE_CENTOS61   = RTE_CENTOS6    + 0x00000020  #: CentOS-6.1 
 29  RTE_CENTOS62   = RTE_CENTOS6    + 0x00000040  #: CentOS-6.2 
 30  RTE_CENTOS63   = RTE_CENTOS6    + 0x00000060  #: CentOS-6.3 
 31  RTE_CENTOS64   = RTE_CENTOS6    + 0x00000080  #: CentOS-6.4 
 32  RTE_CENTOS65   = RTE_CENTOS6    + 0x000000a0  #: CentOS-6.5 
 33  RTE_CENTOS66   = RTE_CENTOS6    + 0x000000c0  #: CentOS-6.6   
 34  RTE_CENTOS67   = RTE_CENTOS6    + 0x000000e0  #: CentOS-6.7 
 35  RTE_CENTOS68   = RTE_CENTOS6    + 0x00000100  #: CentOS-6.8 
 36  RTE_CENTOS69   = RTE_CENTOS6    + 0x00000120  #: CentOS-6.9 
 37  RTE_CENTOS610  = RTE_CENTOS6    + 0x00000140  #: CentOS-6.10 
 38  RTE_CENTOS611  = RTE_CENTOS6    + 0x00000160  #: CentOS-6.11 
 39  RTE_CENTOS612  = RTE_CENTOS6    + 0x0000018c  #: CentOS-6.12 
 40   
 41  RTE_CENTOS7    = RTE_CENTOS     + 0x00001c00  #: CentOS-7.0 
 42  RTE_CENTOS70   = RTE_CENTOS7    + 0x00000000  #: CentOS-7.0 
 43  RTE_CENTOS71   = RTE_CENTOS7    + 0x00000020  #: CentOS-7.1 
 44  RTE_CENTOS72   = RTE_CENTOS7    + 0x00000040  #: CentOS-7.2 
 45  RTE_CENTOS73   = RTE_CENTOS7    + 0x00000060  #: CentOS-7.3 
 46  RTE_CENTOS74   = RTE_CENTOS7    + 0x00000080  #: CentOS-7.4 
 47  RTE_CENTOS75   = RTE_CENTOS7    + 0x000000a0  #: CentOS-7.5 
 48  RTE_CENTOS76   = RTE_CENTOS7    + 0x000000c0  #: CentOS-7.6 
 49  RTE_CENTOS77   = RTE_CENTOS7    + 0x000000d0  #: CentOS-7.7 
 50  RTE_CENTOS78   = RTE_CENTOS7    + 0x00000100  #: CentOS-7.8 
 51  RTE_CENTOS79   = RTE_CENTOS7    + 0x00000120  #: CentOS-7.9 
 52  RTE_CENTOS710  = RTE_CENTOS7    + 0x00000140  #: CentOS-7.10 
 53  RTE_CENTOS711  = RTE_CENTOS7    + 0x00000160  #: CentOS-7.11 
 54   
 55  RTE_CENTOS8    = RTE_CENTOS     + 0x00002000  #: CentOS-8.0 
 56   
 57  RTE_CENTOS9    = RTE_CENTOS     + 0x00002400  #: CentOS-9.0 
 58  RTE_CENTOS10   = RTE_CENTOS     + 0x00002800  #: CentOS-10.0 
 59  RTE_CENTOS11   = RTE_CENTOS     + 0x00002c00  #: CentOS-11.0 
 60  RTE_CENTOS12   = RTE_CENTOS     + 0x00003000  #: CentOS-12.0 
 61   
 62       
 63  #: mapping of the rte string and numeric representation to the numeric value 
 64  rte2num.update( 
 65      { 
 66          'centos10':     RTE_CENTOS10, 
 67          'centos5':      RTE_CENTOS5, 
 68          'centos6':      RTE_CENTOS6, 
 69          'centos60':     RTE_CENTOS60, 
 70          'centos61':     RTE_CENTOS61, 
 71          'centos62':     RTE_CENTOS62, 
 72          'centos63':     RTE_CENTOS63, 
 73          'centos64':     RTE_CENTOS64, 
 74          'centos65':     RTE_CENTOS65, 
 75          'centos66':     RTE_CENTOS66, 
 76          'centos67':     RTE_CENTOS67, 
 77          'centos68':     RTE_CENTOS68, 
 78          'centos69':     RTE_CENTOS69, 
 79          'centos610':    RTE_CENTOS610, 
 80          'centos7':      RTE_CENTOS7, 
 81          'centos70':      RTE_CENTOS7, 
 82          'centos71':      RTE_CENTOS71, 
 83          'centos72':      RTE_CENTOS72, 
 84          'centos73':      RTE_CENTOS73, 
 85          'centos74':      RTE_CENTOS74, 
 86          'centos75':     RTE_CENTOS75, 
 87          'centos76':     RTE_CENTOS76, 
 88          'centos8':      RTE_CENTOS8, 
 89          'centos9':      RTE_CENTOS9, 
 90          RTE_CENTOS10:   RTE_CENTOS10, 
 91          RTE_CENTOS5:    RTE_CENTOS5, 
 92          RTE_CENTOS610:  RTE_CENTOS610, 
 93          RTE_CENTOS6:    RTE_CENTOS6, 
 94          RTE_CENTOS75:   RTE_CENTOS75, 
 95          RTE_CENTOS7:    RTE_CENTOS7, 
 96          RTE_CENTOS8:    RTE_CENTOS8, 
 97          RTE_CENTOS9:    RTE_CENTOS9, 
 98      } 
 99  ) 
100   
101   
102  #: mapping of the rte numeric representation to the string value 
103  num2rte.update( 
104      { 
105          RTE_CENTOS5: 'centos5', 
106          RTE_CENTOS6: 'centos60', 
107          RTE_CENTOS60: 'centos60', 
108          RTE_CENTOS61: 'centos61', 
109          RTE_CENTOS62: 'centos62', 
110          RTE_CENTOS63: 'centos63', 
111          RTE_CENTOS64: 'centos64', 
112          RTE_CENTOS65: 'centos65', 
113          RTE_CENTOS66: 'centos66', 
114          RTE_CENTOS67: 'centos67', 
115          RTE_CENTOS68: 'centos68', 
116          RTE_CENTOS69: 'centos69', 
117          RTE_CENTOS610: 'centos610', 
118          RTE_CENTOS7: 'centos7', 
119          RTE_CENTOS70: 'centos70', 
120          RTE_CENTOS71: 'centos71', 
121          RTE_CENTOS72: 'centos72', 
122          RTE_CENTOS73: 'centos73', 
123          RTE_CENTOS74: 'centos74', 
124          RTE_CENTOS75: 'centos75', 
125          RTE_CENTOS76: 'centos76', 
126          RTE_CENTOS77: 'centos77', 
127          RTE_CENTOS78: 'centos78', 
128          RTE_CENTOS79: 'centos79', 
129          RTE_CENTOS710: 'centos710', 
130          RTE_CENTOS8: 'centos8', 
131          RTE_CENTOS9: 'centos9', 
132          RTE_CENTOS10: 'centos10', 
133      } 
134  ) 
135   
136  #: mapping of the rte numeric representation to the string value 
137  num2pretty.update( 
138      { 
139          RTE_CENTOS60: 'CentOS-6.0', 
140          RTE_CENTOS610: 'CentOS-6.10', 
141          RTE_CENTOS61: 'CentOS-6.1', 
142          RTE_CENTOS62: 'CentOS-6.2', 
143          RTE_CENTOS63: 'CentOS-6.3', 
144          RTE_CENTOS64: 'CentOS-6.4', 
145          RTE_CENTOS65: 'CentOS-6.5', 
146          RTE_CENTOS66: 'CentOS-6.6', 
147          RTE_CENTOS67: 'CentOS-6.7', 
148          RTE_CENTOS68: 'CentOS-6.8', 
149          RTE_CENTOS69: 'CentOS-6.9', 
150          RTE_CENTOS6:  'CentOS-6.0', 
151          RTE_CENTOS70: 'CentOS-7.0-1406', 
152          RTE_CENTOS71: 'CentOS-7.1-1503', 
153          RTE_CENTOS72: 'CentOS-7.2-1511', 
154          RTE_CENTOS73: 'CentOS-7.3-1611', 
155          RTE_CENTOS74: 'CentOS-7.4-1708', 
156          RTE_CENTOS75: 'CentOS-7.5-1804', 
157          RTE_CENTOS76: 'CentOS-7.6-1810', 
158          RTE_CENTOS7:  'CentOS-7.0-1406', 
159          RTE_CENTOS8:  'CentOS-8', 
160          RTE_CENTOS9:  'CentOS-9', 
161          RTE_CENTOS:   'CentOS', 
162      } 
163  ) 
164   
165   
166  dist = ['', '', '', 'CentOS', '', ''] 
167   
168  try: 
169      with open("/etc/redhat-release", 'r') as f: 
170          for l in f: 
171              _d = re.split(r'(?s)^([^0-9]*) release *([0-9.]*[^ ]*) [^(]*[(]([^)]*)[)][\n\t ]*$', l) 
172       
173      if _d[1].startswith('CentOS'): 
174          dist[1] = _d[2] 
175          dist[4] = decode_version_str_to_segments(_d[2]) 
176          dist[0] = 'centos%d%d' % (dist[4][0], dist[4][1]) 
177          dist[2] = "CentOS-" + _d[2] 
178          dist[5] = 'centos' 
179   
180   
181  except PlatformIDsFileCheck: 
182      # not on CentOS platform, so scan will fail 
183      pass     
184   
185   
186  if dist[5] != 'centos': 
187      # does not actually match CentOS 
188      dist = ['centos', '0.0.0', 'CentOS-0.0.0', 'CentOS', (0, 0, 0,), 'centos'] 
189