1 |
dennisvd |
1904 |
#!/bin/sh |
2 |
|
|
|
3 |
|
|
|
4 |
|
|
vo_sw_dir=${HOME}/vosw |
5 |
|
|
|
6 |
|
|
error() { |
7 |
|
|
echo $@ |
8 |
|
|
exit 1 |
9 |
|
|
} |
10 |
|
|
|
11 |
|
|
log() { |
12 |
|
|
echo LOG: $@ |
13 |
|
|
} |
14 |
|
|
|
15 |
|
|
get_write_lock() { |
16 |
|
|
log "Checking if the vo software area is writable." |
17 |
|
|
if [ -z $vo_sw_dir ] ; then |
18 |
|
|
error "\$$vo_sw_dir_var not set." |
19 |
|
|
fi |
20 |
|
|
|
21 |
|
|
if [ ! -w $vo_sw_dir ] ; then |
22 |
|
|
error "\$$vo_sw_dir_var ($vo_sw_dir) is not writable. (Check your proxy: are you the VO software manager?)" |
23 |
|
|
fi |
24 |
|
|
log "$vo_sw_dir writable OK." |
25 |
|
|
# now do the lockfile shuffle |
26 |
|
|
lockfile=$vo_sw_dir/pkgsrc-lock |
27 |
|
|
log "checking lockfile $lockfile" |
28 |
|
|
if [ -f $lockfile ]; then |
29 |
|
|
log "lockfile exists." |
30 |
|
|
ls -l $lockfile |
31 |
|
|
if [ -z `find $lockfile -mmin -30` ]; then |
32 |
|
|
log "stale lockfile ($lockfile is older than 30 minutes)" |
33 |
|
|
rm -f $lockfile || error "could not remove $lockfile. Call help." |
34 |
|
|
else |
35 |
|
|
log "lockfile is still fresh." |
36 |
|
|
return 1 |
37 |
|
|
fi |
38 |
|
|
else |
39 |
|
|
log "no lockfile found. Setting lock" |
40 |
|
|
fi |
41 |
|
|
# At this point, we've concluded we should try and set the lockfile. |
42 |
|
|
# be careful to avoid race conditions (although rare). |
43 |
|
|
log "attempting to get lock." |
44 |
|
|
a=`mktemp $vo_sw_dir/pkgsrc-lock.XXXXXXXXXX` || error "mktemp failed" |
45 |
|
|
ln $a $lockfile |
46 |
|
|
if [ $? -ne 0 ]; then |
47 |
|
|
log "failed to obtain lock" |
48 |
|
|
rm $a |
49 |
|
|
return 1 |
50 |
|
|
fi |
51 |
|
|
log "lock set" |
52 |
|
|
rm $a |
53 |
|
|
unset a |
54 |
|
|
trap "rm -f $lockfile" INT TERM EXIT |
55 |
|
|
return 0 |
56 |
|
|
} |
57 |
|
|
|
58 |
|
|
echo "try 1:" |
59 |
|
|
get_write_lock |
60 |
|
|
if [ $? -ne 0 ]; then |
61 |
|
|
echo fail |
62 |
|
|
else |
63 |
|
|
echo ok |
64 |
|
|
fi |
65 |
|
|
|
66 |
|
|
echo "try 2:" |
67 |
|
|
get_write_lock |
68 |
|
|
if [ $? -ne 0 ]; then |
69 |
|
|
echo fail |
70 |
|
|
else |
71 |
|
|
echo ok |
72 |
|
|
fi |