Package platformids :: Package dist :: Module ubuntu

Source Code for Module platformids.dist.ubuntu

  1  # -*- coding: utf-8 -*- 
  2  """Ubuntu releases. 
  3  """ 
  4  from __future__ import absolute_import 
  5   
  6  from pythonids import PYV35Plus 
  7  from platformids import rte2num, num2rte, num2pretty, decode_version_str_to_segments, RTE_UBUNTU, \ 
  8      DSKORG_ID, VERSION_ID, PlatformIDsFileCheck 
  9   
 10   
 11  __author__ = 'Arno-Can Uestuensoez' 
 12  __license__ = "Artistic-License-2.0 + Forced-Fairplay-Constraints" 
 13  __copyright__ = "Copyright (C) 2010-2018 Arno-Can Uestuensoez" \ 
 14                  " @Ingenieurbuero Arno-Can Uestuensoez" 
 15  __version__ = '0.1.30' 
 16  __uuid__ = "7add5ded-c39b-4b6e-8c87-1b3a1c150ee9" 
 17   
 18   
 19   
 20  RTE_UBUNTU1004 = RTE_UBUNTU   + 0x00002880  #: Ubuntu 10.04 LTS (Lucid Lynx) 
 21  RTE_UBUNTU1204 = RTE_UBUNTU   + 0x00003080  #: Ubuntu 12.04 LTS (Precise Pangolin) 
 22  RTE_UBUNTU1404 = RTE_UBUNTU   + 0x00003880  #: Ubuntu 14.04 LTS (Trusty Tahr) 
 23  RTE_UBUNTU1504 = RTE_UBUNTU   + 0x00003c80  #: Ubuntu 15.04 (Vivid Vervet) 
 24  RTE_UBUNTU1510 = RTE_UBUNTU   + 0x00003d40  #: Ubuntu 15.10 (Wily Werewolf) 
 25  RTE_UBUNTU1604 = RTE_UBUNTU   + 0x00004040  #: Ubuntu 16.04 LTS (Xenial Xerus)  
 26  RTE_UBUNTU1610 = RTE_UBUNTU   + 0x00004140  #: Ubuntu 16.10 (Yakkety Yak)  
 27  RTE_UBUNTU1704 = RTE_UBUNTU   + 0x00004480  #: Ubuntu 17.04 (Zesty Zapus)  
 28  RTE_UBUNTU1710 = RTE_UBUNTU   + 0x00004540  #: Ubuntu 17.10 (Artful Aardvark)  
 29  RTE_UBUNTU1804 = RTE_UBUNTU   + 0x00004880  #: Ubuntu 18.04 LTS (Bionic Beaver)  
 30  RTE_UBUNTU1810 = RTE_UBUNTU   + 0x00004940  #: Ubuntu 18.10 (Cosmic Cuttlefish)  
 31  RTE_UBUNTU1904 = RTE_UBUNTU   + 0x00004c80  #: Ubuntu 19.04 (Disco Dingo)  
 32  RTE_UBUNTU1910 = RTE_UBUNTU   + 0x00004c80  #: Ubuntu 19.10 (Eoan EANIMAL)  
 33   
 34  #: mapping of the rte string and numeric representation to the numeric value 
 35  rte2num.update( 
 36      { 
 37          'ArtfulAardvark': RTE_UBUNTU1710, 
 38          'BionicBeaver': RTE_UBUNTU1804, 
 39          'CosmicCuttlefish': RTE_UBUNTU1810, 
 40          'DiscoDingo': RTE_UBUNTU1904, 
 41          'LucidLynx': RTE_UBUNTU1004, 
 42          'PrecisePangolin': RTE_UBUNTU1204, 
 43          'TrustyTahr': RTE_UBUNTU1404, 
 44          'VividVervet': RTE_UBUNTU1504, 
 45          'WilyWerewolf': RTE_UBUNTU1510, 
 46          'XenialXerus': RTE_UBUNTU1604, 
 47          'YakketyYak': RTE_UBUNTU1610, 
 48          'ZestyZapus': RTE_UBUNTU1704, 
 49          'EoanEANIMAL': RTE_UBUNTU1910, 
 50          'ubuntu': RTE_UBUNTU, 
 51          'ubuntu1004': RTE_UBUNTU1004, 
 52          'ubuntu1204': RTE_UBUNTU1204, 
 53          'ubuntu1404': RTE_UBUNTU1404, 
 54          'ubuntu1504': RTE_UBUNTU1504, 
 55          'ubuntu1510': RTE_UBUNTU1510, 
 56          'ubuntu1604': RTE_UBUNTU1604, 
 57          'ubuntu1610': RTE_UBUNTU1610, 
 58          'ubuntu1704': RTE_UBUNTU1704, 
 59          'ubuntu1710': RTE_UBUNTU1710, 
 60          'ubuntu1804': RTE_UBUNTU1804, 
 61          'ubuntu1810': RTE_UBUNTU1810, 
 62          'ubuntu1904': RTE_UBUNTU1904, 
 63          'ubuntu1910': RTE_UBUNTU1910, 
 64          RTE_UBUNTU1004: RTE_UBUNTU1004, 
 65          RTE_UBUNTU1204: RTE_UBUNTU1204, 
 66          RTE_UBUNTU1404: RTE_UBUNTU1404, 
 67          RTE_UBUNTU1504: RTE_UBUNTU1504, 
 68          RTE_UBUNTU1510: RTE_UBUNTU1510, 
 69          RTE_UBUNTU1604: RTE_UBUNTU1604, 
 70          RTE_UBUNTU1610: RTE_UBUNTU1610, 
 71          RTE_UBUNTU1704: RTE_UBUNTU1704, 
 72          RTE_UBUNTU1710: RTE_UBUNTU1710, 
 73          RTE_UBUNTU1804: RTE_UBUNTU1804, 
 74          RTE_UBUNTU1810: RTE_UBUNTU1810, 
 75          RTE_UBUNTU1904: RTE_UBUNTU1904, 
 76          RTE_UBUNTU1910: RTE_UBUNTU1910, 
 77          RTE_UBUNTU: RTE_UBUNTU, 
 78      } 
 79  ) 
 80   
 81   
 82  #: mapping of the rte numeric representation to the string value 
 83  num2rte.update( 
 84      { 
 85          RTE_UBUNTU1004: 'ubuntu1004', 
 86          RTE_UBUNTU1204: 'ubuntu1204', 
 87          RTE_UBUNTU1404: 'ubuntu1404', 
 88          RTE_UBUNTU1504: 'ubuntu1504', 
 89          RTE_UBUNTU1510: 'ubuntu1510', 
 90          RTE_UBUNTU1604: 'ubuntu1604', 
 91          RTE_UBUNTU1610: 'ubuntu1610', 
 92          RTE_UBUNTU1704: 'ubuntu1704', 
 93          RTE_UBUNTU1710: 'ubuntu1710', 
 94          RTE_UBUNTU1804: 'ubuntu1804', 
 95          RTE_UBUNTU1810: 'ubuntu1810', 
 96          RTE_UBUNTU1904: 'ubuntu1904', 
 97          RTE_UBUNTU1910: 'ubuntu1910', 
 98          RTE_UBUNTU:     'ubuntu', 
 99      } 
100  ) 
101   
102  #: mapping of the rte numeric representation to the pretty string value 
103  num2pretty.update( 
104      { 
105          RTE_UBUNTU1004: 'LucidLynx', 
106          RTE_UBUNTU1204: 'PrecisePangolin', 
107          RTE_UBUNTU1404: 'TrustyTahr', 
108          RTE_UBUNTU1504: 'VividVervet', 
109          RTE_UBUNTU1510: 'WilyWerewolf', 
110          RTE_UBUNTU1604: 'XenialXerus', 
111          RTE_UBUNTU1610: 'YakketyYak', 
112          RTE_UBUNTU1704: 'ZestyZapus', 
113          RTE_UBUNTU1710: 'ArtfulAardvark', 
114          RTE_UBUNTU1804: 'BionicBeaver', 
115          RTE_UBUNTU1810: 'CosmicCuttlefish', 
116          RTE_UBUNTU1904: 'DiscoDingo', 
117          RTE_UBUNTU1910: 'EoanEANIMAL', 
118          RTE_UBUNTU:     'Ubuntu', 
119      } 
120  ) 
121   
122   
123  dist = ['', '', '', 'Ubuntu', '', ''] 
124   
125  try: 
126       
127      with open("/etc/os-release", 'r') as f: 
128          for l in f: 
129               
130              if l.startswith('ID='): 
131                  dist[5] = DSKORG_ID.sub(r'\1', l) 
132               
133              elif l.startswith('VERSION_ID='):  # Ubuntu, redundant in Slackware 
134                  dist[1] = VERSION_ID.sub(r'\1', l)   
135   
136      if dist[5] == 'ubuntu':     
137          dist[4] = decode_version_str_to_segments(dist[1]) 
138          dist[0] = '%s%d%d' % (dist[5], dist[4][0], dist[4][1], )  
139          dist[2] = 'Ubuntu-%d.%d.%d' % (dist[4][0], dist[4][1], dist[4][2], )  
140   
141   
142  except PlatformIDsFileCheck: 
143      # not on Ubuntu platform, so scan will fail 
144      pass     
145   
146   
147  if dist[5] != 'ubuntu': 
148      # does not actually match Ubuntu 
149      dist = ['ubuntu', '0.0.0', 'Ubuntu-0.0.0', 'Ubuntu', (0, 0, 0,), 'ubuntu'] 
150