summaryrefslogtreecommitdiffstats
path: root/scripts/ipkg-revision
diff options
context:
space:
mode:
authorRobert Schwebel <r.schwebel@pengutronix.de>2005-12-19 14:08:26 +0000
committerRobert Schwebel <r.schwebel@pengutronix.de>2005-12-19 14:08:26 +0000
commit941226206ffe9b2bf469cf4dd9a2c71876ab7fbe (patch)
tree9277b553e9dd06abfafc871c5871921ab55e2b8f /scripts/ipkg-revision
parent59435e0b4ed2b744e75753b42689996d5786b64c (diff)
downloadptxdist-941226206ffe9b2bf469cf4dd9a2c71876ab7fbe.tar.gz
ptxdist-941226206ffe9b2bf469cf4dd9a2c71876ab7fbe.tar.xz
added
git-svn-id: https://svn.pengutronix.de/svn/ptxdist/trunks/ptxdist-0.7-trunk@3536 33e552b5-05e3-0310-8538-816dae2090ed
Diffstat (limited to 'scripts/ipkg-revision')
-rwxr-xr-xscripts/ipkg-revision128
1 files changed, 128 insertions, 0 deletions
diff --git a/scripts/ipkg-revision b/scripts/ipkg-revision
new file mode 100755
index 000000000..c38acaf98
--- /dev/null
+++ b/scripts/ipkg-revision
@@ -0,0 +1,128 @@
+#!/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
+
+usage() {
+ echo
+ [ -n "$1" ] && echo -e "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 "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 "error: ${IPKG_DIR}/${PACKAGE}_${NEW_REV_PART}${NEW_PKG_PART}_${ARCH}.ipk already exists"
+ 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 "REVISION=$REVISION"
+echo "REV_PART=$REV_PART"
+echo "PKG_PART=$PKG_PART"
+
+rm -fr ${TMPDIR}
+