summaryrefslogtreecommitdiffstats
path: root/store.sh
blob: e59f99dad47cc2ade1e119d73f83a22e025bfa24 (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
#!/bin/sh
#
#   Copyright (c)  2000, 2001		Dmitry Butskoy
#					<dmitry@butskoy.name>
#   License:  GPL v2 or any later
#
#   See COPYING for the status of this software.
#

#
#   Store package script.
#   Normally invoked by a Makefile.
#
#   Stores package with an appropriate version info 
#   as the main directory postfix (i.e., name-0.1.2/*),
#   even if the source dir don`t have it.
#


[ $# -lt 2 ] && {
	echo "Usage: $0 target store_dir" >&2
	exit 2
}


target=$1
store_dir=$2
main_dir=`basename \`pwd\``


#  Find current version info.

dir_v=""
file_v=""

dir_v=`expr $main_dir : '.*-\([0-9.]*\)$'`
[ -r VERSION ] && file_v=`awk '/^ *#/ { print $3 ; exit; }
			/^ *VERSION *=/ {split ($0, a, "="); print a[2]; exit; }
			{ print $0; exit; }' < VERSION `
[ -n "$file_v" ] && file_v=`echo $file_v `	#  to strip possible spaces

[ -z "$file_v" -a -z "$dir_v" ] && {
	echo "$0: Cannot determine version (use dirname postfix or VERSION file)" >&2
	exit 2
}

[ -n "$file_v" -a -n "$dir_v" -a "$dir_v" != "$file_v" ] && {
	echo "$0: Different version from dirname postfix and VERSION file" >&2
	exit 2
}

version="$dir_v"
[ -z "$version" ] && version="$file_v"


targ_vers=${target}-$version

cd ..

[ "$main_dir" != "$targ_vers" ] && {
    ln -s "$main_dir" "${main_dir}~" || exit 1	#  paranoia and paranoia
    mv -f "$main_dir" "$targ_vers" || exit 1
}

tar -cvhf - "$targ_vers" | gzip -c -9 > $store_dir/${targ_vers}.tar.gz

[ "$main_dir" != "$targ_vers" ] && {
    mv -f "$targ_vers" "$main_dir"
    rm -f "${main_dir}~"
}

exit 0