/[PAMELA software]/yoda/install-sh
ViewVC logotype

Annotation of /yoda/install-sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6.0 - (hide annotations) (download)
Tue Feb 7 17:10:40 2006 UTC (18 years, 9 months ago) by kusanagi
Branch: MAIN
CVS Tags: YODA6_2/01, YODA6_2/00, YODA6_3/19, YODA6_3/18, YODA6_3/13, YODA6_3/12, YODA6_3/11, YODA6_3/10, YODA6_3/17, YODA6_3/16, YODA6_3/15, YODA6_3/14, YODA6_3/06, YODA6_1/00, YODA6_0/00, YODA6_3/04, YODA6_3/05, YODA6_3/20, YODA6_3/07, YODA6_3/00, YODA6_3/01, YODA6_3/02, YODA6_3/03, YODA6_3/08, YODA6_3/09, HEAD
Changes since 5.0: +0 -0 lines
Several new features in this revision:
a) all the packets are conform to the Mass Memory Format specifications (http://people.roma2.infn.it/~cpu/Mass_Memory_Format.html)
b) unpacking either using the old files structure OR the new one file unpacking.
c) parametrized root files compression factor
d) deleting of the following packet: TofTest, TrkTest, TrkEvent.
e) the Tracker routines now work without the use of temp files.

The point a) allow Yoda to unpack in the root file all the packets generated by the CPU. According to the MassMemoryFormat; that is three possible data are available:

1) almost explicit structure of the packet (like for Log, Tracker, Mcmd, etc....);
2) dummy data collection structure (InitHeader, InitTrailer, CalibHeader, CalibTrailer);
3) just the data of the packet (almost all Alarm and Init procedures). The class regarding this packets have only one parameters, a TArrayC class, which contain the data-block included in the packet (tat is the data below the packet Header).

The point b) has been implemented as a consequence of an agreement about a more compact structure of the unpacked data. Up to now the structure of each unpacked data consisted of a folder, named after the packet type, and three files: xxx.Header.root, xxx.NamePacket.root, xxx.Registry.root.
Starting from this release YODA, by default will unpack the data in a unique root file. The structure of this file will consist of:
- several TTree(s) named after the packet type;
- into each TTree are foreseen three TBranche(s):
    - 'Header'  (the old xxx.Header.root file)
    - 'NameOfThePacket' (the old xxx.Event.root file or the xxx.Event.DETECTOR.root)
    - 'Registry' (the old xxx.Registry.root file)

Anyway is still possible, but deprecated, to unpack using the old structure, passing to the "yoda" command the optional parameter "-multifile"

The point c) has been implemented because is well know that writing time in a TTree is as much fast as much lower is the compression factor for the root file; anyway for a PAMELA dat file, a compression equal to 0 will generate a root file which will be more than two times the original size. To modify the compression parameter just add the optional parameter "-c [0-9]" to the yoda command line.

