Subversion Repositories DevTools

Rev

Rev 1050 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1038 dpurdie 1
#
2
#   Receive a package version into dpkg_archive
3
#   Script run by ssh to receive a compressed package and to save it
1050 dpurdie 4
#   Works in bash and dash
1038 dpurdie 5
#
6
#   Assumes that compressed tar output as stdin
7
#
8
#set -x
9
set -e
10
 
1050 dpurdie 11
error() {
1038 dpurdie 12
    echo ERROR: $*
13
    exit 1;
14
}
15
 
1050 dpurdie 16
delete_dir() {
1038 dpurdie 17
    if [ -d "$1" ] ; then
18
            chmod -R u+w "$1"
19
            rm -rf "$1"
20
    fi
21
}
22
 
23
# User options
24
LinkName=
25
while getopts DL: arg ; do
26
    case $arg in
27
        D) set -x ;;
28
        L) LinkName="$OPTARG" ;;
29
        *) error Unknown option: $arg ;;
30
    esac
31
done
32
shift $(($OPTIND - 1))
33
 
34
# User arguments
35
pname=${1:?Need package name}
36
pver=${2:?Need package version}
37
 
38
dpkg="dpkg_archive"
39
[ -d $dpkg ] || error dpkg_archive not found
40
 
41
#
42
#   Names of working directories
43
#
44
newdir="$dpkg/${pname}/${pver}.NEW.TMPDIR"
45
olddir="$dpkg/${pname}/${pver}.OLD.TMPDIR"
46
realdir="$dpkg/${pname}/${pver}"
47
pkgdir="$dpkg/${pname}"
48
 
49
#
50
#   Create package directory
51
#   Ensure its writable
52
mkdir -p "$pkgdir"
53
chmod u+w "$pkgdir"
54
 
55
#
56
#   Delete possible tmp directory
57
delete_dir "$newdir"
58
delete_dir "$olddir"
59
mkdir -p "$newdir"
1044 dpurdie 60
chmod u+w "$newdir"
1038 dpurdie 61
 
62
#
63
#   De-tar the input stream into a working space
64
tar -zx -C "$newdir"
6475 dpurdie 65
if [ ! -f "$newdir/descpkg" ] ; then
66
    delete_dir "$newdir"
67
    error Received package does not have descpkg file
68
fi
1038 dpurdie 69
 
70
#
6475 dpurdie 71
#   Swap in the new directory - minimize disruption
1038 dpurdie 72
#   Then delete the old
73
#
74
if [ -d "$realdir" ] ; then
75
    mv "$realdir" "$olddir"
76
fi
77
mv "$newdir" "$realdir"
78
 
79
#   Delete the original directory
80
delete_dir "$olddir"
81
 
82
# Process possible link
83
if [ "$LinkName" ] ; then
84
    rm -f "$pkgdir/$LinkName"
85
    ln -s "$pver" "$pkgdir/$LinkName"
86
fi
87
 
88
# Fix up permissions on the package and package-version
89
chmod a-w "$pkgdir"
90
chmod a-w "$realdir"
91