ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/configsdp.txt
(Generate patch)

Comparing configsdp.txt (file contents):
Revision 1.10 by arta, Thu Jan 19 18:20:38 2012 UTC vs.
Revision 1.58 by arta, Thu Jun 16 16:39:28 2016 UTC

# Line 1 | Line 1
1   # This file contains JSOC_SDP-specific configuration information. It is used only if the '-sdp' flag is used
2 < # as an argument to the check-out script (checkoutDRMS.pl).
2 > # as an argument to the check-out script (checkoutDRMS.pl). To change the configuration at Stanford, edit
3 > # this file directly, and commit those changes to the source-tree repository.
4  
5 < # The lines in the __MAKE__ section define JSOC_SDP-specific make variables, targets, and rules. When
6 < # configproj.pl is run, it will process this section and create JSOC/localization/make_basic.mk. These are
5 > # The lines in the __PROJ_MK_RULES__ section define JSOC_SDP-specific make variables, targets, and rules. When
6 > # localize.py is run, it will process this section and create JSOC/localization/make_basic.mk. These are
7   # available to all JSOC_SDP projects.
8  
9 < # The lines in the __PROJ__ section define JSOC_SDP projects. When configproj.pl runs, file content will be
9 > # The lines in the __PROJ__ section define JSOC_SDP projects. When localize.py runs, file content will be
10   # added to JSOC/localization/Rules.mk and JSOC/localization/target.mk.
11  
12 < # The lines in the __LIBS__ section define default JSOC_SDP-specific third-party library configuration information.
13 < # These values apply to all code in both JSOC/base and JSOC/proj directories. Entries in config.local will override
14 < # these values. This section is read by moreconfigure.pl only - configproj.pl does not look at this section.
12 > # The lines in the __PROJCFG__ section define additional project-specific configuration. The code in this
13 > # section must be in a shell-scripting language, and will be executed as is.
14 >
15 > # The lines in the __MAKE__ section define global make variables to configure the make process. A subset of
16 > # these variables defines the locations of JSOC_SDP-specific third-party libraries. These values apply to all code
17 > # in both JSOC/base and JSOC/proj directories.
18 >
19 > __DEFS__
20 > q:SERVER                        hmidb
21 > q:DRMSPGPORT                    5432
22 > q:SUMS_DB_HOST                  hmidb3
23 > q:SUMPGPORT                     5434
24 > a:SUMSD_MAX_THREADS             32
25 > a:SUMSD_LISTENPORT              6004
26 > a:DRMS_LOCAL_SITE_CODE          0x0000
27 > q:DBNAME                        jsoc
28 > q:WEB_DBUSER                    apache
29 > q:POSTGRES_ADMIN                postgres
30 > q:SUMS_MANAGER                  production
31 > q:SUMS_GROUP                    SOI
32 > q:SUMLOG_BASEDIR                /usr/local/logs/SUM
33 > q:SUMBIN_BASEDIR                /usr/local/bin
34 > q:SUMSERVER                     k1.stanford.edu
35 > # The number of SUMS process SETS to spawn. If this number is not 1, then the number of SUMS processes
36 > # is SUM_NUMSUM * 5 + 2.
37 > a:SUM_NUMSUM                    3
38 > a:SUM_MAXNUMSUM                 8
39 > p:SUMS_TAPE_AVAILABLE           1
40 > p:SUMS_MULTIPLE_PARTNSETS       1
41 > # No idea what this parameter means. It isn't used anywhere in our code, but for some reason
42 > # it is part of the config.local set, so we have to include it here.
43 > a:SUMS_DEBUG                    1
44 > q:PRODUSER_DBHOST               hmidb:5432
45 > q:PRODUSER_DBNAME               jsoc
46 > q:PRODUSER_PRODTAB              su_production.produsers
47 > q:PRODUSER_COLUSER              username
48 > q:SUMRM_PART_PERCENT_FREE       3
49 > q:SUMRM_SLEEP                   300
50 > # This is a file in SUMLOG_BASEDIR.
51 > q:SUMRM_LOG                     sum_rm.cfg
52 > q:SUMRM_MAIL                    sys2@solar2
53 > q:SUMRM_NOOP                        0
54 > q:SUMRM_USER                        production
55 > q:SUMRM_NORUN_START                 0
56 > q:SUMRM_NORUN_STOP              0
57 > # JMD
58 > p:JMD_IS_INSTALLED              0
59 > q:JMD_URL                       http://localhost:8080/JMD/JMD
60 > # Remote SUMS
61 > q:RS_SITE_TABLE                         drms.rs_sites
62 > q:RS_REQUEST_TABLE                      drms.rs_requests
63 > q:RS_SU_TABLE                           drms.rs_sus
64 > q:RS_DBNAME                             jsoc
65 > q:RS_DBHOST                             hmidb
66 > a:RS_DBPORT                             5432
67 > q:RS_DBUSER                             production
68 > q:RS_LOCKFILE                           /home/jsoc/locks/remotesums.lck
69 > q:RS_LOGDIR                             /home/jsoc/jsoclogs/rsums
70 > a:RS_DLTIMEOUT                          30
71 > a:RS_REQTIMEOUT                          5
72 > a:RS_MAXTHREADS                         32
73 > q:RS_BINPATH                            /home/jsoc/cvs/Development/JSOC/bin/linux_x86_64
74 > # White-list (access to internal stuff)
75 > a:WL_HASWL                              1
76 > q:WL_FILE                               /web/jsoc/htdocs/whitelist.txt
77 > # Bin paths
78 > q:BIN_EXPORT                            /home/jsoc/cvs/Development/JSOC/bin
79 > q:SCRIPTS_EXPORT                        /home/jsoc/cvs/Development/JSOC/scripts
80 > q:BIN_PY                                /home/jsoc/bin/linux_x86_64/activepython27
81 > a:SUMS_USEMTSUMS                        1
82 > # Email registration
83 > a:REGEMAIL_TIMEOUT                      5
84 > # Slony
85 > q:SLONY_CONFIG                          /home/jsoc/cvs/Development/JSOC/proj/replication/etc/repserver.cfg
86 >
87 > # lev1.5_hmi
88 > q:POLCAL_PARAMS                         /home/jsoc/hmi/tables/lev15/polcal-param-fit.bin
89  
90   __MAKE__
91 < $(CEXESUMS):                    $(LIBSUMSAPI) $(LIBSUM) $(LIBDSTRUCT)
92 < $(MODEXESUMS):                  $(LIBSUMSAPI) $(LIBSUM)
91 > # JSOC_SDP third-party libraries used by base
92 > # The parameters in this section are used to create make variables. For example, the line
93 > # 'POSTGRES_LIB = pq' will cause a make variable named POSTGRES_LIB to be created and to
94 > # be assigned the value 'pq'.
95 >
96 > # If the name in the left column contains a colon, then the name on the LHS is the parameter name. The RHS is
97 > # a description of which platforms or specific machines the parameter applies to. For example,
98 > # the name POSTGRES_INCS:X86_64 implies that the value of the parameter named POSTGRES_INCS is /usr/include
99 > # when make is run on a linux_x86_64 machine. The RHS string can contain either a platform identifier
100 > # (X86_64, IA32, AVX, or IA64) or it can be a string that identifies a particular machine, like d02.
101 > # If the string is not one of the defined platform identifiers, then it is considered a machine identifier.
102 > # A machine identifier can specify more than one machine. The name POSTGRES_INCS:hmidb specifies
103 > # all machines whose names contain the string 'hmidb'. So, for machines hmidb, hmidb2, and hmidb3, the
104 > # value of the POSTGRES_INCS parameter is /usr/local/pgsql/include.
105 > #
106 > # If the RHS is a platform identifier, then make compares the value of $JSOC_MACHINE (which is in
107 > # reality a misnomer, since it truly specifies the name of the machine platform, not the name
108 > # of the machine) to the platform name specified by the RHS string. For example,
109 > # if the RHS string is 'avx', then make compares $JSOC_MACHINE to
110 > # 'linux_avx', and if there is a match, then the parameter's value specified in the second column is assigned
111 > # to the make variable. If the RHS is a machine identifier, then make compares the value of $MACHTYPE
112 > # (another misnormer, since it is the name of the machine, not the name of some type of machine ) to
113 > # the machine names specified by the RHS. For example, if the RHS string is 'hmidb' then make
114 > # compares $MACHTYPE to 'hmidb', and if 'hmidb' is a substring of $MACHTYPE, then the parameter's
115 > # value specified in the second column is assigned to the make variable
116 > #
117 > # Blocks defined by the _CUST_/_ENDCUST_ tags are copied ver batim into the output make file.
118 >
119 > POSTGRES_LIB            pq
120 > CFITSIO_LIB             cfitsio
121 >
122 > POSTGRES_INCS:X86_64    /usr/include
123 > POSTGRES_INCS:IA32      /usr/include
124 > POSTGRES_INCS:AVX       /usr/include
125 > POSTGRES_INCS:IA64      /usr/include/pgsql
126 > POSTGRES_INCS:j1       /usr/include/pgsql
127 > POSTGRES_INCS:d02      /usr/include/pgsql
128 > POSTGRES_INCS:hmidb    /usr/local/pgsql/include
129 > POSTGRES_INCS:cl1n0    __POSTGRES_DEVELOP_NOT_INSTALLED__
130 > POSTGRES_INCS:dcs      /usr/include/pgsql
131 >
132 > POSTGRES_LIBS:X86_64    /usr/lib64
133 > POSTGRES_LIBS:IA32      /usr/lib
134 > POSTGRES_LIBS:AVX       /usr/lib64
135 > POSTGRES_LIBS:IA64      /usr/lib
136 > POSTGRES_LIBS:j1       /usr/lib64
137 > POSTGRES_LIBS:d02      /usr/lib
138 > POSTGRES_LIBS:hmidb    /usr/lib64
139 > POSTGRES_LIBS:cl1n0    /usr/lib64
140 > POSTGRES_LIBS:dcs      /usr/lib64
141 >
142 > CFITSIO_INCS:X86_64     /home/jsoc/include
143 > CFITSIO_INCS:IA32       /home/jsoc/include
144 > CFITSIO_INCS:AVX        /home/jsoc/avx/include
145 > CFITSIO_INCS:IA64       /home/jsoc/include
146 > CFITSIO_INCS:j1         /home/jsoc/include
147 > CFITSIO_INCS:d02        __CFITSIO_NOT_INSTALLED__
148 > CFITSIO_INCS:hmidb      /home/jsoc/include
149 > CFITSIO_INCS:cl1n0      /home/jsoc/include
150 > CFITSIO_INCS:dcs        /home/jsoc/include
151 >
152 > CFITSIO_LIBS:X86_64     /home/jsoc/lib/linux-x86_64
153 > CFITSIO_LIBS:IA32       /home/jsoc/lib/linux-ia32
154 > CFITSIO_LIBS:AVX        /home/jsoc/avx/lib
155 > CFITSIO_LIBS:IA64       /home/jsoc/lib/linux-ia64
156 > CFITSIO_LIBS:j1         /home/jsoc/lib/linux-x86_64
157 > CFITSIO_LIBS:d02        __CFITSIO_NOT_INSTALLED__
158 > CFITSIO_LIBS:hmidb      /home/jsoc/lib/linux-x86_64
159 > CFITSIO_LIBS:cl1n0      /home/jsoc/lib/linux-x86_64
160 > CFITSIO_LIBS:dcs        /home/jsoc/lib/linux-x86_64
161 >
162 > FFTW_INCS:X86_64        /home/jsoc/include
163 > FFTW_INCS:IA32          /home/jsoc/include
164 > FFTW_INCS:AVX           /home/jsoc/avx/include
165 > FFTW_INCS:IA64          /home/jsoc/include
166 >
167 > FFTW_LIBS:X86_64        /home/jsoc/lib/linux-x86_64
168 > FFTW_LIBS:IA32          /home/jsoc/lib/linux-ia32
169 > FFTW_LIBS:AVX           /home/jsoc/avx/lib
170 > FFTW_LIBS:IA64          /home/jsoc/lib/linux-x86_64
171 >
172 > GSL_INCS:X86_64         /home/jsoc/include
173 > GSL_INCS:IA32           /home/jsoc/include
174 > GSL_INCS:AVX            /home/jsoc/avx/include
175 > GSL_INCS:IA64           /home/jsoc/include
176 >
177 > GSL_LIBS:X86_64         /home/jsoc/lib/linux-x86_64
178 > GSL_LIBS:IA32           /home/jsoc/lib/linux-ia32
179 > GSL_LIBS:AVX            /home/jsoc/avx/lib
180 > GSL_LIBS:IA64           /home/jsoc/lib/linux-x86_64
181 >
182 > MPI_INCS:X86_64         /home/jsoc/mpich2/include
183 > MPI_INCS:IA32          
184 > MPI_INCS:AVX            /home/jsoc/avx/include
185 > MPI_INCS:IA64          
186 >
187 > MPI_LIBS:X86_64         /home/jsoc/mpich2/lib
188 > MPI_LIBS:AVX            /home/jsoc/avx/lib
189 >
190 > MPI_PATH:X86_64         /home/jsoc/mpich2/bin
191 > MPI_PATH:AVX            /home/jsoc/avx/bin
192 >
193 > TAR_INCS:X86_64         /home/jsoc/include
194 > TAR_INCS:IA32           /home/jsoc/include
195 > TAR_INCS:AVX            /home/jsoc/avx/include
196 > TAR_INCS:IA64           /home/jsoc/include
197 >
198 > TAR_LIBS:X86_64         /home/jsoc/lib/linux-x86_64
199 > TAR_LIBS:IA32           /home/jsoc/lib/linux-ia32
200 > TAR_LIBS:AVX            /home/jsoc/lib/linux_avx
201 > TAR_LIBS:IA64           /home/jsoc/lib/linux-ia64
202 >
203 > # Set custom make file to tell the make system that the gcc cfitsio library is called
204 > # libcfitsio_gcc.a
205 > _CUST_
206 > ifeq ($(COMPILER), gcc)
207 >    ifeq ($(JSOC_MACHINE), linux_x86_64)
208 >    CFITSIO_LIB = cfitsio_gcc
209 >    endif
210 > endif
211 > _ENDCUST_
212 >
213 > __PROJ_MK_RULES__
214 > $(CEXESUMS):                    $(LIBSUMSAPI) $(LIBCJSON) $(LIBSUM) $(LIBDSTRUCT)
215 > $(MODEXESUMS):                  $(LIBSUMSAPI) $(LIBCJSON) $(LIBSUM)
216  
217   $(MODEXEDROBJ):                 CF_TGT := $(CF_TGT) -I$(SRCDIR)/proj/libs/dr
218   $(MODEXEDR) $(MODEXEDR_SOCK):   $(LIBDR)
21 __END__
219   __PROJ__
220   <?xml version='1.0'?>
221   <projects>
# Line 33 | Line 230 | __PROJ__
230               <subdir>stats</subdir>
231               <subdir>egsehmicomp</subdir>
232               <subdir>imrotate</subdir>
233 +             <subdir>projection</subdir>
234         </subdirs>
235     </proj>
236     <proj>
# Line 61 | Line 259 | __PROJ__
259          </filters>
260     </proj>
261     <proj>
262 +        <name>mhd_32daily</name>
263 +        <subdirs>
264 +                <subdir>apps</subdir>
265 +        </subdirs>
266 +   </proj>
267 +   <proj>
268 +        <name>mhd_64cr</name>
269 +        <subdirs>
270 +                <subdir>apps</subdir>
271 +        </subdirs>
272 +   </proj>
273 +   <proj>
274          <name>util</name>
275          <subdirs>
276               <subdir>apps</subdir>    
# Line 106 | Line 316 | __PROJ__
316     <proj>
317          <name>globalhs</name>
318          <subdirs>
319 <            <subdir>apps/src</subdir>
319 >            <subdir>apps</subdir>
320 >            <subdir>libs/dtgf</subdir>
321 >            <subdir>libs/inv2d</subdir>
322 >            <subdir>libs/pkbgn</subdir>
323 >            <subdir>libs/projection</subdir>
324          </subdirs>
325          <filters>
326               <filter>
# Line 135 | Line 349 | __PROJ__
349              <subdir>apps</subdir>
350              <subdir>off_flat_IDL</subdir>
351          </subdirs>
138        <filters>
139             <filter>
140                  <name>JSOC_MACHINE</name>
141                  <value>linux_x86_64</value>
142             </filter>
143       </filters>
352     </proj>
353    <proj>
354          <name>rings</name>
# Line 149 | Line 357 | __PROJ__
357          </subdirs>
358     </proj>
359    <proj>
360 +        <name>sharp</name>
361 +        <subdirs>
362 +             <subdir>apps</subdir>
363 +        </subdirs>
364 +        <filters>
365 +             <filter>
366 +                  <name>COMPILER</name>
367 +                  <value>icc</value>
368 +             </filter>
369 +       </filters>
370 +   </proj>
371 +  <proj>
372          <name>farside</name>
373          <subdirs>
374               <subdir>apps</subdir>
# Line 163 | Line 383 | __PROJ__
383     <proj>
384          <name>mag</name>
385          <subdirs>
166             <subdir>apps</subdir>
386               <subdir>pfss/apps</subdir>
387               <subdir>ambig/apps</subdir>
388               <subdir>harp/apps</subdir>
389               <subdir>harp/libs/matlab/mex/src/util</subdir>
390               <subdir>harp/libs/matlab/mex/src/mex2c</subdir>
391 +             <subdir>harp/libs/matlab/mfile-mex/standalone</subdir>
392 +             <subdir>harp/libs/matlab/mfile-mex/assignment</subdir>
393 +             <subdir>harp/libs/matlab/mfile-mex/fits</subdir>
394 +             <subdir>harp/libs/matlab/mfile-mex/hmi-mask-patch</subdir>
395               <subdir>ident/apps</subdir>
396               <subdir>ident/libs/mex2c</subdir>
397               <subdir>ident/libs/mexfunctions</subdir>
398               <subdir>ident/libs/util</subdir>
399 +             <subdir>libs</subdir>
400 +             <subdir>libs/util</subdir>
401               <subdir>patch/apps</subdir>
402               <subdir>nlfff/apps</subdir>
403               <subdir>d4vm/apps</subdir>
404               <subdir>remapmags/apps</subdir>
405               <subdir>synop/apps</subdir>
406 +             <subdir>polarfield/apps</subdir>
407          </subdirs>
408          <filters>
409               <filter>
# Line 191 | Line 417 | __PROJ__
417          <subdirs>
418              <subdir>apps</subdir>
419          </subdirs>
420 +        <filters>
421 +             <filter>
422 +                  <name>COMPILER</name>
423 +                  <value>icc</value>
424 +             </filter>
425 +       </filters>
426     </proj>
427     <proj>
428          <name>vfisv</name>
# Line 204 | Line 436 | __PROJ__
436              <subdir>apps</subdir>
437          </subdirs>
438     </proj>
439 +   <proj>
440 +        <name>cgem</name>
441 +        <subdirs>
442 +             <subdir>apps</subdir>
443 +             <subdir>lorentz/apps</subdir>
444 +             <subdir>pdfi/apps</subdir>
445 +        </subdirs>
446 +        <filters>
447 +             <filter>
448 +                  <name>COMPILER</name>
449 +                  <value>icc</value>
450 +             </filter>
451 +       </filters>
452 +   </proj>
453   </projects>
208 __END__
454   __PROJCFG__
455   #! /bin/csh -f
456  
457 < # Project-specific configuration (like adding links to scripts to the $JSOCROOT/scripts
213 < # directory).
214 <
215 < find ../proj/lev0/scripts -mindepth 1 \( -path \*CVS -prune -o -exec ln -s {} . \; -a -exec echo "  " {} " OK" \; \) -o -exec echo "  " {} " ERROR - couldn't create link" \;
216 <
217 < find ../proj/datacapture/scripts -mindepth 1 \( -path \*CVS -prune -o -exec ln -s {} . \; -a -exec echo "  " {} " OK" \; \) -o -exec echo "  " {} " ERROR - couldn't create link" \;
218 < __END__
219 < __LIBS__
220 < # JSOC_SDP third-party libraries used by base
221 <    POSTGRES_LIB = pq
222 <    CFITSIO_LIB = cfitsio
223 <
224 <    ifeq ($(JSOC_MACHINE), linux_x86_64)
225 <      POSTGRES_INCS = /usr/include
226 <      POSTGRES_LIBS = /usr/lib64
227 <      CFITSIO_INCS = /home/jsoc/include
228 <      CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
229 <    endif
230 <
231 <    ifeq ($(JSOC_MACHINE), linux_ia32)
232 <      POSTGRES_INCS = /usr/include
233 <      POSTGRES_LIBS = /usr/lib
234 <      CFITSIO_INCS = /home/jsoc/include
235 <      CFITSIO_LIBS = /home/jsoc/lib/linux-ia32
236 <    endif
237 <
238 <    ifeq ($(JSOC_MACHINE), linux_ia64)
239 <      POSTGRES_INCS = /usr/include/pgsql
240 <      POSTGRES_LIBS = /usr/lib
241 <      CFITSIO_INCS = /home/jsoc/include
242 <      CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
243 <    endif
244 <
245 < # JSOC_SDP third-party libraries used by the project directories
246 <    FFTW3_LIB = fftw3
247 <
248 <    ifeq ($(JSOC_MACHINE), linux_ia32)
249 <      FFTW_INCS = /home/jsoc/include
250 <      FFTW_LIBS = /home/jsoc/lib/linux-ia32
251 <    endif
252 <
253 <    ifeq ($(JSOC_MACHINE), linux_x86_64)
254 <      FFTW_INCS = /home/jsoc/include
255 <      FFTW_LIBS = /home/jsoc/lib/linux-x86_64
256 <    endif
257 <
258 < # Try to specialize for non-default machines
259 <    ifeq ($(MACHTYPE), j1)
260 <      POSTGRES_INCS = /usr/include/pgsql
261 <      POSTGRES_LIBS = /usr/lib64
262 <      CFITSIO_INCS = /home/jsoc/include
263 <      CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
264 <    endif
457 > set PERLBIN = ""
458  
459 <    ifeq ($(MACHTYPE), d02)
460 <      POSTGRES_INCS = /usr/include/pgsql
461 <      POSTGRES_LIBS = /usr/lib
462 <      CFITSIO_INCS = __CFITSIO_NOT_INSTALLED__
463 <      CFITSIO_LIBS = __CFITSIO_NOT_INSTALLED__
271 <   endif
272 <
273 <    ifeq ($(MACHTYPE), dbserver)
274 <      POSTGRES_INCS = /usr/local/pgsql/include
275 <      POSTGRES_LIBS = /usr/lib64
276 <      CFITSIO_INCS = /home/jsoc/include
277 <      CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
459 > if ($PERLBIN == "") then
460 >    if (-x /home/jsoc/bin/linux_x86_64/activeperl) then
461 >        set PERLBIN = "/home/jsoc/bin/linux_x86_64/activeperl"
462 >    else
463 >        set PERLBIN = "perl"
464      endif
465 + endif
466  
467 <    ifeq ($(MACHTYPE), cluster)
468 <      POSTGRES_INCS = __POSTGRES_DEVELOP_NOT_INSTALLED__
469 <      POSTGRES_LIBS = /usr/lib64
283 <      CFITSIO_INCS = /home/jsoc/include
284 <      CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
285 <    endif
286 <
287 <    ifeq ($(MACHTYPE), dcs)
288 <      POSTGRES_INCS = /usr/include/pgsql
289 <      POSTGRES_LIBS = /usr/lib64
290 <      CFITSIO_INCS = /home/jsoc/include
291 <      CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
292 <    endif
293 < # Set custom make file to tell the make system that the gcc cfitsio library is called
294 < # libcfitsio_gcc.a
295 <    ifeq ($(COMPILER), gcc)
296 <      ifeq ($(JSOC_MACHINE), linux_x86_64)
297 <        CFITSIO_LIB = cfitsio_gcc
298 <      endif
299 <    endif
300 < __END__
467 > # Project-specific configuration (like adding links to scripts to the $JSOCROOT/scripts
468 > # directory).
469 > 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"; } }'

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines