Package platformids :: Package embed :: Module raspbian

Source Code for Module platformids.embed.raspbian

  1  # -*- coding: utf-8 -*- 
  2  """Raspbian releases. 
  3   
  4  The *Raspbian* distribution represents a *shrinked multi-role PC-Platform* as an 
  5  embedded system with integrated low-level HW interfaces. 
  6   
  7  *Raspbian* is specialized for the *Raspberry Pi* boards. 
  8  """ 
  9  from __future__ import absolute_import 
 10   
 11  import re 
 12   
 13  from pythonids import PYV35Plus 
 14  from platformids import rte2num, num2rte, num2pretty, decode_version_str_to_segments, RTE_RASPBIAN, \ 
 15      DSKORG_ID, PlatformIDsFileCheck 
 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.29' 
 22  __uuid__ = "7add5ded-c39b-4b6e-8c87-1b3a1c150ee9" 
 23   
 24   
 25   
 26  #-----------------------------------------------# 
 27  #                                               # 
 28  # optional constants for convenience            # 
 29  #                                               # 
 30  #-----------------------------------------------# 
 31   
 32   
 33  RTE_RASPBIAN7 = RTE_RASPBIAN        +  0x00001c00  #: RASPBIAN - wheezy 
 34  RTE_RASPBIAN8 = RTE_RASPBIAN        +  0x00002000  #: RASPBIAN - jessy 
 35                                     
 36  RTE_RASPBIAN9 = RTE_RASPBIAN        +  0x00002400  #: RASPBIAN - stretch 
 37  RTE_RASPBIAN90 = RTE_RASPBIAN       +  0x00002400  #: RASPBIAN - stretch - 9.0 
 38  RTE_RASPBIAN91 = RTE_RASPBIAN       +  0x00002420  #: RASPBIAN - stretch - 9.1 
 39  RTE_RASPBIAN92 = RTE_RASPBIAN       +  0x00002440  #: RASPBIAN - stretch - 9.2 
 40  RTE_RASPBIAN93 = RTE_RASPBIAN       +  0x00002460  #: RASPBIAN - stretch - 9.3 
 41  RTE_RASPBIAN94 = RTE_RASPBIAN       +  0x00002480  #: RASPBIAN - stretch - 9.4 
 42  RTE_RASPBIAN95 = RTE_RASPBIAN       +  0x000024b0  #: RASPBIAN - stretch - 9.5 
 43  RTE_RASPBIAN96 = RTE_RASPBIAN       +  0x000024c0  #: RASPBIAN - stretch - 9.6 
 44  RTE_RASPBIAN97 = RTE_RASPBIAN       +  0x000024e0  #: RASPBIAN - stretch - 9.7 
 45   
 46  RTE_RASPBIAN10 = RTE_RASPBIAN       +  0x00002800  #: RASPBIAN - buster  
 47  RTE_RASPBIAN100 = RTE_RASPBIAN      +  0x00002800  #: RASPBIAN - buster  
 48  RTE_RASPBIAN101 = RTE_RASPBIAN      +  0x00002820  #: RASPBIAN - buster  
 49  RTE_RASPBIAN102 = RTE_RASPBIAN      +  0x00002840  #: RASPBIAN - buster  
 50   
 51  RTE_RASPBIAN11 = RTE_RASPBIAN       +  0x00002c00  #: RASPBIAN - bullseye 
 52  RTE_RASPBIAN12 = RTE_RASPBIAN       +  0x00003000  #: RASPBIAN - bookworm 
 53       
 54       
 55  #: mapping of the rte string and numeric representation to the numeric value 
 56  rte2num.update( 
 57      { 
 58          'Raspbian-wheezy': RTE_RASPBIAN7, 
 59          'Raspbian-jessy': RTE_RASPBIAN8, 
 60          'Raspbian-stretch': RTE_RASPBIAN9, 
 61          'Raspbian-buster': RTE_RASPBIAN10, 
 62          'Raspbian-bullseye': RTE_RASPBIAN11, 
 63          'Raspbian-bookworm': RTE_RASPBIAN12, 
 64          'raspbian7': RTE_RASPBIAN7, 
 65          'raspbian8': RTE_RASPBIAN8, 
 66          'raspbian9': RTE_RASPBIAN9, 
 67          'raspbian10': RTE_RASPBIAN10, 
 68          'raspbian11': RTE_RASPBIAN11, 
 69          'raspbian12': RTE_RASPBIAN12, 
 70          RTE_RASPBIAN7: RTE_RASPBIAN7, 
 71          RTE_RASPBIAN8: RTE_RASPBIAN8, 
 72          RTE_RASPBIAN9: RTE_RASPBIAN9, 
 73          RTE_RASPBIAN10: RTE_RASPBIAN10, 
 74          RTE_RASPBIAN11: RTE_RASPBIAN11, 
 75          RTE_RASPBIAN12: RTE_RASPBIAN12, 
 76      } 
 77  ) 
 78   
 79   
 80  #: mapping of the rte numeric representation to the string value 
 81  num2rte.update( 
 82      { 
 83          RTE_RASPBIAN7: 'raspbian7', 
 84          RTE_RASPBIAN8: 'raspbian8', 
 85          RTE_RASPBIAN9: 'raspbian9', 
 86          RTE_RASPBIAN10: 'raspbian10', 
 87          RTE_RASPBIAN11: 'raspbian11', 
 88          RTE_RASPBIAN12: 'raspbian12', 
 89      } 
 90  ) 
 91   
 92   
 93  #: mapping of the rte numeric representation to the pretty string value 
 94  num2pretty.update( 
 95      { 
 96          RTE_RASPBIAN8: 'Raspbian-jessy', 
 97          RTE_RASPBIAN9: 'Raspbian-stretch', 
 98          RTE_RASPBIAN10: 'Raspbian-buster', 
 99          RTE_RASPBIAN11: 'Raspbian-bullseye', 
100          RTE_RASPBIAN12: 'Raspbian-bookworm', 
101          RTE_RASPBIAN7: 'Raspbian-wheezy', 
102      } 
103  ) 
104   
105   
106  dist = ['', '', 'Raspbian-', 'Raspbian', '', ''] 
107   
108  try: 
109      with open("/etc/os-release", 'r') as f: 
110          for l in f: 
111              if l.startswith('ID='): 
112                  dist[0] = dist[5] = DSKORG_ID.sub(r'\1', l) 
113   
114      if dist[0] == 'raspbian': 
115          with open("/etc/debian_version", 'r') as f: 
116              for l in f: 
117                  dist[1] = re.split(r'(?s)^([0-9.]*).*$', l)[1]  # just for safety 
118                  dist[4] = decode_version_str_to_segments(dist[1]) 
119                  dist[0] += '%d%d' % (dist[4][0], dist[4][1],) 
120                  dist[2] += dist[1] 
121   
122  except PlatformIDsFileCheck: 
123      # not on raspbian platform, so scan will fail 
124      pass     
125   
126   
127  if dist[0] == 'raspbian': 
128      dist = ['raspbian', '0.0.0', 'Raspbian-0.0.0', 'Raspbian', (0, 0, 0,), 'raspbian'] 
129