OSDN Git Service

Some bug fix related to thw workaround for the looped dependencies.
authorMamoru Sakaue / MwGhennndo <glmwghennndo@users.sourceforge.jp>
Thu, 30 Jun 2016 12:09:04 +0000 (21:09 +0900)
committerMamoru Sakaue / MwGhennndo <glmwghennndo@users.sourceforge.jp>
Thu, 30 Jun 2016 12:09:04 +0000 (21:09 +0900)
Changes to be committed:
modified:   bin/portsreinstall
modified:   lib/libdatabase_build.sh

bin/portsreinstall
lib/libdatabase_build.sh

index b4f8ba1..42cd447 100755 (executable)
@@ -15,7 +15,7 @@ APPNAME=`basename "$0"`
 MYVERSION=3.3.0
 COMPATIBLE_VERSIONS='^(3\.[1-3]\.[0-9]+)$'
 # Template for development versions
-MYVERSION=3.2.1+toward_3.3.0_20160630013512
+MYVERSION=3.2.1+toward_3.3.0_20160630210812
 COMPATIBLE_VERSIONS='^(3\.[1-3]\.[0-9]+\+toward_3\.[1-3]\.[0-9]+_[0-9]+|3\.[1-3]\.[0-9]+)$'
 MYPREFIX=`dirname "\`dirname \"$0\"\`" | sed 's|/bin$||'`
 MYPREFIX=${MYPREFIX:-/usr/local}
index 230eb30..5097269 100644 (file)
@@ -623,6 +623,20 @@ database_build_inspect_dependencies ()
        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 ()
 {
@@ -682,7 +696,7 @@ 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
@@ -690,24 +704,24 @@ database_build_get_complete_recursive_dependency ()
                                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" ]
@@ -735,14 +749,11 @@ database_build_inspect_necessity_for_only_new_upgrade ()
                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}"
 }
@@ -760,14 +771,17 @@ database_build_complement_to_new_dependents_for_targets ()
        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