Subversion Repositories DevTools

Rev

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