summaryrefslogtreecommitdiff
path: root/packaging/functions.sh
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/functions.sh')
-rw-r--r--packaging/functions.sh71
1 files changed, 51 insertions, 20 deletions
diff --git a/packaging/functions.sh b/packaging/functions.sh
index ba2a797..a46c384 100644
--- a/packaging/functions.sh
+++ b/packaging/functions.sh
@@ -15,26 +15,34 @@ check_header()
$RPM --qf "$QF" "$1"
}
-# Trim release string:
+# Trim version-release string:
# - it is used as direntry below certain paths
# - it is assigned to some variable in scripts, at the end of a line
# - it is used in PROVIDES, at the end of a line
+# Trim name-version-release string:
+# - it is used in update-scripts which are called by libzypp
function trim_release_old()
{
- sed -e "/\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$release_old\$\)/{s,-$release_old_regex_l,-@RELEASE_LONG@,g;s,-$release_old_regex_s,-@RELEASE_SHORT@,g}"
+ sed -e "
+ /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_old_regex_l\$\)/{s,$version_release_old_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_old_regex_s,@VERSION@-@RELEASE_SHORT@,g}
+ s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_old_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
+ "
}
function trim_release_new()
{
- sed -e "/\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$release_new\$\)/{s,-$release_new_regex_l,-@RELEASE_LONG@,g;s,-$release_new_regex_s,-@RELEASE_SHORT@,g}"
+ sed -e "
+ /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_new_regex_l\$\)/{s,$version_release_new_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_new_regex_s,@VERSION@-@RELEASE_SHORT@,g}
+ s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_new_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
+ "
}
# Get single directory or filename with long or short release string
function grep_release_old()
{
- grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]+(-${release_old_regex_l}(\$|[^/]+\$)|-${release_old_regex_s}(\$|[^/]+\$))"
+ grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]+(${version_release_old_regex_l}(\$|[^/]+\$)|${version_release_old_regex_s}(\$|[^/]+\$))"
}
function grep_release_new()
{
- grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]+(-${release_new_regex_l}(\$|[^/]+\$)|-${release_new_regex_s}(\$|[^/]+\$))"
+ grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]+(${version_release_new_regex_l}(\$|[^/]+\$)|${version_release_new_regex_s}(\$|[^/]+\$))"
}
function check_provides()
@@ -49,19 +57,35 @@ function check_provides()
check_header "$pkg"
}
-#usage unrpm <file> $dir
-# Unpack rpm files in directory $dir
-# like /usr/bin/unrpm - just for one file and with no options
-function unrpm()
+#usage unpackage <file> $dir
+# Unpack files in directory $dir
+# like /usr/bin/unpackage - just for one file and with no options
+function unpackage()
{
local file
local dir
file=$1
dir=$2
- CPIO_OPTS="--extract --unconditional --preserve-modification-time --make-directories --quiet"
mkdir -p $dir
pushd $dir 1>/dev/null
- rpm2cpio $file | cpio ${CPIO_OPTS}
+ case $file in
+ *.bz2)
+ bzip2 -d $file
+ ;;
+ *.gz)
+ gzip -d $file
+ ;;
+ *.xz)
+ xz -d $file
+ ;;
+ *.tar|*.tar.bz2|*.tar.gz|*.tgz|*.tbz2)
+ tar xf $file
+ ;;
+ *.rpm)
+ CPIO_OPTS="--extract --unconditional --preserve-modification-time --make-directories --quiet"
+ rpm2cpio $file | cpio ${CPIO_OPTS}
+ ;;
+ esac
popd 1>/dev/null
}
@@ -77,6 +101,8 @@ function cmp_spec ()
local file1 file2
local f
local sh=$1
+ local oldrpm=$2
+ local newrpm=$3
QF="%{NAME}"
@@ -117,19 +143,23 @@ function cmp_spec ()
fi
# Remember to quote the . which is in release
- release_old=$($RPM --qf "%{RELEASE}" "$oldrpm")
- release_new=$($RPM --qf "%{RELEASE}" "$newrpm")
+ version_release_old=$($RPM --qf "%{VERSION}-%{RELEASE}" "$oldrpm")
+ version_release_new=$($RPM --qf "%{VERSION}-%{RELEASE}" "$newrpm")
+ name_ver_rel_old=$($RPM --qf "%{NAME}-%{VERSION}-%{RELEASE}" "$oldrpm")
+ name_ver_rel_new=$($RPM --qf "%{NAME}-%{VERSION}-%{RELEASE}" "$newrpm")
# Short version without B_CNT
- release_old_regex_s=${release_old%.*}
- release_old_regex_s=${release_old_regex_s//./\\.}
- release_new_regex_s=${release_new%.*}
- release_new_regex_s=${release_new_regex_s//./\\.}
+ version_release_old_regex_s=${version_release_old%.*}
+ version_release_old_regex_s=${version_release_old_regex_s//./\\.}
+ version_release_new_regex_s=${version_release_new%.*}
+ version_release_new_regex_s=${version_release_new_regex_s//./\\.}
# Long version with B_CNT
- release_old_regex_l=${release_old//./\\.}
- release_new_regex_l=${release_new//./\\.}
+ version_release_old_regex_l=${version_release_old//./\\.}
+ version_release_new_regex_l=${version_release_new//./\\.}
+ name_ver_rel_old_regex_l=${name_ver_rel_old//./\\.}
+ name_ver_rel_new_regex_l=${name_ver_rel_new//./\\.}
# This might happen when?!
echo "comparing RELEASE"
- if [ "${release_old%.*}" != "${release_new%.*}" ] ; then
+ if [ "${version_release_old%.*}" != "${version_release_new%.*}" ] ; then
case $($RPM --qf '%{NAME}' "$newrpm") in
kernel-*)
# Make sure all kernel packages have the same %RELEASE
@@ -225,3 +255,4 @@ function cmp_spec ()
rm $file1 $file2
return $RES
}
+# vim: tw=666 ts=2 shiftwidth=2 et