Package platformids :: Package dist :: Module darwin

Source Code for Module platformids.dist.darwin

  1  # -*- coding: utf-8 -*- 
  2  """Darwin / OS-X / macOS - "happy marketing" naming releases - map u' all. 
  3  """ 
  4  from __future__ import absolute_import 
  5   
  6  import os 
  7  import sys 
  8  import re 
  9  import platform 
 10   
 11   
 12  from pythonids import PYV35Plus 
 13  from platformids import RTE_OSX10, RTE_OSX, rte2num, num2rte, num2pretty, decode_version_str_to_segments, \ 
 14      PlatformIDsFileCheck 
 15   
 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  # The values for Darwin OS-X are represented by sub-bitmasks, which map 
 27  # a specific release to it's sub releases: 
 28  # 
 29  #    aaaaaabbb : ...aaaaaaaa:   main releases: 8... 
 30  #                bbb:           sub releases:  0-7 
 31  # 
 32   
 33  # ********************************* 
 34  # 
 35  # rebased to RTE_OSX10, because any modern OS-X fom 2001 on is of version 10,  
 36  # or to say - is OS-X - see documentation 
 37  # 
 38  # ********************************* 
 39   
 40  # # context: RTE_POSIX.RTE_DARWIN 
 41  # RTE_OSX      = RTE_DARWIN   + 0x00020000    #: Mac OS-X RTE_OSX is basically the short form of RTE_OSX10 
 42  # RTE_OSX10    = RTE_DARWIN   + 0x00040000    #: Mac OS-X v10.x, as Posix system [POSIX]_, no macpath-legacy. 
 43                                                
 44   
 45  # Leopard - 2007 
 46  RTE_OSX105 = RTE_OSX10      +   0x000028a0  #: Leopard      - OSX-10.5.0 - DARWIN-9.0 
 47  RTE_OSX1050 = RTE_OSX105    +   0x000028a0  #: Leopard      - OSX-10.5.0 - DARWIN-9.0 
 48  RTE_OSX1058 = RTE_OSX105    +   0x000028a8  #: Leopard      - OSX-10.5.8 - DARWIN-9.8 
 49   
 50  # SnowLeopard - 2009 
 51  RTE_OSX106 = RTE_OSX10      +   0x000028c0  #: SnowLeopard  - OSX-10.6.0 - DARWIN-10.0 
 52  RTE_OSX1060 = RTE_OSX106    +   0x000028c6  #: SnowLeopard  - OSX-10.6.0 - DARWIN-10.0 
 53  RTE_OSX1068 = RTE_OSX106    +   0x000028c8  #: SnowLeopard  - OSX-10.6.8 - DARWIN-10.8 
 54   
 55  # Lion - 2011 
 56  RTE_OSX107 = RTE_OSX10      +   0x000028e0  #: Lion         - OSX-10.7.0 - DARWIN-11.0.0 
 57  RTE_OSX1070 = RTE_OSX107    +   0x000028e0  #: Lion         - OSX-10.7.0 - DARWIN-11.0.0 
 58  RTE_OSX1075 = RTE_OSX107    +   0x000028e2  #: Lion         - OSX-10.7.5 - DARWIN-11.4.2 
 59   
 60  # MountainLion - 2012 
 61  RTE_OSX108 = RTE_OSX10      +   0x00002900  #: MountainLion - OSX-10.8.0 - DARWIN-12.0.0 
 62  RTE_OSX1080 = RTE_OSX108    +   0x00002900  #: MountainLion - OSX-10.8.0 - DARWIN-12.0.0 
 63  RTE_OSX1085 = RTE_OSX108    +   0x00002905  #: MountainLion - OSX-10.8.5 - DARWIN-12.6.0 
 64   
 65  # Mavericks - 2013 
 66  RTE_OSX109 = RTE_OSX10      +   0x00002920  #: Mavericks    - OSX-10.9.0 - DARWIN-13.0.0 
 67  RTE_OSX1090 = RTE_OSX109    +   0x00002920  #: Mavericks    - OSX-10.9.0 - DARWIN-13.0.0 
 68  RTE_OSX1095 = RTE_OSX109    +   0x00002925  #: Mavericks    - OSX-10.9.5 - DARWIN-13.4.0 
 69   
 70  # Yosemite - 2014 
 71  RTE_OSX1010 = RTE_OSX10     +   0x00002940  #: Yosemite     - OSX-10.10.0 - DARWIN-14.0.0 
 72  RTE_OSX10100 = RTE_OSX1010  +   0x00002940  #: Yosemite     - OSX-10.10.0 - DARWIN-14.0.0 
 73  RTE_OSX10105 = RTE_OSX1010  +   0x00002945  #: Yosemite     - OSX-10.10.5 - DARWIN-14.5.0 
 74   
 75  # ElCapitan - 2015 
 76  RTE_OSX1011 = RTE_OSX10     +   0x00002960  #: ElCapitan    - OSX-10.11.0 - DARWIN-15.0.0 
 77  RTE_OSX10110 = RTE_OSX1011  +   0x00002960  #: ElCapitan    - OSX-10.11.0 - DARWIN-15.0.0 
 78  RTE_OSX10116 = RTE_OSX1011  +   0x00002966  #: ElCapitan    - OSX-10.11.6 - DARWIN-15.6.0 
 79   
 80  # Sierra - 2016 
 81  RTE_OSX1012 = RTE_OSX10     +   0x00002980  #: Sierra       - OSX-10.12.0 - DARWIN-16.0.0 
 82  RTE_OSX10124 = RTE_OSX1012  +   0x00002984  #: Sierra       - OSX-10.12.4 - DARWIN-16.5.0 
 83  RTE_OSX10126 = RTE_OSX1012  +   0x00002986  #: Sierra       - OSX-10.12.6 - DARWIN-16.6.0 
 84   
 85  # HighSierra - 2017 
 86  RTE_OSX1013 = RTE_OSX10     +   0x000029a0  #: HighSierra   - OSX-10.13.0 - DARWIN-17.0.0 
 87  RTE_OSX10130 = RTE_OSX1013  +   0x000029a0  #: HighSierra   - OSX-10.13.0 - DARWIN-17.5.0 
 88  RTE_OSX10131 = RTE_OSX1013  +   0x000029a1  #: HighSierra   - OSX-10.13.1 - DARWIN-17.5.0 
 89  RTE_OSX10132 = RTE_OSX1013  +   0x000029a2  #: HighSierra   - OSX-10.13.2 - DARWIN-17.5.0 
 90  RTE_OSX10133 = RTE_OSX1013  +   0x000029a3  #: HighSierra   - OSX-10.13.3 - DARWIN-17.5.0 
 91  RTE_OSX10134 = RTE_OSX1013  +   0x000029a4  #: HighSierra   - OSX-10.13.4 - DARWIN-17.5.0 
 92  RTE_OSX10135 = RTE_OSX1013  +   0x000029a5  #: HighSierra   - OSX-10.13.5 - DARWIN-17.6.0 
 93  RTE_OSX10136 = RTE_OSX1013  +   0x000029a6  #: HighSierra   - OSX-10.13.6 - DARWIN-17.6.0 
 94   
 95  # Mojave - 2018 
 96  RTE_OSX1014 = RTE_OSX10     +   0x000029c0  #: Mojave       - OSX-10.14.0 - DARWIN-18.0.0 
 97  RTE_OSX10140 = RTE_OSX1014  +   0x000029c0  #: Mojave       - OSX-10.14.0 - DARWIN-18.0.0 
 98  RTE_OSX10141 = RTE_OSX1014  +   0x000029c1  #: Mojave       - OSX-10.14.1 - DARWIN-18.0.0 
 99   
