Package platformids :: Package dist :: Module freebsd

Source Code for Module platformids.dist.freebsd

  1  # -*- coding: utf-8 -*- 
  2  """FreeBSD releases. 
  3  """ 
  4  from __future__ import absolute_import 
  5   
  6  import sys 
  7  import os 
  8  import re 
  9  import platform 
 10   
 11  from pythonids import PYV35Plus 
 12  from platformids import RTE_BSD, 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   
 25  RTE_FREEBSD       = RTE_BSD      + 0x00040000    #: FreeBSD 
 26  # RTE_FREEBSD4     = RTE_FREEBSD   + 0x00001000  #: FREEBSD-4 
 27  # RTE_FREEBSD5     = RTE_FREEBSD   + 0x00001400  #: FREEBSD-5 
 28  # RTE_FREEBSD6     = RTE_FREEBSD   + 0x00001800  #: FREEBSD-6 
 29  # RTE_FREEBSD7     = RTE_FREEBSD   + 0x00001c00  #: FREEBSD-7 
 30  # RTE_FREEBSD8     = RTE_FREEBSD   + 0x00002000  #: FREEBSD-8 
 31  # RTE_FREEBSD9     = RTE_FREEBSD   + 0x00002400  #: FREEBSD-9 
 32  RTE_FREEBSD10    = RTE_FREEBSD   + 0x00002800  #: FREEBSD-10 
 33  RTE_FREEBSD11    = RTE_FREEBSD   + 0x00002c00  #: FREEBSD-11 
 34  RTE_FREEBSD111   = RTE_FREEBSD   + 0x00002c20  #: FREEBSD-11.1 
 35  RTE_FREEBSD112   = RTE_FREEBSD   + 0x00002c40  #: FREEBSD-11.2 
 36  RTE_FREEBSD12    = RTE_FREEBSD   + 0x00003000  #: FREEBSD-12 
 37  RTE_FREEBSD121   = RTE_FREEBSD   + 0x00003020  #: FREEBSD-12.1 
 38  RTE_FREEBSD122   = RTE_FREEBSD   + 0x00003040  #: FREEBSD-12.2 
 39  RTE_FREEBSD13    = RTE_FREEBSD   + 0x00003400  #: FREEBSD-13 
 40  RTE_FREEBSD14    = RTE_FREEBSD   + 0x00003800  #: FREEBSD-14 
 41       
 42       
 43  #: mapping of the rte string and numeric representation to the numeric value 
 44  rte2num.update( 
 45      { 
 46           RTE_FREEBSD: RTE_FREEBSD, 
 47          'freebsd': RTE_FREEBSD, 
 48          'freebsd10': RTE_FREEBSD10, 
 49          'freebsd11': RTE_FREEBSD11, 
 50          'freebsd111': RTE_FREEBSD111, 
 51          'freebsd112': RTE_FREEBSD112, 
 52          'freebsd12': RTE_FREEBSD12, 
 53          'freebsd121': RTE_FREEBSD121, 
 54          'freebsd122': RTE_FREEBSD122, 
 55          'freebsd13': RTE_FREEBSD13, 
 56  #         'freebsd4': RTE_FREEBSD4, 
 57  #         'freebsd5': RTE_FREEBSD5, 
 58  #         'freebsd6': RTE_FREEBSD6, 
 59  #         'freebsd7': RTE_FREEBSD7, 
 60  #         'freebsd8': RTE_FREEBSD8, 
 61  #         'freebsd9': RTE_FREEBSD9, 
 62          RTE_FREEBSD10: RTE_FREEBSD10, 
 63          RTE_FREEBSD111: RTE_FREEBSD111, 
 64          RTE_FREEBSD112: RTE_FREEBSD112, 
 65          RTE_FREEBSD11: RTE_FREEBSD11, 
 66          RTE_FREEBSD12: RTE_FREEBSD12, 
 67          RTE_FREEBSD121: RTE_FREEBSD121, 
 68          RTE_FREEBSD122: RTE_FREEBSD122, 
 69          RTE_FREEBSD13: RTE_FREEBSD13, 
 70  #         RTE_FREEBSD4: RTE_FREEBSD4, 
 71  #         RTE_FREEBSD5: RTE_FREEBSD5, 
 72  #         RTE_FREEBSD6: RTE_FREEBSD6, 
 73  #         RTE_FREEBSD7: RTE_FREEBSD7, 
 74  #         RTE_FREEBSD8: RTE_FREEBSD8, 
 75  #         RTE_FREEBSD9: RTE_FREEBSD9, 
 76      } 
 77  ) 
 78   
 79   
 80  #: mapping of the rte numeric representation to the string value 
 81  num2rte.update( 
 82      { 
 83          RTE_FREEBSD: 'freebsd', 
 84  #         RTE_FREEBSD4: 'freebsd4', 
 85  #         RTE_FREEBSD5: 'freebsd5', 
 86  #         RTE_FREEBSD6: 'freebsd6', 
 87  #         RTE_FREEBSD7: 'freebsd7', 
 88  #         RTE_FREEBSD8: 'freebsd8', 
 89  #         RTE_FREEBSD9: 'freebsd9', 
 90          RTE_FREEBSD10: 'freebsd10', 
 91          RTE_FREEBSD11: 'freebsd11', 
 92          RTE_FREEBSD111: 'freebsd111', 
 93          RTE_FREEBSD112: 'freebsd112', 
 94          RTE_FREEBSD12: 'freebsd12', 
 95          RTE_FREEBSD121: 'freebsd121', 
 96          RTE_FREEBSD122: 'freebsd122', 
 97          RTE_FREEBSD13: 'freebsd13', 
 98      } 
 99  ) 
100   
101  #: mapping of the rte numeric representation to the pretty string value 
102  num2pretty.update( 
103      { 
104          RTE_FREEBSD: 'FreeBSD', 
105          RTE_FREEBSD11: 'FreeBSD-11', 
106          RTE_FREEBSD12: 'FreeBSD-12', 
107          RTE_FREEBSD13: 'FreeBSD-13', 
108      } 
109  ) 
110   
111   
112  dist = ['', '', '', 'FreeBSD', '', ''] 
113   
114  try: 
115      if sys.platform.lower().startswith('freebsd'): 
116          # FreeBSD - CPython, PyPy, IPython 
117          dist[1] = platform.release() 
118          dist[5] = 'freebsd'  
119       
120      elif os.path.exists('/etc/freebsd-update.conf'): 
121          # FreeBSD - match on Jython 
122          x = os.popen("sysctl kern.ostype kern.osrelease", mode='r') 
123          if x.readline().endswith("FreeBSD\n"): 
124              dist[1] = re.sub(r'[^=]*=([0-9.]*).*$', r'\1', x.readline()) 
125              dist[5] = 'freebsd'  
126          x.close() 
127               
128       
129      if dist[5] == 'freebsd': 
130          dist[4] = decode_version_str_to_segments(dist[1]) 
131          dist[0] = 'freebsd%d' % (dist[4][0], dist[4][1], )  
132          dist[2] = 'FreeBSD-%d.%d.%d' %(dist[4][0], dist[4][1], dist[4][2], ) 
133   
134   
135  except PlatformIDsFileCheck: 
136      # not on FreeBSD platform, so scan will fail 
137      pass     
138   
139   
140  if dist[5] != 'freebsd': 
141      # does not actually match FreeBSD 
142      dist = ['freebsd', '0.0.0', 'FreeBSD-0.0.0', 'FreeBSD', (0, 0, 0,), 'freebsd'] 
143