Package platformids :: Package dist :: Module debian

Source Code for Module platformids.dist.debian

  1  # -*- coding: utf-8 -*- 
  2  """Debian releases. 
  3  """ 
  4  from __future__ import absolute_import 
  5   
  6  import os 
  7  import re 
  8   
  9  from pythonids import PYV35Plus 
 10  from platformids import RTE_DEBIAN, rte2num, num2rte, num2pretty, decode_version_str_to_segments, \ 
 11      DSKORG_ID, PlatformIDsFileCheck 
 12   
 13   
 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.29' 
 21  __uuid__ = "7add5ded-c39b-4b6e-8c87-1b3a1c150ee9" 
 22   
 23   
 24  RTE_DEBIAN7 = RTE_DEBIAN      + 0x00001c00  #: Debian - wheezy 
 25   
 26  RTE_DEBIAN8 = RTE_DEBIAN      + 0x00002000  #: Debian - jessy 
 27  RTE_DEBIAN80 = RTE_DEBIAN8    + 0x00002000  #: Debian - jessy 
 28  RTE_DEBIAN81 = RTE_DEBIAN8    + 0x00002020  #: Debian - jessy 
 29  RTE_DEBIAN82 = RTE_DEBIAN8    + 0x00002040  #: Debian - jessy 
 30  RTE_DEBIAN83 = RTE_DEBIAN8    + 0x00002060  #: Debian - jessy 
 31  RTE_DEBIAN84 = RTE_DEBIAN8    + 0x00002080  #: Debian - jessy 
 32  RTE_DEBIAN85 = RTE_DEBIAN8    + 0x000020a0  #: Debian - jessy 
 33  RTE_DEBIAN86 = RTE_DEBIAN8    + 0x000020c0  #: Debian - jessy 
 34  RTE_DEBIAN87 = RTE_DEBIAN8    + 0x000020e0  #: Debian - jessy 
 35  RTE_DEBIAN88 = RTE_DEBIAN8    + 0x00002100  #: Debian - jessy 
 36  RTE_DEBIAN89 = RTE_DEBIAN8    + 0x00002120  #: Debian - jessy 
 37  RTE_DEBIAN810 = RTE_DEBIAN8   + 0x00002140  #: Debian - jessy 
 38   
 39  RTE_DEBIAN9 = RTE_DEBIAN      + 0x00002400  #: Debian - stretch 
 40  RTE_DEBIAN90 = RTE_DEBIAN9    + 0x00002400  #: Debian - stretch 
 41  RTE_DEBIAN91 = RTE_DEBIAN9    + 0x00002420  #: Debian - stretch 
 42  RTE_DEBIAN92 = RTE_DEBIAN9    + 0x00002440  #: Debian - stretch 
 43  RTE_DEBIAN93 = RTE_DEBIAN9    + 0x00002460  #: Debian - stretch 
 44  RTE_DEBIAN94 = RTE_DEBIAN9    + 0x00002480  #: Debian - stretch 
 45  RTE_DEBIAN95 = RTE_DEBIAN9    + 0x000024a0  #: Debian - stretch 
 46  RTE_DEBIAN96 = RTE_DEBIAN9    + 0x000024c0  #: Debian - stretch 
 47  RTE_DEBIAN97 = RTE_DEBIAN9    + 0x000024e0  #: Debian - stretch 
 48  RTE_DEBIAN98 = RTE_DEBIAN9    + 0x00002500  #: Debian - stretch 
 49  RTE_DEBIAN99 = RTE_DEBIAN9    + 0x00002520  #: Debian - stretch 
 50   
 51  RTE_DEBIAN10 = RTE_DEBIAN     + 0x00002800  #: Debian - buster  
 52  RTE_DEBIAN100 = RTE_DEBIAN    + 0x00002800  #: Debian - buster  
 53  RTE_DEBIAN101 = RTE_DEBIAN    + 0x00002820  #: Debian - buster  
 54  RTE_DEBIAN102 = RTE_DEBIAN    + 0x00002840  #: Debian - buster  
 55   
 56  RTE_DEBIAN11 = RTE_DEBIAN     + 0x00002c80  #: Debian - bullseye 
 57  RTE_DEBIAN12 = RTE_DEBIAN     + 0x00003000  #: Debian - bookworm 
 58  RTE_DEBIAN13 = RTE_DEBIAN     + 0x00003400  #: Debian - ... 
 59   
 60      
 61  #: mapping of the rte string and numeric representation to the numeric value 
 62  rte2num.update( 
 63      { 
 64          'wheezy': RTE_DEBIAN7, 
 65          'jessy': RTE_DEBIAN8, 
 66          'stretch': RTE_DEBIAN9, 
 67          'buster': RTE_DEBIAN10, 
 68          'bullseye': RTE_DEBIAN11, 
 69          'bookworm': RTE_DEBIAN12, 
 70          'debian7': RTE_DEBIAN7, 
 71          'debian8': RTE_DEBIAN8, 
 72          'debian9': RTE_DEBIAN9, 
 73          'debian10': RTE_DEBIAN10, 
 74          'debian11': RTE_DEBIAN11, 
 75          'debian12': RTE_DEBIAN12, 
 76          RTE_DEBIAN7: RTE_DEBIAN7, 
 77          RTE_DEBIAN8: RTE_DEBIAN8, 
 78          RTE_DEBIAN9: RTE_DEBIAN9, 
 79          RTE_DEBIAN10: RTE_DEBIAN10, 
 80          RTE_DEBIAN11: RTE_DEBIAN11, 
 81          RTE_DEBIAN12: RTE_DEBIAN12, 
 82   
 83          # 
 84  #         'debian96': RTE_DEBIAN96, 
 85  #         RTE_DEBIAN96: RTE_DEBIAN96, 
 86   
 87      } 
 88  ) 
 89   
 90   
 91  #: mapping of the rte numeric representation to the string value 
 92  num2rte.update( 
 93      { 
 94          RTE_DEBIAN7: 'debian7', 
 95          RTE_DEBIAN8: 'debian8', 
 96          RTE_DEBIAN9: 'debian9', 
 97          RTE_DEBIAN10: 'debian10', 
 98          RTE_DEBIAN11: 'debian11', 
 99          RTE_DEBIAN12: 'debian12', 
100   
101          # 
102  #         RTE_DEBIAN96: 'debian96', 
103   
104      } 
105  ) 
106   
107  num2pretty.update( 
108      { 
109          RTE_DEBIAN7: 'wheezy', 
110          RTE_DEBIAN8: 'jessy', 
111          RTE_DEBIAN9: 'stretch', 
112          RTE_DEBIAN10: 'buster', 
113          RTE_DEBIAN11: 'bullseye', 
114          RTE_DEBIAN12: 'bookworm', 
115      } 
116  ) 
117   
118   
119  dist = ['', '', 'Debian-', 'Debian', '', ''] 
120   
121  try: 
122      if os.path.exists("/etc/debian_version"): 
123          dist = ['debian', '', '', 'Debian', ''] 
124          with open("/etc/debian_version", 'r') as f: 
125              for l in f: 
126                  dist[1] = re.split(r'(?s)^([0-9.]*).*$', l)[1] 
127                  dist[4] = decode_version_str_to_segments(dist[1]) 
128       
129       
130      _ver = '' 
131      _name = '' 
132       
133      with open("/etc/os-release", 'r') as f: 
134          for l in f: 
135              if l.startswith('ID='): 
136                  dist[0] = dist[5] = DSKORG_ID.sub(r'\1', l) 
137   
138      if dist[5] == 'debian': 
139          # debian 
140          dist[0] += str(dist[4][0]) + str(dist[4][1]) 
141          dist[2] += dist[1] 
142   
143   
144  except PlatformIDsFileCheck: 
145      # not on Debian platform, so scan will fail 
146      pass     
147   
148   
149  if dist[5] != 'debian': 
150      # does not actually match Debian 
151      dist = ['debian', '0.0.0', 'Debian-0.0.0', 'Debian', (0, 0, 0,), 'debian'] 
152