1 kusanagi 1.1 #!/bin/sh
2 kusanagi 1.2 #
3 kusanagi 1.1 # install - install a program, script, or datafile
4     #
5 kusanagi 2.1 # This originates from X11R5 (mit/util/scripts/install.sh), which was
6     # later released in X11R6 (xc/config/util/install.sh) with the
7     # following copyright and license.
8 kusanagi 1.1 #
9 kusanagi 2.1 # Copyright (C) 1994 X Consortium
10     #
11     # Permission is hereby granted, free of charge, to any person obtaining a copy
12     # of this software and associated documentation files (the "Software"), to
13     # deal in the Software without restriction, including without limitation the
14     # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15     # sell copies of the Software, and to permit persons to whom the Software is
16     # furnished to do so, subject to the following conditions:
17     #
18     # The above copyright notice and this permission notice shall be included in
19     # all copies or substantial portions of the Software.
20     #
21     # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22     # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23     # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24     # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
25     # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
26     # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27     #
28     # Except as contained in this notice, the name of the X Consortium shall not
29     # be used in advertising or otherwise to promote the sale, use or other deal-
30     # ings in this Software without prior written authorization from the X Consor-
31     # tium.
32     #
33     #
34     # FSF changes to this file are in the public domain.
35 kusanagi 1.1 #
36     # Calling this script install-sh is preferred over install.sh, to prevent
37     # `make' implicit rules from creating a file called install from it
38     # when there is no Makefile.
39     #
40     # This script is compatible with the BSD install script, but was written
41     # from scratch. It can only install one file at a time, a restriction
42     # shared with many OS's install programs.
43    
44 kusanagi 1.2
45 kusanagi 1.1 # set DOITPROG to echo to test this script
46    
47     # Don't use :- since 4.3BSD and earlier shells don't like it.
48     doit="${DOITPROG-}"
49    
50 kusanagi 1.2
51 kusanagi 1.1 # put in absolute paths if you don't have them in your path; or use env. vars.
52    
53     mvprog="${MVPROG-mv}"
54     cpprog="${CPPROG-cp}"
55     chmodprog="${CHMODPROG-chmod}"
56     chownprog="${CHOWNPROG-chown}"
57     chgrpprog="${CHGRPPROG-chgrp}"
58     stripprog="${STRIPPROG-strip}"
59     rmprog="${RMPROG-rm}"
60     mkdirprog="${MKDIRPROG-mkdir}"
61    
62 kusanagi 1.2 transformbasename=""
63     transform_arg=""
64 kusanagi 1.1 instcmd="$mvprog"
65     chmodcmd="$chmodprog 0755"
66 kusanagi 1.2 chowncmd=""
67     chgrpcmd=""
68     stripcmd=""
69 kusanagi 1.1 rmcmd="$rmprog -f"
70     mvcmd="$mvprog"
71 kusanagi 1.2 src=""
72     dst=""
73     dir_arg=""
74    
75     while [ x"$1" != x ]; do
76     case $1 in
77 kusanagi 2.1 -c) instcmd=$cpprog
78 kusanagi 1.2 shift
79     continue;;
80    
81     -d) dir_arg=true
82     shift
83     continue;;
84    
85     -m) chmodcmd="$chmodprog $2"
86     shift
87     shift
88     continue;;
89    
90     -o) chowncmd="$chownprog $2"
91     shift
92     shift
93     continue;;
94    
95     -g) chgrpcmd="$chgrpprog $2"
96     shift
97     shift
98     continue;;
99    
100 kusanagi 2.1 -s) stripcmd=$stripprog
101 kusanagi 1.2 shift
102     continue;;
103    
104     -t=*) transformarg=`echo $1 | sed 's/-t=//'`
105     shift
106     continue;;
107    
108     -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
109     shift
110     continue;;
111    
112     *) if [ x"$src" = x ]
113     then
114     src=$1
115     else
116     # this colon is to work around a 386BSD /bin/sh bug
117     :
118     dst=$1
119     fi
120     shift
121     continue;;
122     esac
123 kusanagi 1.1 done
124    
125 kusanagi 1.2 if [ x"$src" = x ]
126     then
127 kusanagi 2.1 echo "$0: no input file specified" >&2
128 kusanagi 1.2 exit 1
129     else
130 kusanagi 2.1 :
131 kusanagi 1.1 fi
132    
133 kusanagi 1.2 if [ x"$dir_arg" != x ]; then
134     dst=$src
135     src=""
136 kusanagi 2.1
137     if [ -d "$dst" ]; then
138 kusanagi 1.2 instcmd=:
139     chmodcmd=""
140     else
141 kusanagi 2.1 instcmd=$mkdirprog
142 kusanagi 1.2 fi
143     else
144    
145     # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
146 kusanagi 2.1 # might cause directories to be created, which would be especially bad
147 kusanagi 1.2 # if $src (and thus $dsttmp) contains '*'.
148    
149 kusanagi 2.1 if [ -f "$src" ] || [ -d "$src" ]
150 kusanagi 1.2 then
151 kusanagi 2.1 :
152 kusanagi 1.2 else
153 kusanagi 2.1 echo "$0: $src does not exist" >&2
154 kusanagi 1.2 exit 1
155     fi
156 kusanagi 2.1
157 kusanagi 1.2 if [ x"$dst" = x ]
158     then
159 kusanagi 2.1 echo "$0: no destination specified" >&2
160 kusanagi 1.2 exit 1
161     else
162 kusanagi 2.1 :
163 kusanagi 1.2 fi
164    
165     # If destination is a directory, append the input filename; if your system
166     # does not like double slashes in filenames, you may need to add some logic
167    
168 kusanagi 2.1 if [ -d "$dst" ]
169 kusanagi 1.2 then
170 kusanagi 2.1 dst=$dst/`basename "$src"`
171 kusanagi 1.2 else
172 kusanagi 2.1 :
173 kusanagi 1.2 fi
174     fi
175    
176     ## this sed command emulates the dirname command
177 kusanagi 2.1 dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
178 kusanagi 1.2
179     # Make sure that the destination directory exists.
180     # this part is taken from Noah Friedman's mkinstalldirs script
181    
182     # Skip lots of stat calls in the usual case.
183     if [ ! -d "$dstdir" ]; then
184 kusanagi 2.1 defaultIFS='
185     '
186     IFS="${IFS-$defaultIFS}"
187 kusanagi 1.2
188 kusanagi 2.1 oIFS=$IFS
189 kusanagi 1.2 # Some sh's can't handle IFS=/ for some reason.
190     IFS='%'
191 kusanagi 2.1 set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
192     IFS=$oIFS
193 kusanagi 1.2
194     pathcomp=''
195    
196     while [ $# -ne 0 ] ; do
197 kusanagi 2.1 pathcomp=$pathcomp$1
198 kusanagi 1.2 shift
199    
200 kusanagi 2.1 if [ ! -d "$pathcomp" ] ;
201 kusanagi 1.2 then
202 kusanagi 2.1 $mkdirprog "$pathcomp"
203 kusanagi 1.2 else
204 kusanagi 2.1 :
205 kusanagi 1.2 fi
206 kusanagi 1.1
207 kusanagi 2.1 pathcomp=$pathcomp/
208 kusanagi 1.1 done
209 kusanagi 1.2 fi
210    
211     if [ x"$dir_arg" != x ]
212     then
213 kusanagi 2.1 $doit $instcmd "$dst" &&
214 kusanagi 1.2
215 kusanagi 2.1 if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
216     if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
217     if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
218     if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
219 kusanagi 1.2 else
220    
221     # If we're going to rename the final executable, determine the name now.
222    
223 kusanagi 2.1 if [ x"$transformarg" = x ]
224 kusanagi 1.2 then
225 kusanagi 2.1 dstfile=`basename "$dst"`
226 kusanagi 1.2 else
227 kusanagi 2.1 dstfile=`basename "$dst" $transformbasename |
228 kusanagi 1.2 sed $transformarg`$transformbasename
229     fi
230    
231     # don't allow the sed command to completely eliminate the filename
232    
233 kusanagi 2.1 if [ x"$dstfile" = x ]
234 kusanagi 1.2 then
235 kusanagi 2.1 dstfile=`basename "$dst"`
236 kusanagi 1.2 else
237 kusanagi 2.1 :
238 kusanagi 1.2 fi
239    
240 kusanagi 2.1 # Make a couple of temp file names in the proper directory.
241    
242     dsttmp=$dstdir/_inst.$$_
243     rmtmp=$dstdir/_rm.$$_
244 kusanagi 1.2
245 kusanagi 2.1 # Trap to clean up temp files at exit.
246    
247     trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
248     trap '(exit $?); exit' 1 2 13 15
249 kusanagi 1.2
250     # Move or copy the file name to the temp name
251    
252 kusanagi 2.1 $doit $instcmd "$src" "$dsttmp" &&
253 kusanagi 1.2
254     # and set any options; do chmod last to preserve setuid bits
255    
256     # If any of these fail, we abort the whole thing. If we want to
257     # ignore errors from any of these, just make sure not to ignore
258     # errors from the above "$doit $instcmd $src $dsttmp" command.
259    
260 kusanagi 2.1 if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
261     if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
262     if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
263     if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
264    
265     # Now remove or move aside any old file at destination location. We try this
266     # two ways since rm can't unlink itself on some systems and the destination
267     # file might be busy for other reasons. In this case, the final cleanup
268     # might fail but the new file should still install successfully.
269    
270     {
271     if [ -f "$dstdir/$dstfile" ]
272     then
273     $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
274     $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
275     {
276     echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
277     (exit 1); exit
278     }
279     else
280     :
281     fi
282     } &&
283 kusanagi 1.2
284     # Now rename the file to the real destination.
285    
286 kusanagi 2.1 $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
287 kusanagi 1.2
288     fi &&
289    
290 kusanagi 2.1 # The final little trick to "correctly" pass the exit status to the exit trap.
291 kusanagi 1.1
292 kusanagi 2.1 {
293     (exit 0); exit
294     }

  ViewVC Help
Powered by ViewVC 1.1.23