blob: e76730b5acefc71f1b156f52917cfa735565da47 (
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/bin/bash
#
# usage: ipkg-revision <some.ipk>
# [new upstream revision or - for no # change]
# [new packet revision or + for increment]
#
# Output:
#
TMPDIR=`mktemp -d /tmp/ptxdist.XXXXXX`
IPKG=$1
IPKG_DIR=`dirname $IPKG`
NEW_REV_PART=$2
NEW_PKG_PART=$3
PREFIX=`basename $0`
usage() {
echo
[ -n "$1" ] && echo -e "${PREFIX} error: $1\n"
echo "usage: $0 <some.ipk> [upstream revision] [packet revision]"
echo
echo "upstream revision: '-': no change"
echo "packet revision: '+': increment"
echo
exit 0
}
#
# Sanity checks
#
[ -z "$IPKG" ] && usage "${PREFIX} error: specify ipkg packet dir as first argument"
if [ ! -f "$IPKG" ]; then
echo -e "\nError: couldn't find $IPKG\n"
exit 1
fi
mkdir -p ${TMPDIR}/control
pushd ${TMPDIR} 2>&1 > /dev/null
#
# Extract control.tar.gz and find out
# upstream version and packet version
#
ar x $IPKG
cd control
tar -zxf ../control.tar.gz
REVISION=`grep -e "^Version[\t ]*:.*" control | sed -e "s/Version[\t ]*:[\t ]*//g" `
PACKAGE=`grep -e "^Package[\t ]*:.*" control | sed -e "s/Package[\t ]*:[\t ]*//g"`
ARCH=`grep -e "^Architecture[\t ]*:.*" control | sed -e "s/Architecture[\t ]*:[\t ]*//g"`
# REVISION contains no "-"? -> we have only an upstream revision, no
# packet revision
if [ "`echo $REVISION | grep '-'`" = "" ]; then
REV_PART="$REVISION"
PKG_PART=""
else
REV_PART=`echo $REVISION | sed -e "s/-.*$//g"`
PKG_PART=`echo $REVISION | sed -e "s/^.*-//g"`
fi
#
# No new revisions? Print out info only
#
if [ "$NEW_REV_PART" = "" ] && [ "$NEW_PKG_PART" = "" ]; then
echo "$REV_PART $PKG_PART"
exit 1
fi
if [ "$NEW_REV_PART" = "-" ] && [ "$NEW_PKG_PART" = "" ]; then
echo "$REV_PART $PKG_PART"
exit 1
fi
#
# We have found out the revisions now; construct the new ones according
# to what the user has specified on the command line.
#
[ "$PKG_PART" = "" ] && PKG_PART=0
[ "$NEW_REV_PART" = "-" ] && NEW_REV_PART=$REV_PART
if [ "$NEW_PKG_PART" = "+" ]; then
NEW_PKG_PART=$((++PKG_PART))
else if [ "$NEW_PKG_PART" = "" ]; then
NEW_PKG_PART=$PKG_PART
fi
fi
[ "$NEW_PKG_PART" != "" ] && NEW_PKG_PART="-$NEW_PKG_PART"
#
# Now we have the new values
#
if [ -e "${IPKG_DIR}/${PACKAGE}_${NEW_REV_PART}${NEW_PKG_PART}_${ARCH}.ipk" ]; then
echo "${PREFIX} error: ${IPKG_DIR}/${PACKAGE}_${NEW_REV_PART}${NEW_PKG_PART}_${ARCH}.ipk already exists" >&2
echo ${IPKG_DIR}/${PACKAGE}_${NEW_REV_PART}${NEW_PKG_PART}_${ARCH}.ipk
rm -fr ${TMPDIR}
exit 1
fi
sed -i -e "s/^Version.*/Version: ${NEW_REV_PART}${NEW_PKG_PART}/g" control
#
# re-package the package
#
tar -zcf ../control-new.tar.gz .
cd ..
rm -fr control
mv control-new.tar.gz control.tar.gz
ar r ${IPKG_DIR}/${PACKAGE}_${NEW_REV_PART}${NEW_PKG_PART}_${ARCH}.ipk `find . -type f` > /dev/null
#
# ok, finished, cleanup
#
popd 2>&1 > /dev/null
echo ${PACKAGE}_${NEW_REV_PART}${NEW_PKG_PART}_${ARCH}.ipk
rm -fr ${TMPDIR}
|