Package platformids :: Package dist :: Module openbsd

Source Code for Module platformids.dist.openbsd

  1  # -*- coding: utf-8 -*- 
  2  """OpenBSD releases. 
  3  """ 
  4  from __future__ import absolute_import 
  5   
  6  import os 
  7  import sys 
  8  import re 
  9  import platform 
 10   
 11  from pythonids import PYV35Plus 
 12  from platformids import RTE_OPENBSD, rte2num, num2rte, num2pretty, decode_version_str_to_segments, \ 
 13      PlatformIDsFileCheck 
 14   
 15   
 16  __author__ = 'Arno-Can Uestuensoez' 
 17  __license__ = "Artistic-License-2.0 + Forced-Fairplay-Constraints" 
 18  __copyright__ = "Copyright (C) 2010-2018 Arno-Can Uestuensoez" \ 
 19                  " @Ingenieurbuero Arno-Can Uestuensoez" 
 20  __version__ = '0.1.35' 
 21  __uuid__ = "7add5ded-c39b-4b6e-8c87-1b3a1c150ee9" 
 22   
 23   
 24  RTE_OPENBSD4   = RTE_OPENBSD    +  0x00001000  #: OPENBSD-4 
 25  RTE_OPENBSD5   = RTE_OPENBSD    +  0x00001400  #: OPENBSD-5 
 26   
 27  RTE_OPENBSD6   = RTE_OPENBSD    +  0x00001800  #: OPENBSD-6 
 28  RTE_OPENBSD61  = RTE_OPENBSD6   +  0x00000020  #: OPENBSD-6.1 
 29  RTE_OPENBSD62  = RTE_OPENBSD6   +  0x00000040  #: OPENBSD-6.2 
 30  RTE_OPENBSD63  = RTE_OPENBSD6   +  0x00000060  #: OPENBSD-6.3 
 31  RTE_OPENBSD64  = RTE_OPENBSD6   +  0x00000080  #: OPENBSD-6.4 
 32  RTE_OPENBSD65  = RTE_OPENBSD6   +  0x000000b0  #: OPENBSD-6.5 
 33  RTE_OPENBSD66  = RTE_OPENBSD6   +  0x000000d0  #: OPENBSD-6.6 
 34  RTE_OPENBSD67  = RTE_OPENBSD6   +  0x000000e0  #: OPENBSD-6.7 
 35  RTE_OPENBSD68  = RTE_OPENBSD6   +  0x00000100  #: OPENBSD-6.8 
 36   
 37  RTE_OPENBSD7   = RTE_OPENBSD    +  0x00001c00  #: OPENBSD-7 
 38  RTE_OPENBSD8   = RTE_OPENBSD    +  0x00002000  #: OPENBSD-8 
 39  RTE_OPENBSD9   = RTE_OPENBSD    +  0x00002400  #: OPENBSD-9 
 40  RTE_OPENBSD10  = RTE_OPENBSD    +  0x00002800  #: OPENBSD-10 
 41   
 42   
 43  #: mapping of the rte string and numeric representation to the numeric value 
 44  rte2num.update( 
 45      { 
 46          'openbsd': RTE_OPENBSD, 
 47  #         'openbsd4': RTE_OPENBSD4, 
 48          'openbsd5': RTE_OPENBSD5, 
 49          'openbsd6': RTE_OPENBSD6, 
 50          'openbsd61': RTE_OPENBSD61, 
 51          'openbsd62': RTE_OPENBSD62, 
 52          'openbsd63': RTE_OPENBSD63, 
 53          'openbsd64': RTE_OPENBSD64, 
 54          'openbsd65': RTE_OPENBSD65, 
 55          'openbsd66': RTE_OPENBSD66, 
 56          'openbsd67': RTE_OPENBSD67, 
 57          'openbsd68': RTE_OPENBSD68, 
 58          'openbsd7': RTE_OPENBSD7, 
 59          'openbsd8': RTE_OPENBSD8, 
 60          'openbsd9': RTE_OPENBSD9, 
 61          'openbsd10': RTE_OPENBSD10, 
 62          RTE_OPENBSD: RTE_OPENBSD, 
 63  #         RTE_OPENBSD4: RTE_OPENBSD4, 
 64          RTE_OPENBSD5: RTE_OPENBSD5, 
 65          RTE_OPENBSD6: RTE_OPENBSD6, 
 66          RTE_OPENBSD61: RTE_OPENBSD61, 
 67          RTE_OPENBSD62: RTE_OPENBSD62, 
 68          RTE_OPENBSD63: RTE_OPENBSD63, 
 69          RTE_OPENBSD64: RTE_OPENBSD64, 
 70          RTE_OPENBSD65: RTE_OPENBSD65, 
 71          RTE_OPENBSD66: RTE_OPENBSD66, 
 72          RTE_OPENBSD67: RTE_OPENBSD67, 
 73          RTE_OPENBSD68: RTE_OPENBSD68, 
 74          RTE_OPENBSD7: RTE_OPENBSD7, 
 75          RTE_OPENBSD8: RTE_OPENBSD8, 
 76          RTE_OPENBSD9: RTE_OPENBSD9, 
 77          RTE_OPENBSD10: RTE_OPENBSD10, 
 78      } 
 79  ) 
 80   
 81   
 82  #: mapping of the rte numeric representation to the string value 
 83  num2rte.update( 
 84      { 
 85          RTE_OPENBSD: 'openbsd', 
 86  #         RTE_OPENBSD4: 'openbsd4', 
 87          RTE_OPENBSD5: 'openbsd5', 
 88          RTE_OPENBSD6: 'openbsd6', 
 89          RTE_OPENBSD61: 'openbsd61', 
 90          RTE_OPENBSD62: 'openbsd62', 
 91          RTE_OPENBSD63: 'openbsd63', 
 92          RTE_OPENBSD64: 'openbsd64', 
 93          RTE_OPENBSD65: 'openbsd65', 
 94          RTE_OPENBSD66: 'openbsd66', 
 95          RTE_OPENBSD67: 'openbsd67', 
 96          RTE_OPENBSD7: 'openbsd7', 
 97          RTE_OPENBSD8: 'openbsd8', 
 98          RTE_OPENBSD9: 'openbsd9', 
 99          RTE_OPENBSD10: 'openbsd10', 
100      } 
101  ) 
102   
103  #: mapping of the rte numeric representation to the pretty string value 
104  num2pretty.update( 
105      { 
106          RTE_OPENBSD: 'OpenBSD', 
107      } 
108  ) 
109   
110   
111   
112  dist = ['', '', '', 'OpenBSD', '', ''] 
113   
114  try: 
115   
116      if sys.platform.startswith('openbsd'): 
117          # OpenBSD - CPython, PyPy, IPython 
118          dist[1] = platform.release() 
119          dist[5] = 'openbsd' 
120       
121      elif os.path.exists('/bsd.booted'): 
122          # OpenBSD - match on Jython 
123          x = os.popen("sysctl kern.ostype kern.osrelease", mode='r') 
124          if x.readline().endswith("OpenBSD\n"): 
125              # 'kern.ostype=OpenBSD\n' 
126              _r = x.readline() 
127              # 'kern.osrelease=6.3\n' 
128          x.close() 
129          dist[1] = _r = re.sub(r'[^=]*=([0-9.]*).*$', r'\1', _r) 
130          dist[5] = 'openbsd' 
131   
132   
133      if dist[5] == 'openbsd': 
134          dist[4] = decode_version_str_to_segments(dist[1]) 
135          dist[0] = 'openbsd%d' % (dist[4][0], dist[4][1], )  
136          dist[2] = 'OpenBSD-%d.%d.%d' %(dist[4][0], dist[4][1], dist[4][2], ) 
137           
138           
139  except PlatformIDsFileCheck: 
140      # not on OpenBSD platform, so scan will fail 
141      pass     
142   
143   
144  if dist[5] != 'openbsd': 
145      # does not actually match OpenBSD 
146      dist = ['openbsd', '0.0.0', 'OpenBSD-0.0.0', 'OpenBSD', (0, 0, 0,), 'openbsd'] 
147