Package platformids :: Package dist :: Module fedora

Source Code for Module platformids.dist.fedora

  1  # -*- coding: utf-8 -*- 
  2  """Fedora releases. 
  3   
  4  See Fedora - Release Name process ended [FEDORARELNAMES]_. 
  5   
  6  """ 
  7  from __future__ import absolute_import 
  8   
  9  import re 
 10   
 11   
 12  from pythonids import PYV35Plus 
 13  from platformids import RTE_FEDORA, rte2num, num2rte, num2pretty, decode_version_str_to_segments, \ 
 14      PlatformIDsFileCheck 
 15   
 16   
 17  __author__ = 'Arno-Can Uestuensoez' 
 18  __license__ = "Artistic-License-2.0 + Forced-Fairplay-Constraints" 
 19  __copyright__ = "Copyright (C) 2010-2018 Arno-Can Uestuensoez" \ 
 20                  " @Ingenieurbuero Arno-Can Uestuensoez" 
 21  __version__ = '0.1.35' 
 22  __uuid__ = "7add5ded-c39b-4b6e-8c87-1b3a1c150ee9" 
 23   
 24   
 25  RTE_FEDORA19 = RTE_FEDORA       + 0x00004c00  #: Fedora-19 
 26  RTE_FEDORA20 = RTE_FEDORA       + 0x00005000  #: Fedora-20 
 27  RTE_FEDORA21 = RTE_FEDORA       + 0x00005400  #: Fedora-21 
 28  RTE_FEDORA25 = RTE_FEDORA       + 0x00064000  #: Fedora-25 
 29                                           
 30  RTE_FEDORA27 = RTE_FEDORA       + 0x00006c00  #: Fedora-27 - Everything 
 31  RTE_FEDORA28 = RTE_FEDORA       + 0x00007000  #: Fedora-28 - Everything 
 32  RTE_FEDORA29 = RTE_FEDORA       + 0x00007400  #: Fedora-29 - Everything 
 33  RTE_FEDORA30 = RTE_FEDORA       + 0x00007800  #: Fedora-30 - Everything 
 34  RTE_FEDORA31 = RTE_FEDORA       + 0x00007e00  #: Fedora-31 - Everything 
 35  RTE_FEDORA32 = RTE_FEDORA       + 0x00008000  #: Fedora-32 - Everything 
 36  RTE_FEDORA33 = RTE_FEDORA       + 0x00008400  #: Fedora-33 - Everything 
 37   
 38   
 39  #: mapping of the rte string and numeric representation to the numeric value 
 40  rte2num.update( 
 41      { 
 42          "Schroedinger's Cat": RTE_FEDORA19,  # avoid UTF as mandatory: "Schrödinger's Cat" 
 43          'Heisenbug':       RTE_FEDORA20, 
 44          'fedora27':       RTE_FEDORA27, 
 45          'fedora28':       RTE_FEDORA28, 
 46          'fedora29':       RTE_FEDORA29, 
 47          'fedora30':       RTE_FEDORA30, 
 48          'fedora31':       RTE_FEDORA31, 
 49          'fedora32':       RTE_FEDORA32, 
 50          'fedora33':       RTE_FEDORA33, 
 51          RTE_FEDORA19:     RTE_FEDORA19, 
 52          RTE_FEDORA20:     RTE_FEDORA20, 
 53          RTE_FEDORA21:     RTE_FEDORA21, 
 54          RTE_FEDORA25:     RTE_FEDORA25, 
 55          RTE_FEDORA27:     RTE_FEDORA27, 
 56          RTE_FEDORA28:     RTE_FEDORA28, 
 57          RTE_FEDORA29:     RTE_FEDORA29, 
 58          RTE_FEDORA30:     RTE_FEDORA30, 
 59          RTE_FEDORA31:     RTE_FEDORA31, 
 60          RTE_FEDORA32:     RTE_FEDORA32, 
 61          RTE_FEDORA33:     RTE_FEDORA33, 
 62      } 
 63  ) 
 64   
 65   
 66  #: mapping of the rte numeric representation to the string value 
 67  num2rte.update({ 
 68          RTE_FEDORA19:     'fedora19', 
 69          RTE_FEDORA20:     'fedora20', 
 70          RTE_FEDORA27:     'fedora27', 
 71          RTE_FEDORA28:     'fedora28', 
 72          RTE_FEDORA29:     'fedora29', 
 73          RTE_FEDORA30:     'fedora30', 
 74          RTE_FEDORA31:     'fedora31', 
 75          RTE_FEDORA32:     'fedora32', 
 76          RTE_FEDORA33:     'fedora33', 
 77      } 
 78  ) 
 79   
 80  #: mapping of the rte numeric representation to the pretty string value 
 81  num2pretty.update({ 
 82          RTE_FEDORA:       'Fedora Linux', 
 83          RTE_FEDORA19:     "Schroedinger's Cat",  # avoid UTF as mandatory: "Schrödinger's Cat" 
 84          RTE_FEDORA20:     'Heisenbug', 
 85          RTE_FEDORA27:     'Fedora27', 
 86          RTE_FEDORA28:     'Fedora28', 
 87          RTE_FEDORA29:     'Fedora29', 
 88          RTE_FEDORA30:     'Fedora30', 
 89          RTE_FEDORA31:     'Fedora31', 
 90          RTE_FEDORA32:     'Fedora32', 
 91          RTE_FEDORA33:     'Fedora33', 
 92      } 
 93  ) 
 94   
 95   
 96   
 97  dist = ['', '', 'Fedora-', 'Fedora', '', ''] 
 98   
 99  try: 
100      with open("/etc/redhat-release", 'r') as f: 
101          for l in f: 
102              _d = re.split(r'(?s)^([^0-9]*) release *([0-9.]*[^ ]*) [^(]*[(]([^)]*)[)][\n\t ]*$', l) 
103   
104      if _d[1] == 'Fedora': 
105          dist[0] = 'fedora' + _d[2] 
106          dist[4] = decode_version_str_to_segments(_d[2]) 
107          dist[1] = _d[2] 
108          dist[3] = 'Fedora' 
109          dist[5] = 'fedora' 
110   
111          if dist[4][0] > 21: 
112              dist[2] = "Fedora-%d" % (dist[4][0]) 
113          else: 
114              dist[2] = _d[1]     
115   
116   
117  except PlatformIDsFileCheck: 
118      # not on Fedora platform, so scan will fail 
119      pass     
120   
121   
122  if dist[5] != 'fedora': 
123      # does not actually match Fedora 
124      dist = ['fedora', '0.0.0', 'Fedora-0.0.0', 'Fedora00', (0, 0, 0,), 'fedora'] 
125