diff -r 333964c621f1 -r cb59d6afeb61 openpkg/release.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/openpkg/release.sh Tue Jan 06 23:40:39 2009 +0100
@@ -0,0 +1,147 @@
+#!@l_prefix@/lib/openpkg/bash
+##
+## release -- OpenPKG Release Determination Utility
+## Copyright (c) 2000-2007 OpenPKG Foundation e.V.
+## Copyright (c) 2000-2007 Ralf S. Engelschall
+##
+## Permission to use, copy, modify, and distribute this software for
+## any purpose with or without fee is hereby granted, provided that
+## the above copyright notice and this permission notice appear in all
+## copies.
+##
+## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+## SUCH DAMAGE.
+##
+
+# configuration
+prefix="@l_prefix@"
+
+# minimum command line parsing
+opt_F="OpenPKG-%t %u"
+opt_r=""
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -F ) opt_F="$2"; shift; shift ;;
+ --fmt ) opt_F="$2"; shift; shift ;;
+ -F* ) opt_F="`expr ".$1" : '.-F\(.*\)'`"; shift ;;
+ --fmt=* ) opt_F="`expr ".$1" : '.--fmt=\(.*\)'`"; shift ;;
+ -r ) opt_r="$2"; shift; shift ;;
+ --release ) opt_r="$2"; shift; shift ;;
+ -r* ) opt_r="`expr ".$1" : '.-r\(.*\)'`"; shift ;;
+ --release=* ) opt_r="`expr ".$1" : '.--release=\(.*\)'`"; shift ;;
+ * ) break ;;
+ esac
+done
+
+# translate a release number to a release tag
+number_to_tag () {
+ sed -e 's;^;X;' \
+ -e 's;^X\([^.-][^.-]*\.[^.-][^.-]*\)\.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].*$;\1-SOLID;' \
+ -e 's;^X\([^.-][^.-]*\.[^.-][^.-]*\)\.[^.-][^.-]*.*$;\1-RELEASE;' \
+ -e 's;^X\([^.-][^.-]*\)\.[^.-][^.-]*.*$;\1-STABLE;' \
+ -e 's;^X[^.-][^.-]*.*$;CURRENT;' \
+ -e 's;^X.*$;UNKNOWN;'
+}
+
+# sanity check a release tag
+tag_sanity () {
+ sed -e 's;^;X;' \
+ -e 's;^X[^.-][^.-]*\.[^.-][^.-]*-RELEASE$;OK;' \
+ -e 's;^X[^.-][^.-]*\.[^.-][^.-]*-SOLID-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$;OK;' \
+ -e 's;^X[^.-][^.-]*\.[^.-][^.-]*-SOLID$;OK;' \
+ -e 's;^X[^.-][^.-]*-STABLE-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$;OK;' \
+ -e 's;^X[^.-][^.-]*-STABLE$;OK;' \
+ -e 's;^XCURRENT-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$;OK;' \
+ -e 's;^XCURRENT$;OK;' \
+ -e 's;^X.*$;ERROR;'
+}
+
+# determine release
+tag=""
+if [ ".$opt_r" != . ]; then
+ tag=`echo ".$opt_r" | sed -e 's;^\.;;' | number_to_tag`
+elif [ -f "$prefix/etc/openpkg/release" ]; then
+ tag=`(cat $prefix/etc/openpkg/release; echo "") | sed \
+ -e 's;^;X;' \
+ -e 's;^X *TAG *= *\([^ ][^ ]*\).*;\1;' \
+ -e '/^X/d' | \
+ sed -n -e '$p'`
+else
+ tag=`$prefix/bin/openpkg rpm \
+ -q --qf '%{VERSION}\n' openpkg | number_to_tag`
+fi
+if [ .`echo ".$tag" | sed -e 's;^\.;;' | tag_sanity` = .ERROR ]; then
+ echo "openpkg:release: WARNING: unable to determine OpenPKG release tag" 1>&2
+ tag="UNKNOWN"
+fi
+
+# determine distribution URL
+url=""
+if [ -f "$prefix/etc/openpkg/release" ]; then
+ url=`(cat $prefix/etc/openpkg/release; echo "") | sed \
+ -e 's;^;X;' \
+ -e 's;^X *URL *= *\([^ ][^ ]*\).*;\1;' \
+ -e '/^X/d' | \
+ sed -n -e '$p'`
+fi
+if [ ".$url" = . ]; then
+ url="ftp://ftp.openpkg.org/*"
+fi
+case ".$url" in
+ */\* )
+ url=`echo ".$url" | sed -e 's;^\.;;' -e 's;/\*$;;'`
+ case "$tag" in
+ CURRENT )
+ url="$url/current/SRC/"
+ ;;
+ CURRENT-* )
+ version=`echo "$tag" | sed -e 's;^CURRENT-;;'`
+ url="$url/current/$version/"
+ ;;
+ *-STABLE )
+ version=`echo "$tag" | sed -e 's;^\(.*\)-STABLE$;\1;'`
+ url="$url/stable/$version/"
+ ;;
+ *-STABLE-* )
+ version=`echo "$tag" | sed -e 's;^\(.*\)-STABLE-\(.*\)$;\1.\2;'`
+ url="$url/stable/$version/"
+ ;;
+ *-SOLID )
+ version=`echo "$tag" | sed -e 's;^\(.*\)-SOLID$;\1;'`
+ url="$url/solid/$version/"
+ ;;
+ *-SOLID-* )
+ version=`echo "$tag" | sed -e 's;^\(.*\)-SOLID-\(.*\)$;\1.\2;'`
+ url="$url/solid/$version/"
+ ;;
+ *-RELEASE )
+ version=`echo "$tag" | sed -e 's;^\(.*\)-RELEASE$;\1;'`
+ url="$url/release/$version/"
+ ;;
+ esac
+ ;;
+esac
+
+# read uuid
+[ -f "$prefix/etc/openpkg/uuid" ] && . "$prefix/etc/openpkg/uuid"
+
+# generate output
+echo "X$opt_F" |\
+sed -e 's/^X//' \
+ -e "s;%t;${tag};g" \
+ -e "s;%u;${url};g" \
+ -e "s;%r;${UUID_REGISTRY};g" \
+ -e "s;%i;${UUID_INSTANCE};g" \
+ -e "s;%p;${UUID_PLATFORM};g" \
+ -e 's/\\n/^/g' | tr '^' '\012'
+