blob: b8aa789848858dc4a13e106ee6b99e4be5d110ff (
plain)
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
|
#!/bin/sh
shout() { echo "$0: $@" >&2; }
barf() { shout "fatal: $@"; exit 111; }
safe() { "$@" || barf "cannot $@"; }
safe umask 022
[ -d package ] || barf "no package directory"
[ -d src ] || barf "no src directory"
here=`env - PATH=$PATH pwd`
[ -d compile ] || safe mkdir -p compile
[ -d commmand ] || safe mkdir -p command
[ -r compile/home ] || echo $here > compile/home
[ -h compile/src ] || safe ln -s $here/src compile/src
for i in `ls src`
do
[ ! -d src/$i ] && [ -h compile/$i ] || safe ln -sf src/$i compile/$i
done
for i in `sed -e '/^it-/!d' -e 's/^it-//' < compile/it=d`
do
all="$all $i"
done
other="`grep -v '^it-' compile/it=d`"
usage() { shout "usage: package/compile [ [-]$all ]"; exit 100; }
targets=""
if [ $# -eq 0 ]
then
targets="$all"
else
if [ "$1" = "-" ]
then
shift
suppress=":"
for i in ${1+"$@"}
do
case "$all " in
*\ $i\ *)
;;
*)
usage
;;
esac
suppress="$suppress$i:"
done
for i in $all
do
case "$suppress" in
*:$i:*)
;;
*)
targets="$targets $i"
;;
esac
done
else
for i in ${1+"$@"}
do
case "$all " in
*\ $i\ *)
;;
*)
usage
;;
esac
targets="$targets $i"
done
fi
fi
[ "X$all" != "X" ] && [ "X$targets" = "X" ] && usage
commands=""
for i in $targets
do
commands="$commands `cat package/commands-$i`"
done
safe cd compile
safe make $other `echo "$targets" | sed -e 's/ / it-/g'`
safe cd $here
for i in $commands
do
i=${i%:}
safe rm -f command/$i'{new}'
safe cp -p compile/$i command/$i'{new}'
safe mv -f command/$i'{new}' command/$i
done
exit 0
|