source: install/setversion.py

Last change on this file was 5438, checked in by toby, 8 weeks ago

user request: add GOF to Seq. tbl; packages & builds; misc fixes

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.2 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        if platform.machine() == 'aarch64': # Raspberry Pi
65            note = 'for Raspberry Pi OS'
66            fp = open(fil+'.Pitemplate','r')
67        else:
68            note = ''
69            fp = open(fil+'.template','r')
70        out = fp.read().replace('**Version**',version)
71        fp.close()
72    except FileNotFoundError:
73        print('Skipping ',fil)
74        continue
75    if sys.platform == "win32" and platform.architecture()[0] != '64bit':
76        if 'win-64' in out:
77            print('changing for 32-bit windows')
78            out = out.replace('win-64','win-32')
79    if sys.platform.startswith("linux") and platform.architecture()[0] != '64bit':
80        if 'linux-64' in out:
81            print('changing for 32-bit linux')
82            out = out.replace('linux-64','linux-32')
83    out = out.replace('**pyversion**',pyversion)
84    out = out.replace('**npversion**',npversion)
85    out = out.replace('**wxversion**',wxversion)
86    out = out.replace('**mplversion**',mplversion)
87    if sys.platform == "darwin": out.replace('#MACOnly#','')
88    print('Creating',fil,note)
89    fp = open(fil,'w')
90    fp.write(out)
91    fp.close()
92   
Note: See TracBrowser for help on using the repository browser.