summaryrefslogtreecommitdiffstats
path: root/scripts/make_targetinstall.sh
blob: e803b757a22230e692e56ebdba7e2c1b19cc5ae8 (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
97
98
99
100
101
102
103
104
105
#!/bin/bash
#
# automatic generate target install stage for ptx_dist
#

set -e

#. `dirname $0`/libptxdist.sh

usage() {
	echo
	[ -n "$1" ] && echo -e "${PREFIX} error: $1\n"
	echo "usage: $0 <args>"
	echo
	echo " Arguments:"
	echo
	echo "	-t <path>			top directory containing source package" 
	echo "	-c				clean up the temp dir"
	echo "	-d <path>			root of install destination"
	echo "	-p <full filename or wildcard>	original filename pattern"
	echo "	-r <acces right>		access rights"
	echo "	-n <package name>		packagename"
	echo "  -f <full package name>		full packagename"
	echo "	-o <owner>			owner of the file"
	echo "	-g <group>			group of the file"
	echo "	-s <path>			state dir"
	echo "	-i <strip program>		name of the program to strip the binary"
	echo "	-h				show help"
	exit 1
}

while getopts "hct:n:f:p:r:s:o:g:i:d:" flag 
do
    case "$flag" in
        h)  usage
            exit 1
            ;;
	c)  CLEANUP=1
	    ;;
	t)  TOPDIR=$OPTARG
	    ;;
	n)  PACKNAME=$OPTARG
	    ;;
	f)  FPACKNAME=$OPTARG
	    ;;
	p)  FILEPATTERN=$OPTARG
            ;;
        r)  ACCRIGHT=$OPTARG
            ;;
	s)  STATEDIR=$OPTARG
	    ;;
	o)  FILEOWNER=$OPTARG
	    ;;
	g)  FILEGROUP=$OPTARG
	    ;;
	i)  STRIPPER=$OPTARG
	    ;;
        d)  DEST_ROOT=$OPTARG
	    ;;
    esac
done

shift `expr $OPTIND - 1`

ORIG_DIR=`dirname "${FILEPATTERN}"`
ORIG_FILE=`basename "${FILEPATTERN}"`

BUILDDIR=${TOPDIR}/${FPACKNAME}
STAMP=${BUILDDIR}/auto_targetinstall.stamp

[ ! -d "${BUILDDIR}" ] && { echo "Source dir ${BUILDDIR} not found"; exit 1; }

[ ! -e "${DEST_ROOT}" ] && { echo "creating ${DEST_ROOT}"; mkdir -p ${DEST_ROOT}; }

cd ${BUILDDIR}
echo "DEBUG: builddir: ${BUILDDIR}, dest_root: ${DEST_ROOT}, fileowner: $FILEOWNER"

if [ -e $STAMP ];then
	TMP_DEST=`cat auto_targetinstall.stamp`
else
	TMP_DEST=`mktemp -d -p ${BUILDDIR}`
	echo "DEBUG: tmpdir : $TMP_DEST"
	make install DESTDIR=${TMP_DEST}
	echo ${TMP_DEST} > $STAMP
	ls ${TMP_DEST}/${FILEPATTERN} >/dev/null
	[ $? -ne 0 ] && { echo "no valid installation found in ${TMP_DEST}" >&2; exit 1; }
fi


[ ! -d ${TMP_DEST} ] && exit 1

[ ! -z $CLEANUP ] && { rm -rf $TMP_DEST; return; }

cd ${TMP_DEST}

[ -e ${TMP_DEST}/tmp.perms ] && rm ${TMP_DEST}/tmp.perms

for i in `find . -mindepth 1 -name "${ORIG_FILE}"`; do
	if [ ! -d $i ];then
		echo "f:`echo $i | cut -c 2-`:${FILEOWNER}:${FILEGROUP}:${ACCRIGHT}" >> ${TMP_DEST}/tmp.perms
	fi
	[ ! -z ${STATEDIR} ] && mv ${TMP_DEST}/tmp.perms ${STATEDIR}/${PACKNAME}.perms
	[ ! -z ${STRIPPER} ] && ${STRIPPER} -R .note -R .comment $i
	echo $i | cpio -pamd $DEST_ROOT
done