diff options
author | Robert Schwebel <r.schwebel@pengutronix.de> | 2005-12-19 14:08:26 +0000 |
---|---|---|
committer | Robert Schwebel <r.schwebel@pengutronix.de> | 2005-12-19 14:08:26 +0000 |
commit | 941226206ffe9b2bf469cf4dd9a2c71876ab7fbe (patch) | |
tree | 9277b553e9dd06abfafc871c5871921ab55e2b8f /scripts/ipkg-revision | |
parent | 59435e0b4ed2b744e75753b42689996d5786b64c (diff) | |
download | ptxdist-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-x | scripts/ipkg-revision | 128 |
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} + |