100   
101  #: mapping of the rte string and numeric representation to the numeric value 
102  rte2num.update( 
103      { 
104          'osx':           RTE_OSX, 
105          'osx105':        RTE_OSX105, 
106          'osx106':        RTE_OSX106, 
107          'osx1060':       RTE_OSX1060, 
108          'osx10105':      RTE_OSX10105, 
109          'osx1068':       RTE_OSX1068, 
110          'osx107':        RTE_OSX107, 
111          'osx108':        RTE_OSX108, 
112          'osx1080':       RTE_OSX1080, 
113          'osx1085':       RTE_OSX1085, 
114          'osx109':        RTE_OSX109, 
115          'osx1010':       RTE_OSX1010, 
116          'osx1011':       RTE_OSX1011, 
117          'osx1012':       RTE_OSX1012, 
118          'osx1013':       RTE_OSX1013, 
119          'osx1014':       RTE_OSX1014, 
120          'ElCapitan':     RTE_OSX1011, 
121          'HighSierra':    RTE_OSX1013, 
122          'Leopard':       RTE_OSX105, 
123          'Lion':          RTE_OSX107, 
124          'Mavericks':     RTE_OSX109, 
125          'Mojave':        RTE_OSX1014, 
126          'MountainLion':  RTE_OSX108, 
127          'Sierra':        RTE_OSX1012, 
128          'SnowLeopard':   RTE_OSX106, 
129          'Yosemite':      RTE_OSX1010, 
130   
131   
132   
133          RTE_OSX: RTE_OSX, 
134          RTE_OSX105: RTE_OSX105, 
135          RTE_OSX106: RTE_OSX106, 
136          RTE_OSX1060: RTE_OSX1060, 
137          RTE_OSX10105: RTE_OSX10105, 
138          RTE_OSX1068: RTE_OSX1068, 
139          RTE_OSX107: RTE_OSX107, 
140          RTE_OSX108: RTE_OSX108, 
141          RTE_OSX1080: RTE_OSX1080, 
142          RTE_OSX1085: RTE_OSX1085, 
143          RTE_OSX109: RTE_OSX109, 
144          RTE_OSX1010: RTE_OSX1010, 
145          RTE_OSX1011: RTE_OSX1011, 
146          RTE_OSX1012: RTE_OSX1012, 
147          RTE_OSX1013: RTE_OSX1013, 
148          RTE_OSX1014: RTE_OSX1014, 
149          RTE_OSX1011: RTE_OSX1011, 
150          RTE_OSX1013: RTE_OSX1013, 
151          RTE_OSX105: RTE_OSX105, 
152          RTE_OSX107: RTE_OSX107, 
153          RTE_OSX109: RTE_OSX109, 
154          RTE_OSX1014: RTE_OSX1014, 
155          RTE_OSX108: RTE_OSX108, 
156          RTE_OSX1012: RTE_OSX1012, 
157          RTE_OSX106: RTE_OSX106, 
158          RTE_OSX1010: RTE_OSX1010, 
159           
160      } 
161  ) 
162   
163   
164  #: mapping of the rte numeric representation to the string value 
165  num2rte.update( 
166      { 
167          RTE_OSX:      'osx', 
168          RTE_OSX1050:  'osx1050',            #: Leopard      - OSX-10.5.0  - DARWIN-9.0 
169          RTE_OSX1058:  'osx1058',            #: Leopard      - OSX-10.5.8  - DARWIN-9.8 
170          RTE_OSX106:   'osx106',             #: SnowLeopard  - OSX-10.6    - DARWIN-10 
171          RTE_OSX1060:  'osx1060',            #: SnowLeopard  - OSX-10.6.0  - DARWIN-10.0 
172          RTE_OSX1068:  'osx1068',            #: SnowLeopard  - OSX-10.6.8  - DARWIN-10.8 
173          RTE_OSX1070:  'osx1070',            #: Lion         - OSX-10.7.0  - DARWIN-11.0.0 
174          RTE_OSX1075:  'osx1075',            #: Lion         - OSX-10.7.5  - DARWIN-11.4.2 
175          RTE_OSX108:   'osx108',             #: MountainLion - OSX-10.8    - DARWIN-12 
176          RTE_OSX1080:  'osx1080',            #: MountainLion - OSX-10.8.0  - DARWIN-12.0.0 
177          RTE_OSX1085:  'osx1085',            #: MountainLion - OSX-10.8.5  - DARWIN-12.6.0 
178          RTE_OSX1090:  'osx1090',            #: Mavericks    - OSX-10.9.0  - DARWIN-13.0.0 
179          RTE_OSX1095:  'osx1095',            #: Mavericks    - OSX-10.9.5  - DARWIN-13.4.0 
180          RTE_OSX10100: 'osx10100',           #: Yosemite     - OSX-10.10.0 - DARWIN-14.0.0 
181          RTE_OSX10105: 'osx10105',           #: Yosemite     - OSX-10.10.5 - DARWIN-14.5.0 
182          RTE_OSX10110: 'osx10110',           #: ElCapitan    - OSX-10.11.0 - DARWIN-15.0.0 
183          RTE_OSX10116: 'osx10116',           #: ElCapitan    - OSX-10.11.6 - DARWIN-15.6.0 
184          RTE_OSX10124: 'osx10124',           #: Sierra       - OSX-10.12.4 - DARWIN-16.5.0 
185          RTE_OSX10126: 'osx10126',           #: Sierra       - OSX-10.12.6 - DARWIN-16.6.0 
186          RTE_OSX10130: 'osx10130',           #: HighSierra   - OSX-10.13.0 - DARWIN-17.0.0 
187          RTE_OSX10134: 'osx10134',           #: HighSierra   - OSX-10.13.4 - DARWIN-17.5.0 
188          RTE_OSX10135: 'osx10135',           #: HighSierra   - OSX-10.13.5 - DARWIN-17.6.0 
189          RTE_OSX10136: 'osx10136',           #: HighSierra   - OSX-10.13.6 - DARWIN-17.6.0 
190          RTE_OSX10140: 'osx10140',           #: Mojave       - OSX-10.14.0 - DARWIN-18.0.0 
191          RTE_OSX10140: 'osx10141',           #: Mojave       - OSX-10.14.1 - DARWIN-18.0.0 
192      } 
193  ) 
194   
195  #: mapping of the rte numeric representation to the string value 
196  num2pretty.update( 
197      { 
198          RTE_OSX:      'OS-X', 
199          RTE_OSX105:   'Leopard', 
200          RTE_OSX1058:  'Leopard', 
201          RTE_OSX106:   'SnowLeopard', 
202          RTE_OSX1060:  'SnowLeopard', 
203          RTE_OSX1068:  'SnowLeopard', 
204          RTE_OSX107:   'Lion', 
205          RTE_OSX1070:  'Lion', 
206          RTE_OSX1075:  'Lion', 
207          RTE_OSX108:   'MountainLion', 
208          RTE_OSX1080:  'MountainLion', 
209          RTE_OSX1085:  'MountainLion', 
210          RTE_OSX109:   'Mavericks', 
211          RTE_OSX1090:  'Mavericks', 
212          RTE_OSX1095:  'Mavericks', 
213          RTE_OSX1010:  'Yosemite', 
214          RTE_OSX10100: 'Yosemite', 
215          RTE_OSX10105: 'Yosemite', 
216          RTE_OSX1011:  'ElCapitan', 
217          RTE_OSX10110: 'ElCapitan', 
218          RTE_OSX10116: 'ElCapitan', 
219          RTE_OSX1012:  'Sierra', 
220          RTE_OSX10124: 'Sierra', 
221          RTE_OSX10126: 'Sierra', 
222          RTE_OSX1013:  'HighSierra', 
223          RTE_OSX10130: 'HighSierra', 
224          RTE_OSX10134: 'HighSierra', 
225          RTE_OSX10136: 'HighSierra', 
226          RTE_OSX1014:  'Mojave', 
227          RTE_OSX10140: 'Mojave', 
228      } 
229  ) 
230   
231  #: official version strings 
232  versions = { 
233      RTE_OSX1050:  '10.5.0',            #: Leopard      - OSX-10.5.0  - DARWIN-9.0 
234      RTE_OSX1058:  '10.5.8',            #: Leopard      - OSX-10.5.8  - DARWIN-9.8 
235      RTE_OSX1060:  '10.6.0',            #: SnowLeopard  - OSX-10.6.0  - DARWIN-10.0 
236      RTE_OSX1068:  '10.6.8',            #: SnowLeopard  - OSX-10.6.8  - DARWIN-10.8 
237      RTE_OSX1070:  '10.7.0',            #: Lion         - OSX-10.7.0  - DARWIN-11.0.0 
238      RTE_OSX1075:  '10.7.5',            #: Lion         - OSX-10.7.5  - DARWIN-11.4.2 
239      RTE_OSX1080:  '10.8.0',            #: MountainLion - OSX-10.8.0  - DARWIN-12.0.0 
240      RTE_OSX1085:  '10.8.5',            #: MountainLion - OSX-10.8.5  - DARWIN-12.6.0 
241      RTE_OSX1090:  '10.9.0',            #: Mavericks    - OSX-10.9.0  - DARWIN-13.0.0 
242      RTE_OSX1095:  '10.9.5',            #: Mavericks    - OSX-10.9.5  - DARWIN-13.4.0 
243      RTE_OSX10100: '10.10.0',           #: Yosemite     - OSX-10.10.0 - DARWIN-14.0.0 
244      RTE_OSX10105: '10.10.5',           #: Yosemite     - OSX-10.10.5 - DARWIN-14.5.0 
245      RTE_OSX10110: '10.11.0',           #: ElCapitan    - OSX-10.11.0 - DARWIN-15.0.0 
246      RTE_OSX10116: '10.11.6',           #: ElCapitan    - OSX-10.11.6 - DARWIN-15.6.0 
247      RTE_OSX10124: '10.12.4',           #: Sierra       - OSX-10.12.4 - DARWIN-16.5.0 
248      RTE_OSX10126: '10.12.6',           #: Sierra       - OSX-10.12.6 - DARWIN-16.6.0 
249      RTE_OSX10130: '10.13.0',           #: HighSierra   - OSX-10.13.0 - DARWIN-17.0.0 
250      RTE_OSX10134: '10.13.4',           #: HighSierra   - OSX-10.13.4 - DARWIN-17.5.0 
251      RTE_OSX10135: '10.13.5',           #: HighSierra   - OSX-10.13.5 - DARWIN-17.6.0 
252      RTE_OSX10136: '10.13.6',           #: HighSierra   - OSX-10.13.6 - DARWIN-17.6.0 
253      RTE_OSX10140: '10.14.0',           #: Mojave       - OSX-10.14.0 - DARWIN-18.0.0 
254      RTE_OSX10140: '10.14.1',           #: Mojave       - OSX-10.14.1 - DARWIN-18.0.0 
255  } 
256   
257   
258   
259  dist = ['', '', 'OS-X-', 'OS-X', '', ''] 
260   
261  try: 
262       
263      if sys.platform.startswith('darwin'): 
264          # OS-X - CPython, PyPy, IPython 
265          dist[1] = platform.release() 
266          dist[5] = 'osx' 
267       
268      elif os.path.exists('/System/Library/Components/AppleScript.component'): 
269          # OS-X - match on Jython 
270          x = os.popen("sysctl kern.ostype kern.osrelease", mode='r') 
271          if x.readline().endswith("Darwin\n")       : 
272              dist[1] = re.sub(r'[^=]*=([0-9.]*).*$', r'\1', x.readline()) 
273              dist[5] = 'osx' 
274          x.close() 
275       
276      if dist[5] == 'osx': 
277          dist[4] = decode_version_str_to_segments(dist[1]) 
278          dist[0] = 'osx%d%d%d' % (dist[4][0], dist[4][1], dist[4][2]) 
279          dist[2] += str(dist[1]) 
280   
281   
282  except PlatformIDsFileCheck: 
283      # not on OS-X platform, so scan will fail 
284      pass     
285   
286   
287  if dist[5] != 'osx': 
288      # does not actually match OS-X  
289      dist = ['osx', '0.0.0', 'OS-X-0.0.0', 'OS-X', (0, 0, 0,), 'osx'] 
290