mirror of
https://github.com/rxrbln/t2sde.git
synced 2025-05-08 20:21:59 +08:00
96 lines
2.8 KiB
Bash
Executable File
96 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# --- T2-COPYRIGHT-NOTE-BEGIN ---
|
|
# T2 SDE: scripts/Create-PkgUpdPatch
|
|
# Copyright (C) 2004 - 2023 The T2 SDE Project
|
|
#
|
|
# This Copyright note is generated by scripts/Create-CopyPatch,
|
|
# more information can be found in the files COPYING and README.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License version 2.
|
|
# --- T2-COPYRIGHT-NOTE-END ---
|
|
|
|
pkg="$1"; shift
|
|
ver="$1"; shift
|
|
|
|
if [ -z "$ver" ]; then
|
|
ver=${pkg/*-/}
|
|
pkg=${pkg%-$ver}
|
|
fi
|
|
|
|
if [ -z "$pkg" -o -z "$ver" ]; then
|
|
echo "Usage: $0 pkg ver"
|
|
echo " or: $0 pkg-ver"
|
|
exit
|
|
fi
|
|
|
|
pkg=`echo $pkg | tr A-Z a-z`
|
|
|
|
echo "[ $pkg ]" >&2
|
|
pkgdir=`echo package/*/$pkg`
|
|
|
|
if [ ! -d "$pkgdir" ]; then
|
|
echo "Can't find package for '$x'!" >&2
|
|
else
|
|
oldver="`egrep "^\[(V|VER|VERSION)\] " $pkgdir/$pkg.desc |
|
|
sed 's, ,\t,g; s,\t\t*,\t,g' | cut -f2`"
|
|
tmpfile=`mktemp` tmpfile2=`mktemp`
|
|
echo "Update patch for $pkg ($pkgdir): $oldver -> $ver"
|
|
|
|
# [V]
|
|
expression="-e 's@^\[\(V\|VER\|VERSION\)\].*@[\1] $ver@'"
|
|
# file at [D]
|
|
expression="$expression -e '/^\[\(D\|DOWN\|DOWNLOAD\)\]/ s@${oldver//./\\.}@$ver@g;'"
|
|
|
|
# detect download location structure
|
|
sed -n -e 's,^\[\(D\|DOWN\|DOWNLOAD\)\].*[ \t]\([^ \t]*\)[ \t]*$,\2,p' $pkgdir/$pkg.desc > $tmpfile
|
|
|
|
oldver2=${oldver%.*}
|
|
ver2=${ver%.*}
|
|
[ "$oldver2" == "$oldver" -o "$ver2" == "$ver" ] && oldver2= ver2=
|
|
if grep -q "/$oldver/$" $tmpfile; then
|
|
# $ver -> /$ver/
|
|
oldver="${oldver//./\\.}"
|
|
expression="$expression -e '/^\[\(D\|DOWN\|DOWNLOAD\)\]/ s@/$oldver/[^ \t]*\$@/$ver/@g;'"
|
|
elif [ "$oldver" != "${oldver//-/}" ] && grep -q "/${oldver//-/}/\$" $tmpfile; then
|
|
# $ver-$extra -> /$ver/
|
|
oldver="${oldver%%-*}" oldver="${oldver//./\\.}"
|
|
ver="${ver%%-*}"
|
|
expression="$expression -e '/^\[\(D\|DOWN\|DOWNLOAD\)\]/ s@/$oldver/[^ \t]*\$@/$ver/@g;'"
|
|
else
|
|
# $ver.$extra -> /$ver/
|
|
oldver="${oldver%%-*}"
|
|
ver="${ver%%-*}"
|
|
|
|
oldauxver=
|
|
auxver=
|
|
pattern="[^\.]*"
|
|
while [ "${oldver#$oldauxver}" ]; do
|
|
eval $(echo "$oldver $ver" | sed -e "s,\($pattern\).* \($pattern\).*,oldauxver='\1' auxver='\2',")
|
|
if grep -q "/$oldauxver/\$" $tmpfile; then
|
|
oldver="${oldauxver%%-*}" oldauxver="${oldauxver//./\\.}"
|
|
ver="${auxver%%-*}"
|
|
expression="$expression -e '/^\[\(D\|DOWN\|DOWNLOAD\)\]/ s@/$oldver/[^ \t]*\$@/$ver/@g;'"
|
|
break
|
|
fi
|
|
pattern="$pattern\.\?[^\.]*"
|
|
done
|
|
fi
|
|
|
|
# leading short, major version directory, too
|
|
if [ "$oldver2" ]; then
|
|
oldver2="${oldver2//./\\.}"
|
|
expression="$expression -e '/^\[\(D\|DOWN\|DOWNLOAD\)\]/ s@/$oldver2/@/$ver2/@g;'"
|
|
fi
|
|
|
|
# checksum at [D]
|
|
expression="$expression -e 's,^\[\(D\|DOWN\|DOWNLOAD\)\] [^ ]\+,[\1] 0,'"
|
|
|
|
eval "sed $expression $pkgdir/$pkg.desc" > $tmpfile
|
|
diff -u ./$pkgdir/$pkg.desc $tmpfile | tee $tmpfile2
|
|
[ -s $tmpfile2 ] || echo "Patch for '$x' is empty!" >&2
|
|
rm -f $tmpfile $tmpfile2
|
|
fi
|
|
echo
|