-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathconfigure
executable file
·375 lines (318 loc) · 12.9 KB
/
configure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
#! /bin/csh -f
# The system configuration for configure script
set PERLBIN = ""
set PYBIN = "python3"
set DRMS_PARAMETERS_PACKAGE = "base/libs/py/drms_parameters"
set PY_LIBS_DIR = "base/libs/py"
if ($PERLBIN == "") then
if (-x /home/jsoc/bin/linux_x86_64/activeperl) then
set PERLBIN = "/home/jsoc/bin/linux_x86_64/activeperl"
else
set PERLBIN = "perl"
endif
endif
if ($PYBIN == "") then
if (-x /home/jsoc/bin/linux_x86_64/activepython) then
set PYBIN = "/home/jsoc/bin/linux_x86_64/activepython"
else
set PYBIN = "python3"
endif
endif
# set up $JSOC_MACHINE
set JSOC_MACHINE = `build/jsoc_machine.csh`
if ($? != 0) then
echo "Unable to determine machine type."
exit 1
endif
echo "Machine type is $JSOC_MACHINE"
echo ""
# Clean by default.
set CLEAN = "yes"
set PROJCONFIG = ""
set CLEANCMD = "d"
set CFGSERVER = "no"
set CFGSERVERARG = "s"
set CUSTOMDEFSFILE = ""
foreach THEARG ($argv)
set LITERALSTR = '{ my($argin) = "'${THEARG}'"; my($flagout); $flagout = ($argin =~ /^-(.+)/)[0]; print $flagout; }'
set FLAG = `$PERLBIN -e "$LITERALSTR"`
if ($? != 0) then
echo "Unable to parse command-line arguments."
exit 1
endif
if ($FLAG == $CLEANCMD) then
set CLEAN = "no"
else if ($FLAG == $CFGSERVERARG) then
set CFGSERVER = "yes"
else if (-e $THEARG) then
set PROJCONFIG = $THEARG
endif
end
# Usage:
# configure [ -d ] [ -s ] [ <project config file> ]
# Backward compatibility - remove the links to the old make files in projconf
if (-d proj) then
cd proj
if (-e configure) then
rm configure
endif
if (-e make_basic.mk) then
rm make_basic.mk
endif
if (-e Rules.mk) then
rm Rules.mk
endif
if (-e target.mk) then
rm target.mk
endif
cd ..
endif
# Always clean up links to man pages and re-create them.
echo -n "Removing links to man pages..."
if (-e man) then
rm -rf man
endif
echo "done"
if ($CLEAN == "yes") then
echo -n "Removing links in base/include to headers..."
# Links in base/include
if (-d base/include) then
cd base/include
find . -name "*.h" -exec rm {} \;
cd ../..
endif
echo "done"
# Special link from base/drms/apps/serverdefs.h to localization/drmsparams.h
echo -n "Removing link to serverdefs.h..."
if (-e base/drms/apps) then
cd base/drms/apps
rm serverdefs.h
cd ../../..
endif
echo "done"
# Links in include
echo -n "Removing links in include to headers..."
if (-d include) then
cd include
find . -name "*.h" -exec rm {} \;
find . -name "drmsparams*" -exec rm {} \;
cd ..
endif
echo "done"
echo -n "Removing links to scripts..."
# Links in scripts
if (-d scripts) then
cd scripts
if ($? == 0) then
find . -type l -exec rm {} \;
endif
cd ..
endif
echo "done"
# End clean flag
endif
# Always clean-up links to jsds and re-create them.
echo -n "Removing links to jsds..."
if (-d jsds) then
cd jsds
if ($? == 0) then
find . -type l -exec rm {} \;
endif
cd ..
endif
echo "done"
echo
if ($CLEAN == "yes") then
if (-x base/local/libs/dsds/scripts/rmlinks.csh) then
base/local/libs/dsds/scripts/rmlinks.csh
endif
if (-x base/local/libs/soi/scripts/rmlinks.csh) then
base/local/libs/soi/scripts/rmlinks.csh
endif
endif
# Make include directories here, since they are used by multiple script blocks below
if (!(-d base/include)) then
mkdir -p base/include
if ($? != 0) then
echo "Unable to make base/include directory."
exit 1
endif
endif
if (!(-d include)) then
mkdir -p include
if ($? != 0) then
echo "Unable to make include directory."
exit 1
endif
endif
echo "Setting links to man pages..."
if (-d /home/jsoc/man) then
if (!(-e man)) then
ln -s /home/jsoc/man man
endif
endif
echo "done"
echo
echo "Setting links to jsds..."
if (!(-d jsds)) then
mkdir jsds
endif
cd jsds
find ../base \( -name \*.jsd -exec ln -s {} . \; -a -exec echo " " {} " OK" \; \) -o \( -name \*.jsd -exec echo " " {} " ERROR - couldn't create link" \; \)
cd ..
echo "done"
echo
# generate links for DSDS/SOI dynamic libraries - only do this if
# user's environment has access to /home/soi/CM
if (-d /home/soi/CM/include && -d /home/soi/CM/src) then
if (-x base/local/libs/dsds/scripts/genlinks.csh) then
base/local/libs/dsds/scripts/genlinks.csh
endif
if (-x base/local/libs/soi/scripts/genlinks.csh) then
base/local/libs/soi/scripts/genlinks.csh
endif
endif
echo "done"
echo
#######################
## Site Localization ##
#######################
# Path to the configuration file - at some point, make this an argument to the configure script
set LOCALIZATIONDIR = ""
set RELLOCALIZATIONDIR = ""
set conflocal = "config.local"
if (-e $conflocal) then
set RELLOCALIZATIONDIR = `perl -n -e 'if ($_ =~ /^LOCALIZATIONDIR\s+(.+)/) { print $1; }' $conflocal`
endif
if ($LOCALIZATIONDIR == "") then
set RELLOCALIZATIONDIR = localization
endif
# Make the path absoluate
set LOCALIZATIONDIR = ${PWD}/${RELLOCALIZATIONDIR}
# Reset localization.
if ($CLEAN == "yes") then
# This script will need to read the config.local file to get the
# localization directory. Otherwise, just use JSOC/localization as the default.
if (!(-d ${LOCALIZATIONDIR})) then
mkdir ${LOCALIZATIONDIR}
if ($? != 0) then
echo "Error creating localization directory."
exit 1
endif
endif
if (-e ${LOCALIZATIONDIR}/drmsparams.h) then
rm ${LOCALIZATIONDIR}/drmsparams.h
endif
if (-e ${LOCALIZATIONDIR}/drmsparams.mk) then
rm ${LOCALIZATIONDIR}/drmsparams.mk
endif
if (-e ${LOCALIZATIONDIR}/drmsparams.pm) then
rm ${LOCALIZATIONDIR}/drmsparams.pm
endif
if (-e ${LOCALIZATIONDIR}/drmsparams.py) then
rm ${LOCALIZATIONDIR}/drmsparams.py
endif
if (!(-e configsdp.txt)) then
# This is NetDRMS.
if (!(-e config.local)) then
echo "Error: config.local not found. If you have a saved version of this"
echo " file from a previous installation, you should copy that into"
echo " this directory and rerun configure. Otherwise, copy the file"
echo " config.local.template to config.local and edit the config.local"
echo " file to contain site-appropriate values."
echo
echo "*** IMPORTANT *** The edited config.local will contain site-specific"
echo " values that should not be modified during subsequent updates to"
echo " NetDRMS. Keep a safe copy of it somewhere outside of the DRMS"
echo " directory tree, for example in /usr/local. After each NetDRMS"
echo " update, ensure this file is in place."
exit 1;
endif
endif
# We now call localize.py for both Stanford and NetDRMS builds.
if ($CFGSERVER == "yes") then
set cmd = "$PYBIN ./localize.py -d ${LOCALIZATIONDIR} -b drmsparams -s"
else
set cmd = "$PYBIN ./localize.py -d ${LOCALIZATIONDIR} -b drmsparams"
endif
$cmd
if ($? != 0) then
echo "Failure running localize.py."
exit 1
endif
# copy drmsparams.py into the drms_parameters package
if (-e ${LOCALIZATIONDIR}/drmsparams.py && -e ${DRMS_PARAMETERS_PACKAGE}) then
echo "copying drmsparams.py to drms_parameters package directory"
cp ${LOCALIZATIONDIR}/drmsparams.py ${DRMS_PARAMETERS_PACKAGE}/parameters.py
endif
endif # End reset localization
echo "Setting links to scripts..."
if (!(-d scripts)) then
mkdir scripts
if ($? != 0) then
echo "Unable to create scripts directory."
exit 1
endif
endif
if ($CLEAN == "yes") then
cd scripts
# Sums scripts
find ../base/sums/scripts -mindepth 1 -path \*CVS -prune -o -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
# Util scripts
find ../base/util/scripts -mindepth 1 -path \*CVS -prune -o -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
# Export scripts
find ../base/export/scripts -mindepth 1 -path \*CVS -prune -o -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
# DRMS / IDL-interface scripts
find ../base/drms/scripts -mindepth 1 -path \*CVS -prune -o -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
# Project-specific scripts - these won't show up if you don't have the project source.
find ../proj/lev0/scripts -mindepth 1 -path \*CVS -prune -o -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
endif
cd ..
endif
echo "done"
echo
echo "Setting links to headers..."
# When localize.py was added, we removed the repository version of serverdefs.h, and we stopped generating JSOC/base/include/localization.h.
# To support legacy code, we need to make a link from serverdefs.h to ${LOCALIZATIONDIR}/drmsparams.h (the replacement for serverdefs.h
# at Stanford) and from JSOC/base/include/localization.h to ${LOCALIZATIONDIR}/drmsparams.h (the replacement for localization.h
# for NetDRMs builds). However, some files are looking for JSOC/base/drms/apps/serverdefs.h (instead of JSOC/base/include, the correct path).
# If we make a link from JSOC/base/drms/apps/serverdefs.h to ${LOCALIZATIONDIR}/drmsparams.h, then the script below will make links from
# JSOC/base/include/serverdefs.h and JSOC/include/serverdefs.h to JSOC/base/drms/apps/serverdefs.h, which then links to ${LOCALIZATIONDIR}/drmsparams.h.
if (!(-l base/drms/apps/serverdefs.h)) then
cd base/drms/apps
ln -s ../../../${RELLOCALIZATIONDIR}/drmsparams.h serverdefs.h
if ($? != 0) then
echo "Failure creating link to "
exit 1
endif
cd ../../..
endif
if (!(-l base/include/localization.h)) then
cd base/include
ln -s ../../${RELLOCALIZATIONDIR}/drmsparams.h localization.h
cd ../..
endif
if ($CLEAN == "yes") then
cd base/include
find .. -path '../include' -prune -o -name \*.h -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
cd ../..
cd include
if (-d ../base/include) then
find ../base/include -name \*.h -print | ${PERLBIN} -MFile::Basename -n -e 'my($bn) = basename($_); chomp($bn); my($path) = $_; chomp($path); if (!(-e $bn)) { `ln -s $_`; if ($? >> 8 == 0) { print " " . $path . " OK\n"; } else { print " " . $path . " ERROR - could not create link\n"; } }'
endif
cd ..
endif
cd include
# ${LOCALIZATIONDIR} is an absolute path
if (!(-l drmsparams.h)) then
ln -s ../${RELLOCALIZATIONDIR}/drmsparams.h
endif
if (!(-l drmsparams.pm)) then
ln -s ../${RELLOCALIZATIONDIR}/drmsparams.pm
endif
if (!(-l drmsparams.py)) then
ln -s ../${RELLOCALIZATIONDIR}/drmsparams.py
endif
cd ..
echo "done"
echo