--- sisyphus-0.9.1/bin/sisyphus_relink.relink 2005-07-01 18:59:29 +0400 +++ sisyphus-0.9.1/bin/sisyphus_relink.relink 2005-09-06 17:37:06 +0400 @@ -56,21 +56,22 @@ unlink_symlinked() check_arch_dups() { local arch=$1 shift echo "Checking layout dups for $arch" local out - out=$(cut -f1 "files/list.$arch".* |sort |uniq -c |awk '{if ($1!=1) print $2}') + out=$(cut -f1 "files/list.$arch".* |sort |uniq -c |awk '{if ($1!=1) print $2}') #' if [ -n "$out" ]; then - echo "ERROR: duplicated names found in $arch layout:" >&2 - echo "$out" >&2 - return 1 + echo "ERROR: duplicated names found in $arch layout" >&2 + duplicate_pkgs="$duplicate_pkgs +$out +" fi } calc_arch_names() { local arch=$1 shift local rpms=$1 @@ -89,26 +90,30 @@ check_arch_missing() local list="$WORKDIR/$arch" [ -s "$list" ] || return 0 echo "Checking layout misses for $arch" local out out=$(cut -f1 "files/list.$arch".* |sort -u |join "$list" - -v1 |cut -d' ' -f1 |sort -u) if [ -n "$out" ]; then - echo "ERROR: unlisted packages found in $arch layout:" >&2 - printf %s "$out" |join "$list" - -o 1.2 >&2 + echo "ERROR: unlisted packages found in $arch layout">&2 + missing_pkgs="$missing_pkgs +$(printf %s "$out" |join "$list" - -o 1.2) +" return 1 fi local f for f in "files/list.$arch".*; do out=$(cut -f1 "$f" |sort -u |join "$list" - -v2 |cut -d' ' -f1 |sort -u) if [ -n "$out" ]; then - echo "WARNING: orphaned names found in ${f#files/list.} layout:" >&2 - echo "$out" >&2 + echo "WARNING: orphaned names found in ${f#files/list.} layout" >&2 + orphaned_pkgs="$orphaned_pkgs +$out +" fi done } calc_comp() { local arch=$1 shift @@ -160,26 +165,29 @@ relink_arch() [ -f "$f" ] || continue $debug ln -s $verbose "$r/$n" "$d/" || rc=1 done return $rc } problems_list= +duplicate_pkgs= +missing_pkgs= +orphaned_pkgs= + check_arch_dups "src" || exit calc_arch_names "src" "SRPMS" || exit check_arch_missing "src" || problems_list="$problems_list src" for arch in $ARCHITECTURES; do check_arch_dups "$arch" || exit calc_arch_names "$arch" "$arch/RPMS" || exit if ! check_arch_missing "$arch"; then problems_list="$problems_list $arch" - continue fi for comp in $LINKONLY_COMPONENTS $MIXED_COMPONENTS; do calc_comp "$arch" "$comp" || exit unlink_symlinked "$arch/RPMS.$comp" || exit if ! relink_arch "$arch" "$comp" "$arch/RPMS" "$arch/RPMS"; then echo "ERROR: $arch" problems_list="$problems_list $arch" fi @@ -189,14 +197,31 @@ for arch in $ARCHITECTURES; do if ! relink_arch "src" "$comp" "$arch/SRPMS" "SRPMS"; then echo "ERROR: $arch" problems_list="$problems_list $arch" fi done find "$WORKDIR" -type f -name 'src.*' -delete done -[ -z "$problems_list" ] || Fatal "problems in:$problems_list" +[ -z "$problems_list" ] || printf '\n%s\n\n' "problems in:$problems_list" >&2 + +if [ -n "$duplicate_pkgs" ]; then + Info "ERROR: duplicated names found:" + printf %s\\n "$duplicate_pkgs" >&2 +fi + +if [ -n "$missing_pkgs" ]; then + Info "ERROR: unlisted packages found:" + printf %s\\n "$missing_pkgs" >&2 +fi + +if [ -n "$orphaned_pkgs" ]; then + Info "ERROR: orphaned names found:" + printf %s\\n "$orphaned_pkgs" >&2 +fi + +[ -z "$duplicate_pkgs" -a -z "$missing_pkgs" -a -z "$orphaned_pkgs" ] || exit 1 echo "Updating classic..." sisyphus_update_classic echo "Updating compatibility symlinks..." sisyphus_migration_hack