DEPTH_INDEX=${DEPTH_INDEX_orig}
}
+# ============= Filter ignored dependencies from a list given by the standard input =============
+database_build_filter_ignored_requirements ()
+{
+ local origin pattern
+ origin=$1
+ pattern=${DBDIR}/requires/$origin/ignored_dependencies_to_break_loops.regexp
+ if [ -e "$pattern" ]
+ then
+ grep -Evq -f "$pattern"
+ else
+ cat
+ fi 2> /dev/null || :
+}
+
# ============= Build and get a list of the complete recursive dependencies of a port =============
database_build_get_complete_recursive_dependency ()
{
if ! grep -Eq "^$origin_ref_esc$" "$dbpath_target/${table}.run.direct${suffix}" 2> /dev/null || \
! grep -Eq "^$origin_ref_esc$" "$dbpath_target/${table}.build.direct${suffix}" 2> /dev/null
then
- echo "$origin_ref" >> $dbpath_target/LOOPBREAK.${table}.${tag}.full${suffix}
+ fileedit_add_a_line_if_new "$origin_ref" "$dbpath_target/ignored_dependencies_to_break_loops"
message_echo 'INFO: The dependency of '$origin_target' on '$origin_ref' is ignored to terminate the loop.' >&2
break
fi
done
if [ $index_loop -eq $loop_len ]
then
- echo "$origin_ref" >> $dbpath_target/LOOPBREAK.${table}.${tag}.full${suffix}
+ fileedit_add_a_line_if_new "$origin_ref" "$dbpath_target/ignored_dependencies_to_break_loops"
message_echo 'WARNING: The loop cannot be resolved. Continuing by forcible ignorance of the dependency of '$origin_target' on '$origin_ref'. This may cause confusion in the later processes.' >&2
fi
+ str_escape_regexp_filter < $dbpath_target/ignored_dependencies_to_break_loops | sed 's/^/^/;s/$/$/' > $dbpath_target/ignored_dependencies_to_break_loops.regexp
fi
fi
echo "$origin" >> $tmppath.parents
tmpdstpath=${TMPDIR}/requires/$origin
dstfile_tmp=$tmpdstpath/${table}.${tag}.full${suffix}
[ -d "$tmpdstpath" ] || mkdir -p "$tmpdstpath"
- while read origin_requirement
+ database_build_filter_ignored_requirements "$origin" < $srcfile | while read origin_requirement
do
- origin_requirement_esc=`str_escape_regexp "$origin_requirement"`
- grep -Eq "^$origin_requirement_esc$" "$dbpath/LOOPBREAK.${table}.${tag}.full${suffix}" 2> /dev/null && continue
database_build_get_complete_recursive_dependency "$table" "$tag" "$origin_requirement" "$suffix" > $tmppath.recursive_dependency
- grep -Eq "^$origin_requirement_esc$" "$dbpath/LOOPBREAK.${table}.${tag}.full${suffix}" 2> /dev/null && continue
+ origin_requirement_esc=`str_escape_regexp "$origin_requirement"`
+ grep -Eq "^$origin_requirement_esc$" "$dbpath/ignored_dependencies_to_break_loops" 2> /dev/null && continue
echo "$origin_requirement"
cat "$tmppath.recursive_dependency"
- done < $srcfile > $dstfile_tmp
+ done > $dstfile_tmp
sed -n ${num_parents}p "$tmppath.parents" > $tmppath.parents.tmp
mv "$tmppath.parents.tmp" "$tmppath.parents"
if [ ! -e "$dstfile" ]
sort -u "$dbpath/requirements.build.direct" "$dbpath/requirements.run.${level}" || :
else
cat "$dbpath/requirements.run.${level}" || :
- fi 2> /dev/null > $tmpfile
- if [ `wc -l < $tmpfile` -gt 0 ]
- then
- while read origin_requirement
- do
- database_build_inspect_necessity_for_only_new_upgrade "$origin_requirement" "$level"
- done < $tmpfile
- fi
+ fi 2> /dev/null | database_build_filter_ignored_requirements "$origin" > $tmpfile
+ while read origin_requirement
+ do
+ database_build_inspect_necessity_for_only_new_upgrade "$origin_requirement" "$level"
+ done < $tmpfile
rm "$tmpfile"
touch "$dbpath/necessary_port.${level}"
}
then
for level in direct full
do
- cat "$reqdir/requirements.all.${level}" 2> /dev/null | while read origin_requirement
+ cat "$reqdir/requirements.all.${level}" 2> /dev/null | \
+ database_build_filter_ignored_requirements "$origin" | \
+ while read origin_requirement
do
fileedit_add_a_line_if_new "$origin" \
"${DBDIR}/targets/$origin_requirement/complement_for_new_dependents.${level}"
done
done
- cat "$reqdir/requirements.all.direct" "$reqdir/requirements.all.full" 2> /dev/null \
- | sort -u | while read origin_requirement
+ cat "$reqdir/requirements.all.direct" "$reqdir/requirements.all.full" 2> /dev/null | \
+ sort -u | database_build_filter_ignored_requirements "$origin" | \
+ while read origin_requirement
do
database_build_complement_to_new_dependents_for_targets "$origin_requirement"
done