File: mini_tpkg.sh

package info (click to toggle)
unbound 1.4.6-1+squeeze3
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 15,700 kB
  • ctags: 5,590
  • sloc: ansic: 56,606; sh: 10,753; yacc: 1,100; python: 1,086; makefile: 447; perl: 141
file content (126 lines) | stat: -rwxr-xr-x 2,760 bytes parent folder | download | duplicates (3)
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
# tpkg that only exes the files.
args="../.."
if test "$1" = "-a"; then
	args=$2
	shift
	shift
fi
	
if test "$1" = "clean"; then
	echo "rm -f result.* .done* .tpkg.var.master .tpkg.var.test"
	rm -f result.* .done* .tpkg.var.master .tpkg.var.test
	exit 0
fi
if test "$1" = "fake"; then
	echo "minitpkg fake $2"
	echo "fake" > .done-`basename $2 .tpkg`
	exit 0
fi
if test "$1" = "report" || test "$2" = "report"; then
	echo "Minitpkg Report"
	for result in *.tpkg; do
		name=`basename $result .tpkg`
		if test -f ".done-$name"; then
			if test "$1" != "-q"; then
				echo "** PASSED ** : $name"
			fi
		else
			if test -f "result.$name"; then
				echo "!! FAILED !! : $name"
			else
				echo ">> SKIPPED<< : $name"
			fi
		fi
	done
	exit 0
fi

if test "$1" != 'exe'; then
	# usage
	echo "mini tpkg. Reduced functionality for old shells."
	echo "	tpkg exe <file>"
	echo "	tpkg fake <file>"
	echo "	tpkg clean"
	echo "	tpkg [-q] report"
	exit 1
fi
shift

# do not execute if the disk is too full
#DISKLIMIT=100000
# This check is not portable (to Solaris 10).
#avail=`df . | tail -1 | awk '{print $4}'`
#if test "$avail" -lt "$DISKLIMIT"; then
	#echo "minitpkg: The disk is too full! Only $avail."
	#exit 1
#fi

name=`basename $1 .tpkg`
dir=$name.$$
result=result.$name
done=.done-$name
success="no"
if test -x "`which bash`"; then
	shell="bash"
else
	shell="sh"
fi

# check already done
if test -f .done-$name; then
	echo "minitpkg .done-$name exists. skip test."
	exit 0
fi

# Extract
echo "minitpkg extract $1 to $dir"
mkdir $dir
gzip -cd $name.tpkg | (cd $dir; tar xf -)
cd $dir
mv $name.dir/* .

# EXE
echo "minitpkg exe $name"
echo "minitpkg exe $name" > $result
if test -f $name.pre; then
	echo "minitpkg exe $name.pre"
	echo "minitpkg exe $name.pre" >> $result
	$shell $name.pre $args >> $result
	if test $? -ne 0; then
		echo "Warning: $name.pre did not exit successfully"
	fi
fi
if test -f $name.test; then
	echo "minitpkg exe $name.test"
	echo "minitpkg exe $name.test" >> $result
	$shell $name.test $args >>$result 2>&1
	if test $? -ne 0; then
		echo "$name: FAILED" >> $result
		echo "$name: FAILED"
		success="no"
	else
		echo "$name: PASSED" >> $result
		echo "$name: PASSED" > ../.done-$name
		echo "$name: PASSED"
		success="yes"
	fi
fi
if test -f $name.post; then
	echo "minitpkg exe $name.post"
	echo "minitpkg exe $name.post" >> $result
	$shell $name.post $args >> $result
	if test $? -ne 0; then
		echo "Warning: $name.post did not exit successfully"
	fi
fi

mv $result ..
cd ..
rm -rf $dir
# compat for windows where deletion may not succeed initially (files locked
# by processes that still have to exit).
if test $? -eq 1; then
	echo "minitpkg waiting for processes to terminate"
	sleep 2 # some time to exit, and try again
	rm -rf $dir
fi