2 # ==============================================================================
3 # portsreinstall library script
4 # - Operations for recording operation results to the temporary database -
5 # Copyright (C) 2013-2021 Mamoru Sakaue, MwGhennndo, All Rights Reserved.
6 # This software is distributed under the 2-Clause BSD License.
7 # ==============================================================================
9 # ============= Update records by reflecting a successful result of (re/de)installation of a port =============
10 database_record_success ()
12 local origin nodedir dbdir_esc tag level dbsuffix
14 nodedir=${DBDIR}/requires/$origin
15 fileedit_add_a_line_if_new "$origin" "${DBDIR}/new_success_in_current_run"
16 dbdir_esc=`str_escape_replaceval "${DBDIR}/requires/"`
17 for tag in all run build none
19 for level in full direct
22 if [ -e "$nodedir/dependents.$dbsuffix" ]
24 sed "s/^/$dbdir_esc/;s|$|/failed_requirements.$dbsuffix|" "$nodedir/dependents.$dbsuffix" | \
25 fileedit_rm_a_line_from_files "$origin"
27 if [ $level = full -a -e "$nodedir/ignored_dependents.$tag" ]
29 sed "s/^/$dbdir_esc/;s|$|/failed_requirements.$dbsuffix|" "$nodedir/ignored_dependents.$tag" | \
30 fileedit_rm_a_line_from_files "$origin"
32 if [ ! -e "$nodedir/installed_by_pkg" ] && \
34 cat "$nodedir/requirements.$dbsuffix" 2> /dev/null
35 [ $level = full ] && cat "$nodedir/ignored_requirements.$tag" 2> /dev/null
36 } | env LANG=C grep -q -Fx -f "${DBDIR}/failed.list" 2> /dev/null
38 fileedit_rm_a_line "$origin" "${DBDIR}/success.$dbsuffix.list"
39 fileedit_add_a_line_if_new "$origin" "${DBDIR}/todo_after_requirements_succeed.$dbsuffix.list"
41 fileedit_add_a_line_if_new "$origin" "${DBDIR}/success.$dbsuffix.list"
42 fileedit_rm_a_line "$origin" "${DBDIR}/todo_after_requirements_succeed.$dbsuffix.list"
43 [ ! -e "$nodedir/necessary_upgrade.$dbsuffix" ] \
44 || mv "$nodedir/necessary_upgrade.$dbsuffix" "$nodedir/necessary_upgrade_completed.$dbsuffix"
48 fileedit_rm_a_line "$origin" "${DBDIR}/failed.list"
49 fileedit_rm_a_line "$origin" "${DBDIR}/damaged_package"
50 touch "$nodedir/succeeded_once"
51 rm -f "${DBDIR}/notes/$origin/note_failtre" "$nodedir/conf_updated"
54 # ============= Update records by reflecting a failed result of (re/de)installation of a port =============
55 database_record_failure ()
57 local origin clean nodedir dbdir_esc tag level dbsuffix
60 nodedir=${DBDIR}/requires/$origin
61 fileedit_add_a_line_if_new "$origin" "${DBDIR}/failed.list"
62 dbdir_esc=`str_escape_replaceval "${DBDIR}/requires/"`
63 for tag in all run build none
65 for level in full direct
68 fileedit_rm_a_line "$origin" "${DBDIR}/success.$dbsuffix.list"
69 fileedit_rm_a_line "$origin" "${DBDIR}/todo_after_requirements_succeed.$dbsuffix.list"
70 if [ -e "$nodedir/dependents.$dbsuffix" ]
72 sed "s/^/$dbdir_esc/;s|$|/failed_requirements.$dbsuffix|" "$nodedir/dependents.$dbsuffix" | \
73 fileedit_add_a_line_to_files_if_new "$origin"
75 if [ $level = full -a -e "$nodedir/ignored_dependents.$tag" ]
77 sed "s/^/$dbdir_esc/;s|$|/failed_requirements.$dbsuffix|" "$nodedir/ignored_dependents.$tag" | \
78 fileedit_add_a_line_to_files_if_new "$origin"
82 rm -f "$nodedir/succeeded_once"
83 fileedit_rm_a_line "$origin" "${DBDIR}/inst_by_port_with_custom_conf.list"
84 fileedit_rm_a_line "$origin" "${DBDIR}/inst_by_port_with_default_conf.list"
85 fileedit_rm_a_line "$origin" "${DBDIR}/installation_complete_by_pkg.list"
86 if [ -z "$clean" -o "@$clean" = @clean ]
88 message_echo "*** Trying to clean the failed build... (Ignore failures)"
89 database_build_make "$origin" clean | message_cat
91 message_echo "*** Skipping this port and proceeding to next forcibly..."
95 # ============= Record a port that it was damaged by losing or destroying installed files =============
96 database_record_reconf_recover_sanity ()
98 local origin tag level dbsuffix
100 fileedit_add_a_line_if_new "$origin" "${DBDIR}/damaged_package"
101 for tag in all run build none
103 for level in full direct
106 fileedit_rm_a_line "$origin" "${DBDIR}/success.$dbsuffix.list"
107 fileedit_rm_a_line "$origin" "${DBDIR}/todo_after_requirements_succeed.$dbsuffix.list"
110 rm -f "${DBDIR}/requires/$origin/succeeded_once"