ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/build/buildprod.py
Revision: 1.10
Committed: Tue May 24 18:29:23 2016 UTC (7 years, 4 months ago) by arta
Content type: text/x-python
Branch: MAIN
CVS Tags: Ver_LATEST, NetDRMS_Ver_LATEST, NetDRMS_Ver_8-12, NetDRMS_Ver_8-11, NetDRMS_Ver_9-1, NetDRMS_Ver_9-0, NetDRMS_Ver_9-3, NetDRMS_Ver_9-2, NetDRMS_Ver_9-5, NetDRMS_Ver_9-4, NetDRMS_Ver_9-41, Ver_9-41, Ver_9-3, Ver_8-11, Ver_9-1, Ver_9-5, Ver_9-4, Ver_9-2, Ver_8-12, Ver_9-0, HEAD
Changes since 1.9: +9 -4 lines
Log Message:
Do that globalhs tag checking only if make globalhs is explicitly run. Do not do any tag checking otherwise, even though the build could case globalhs stuff to be made.

File Contents

# User Rev Content
1 arta 1.1 #!/usr/bin/env python
2    
3     from __future__ import print_function
4     import sys
5     import os
6     import pwd
7     from subprocess import check_output, check_call, call, Popen, CalledProcessError
8 arta 1.6 sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../base/libs/py'))
9     from drmsCmdl import CmdlParser
10 arta 1.1
11 arta 1.4 PROD_ROOTDIR = '/home/jsoc/cvs/Development'
12     # PROD_ROOTDIR = '/tmp/arta'
13 arta 1.1 WAYSTATION = 'waystation'
14     WAYSTATION_USER = 'arta'
15    
16     RV_SUCCESS = 0
17     RV_ERROR_WRONGUSER = 1
18     RV_ERROR_ARGS = 2
19     RV_ERROR_MAKE = 3
20    
21     # This class changes the current working directory, and restores the original working directory when
22     # the context is left.
23     class Chdir:
24     """Context manager for changing the current working directory"""
25     def __init__(self, newPath):
26     self.newPath = os.path.realpath(newPath)
27    
28     def __enter__(self):
29     self.savedPath = os.path.realpath(os.getcwd())
30     os.chdir(self.newPath)
31     cdir = os.path.realpath(os.getcwd())
32     if cdir == self.newPath:
33     return 0
34     else:
35     return 1
36    
37     def __exit__(self, etype, value, traceback):
38     os.chdir(self.savedPath)
39     cdir = os.path.realpath(os.getcwd())
40     if cdir == self.savedPath:
41     return 0
42     else:
43     return 1
44 arta 1.6
45     optD = {}
46    
47     try:
48     parser = CmdlParser(usage='%(prog)s [ -f ]')
49    
50     # Optional
51     parser.add_argument('-f', '--full', help='Create/re-create all links and create/re-create all localization parameter files.', dest='full', action='store_true', default=False)
52    
53     args = parser.parse_args()
54    
55     optD['full'] = args.full
56    
57     except Exception as exc:
58     if len(exc.args) != 2:
59     raise # Re-raise
60    
61     etype = exc.args[0]
62     msg = exc.args[1]
63    
64     if etype == 'CmdlParser-ArgUnrecognized' or etype == 'CmdlParser-ArgBadformat' or etype == 'CmdlParser':
65     raise Exception('getArgs', 'cl', 'Unable to parse command-line arguments. ' + msg + '\n' + parser.format_help())
66     else:
67     raise # Re-raise.
68 arta 1.1
69     # Allow only arta to modify the files in the waystation.
70     if pwd.getpwuid(os.getuid())[0] != WAYSTATION_USER:
71     sys.exit(RV_ERROR_WRONGUSER)
72    
73     # Turn off debug builds.
74     os.environ['JSOC_DEBUG'] = '0'
75    
76 arta 1.2 # Make sure the JSOCROOT is PROD_ROOTDIR + '/JSOC'
77     os.environ['JSOCROOT'] = PROD_ROOTDIR + '/JSOC'
78    
79 arta 1.1 try:
80     with Chdir(PROD_ROOTDIR + '/' + WAYSTATION + '/JSOC') as ret:
81     # os.chdir does NOT change the environment variable $PWD. But our make system relies on PWD being the current directory.
82     os.environ['PWD'] = os.path.realpath(os.getcwd())
83 arta 1.10
84     # Set 'GLOBALHSTAGOVERRIDE'
85     if 'GLOBALHSTAGOVERRIDE' in os.environ:
86     del os.environ['GLOBALHSTAGOVERRIDE']
87     os.environ['GLOBALHSTAGOVERRIDE'] = 'globalhs'
88 arta 1.1
89 arta 1.6 if optD['full']:
90     cmdList = ['./configure']
91     else:
92     cmdList = ['./configure', '-d']
93 arta 1.1 check_call(cmdList)
94    
95 arta 1.6 cmdList = ['/usr/bin/make']
96 arta 1.1 check_call(cmdList)
97     cmdList = ['/usr/bin/make', 'dsds']
98     check_call(cmdList)
99 arta 1.6 if optD['full']:
100 arta 1.10 # Unset 'GLOBALHSTAGOVERRIDE'
101     if 'GLOBALHSTAGOVERRIDE' in os.environ:
102     del os.environ['GLOBALHSTAGOVERRIDE']
103    
104 arta 1.8 cmdList = ['/usr/bin/make', 'globalhs',]
105 arta 1.6 check_call(cmdList)
106 arta 1.1
107 arta 1.5 cmdList = ['chgrp', '-Rh', 'jsoc', '.']
108 arta 1.1 check_call(cmdList)
109     cmdList = ['chmod', '-R', 'g-w', '.']
110     check_call(cmdList)
111    
112     sys.exit(RV_SUCCESS);
113     except CalledProcessError as exc:
114     if exc.output:
115     print('Error calling make: ' + exc.output, file=sys.stderr)
116 arta 1.3 sys.exit(RV_ERROR_MAKE);
117 arta 1.1 except ValueError:
118     print('Bad arguments to make: \n' + '\n'.join(cmdList[1:]))
119     sys.exit(RV_ERROR_MAKE);
120     except Exception as exc:
121 arta 1.6 if len(exc.args) != 2:
122     raise # Re-raise
123    
124     etype = exc.args[0]
125     msg = exc.args[1]
126    
127     if etype != 'getArgs':
128     raise # Re-raise
129    
130     print(msg, file=sys.stderr)