[Bio] / FigCommon / configure-env Repository:
ViewVC logotype

Annotation of /FigCommon/configure-env

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (view) (download)

1 : efrank 1.1 #!/bin/sh
2 :    
3 :     #
4 :     # FIG/SEED configuration script
5 :     #
6 :     # This script takes as an argument the name of the environment
7 : efrank 1.2 # that we are configuring for. It takes a second argument specifying
8 :     # the path to the code installation, i.e., the dirname under which we
9 :     # can find FigKernelPackages, bin, and CGI. This is no longer the same
10 :     # as where the data are installed
11 : efrank 1.1 #
12 :     # If no argument is passed, a list of valid environment names will be
13 :     # displayed.
14 :     #
15 :     #
16 :     # We configure the following files (all paths relative to the top
17 :     # of the FIGdisk directory):
18 :     #
19 : efrank 1.2 # NOTE: all these are now made in ., not in the directories shown.
20 :     # That's because this is now called from a makefile, e.g., and the
21 :     # caller is responsible for mv'ing them to the right place.
22 :     #
23 : efrank 1.1 # fig-user-env.sh
24 :     # FIG/Packages/FIG_Config.pm
25 :     # FIG/Packages/FIG_Config.py
26 :     # FIG/tool_hdr
27 :     # FIG/tool_hdr_py
28 :     # bin/start-servers
29 :     # bin/stop-servers
30 :     #
31 : efrank 1.2 ########################################################################
32 :    
33 :     #
34 :     # Where the output files are to be placed
35 :     #
36 :     GenDir=`pwd`
37 :    
38 :     #
39 :     # Figure out where we are; set the FIG_HOME and
40 :     # EnvDir values.
41 :     #
42 :     # Now that the code is in one place and the core stuff and
43 :     # data are in another, we can't assume we are building in
44 :     # the root of the FIG installation.
45 :     #
46 :     # Take it from the env for now. Ick
47 :    
48 :     #FIG_HOME=`pwd`
49 :     echo "Using FIG_HOME=$FIG_HOME"
50 :    
51 : efrank 1.1
52 :     #
53 : efrank 1.2 # Make sure we're running from a real FIGdisk directory, i.e.,
54 :     # that FIG_HOME is set right.
55 : efrank 1.1 #
56 : efrank 1.2 if [ ! -d $FIG_HOME/env -o ! -d $FIG_HOME/FIG ] ; then
57 :     echo "Please set FIG_HOME correctly"
58 : efrank 1.1 exit
59 :     fi
60 :    
61 :    
62 :     #
63 :     # Determine what environments are present.
64 :     #
65 :    
66 :     AvailableEnvironments=""
67 : efrank 1.2 for d in $FIG_HOME/env/* ; do
68 : efrank 1.1 e=`basename $d`
69 :     AvailableEnvironments="$AvailableEnvironments $e"
70 :     done
71 :    
72 : efrank 1.2 if [ $# -ne 2 ] ; then
73 :     echo "Usage: $0 environment-name pathToCodeInstallation"
74 : efrank 1.1 echo "Available environments: $AvailableEnvironments"
75 :     exit
76 :     fi
77 :    
78 :     #
79 :     # Check to see if the user picked a valid environment.
80 :     #
81 :    
82 : efrank 1.2 if [ ! -d "$FIG_HOME/env/$1" ] ; then
83 : efrank 1.1 echo "Invalid environment name $1"
84 :     echo "Available environments: $AvailableEnvironments"
85 :     exit
86 :     fi
87 :    
88 :     Env=$1
89 :    
90 : efrank 1.2 EnvDir=$FIG_HOME/env/$Env
91 :    
92 :     if [ ! -d $EnvDir ] ; then
93 :     echo "Environment directory $Env does not exist, exiting"
94 :     exit
95 :     fi
96 :    
97 : efrank 1.1 #
98 : efrank 1.2 # pull off the path to the base of the code installation
99 : efrank 1.1 #
100 :    
101 : efrank 1.2 CodeInstallDir=$2
102 : efrank 1.1
103 : efrank 1.2 if [ ! -d $CodeInstallDir ] ; then
104 :     echo "Code Installation Directory $CodeInstallDir does not exist, exiting"
105 :     exit
106 :     fi
107 :     if [ ! -d $CodeInstallDir/FigKernelPackages ] ; then
108 :     echo "No FigKernelPackages in $CodeInstallDir, exiting"
109 : efrank 1.1 exit
110 :     fi
111 :    
112 : efrank 1.2
113 : efrank 1.1 #
114 :     # Define the tool_hdr locations.
115 :     #
116 :    
117 : efrank 1.2 ToolHeaderPerl=./tool_hdr
118 :     ToolHeaderPython=./tool_hdr_py
119 : efrank 1.1
120 :    
121 :     #
122 :     # Find python. It might be in the env dir, or it might be in the system.
123 :     #
124 :    
125 :     if [ -x "$EnvDir/bin/python" ] ; then
126 :     PythonPath=$EnvDir/bin/python
127 :     else
128 :     PythonPath=`which python`
129 :     fi
130 :    
131 :     if [ ! -x "$PythonPath" ] ; then
132 :     echo "Could not find working python at $PythonPath"
133 :     exit
134 :     fi
135 :    
136 :     #
137 :     # Find perl. It might be in the env dir, or it might be in the system.
138 :     #
139 :    
140 :     if [ -x "$EnvDir/bin/perl" ] ; then
141 :     PerlPath=$EnvDir/bin/perl
142 :     else
143 :     PerlPath=`which perl`
144 :     fi
145 :    
146 :     if [ ! -x "$PerlPath" ] ; then
147 :     echo "Could not find working perl at $PerlPath"
148 :     exit
149 :     fi
150 :    
151 :     #
152 :     # Compute python version.
153 :     #
154 :    
155 :     PythonVersion=`$PythonPath -c 'import sys; print "%d.%d" % (sys.version_info[:2])'`
156 :    
157 :     #
158 :     # Hostname information.
159 :     #
160 :    
161 :     MyHostname=`hostname`
162 :     MyBaseURL="http://$MyHostname"
163 :    
164 :     #
165 :     # Compute some paths.
166 :     #
167 :    
168 : efrank 1.2 UserPath="$CodeInstallDir/bin/$RTARCH:$FIG_HOME/FIG/bin:$FIG_HOME/bin:$EnvDir/bin"
169 : efrank 1.1 BLASTMAT="$FIG_HOME/BLASTMAT"
170 : efrank 1.2 OurPythonStuff="$CodeInstallDir/lib/$RTARCH:$EnvDir/lib/python$PythonVersion/site-packages"
171 : efrank 1.1
172 :     #
173 :     # fig-user-env.sh
174 :     #
175 :    
176 :     cat <<EOF >fig-user-env.sh
177 :     export FIG_HOME=$FIG_HOME
178 :     export FIG_ENVIRONMENT=$EnvDir
179 :     export FIG_PYTHON=$PythonPath
180 :     export FIG_PERL=$PerlPath
181 :    
182 :     export PATH=\${PATH}:$UserPath
183 :    
184 :     DELIM=
185 :     if [ -n "\$PYTHONPATH" ] ; then
186 :     DELIM=:
187 :     fi
188 :     export PYTHONPATH=\${PYTHONPATH}\${DELIM}$OurPythonStuff
189 :    
190 :     export BLASTMAT=$BLASTMAT
191 :    
192 :     EOF
193 :    
194 :     #
195 : efrank 1.3 # fig-user-env.csh
196 :     #
197 :    
198 :     cat <<EOF >fig-user-env.csh
199 :    
200 :     #
201 :     # This file is automatically generated by configure-env
202 :     # Do not edit by hand, or changes may be lost.
203 :     #
204 :    
205 :     setenv FIG_HOME $FIG_HOME
206 :     setenv FIG_ENVIRONMENT $EnvDir
207 :     setenv FIG_PYTHON $PythonPath
208 :     setenv FIG_PERL $PerlPath
209 :    
210 :     setenv PATH \${PATH}:$UserPath
211 :    
212 :     if (\$?PYTHONPATH) then
213 :     setenv PYTHONPATH \${PYTHONPATH}:$OurPythonStuff
214 :     else
215 :     setenv PYTHONPATH $OurPythonStuff
216 :     endif
217 :    
218 :     if (\$?LD_LIBRARY_PATH) then
219 :     setenv LD_LIBRARY_PATH \${LD_LIBRARY_PATH}:$EnvDir/lib
220 :     else
221 :     setenv LD_LIBRARY_PATH $EnvDir/lib
222 :     endif
223 :    
224 :     setenv BLASTMAT $BLASTMAT
225 :    
226 :     EOF
227 :    
228 :    
229 :     #
230 : efrank 1.1 # FIG_Config.pm
231 :     #
232 :    
233 : efrank 1.2 cat <<EOF > FIG_Config.pm
234 : efrank 1.1 package FIG_Config;
235 :    
236 :     # Each setting of a variable MUST be on a single line. We use code during
237 :     # updates to salvage local settings, which will lead to a disaster if you
238 :     # do not conform to this rule.
239 :    
240 :     \$fig_disk = "$FIG_HOME";
241 :     \$blastmat = "\$fig_disk/BLASTMAT";
242 :     \$fig = "\$fig_disk/FIG";
243 : efrank 1.2 \$bin = "$CodeInstallDir/bin/$RTARCH";
244 : efrank 1.1 \$ext_bin = "$EnvDir/bin";
245 :     \$data = "\$fig/Data";
246 :     \$global = "\$data/Global";
247 :     \$organisms = "\$data/Organisms";
248 :     \$RC = "\$fig_disk/FIG/ResolutionCenter";
249 :     \$NR = "\$fig_disk/FIG/NR";
250 :     \$temp = "\$fig_disk/FIG/Tmp";
251 :     \$temp_url = "$MyBaseURL/FIG-Tmp";
252 :     \$cgi_url = "$MyBaseURL/FIG";
253 :    
254 :     EOF
255 :    
256 :     #
257 :     # FIG_Config.py
258 :     #
259 :    
260 : efrank 1.2 cat <<EOF > FIG_Config.py
261 : efrank 1.1
262 :     import os.path
263 :    
264 :     # Each setting of a variable MUST be on a single line. We use code during
265 :     # updates to salvage local settings, which will lead to a disaster if you
266 :     # do not conform to this rule.
267 :    
268 :     fig_disk = "$FIG_HOME"
269 :     blastmat = os.path.join(fig_disk, "BLASTMAT")
270 :     fig = os.path.join(fig_disk, "FIG")
271 : efrank 1.4 bin = "$CodeInstallDir/bin/$RTARCH/"
272 : efrank 1.1 ext_bin = os.path.join("$EnvDir", "bin")
273 :     data = os.path.join(fig, "Data")
274 :     global_dir = os.path.join(data, "Global")
275 :     organisms = os.path.join(data, "Organisms")
276 :     RC = os.path.join(fig, "ResolutionCenter")
277 :     NR = os.path.join(fig, "NR")
278 :     temp = os.path.join(fig, "Tmp")
279 :     temp_url = "$MyBaseURL/FIG-Tmp"
280 :     cgi_url = "$MyBaseURL/FIG"
281 :    
282 :     EOF
283 :    
284 :     #
285 :     # Tool header.
286 :     #
287 :    
288 :     cat <<EOF > $ToolHeaderPerl
289 :     #!$PerlPath
290 :    
291 :     use Data::Dumper;
292 :     use Carp;
293 :    
294 : efrank 1.2 use lib "$CodeInstallDir/lib/$RTARCH/FigKernelPackages";
295 : efrank 1.1
296 :     use FIG_Config;
297 :    
298 :     EOF
299 :    
300 :     cat <<EOF > $ToolHeaderPython
301 :     #!$PythonPath
302 :    
303 : efrank 1.4 import sys
304 :     sys.path.append("$CodeInstallDir/lib/$RTARCH/FigCommon")
305 : efrank 1.1
306 :     EOF
307 :    
308 :     #
309 :     # Start and stop servers scripts.
310 :     #
311 :    
312 : efrank 1.2 cat <<EOF > start-servers
313 : efrank 1.1 #!/bin/sh
314 :    
315 :     EOF
316 : efrank 1.2 chmod +x start-servers
317 : efrank 1.1
318 : efrank 1.2 cat <<EOF > stop-servers
319 : efrank 1.1 #!/bin/sh
320 :    
321 :     EOF
322 : efrank 1.2 chmod +x stop-servers
323 : efrank 1.1
324 :    
325 :     #
326 : efrank 1.2 # Do environment-specific configurations. We pass the path in
327 :     # which the config tools are to find the files to modify
328 : efrank 1.1 #
329 :    
330 :     if [ -f $EnvDir/configure-env-specific ] ; then
331 : efrank 1.2 . $EnvDir/configure-env-specific $GenDir
332 : efrank 1.1 fi
333 :    
334 :    
335 :     #
336 :     # Make sure this file ends properly for a perl module.
337 :     #
338 : efrank 1.2 echo "1;" >> FIG_Config.pm
339 : efrank 1.1

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3