source: install/setversion.py

Last change on this file was 4759, checked in by toby, 8 months ago

wx4.1 & mpl3.3 fixes

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.0 KB
Line 
1import sys
2import platform
3import subprocess
4
5def MakeByte2str(arg):
6    '''Convert output from subprocess pipes (bytes) to str (unicode) in Python 3.
7    In Python 2: Leaves output alone (already str).
8    Leaves stuff of other types alone (including unicode in Py2)
9    Works recursively for string-like stuff in nested loops and tuples.
10
11    typical use::
12        out = MakeByte2str(out)
13    or::
14        out,err = MakeByte2str(s.communicate())
15   
16    '''
17    if isinstance(arg,str): return arg
18    if isinstance(arg,bytes): return arg.decode()
19    if isinstance(arg,list):
20        return [MakeByte2str(i) for i in arg]
21    if isinstance(arg,tuple):
22        return tuple([MakeByte2str(i) for i in arg])
23    return arg
24svn = 'svn' # assume in path
25cmd = [svn,'info','https://subversion.xray.aps.anl.gov/pyGSAS/trunk']
26s = subprocess.Popen(cmd,
27                    stdout=subprocess.PIPE,stderr=subprocess.PIPE)
28out,err = MakeByte2str(s.communicate())
29if err:
30    print ('subversion error!\nout=%s'%out)
31    print ('err=%s'%err)
32    sys.exit(1)
33for line in out.split('\n'):
34    if line.startswith('Rev'):
35        version = line.split()[1].strip()
36        break
37else:
38    print ('Version not found!\nout=%s'%out)
39    sys.exit(1)
40
41import numpy as np
42import wx
43import matplotlib as mpl
44import platform
45npversion = np.__version__[:np.__version__.find('.',2)]
46#wxversion = wx.__version__[:wx.__version__.find('.',2)]
47wxversion = wx.__version__
48mplversion = mpl.__version__[:mpl.__version__.find('.',2)]
49pyversion = platform.python_version()
50if pyversion.find('.',2) > 0: pyversion = pyversion[:pyversion.find('.',2)]
51print ('SVN version is    {}'.format(version))
52print ('python version is {}'.format(pyversion))
53print ('numpy version is  {}'.format(npversion))
54print ('wx version is     {}'.format(wxversion))
55print ('MPL version is    {}'.format(mplversion))
56
57for fil in ('g2complete/meta.yaml','g2complete/build.sh',
58                'g2complete/bld.bat',
59                'g2full/construct.yaml',
60                'g2full/g2postinstall.bat',
61                'g2full/g2postinstall.sh',
62                ):
63    try:
64        fp = open(fil+'.template','r')
65        out = fp.read().replace('**Version**',version)
66        fp.close()
67    except FileNotFoundError:
68        print('Skipping ',fil)
69        continue
70    if sys.platform == "win32" and platform.architecture()[0] != '64bit':
71        if 'win-64' in out:
72            print('changing for 32-bit windows')
73            out = out.replace('win-64','win-32')
74    if sys.platform.startswith("linux") and platform.architecture()[0] != '64bit':
75        if 'linux-64' in out:
76            print('changing for 32-bit linux')
77            out = out.replace('linux-64','linux-32')
78    out = out.replace('**pyversion**',pyversion)
79    out = out.replace('**npversion**',npversion)
80    out = out.replace('**wxversion**',wxversion)
81    out = out.replace('**mplversion**',mplversion)
82    if sys.platform == "darwin": out.replace('#MACOnly#','')
83    print('Creating',fil)
84    fp = open(fil,'w')
85    fp.write(out)
86    fp.close()
87   
Note: See TracBrowser for help on using the repository browser.