Commit 709e8e54 authored by Vitaly Lipatov's avatar Vitaly Lipatov

release-upgrade: rewrite to support p8 -> Sisyphus and vice versa

parent 53c77965
...@@ -28,18 +28,23 @@ __replace_text_in_alt_repo() ...@@ -28,18 +28,23 @@ __replace_text_in_alt_repo()
done done
} }
__wcount()
{
echo "$*" | wc -w
}
__detect_alt_release_by_repo() __detect_alt_release_by_repo()
{ {
local BRD=$(cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list | \ local BRD=$(cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list | \
grep -v "^#" | grep "p[5-9]/branch" | sed -e "s|.*\(p[5-9]\)/branch.*|\1|g" | sort -u ) grep -v "^#" | grep "p[5-9]/branch/" | sed -e "s|.*\(p[5-9]\)/branch.*|\1|g" | sort -u )
if [ $(estrlist count $BRD) = "1" ] ; then if [ $(__wcount $BRD) = "1" ] ; then
echo "$BRD" echo "$BRD"
return return
fi fi
local BRD=$(cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list | \ local BRD=$(cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list | \
grep -v "^#" | grep "Sisyphus" | sed -e "s|.*\(Sisyphus\).*|\1|g" | sort -u ) grep -v "^#" | grep "Sisyphus/" | sed -e "s|.*\(Sisyphus\).*|\1|g" | sort -u )
if [ $(estrlist count $BRD) = "1" ] ; then if [ $(__wcount $BRD) = "1" ] ; then
echo "$BRD" echo "$BRD"
return return
fi fi
...@@ -51,24 +56,28 @@ __replace_alt_version_in_repo() ...@@ -51,24 +56,28 @@ __replace_alt_version_in_repo()
{ {
local i local i
assure_exists apt-repo assure_exists apt-repo
echo "Upgrading $DISTRNAME from $1 to $2 ..." #echo "Upgrading $DISTRNAME from $1 to $2 ..."
docmd apt-repo list | sed -e "s|\($1/branch\)|{\1}->{$2/branch}|g" | egrep --color -- "$1/branch" docmd apt-repo list | sed -e "s|\($1\)|{\1}->{$2}|g" | egrep --color -- "$1"
confirm "Are these correct changes?" || fatal "Exiting" confirm "Are these correct changes?" || fatal "Exiting"
__replace_text_in_alt_repo "/^ *#/! s!$1/branch!$2/branch!g" __replace_text_in_alt_repo "/^ *#/! s!$1!$2!g"
docmd apt-repo list docmd apt-repo list
} }
__update_alt_repo_to_next_distro() __alt_repofix()
{ {
case "$DISTRVERSION" in load_helper epm-repofix
p6) pkg_filenames= epm_repofix
docmd epm install apt-conf-branch altlinux-release-p6 || fatal __replace_text_in_alt_repo "/^ *#/! s!\[p[6-9]\]![updates]!g"
load_helper epm-repofix }
pkg_filenames= epm_repofix
__replace_alt_version_in_repo p6 p7 __update_to_the_distro()
__replace_text_in_alt_repo "/^ *#/! s!\[p6\]![updates]!g" {
__alt_repofix
case "$1" in
p7)
docmd epm update || fatal docmd epm update || fatal
docmd epm install apt rpm apt-conf-branch || fatal "Check an error and run epm release-upgrade again" docmd epm install apt rpm apt-conf-branch altlinux-release-p7 || fatal "Check an error and run epm release-upgrade again"
__alt_repofix
__replace_text_in_alt_repo "/^ *#/! s!\[updates\]![p7]!g" __replace_text_in_alt_repo "/^ *#/! s!\[updates\]![p7]!g"
docmd epm update || fatal docmd epm update || fatal
docmd epm upgrade || fatal "Check an error and run epm release-upgrade again" docmd epm upgrade || fatal "Check an error and run epm release-upgrade again"
...@@ -76,18 +85,14 @@ __update_alt_repo_to_next_distro() ...@@ -76,18 +85,14 @@ __update_alt_repo_to_next_distro()
info "Done." info "Done."
info "Run epm release-upgrade again for update to p8" info "Run epm release-upgrade again for update to p8"
;; ;;
p7) p8)
docmd epm install apt-conf-branch altlinux-release-p7 || fatal
load_helper epm-repofix
pkg_filenames= epm_repofix
__replace_alt_version_in_repo p7 p8
__replace_text_in_alt_repo "/^ *#/! s!\[p7\]![updates]!g"
docmd epm update || fatal docmd epm update || fatal
if ! docmd epm install apt rpm apt-conf-branch ; then if ! docmd epm install apt rpm apt-conf-branch altlinux-release-p8 ; then
# error: execution of %post scriptlet from glibc-core-2.23-alt1.eter1 # error: execution of %post scriptlet from glibc-core-2.23-alt1.eter1
docmd epm erase glibc-core-2.17 || fatal "Check an error and run epm release-upgrade again" docmd epm erase glibc-core-2.17 || fatal "Check an error and run epm release-upgrade again"
docmd epm install apt rpm apt-conf-branch || fatal "Check an error and run epm release-upgrade again" docmd epm install apt rpm apt-conf-branch altlinux-release-p8 || fatal "Check an error and run epm release-upgrade again"
fi fi
__alt_repofix
__replace_text_in_alt_repo "/^ *#/! s!\[updates\]![p8]!g" __replace_text_in_alt_repo "/^ *#/! s!\[updates\]![p8]!g"
docmd epm update || fatal docmd epm update || fatal
if is_installed systemd && is_active_systemd systemd ; then if is_installed systemd && is_active_systemd systemd ; then
...@@ -98,8 +103,53 @@ __update_alt_repo_to_next_distro() ...@@ -98,8 +103,53 @@ __update_alt_repo_to_next_distro()
docmd epm update-kernel || fatal docmd epm update-kernel || fatal
info "Done." info "Done."
;; ;;
Sisyphus)
docmd epm update || fatal
docmd epm install apt rpm apt-conf-sisyphus altlinux-release-sisyphus || fatal "Check an error and run again"
#__replace_text_in_alt_repo "/^ *#/! s!\[updates\]![alt]!g"
__alt_repofix
docmd epm update || fatal
docmd epm upgrade || fatal "Check an error and run epm release-upgrade again"
docmd epm update-kernel || fatal
info "Done."
;;
*)
esac
}
__update_alt_to_next_distro()
{
local FROMTO=$(echo "$*" | sed -e "s| | to |")
info
case "$*" in
"p6"|"p6 p7")
info "Upgrade $DISTRNAME from p6 to p7 ..."
docmd epm install apt-conf-branch || fatal
__replace_alt_version_in_repo p6/branch/ p7/branch/
__update_to_the_distro p7
;;
"p7"|"p7 p8")
info "Upgrade $DISTRNAME from p7 to p8 ..."
docmd epm install apt-conf-branch altlinux-release-p7 || fatal
__replace_alt_version_in_repo p7/branch/ p8/branch/
__update_to_the_distro p8
;;
"Sisyphus p8")
info "Downgrade $DISTRNAME from Sisyphus to p8 ..."
docmd epm install apt-conf-branch || fatal
__replace_alt_version_in_repo Sisyphus/ p8/branch/
__update_to_the_distro p8
;;
"p8 Sisyphus")
info "Upgrade $DISTRNAME from p8 to Sisyphus ..."
docmd epm install apt-conf-branch || fatal
docmd epm upgrade || fatal
__alt_repofix
__replace_alt_version_in_repo p8/branch/ Sisyphus/
__update_to_the_distro Sisyphus
;;
*) *)
info "Have no idea how to update from $DISTRNAME $DISTRVERSION." warning "Have no idea how to update from $DISTRNAME $DISTRVERSION."
info "Try run f.i. # epm release-upgrade p8" info "Try run f.i. # epm release-upgrade p8"
return 1 return 1
esac esac
...@@ -113,27 +163,22 @@ epm_release_upgrade() ...@@ -113,27 +163,22 @@ epm_release_upgrade()
case $DISTRNAME in case $DISTRNAME in
ALTLinux) ALTLinux)
__alt_repofix
docmd epm update docmd epm update
docmd epm install apt rpm docmd epm install apt rpm
case "$pkg_filenames" in
"p7") # try to detect current release by repo
DISTRVERSION=p6 __update_alt_repo_to_next_distro if [ "$DISTRVERSION" = "Sisyphus" ] || [ -z "$DISTRVERSION" ] ; then
;; DISTRVERSION="$(__detect_alt_release_by_repo)"
"p8") [ "$DISTRVERSION" != "Sisyphus" ] && info "Detected running $DISTRNAME $DISTRVERSION (according to using repos)"
DISTRVERSION=p7 __update_alt_repo_to_next_distro fi
;;
"Sisyphus") # check forced target
fatal "Does not realized yet" if [ -n "$pkg_filenames" ] ; then
;; [ "$(__wcount $pkg_filenames)" = "1" ] || fatal "Too many args: $pkg_filenames"
*) fi
if [ "$DISTRVERSION" = "Sisyphus" ] || [ -z "$DISTRVERSION" ] ; then
# try to detect current release by repo __update_alt_to_next_distro $DISTRVERSION $pkg_filenames
DISTRVERSION=$(__detect_alt_release_by_repo) __update_alt_repo_to_next_distro
else
__update_alt_repo_to_next_distro
fi
;;
esac
return return
;; ;;
*) *)
......
...@@ -29,8 +29,10 @@ __fix_apt_sources_list() ...@@ -29,8 +29,10 @@ __fix_apt_sources_list()
# TODO: only for uncommented strings # TODO: only for uncommented strings
#sed -i -r -e "$SUBST_ALT_RULE" $i #sed -i -r -e "$SUBST_ALT_RULE" $i
regexp_subst "/^ *#/! $SUBST_ALT_RULE" $i regexp_subst "/^ *#/! $SUBST_ALT_RULE" $i
# add signs
local br local br
for br in p6 p7 p8 ; do for br in $DISTRVERSION ; do
# sed -r -e "/ALTLinux\/p8\/branch/s/rpm *([fhr])/rpm [p8] \1/" # sed -r -e "/ALTLinux\/p8\/branch/s/rpm *([fhr])/rpm [p8] \1/"
regexp_subst "/ALTLinux\/$br\/branch/s/^rpm *([fhr])/rpm [$br] \1/" $i regexp_subst "/ALTLinux\/$br\/branch/s/^rpm *([fhr])/rpm [$br] \1/" $i
regexp_subst "/Etersoft\/$br\/branch/s/^rpm *([fhr])/rpm [etersoft] \1/" $i regexp_subst "/Etersoft\/$br\/branch/s/^rpm *([fhr])/rpm [etersoft] \1/" $i
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment