File: mktarball.sh

package info (click to toggle)
android-platform-build 21-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 4,204 kB
  • ctags: 3,464
  • sloc: python: 3,797; cpp: 2,788; cs: 1,971; sh: 1,302; makefile: 1,114; ansic: 917; java: 734
file content (57 lines) | stat: -rwxr-xr-x 1,502 bytes parent folder | download
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
#!/bin/bash

# $1: path to fs_get_stats program
# $2: start dir
# $3: subdir to tar up (from $2)
# $4: target tar name
# $5: target tarball name (usually $(3).bz2)

if [ $# -ne 5 ]; then
    echo "Error: wrong number of arguments in cmd: $0 $* "
    exit 1
fi

fs_get_stats=`readlink -f $1`
start_dir=`readlink -f $2`
dir_to_tar=$3
target_tar=`readlink -f $4`
target_tarball=`readlink -f $5`

cd $2

#tar --no-recursion -cvf ${target_tar} ${dir_to_tar}
rm ${target_tar} > /dev/null 2>&1

# do dirs first
subdirs=`find ${dir_to_tar} -type d -print`
files=`find ${dir_to_tar} \! -type d -print`
for f in ${subdirs} ${files} ; do
    curr_perms=`stat -c 0%a $f`
    [ -d "$f" ] && is_dir=1 || is_dir=0
    new_info=`${fs_get_stats} ${curr_perms} ${is_dir} ${f}`
    new_uid=`echo ${new_info} | awk '{print $1;}'`
    new_gid=`echo ${new_info} | awk '{print $2;}'`
    new_perms=`echo ${new_info} | awk '{print $3;}'`
#    echo "$f: dir: $is_dir curr: $curr_perms uid: $new_uid gid: $new_gid "\
#         "perms: $new_perms"
    tar --no-recursion --numeric-owner --owner $new_uid \
        --group $new_gid --mode $new_perms -p -rf ${target_tar} ${f}
done

if [ $? -eq 0 ] ; then
    case "${target_tarball}" in
    *.bz2 )
        bzip2 -c ${target_tar} > ${target_tarball}
        ;;
    *.gz )
        gzip -c ${target_tar} > ${target_tarball}
        ;;
    esac
    success=$?
    [ $success -eq 0 ] || rm -f ${target_tarball}
    rm -f ${target_tar}
    exit $success
fi

rm -f ${target_tar}
exit 1