PROGRAM_DEPENDS='FORGET::PREPARATION_INSPECT_MASTER'
_program_exec_restartable_loop_operation__routine ()
{
- local origin origin_orig
+ local origin origins_init
origin=$1
- if [ -e "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern" ]
- then
- origin_orig=`echo "$origin" \
- | sed -E -f "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern"`
- else
- origin_orig=$origin
- fi
- if [ ! -e "${DBDIR}/initial/$origin/installed_version" \
- -a ! -e "${DBDIR}/initial/$origin_orig/installed_version" \
+ origins_init=`database_query_initial_orgins "$origin"`
+ if [ -z "$origins_init" \
-a `cat "${DBDIR}/requires/$origin/dependents.all.full" 2> /dev/null | wc -l` -eq 0 ]
then
message_echo "$origin"
PROGRAM_DEPENDS='FORGET::INSPECT_MASTER'
_program_exec_restartable_loop_operation__routine ()
{
- local origin origin_orig
+ local origin origins_init
origin=$1
- if [ -e "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern" ]
- then
- origin_orig=`echo "$origin" \
- | sed -E -f "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern"`
- else
- origin_orig=$origin
- fi
- if [ ! -e "${DBDIR}/initial/$origin/installed_version" \
- -a ! -e "${DBDIR}/initial/$origin_orig/installed_version" ] \
+ origins_init=`database_query_initial_orgins "$origin"`
+ if [ -z "$origins_init" ] \
&& ! grep -qv -Fx -f "${DBDIR}/forget/remove.scope.filter" \
"${DBDIR}/requires/$origin/dependents.all.full" \
2> /dev/null
# ============= Operation of restore command =============
command_pkgs_restore ()
{
- local tmp_done_orig origin pkg origin_orig pkg_orig origin_replace pkg_replace backup_pkg
+ local tmp_done_orig origin pkg exists_old_origins origin_orig pkg_orig origin_replace pkg_replace backup_pkg
message_echo "Restoring the following temporary escaped packages:"
message_echo
tmp_done_orig=${TMPDIR}/command_pkgs_restore::restore::done_orig
message_echo >&2
continue
fi
- origin_orig=`echo "$origin" \
- | sed -E -f "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern"`
- if [ "x$origin_orig" = "x$origin" ] && pkgsys_exists_from_orig "$origin_orig"
- then
- pkg_orig=`pkgsys_get_installed_pkg_from_origin "$origin_orig"`
- message_echo "WARNING: An original version of $origin ($pkg_orig, $origin_orig) is already installed." >&2
- message_echo >&2
- continue
- fi
+ exists_old_origins=no
+ for origin_orig in `database_query_initial_orgins "$origin"`
+ do
+ if [ "x$origin_orig" = "x$origin" ] && pkgsys_exists_from_orig "$origin_orig"
+ then
+ pkg_orig=`pkgsys_get_installed_pkg_from_origin "$origin_orig"`
+ message_echo "WARNING: An original version of $origin ($pkg_orig, $origin_orig) is already installed." >&2
+ message_echo >&2
+ exists_old_origins=yes
+ fi
+ done
+ [ $exists_old_origins = yes ] && continue
origin_replace=`echo "$origin" \
| sed -E -f "${DBDIR}/REPLACE.complete_sed_pattern"`
if [ "x$origin_replace" != "x$origin" ]
} 2> /dev/null | sort -u > $tmpfile.obsolete_ports.exclude
grep -v -Fx -f "$tmpfile.obsolete_ports.exclude" "${DBDIR}/obsolete_ports" > ${DBDIR}/obsolete_ports.can_be_deleted || :
cp /dev/null "${DBDIR}/REPLACE.complete_sed_pattern.tmp"
- cp /dev/null "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern.tmp"
find "${DBDIR}/replace" -depth 3 -type f -name origin | while read nodepath
do
origin_orig=`expr "$nodepath" : '.*/\([^/][^/]*/[^/][^/]*\)/origin$'`
origin=`cat "$nodepath"`
origin_orig_regexp=`str_escape_regexp "$origin_orig"`
- origin_orig_esc=`str_escape_replaceval "$origin_orig"`
- origin_regexp=`str_escape_regexp "$origin"`
origin_esc=`str_escape_replaceval "$origin"`
echo "s/^$origin_orig_regexp$/$origin_esc/" >> ${DBDIR}/REPLACE.complete_sed_pattern.tmp
- [ -z "$origin_regexp" ] && continue
- echo "s/^$origin_regexp$/$origin_orig_esc/" >> ${DBDIR}/REVERSE_REPLACE.complete_sed_pattern.tmp
done
mv "${DBDIR}/REPLACE.complete_sed_pattern.tmp" "${DBDIR}/REPLACE.complete_sed_pattern"
- mv "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern.tmp" "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern"
if [ `cat "${DBDIR}/inspected_ports.update" 2> /dev/null | wc -l` -gt 0 ]
then
grep -Fx -f "${DBDIR}/inspected_ports.all" "${DBDIR}/inspected_ports.update" \
{
[ `cat "${DBDIR}/new_success_in_current_run" 2> /dev/null | wc -l` -gt 0 ]
}
+
+# ============= Get the all initial origins, separated by line feed =============
+database_query_initial_orgins ()
+{
+ local origin origin_init
+ origin=$1
+ if [ -e "${DBDIR}/moved_from/$origin/old_origs" ]
+ then
+ for origin_init in `cat "${DBDIR}/moved_from/$origin/old_origs"`
+ do
+ [ -e "${DBDIR}/initial/$origin_init/installed_version" ] && echo "$origin_init"
+ done
+ else
+ [ -e "${DBDIR}/initial/$origin/installed_version" ] && echo "$origin"
+ fi
+ :
+}
MYVERSION=4.0.0
COMPATIBLE_VERSIONS='^(4\.[0]\.[0])$'
# Template for development versions
- MYVERSION=4.0.0+toward_4.0.1_20180708010800
+ MYVERSION=4.0.0+toward_4.0.1_20180708144349
COMPATIBLE_VERSIONS='^(4\.[0]\.[0]|4\.[0]\.[0]+(|\+toward_4\.[0]\.[1]+_[0-9]+))$'
}
while read origin pkg
do
pkg_regexp_esc=`str_escape_regexp "$pkg"`
- origin_orig=`echo "$origin" \
- | sed -E -f "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern"`
- [ "x$origin_orig" = "x$origin" ] && origin_orig=
+ origins_init=`database_query_initial_orgins "$origin" | grep -vFx "$origin"`
origin_replace=`echo "$origin" \
| sed -E -f "${DBDIR}/REPLACE.complete_sed_pattern"`
[ "x$origin_replace" = "x$origin" ] && origin_replace=
+ is_to_dereg_from_list=no
if [ -n "$origin_current" -a "x$origin" = "x$origin_current" ] || \
- pkg_info_e "$pkg" || pkgsys_exists_from_orig "$origin" || \
- { [ -n "$origin_orig" ] && pkgsys_exists_from_orig "$origin_orig"; } || \
- { [ -n "$origin_replace" ] && pkgsys_exists_from_orig "$origin_replace"; }
+ pkg_info_e "$pkg" || pkgsys_exists_from_orig "$origin"
then
is_to_dereg_from_list=yes
else
- is_to_dereg_from_list=no
+ for origin_orig in $origins_init $origin_replace
+ do
+ if [ -n "$origin_orig" ] && pkgsys_exists_from_orig "$origin_orig"
+ then
+ is_to_dereg_from_list=yes
+ break
+ fi
+ done
fi
if pkgsys_chk_conflict_by_a_pkg install "$REINSTALL_ORIGIN" "$pkg"
then
fi
if [ $is_to_dereg_from_list = yes ]
then
- origin_current=$origin
- pkg_current=`pkgsys_get_installed_pkg_from_origin "$origin"` || :
- if [ -z "$pkg_current" -a -n "$origin_orig" ]
- then
- pkg_current=`pkgsys_get_installed_pkg_from_origin "$origin_orig"` || :
- origin_current=$origin_orig
- fi
- if [ -z "$pkg_current" -a -n "$origin_replace" ]
- then
- pkg_current=`pkgsys_get_installed_pkg_from_origin "$origin_replace"` || :
- origin_current=$origin_replace
- fi
+ pkg_current=
+ origin_current=
+ for origin_trial in $origin $origins_init $origin_replace
+ do
+ pkg_trial=`pkgsys_get_installed_pkg_from_origin "$origin_trial" || :`
+ [ -z "$pkg_trial" ] && continue
+ pkg_current="$pkg_current, $pkg_trial"
+ origin_current="$origin_current, $origin_trial"
+ done
+ pkg_current=`expr "$pkg_current" : ', \(.*\)' || pkg_current=none
+ origin_current=`expr "$origin_current" : ', \(.*\)' || origin_current=none
pkgname_msg=$pkg
origin_msg=$origin
[ "x$pkg_current" = "x$pkg" ] || pkgname_msg="$pkg => $pkg_current"
touch "$tmp_isfailed"
break
fi
- origin_orig=`echo "$origin" \
- | sed -E -f "${DBDIR}/REVERSE_REPLACE.complete_sed_pattern"`
- if [ "x$origin_orig" != "x$origin" ]
- then
- pkgsys_exists_from_orig "$origin_orig" && continue
+ origins_init=`database_query_initial_orgins "$origin" | grep -vFx "$origin"`
+ origin_replace=`echo "$origin" \
+ | sed -E -f "${DBDIR}/REPLACE.complete_sed_pattern"`
+ [ "x$origin_replace" = "x$origin" ] && origin_replace=
+ is_installed=no
+ for origin_orig in $origins_init $origin_replace
+ do
+ [ "x$origin_orig" = "x$origin" ] && continue
+ if pkgsys_exists_from_orig "$origin_orig"
+ then
+ is_installed=yes
+ break
+ fi
if grep -q -Fx "$origin_orig" "${DBDIR}/taboo.all.list" 2> /dev/null
then
message_echo "INFO: Restoration of a requirement [$origin_orig] is avoided because it is set taboo."
touch "$tmp_isfailed"
+ is_installed=taboo
break
fi
- fi
- if ! pkgarc=`pkgsys_get_backup_pkg "$origin"` && \
- ! pkgarc=`pkgsys_get_backup_pkg "$origin_orig"`
+ done
+ [ $is_installed = yes ] && continue
+ [ $is_installed = taboo ] && break
+ for origin_orig in $origin $origins_init $origin_replace
+ do
+ pkgarc=`pkgsys_get_backup_pkg "$origin_orig"` && break
+ done
+ if [ -z "$pkgarc" ]
then
if grep -q -Fx "$origin" "${DBDIR}/failed.list" 2> /dev/null
then
[IMPROVED] It is changed to show messages of reset ports at the stage of reloading ${LOCALBASE}/etc/portsreinstall.conf.
.PP
[BUG FIX] Changes made by commands or in ${LOCALBASE}/etc/portsreinstall.conf were not reflected to dependents of the specified ports in the redo runs with incorrect messages notifying as already inspected merged ports.
+.PP
+[BUG FIX] Evaluation of old origins was incomplete for merged ports.
.RE
.TP
4.0.0 (29 June 2018)