--- sisyphus_check-0.7.13/sisyphus_check.fix1 2005-09-06 18:31:59 +0400 +++ sisyphus_check-0.7.13/sisyphus_check 2005-09-06 20:29:20 +0400 @@ -78,16 +78,17 @@ FileError() rpm_signature= skip_check_gpgname= trust_gpg_names='security incominger' no_gpgname_packagers='kernel@packages.altlinux.org' package_type= recurse_subdir= files= +fhs_file="/etc/sisyphus_check/fhs" # check changelog format export no_check_changelog= check_changelog() { [ -z "$no_check_changelog" ] || return 0 local f="$1" && shift || return 1 local rc=0 @@ -396,17 +397,17 @@ check_fhs() local list pattern bad # Do not check filesystem package. [ "$rpm_name" != filesystem ] || return 0 list=$(printf %s "$rpm_filelist" |grep -e '^/') [ -n "$list" ] || return 0 - pattern="$(grep '^[^#]' /etc/sisyphus_check/fhs | + pattern="$(grep '^[^#]' $fhs_file | while read -r n v; do [ -n "$n" -a -n "$v" -a -z "${rpm_name##$n}" ] || continue printf %s\\n "$v" done |LC_COLLATE=C sort -u)" || return 1 pattern="$(printf %s "$pattern" |tr -s '\n' '|')" [ "$pattern" != '' ] || pattern='^$' list="$(printf %s "$list" |egrep -v "$pattern")" || @@ -465,16 +466,28 @@ check_intersects() if [ -n "$text" ]; then FileError "filesystem intersections: $(printf %s "$text" |tr -s '[:space:]' ' ')" "$f" rc=1 fi return $rc } +export no_check_locale= +check_locale() +{ + [ -z "$no_check_locale" ] || return 0 + + local locales + if locales="$(printf %s "$rpm_filelist" | grep -qs '^/usr/share/locale\(/[^/]\+\)\?$')"; then + FileError "glibc-locales mismatch: $(printf %s "$locales")" "$f" + return 1 + fi +} + fs_list= exit_handler() { local rc=$? trap - EXIT [ -z "$fs_list" ] || rm -f -- "$fs_list" exit $rc } @@ -685,16 +698,22 @@ rpm_version=%{version:shescape}; [ -z "$fast_check" ] || continue fi if ! check_intersects "$f"; then Message "ERROR: you have package intersections" rc=1 [ -z "$fast_check" ] || continue fi + + if ! check_locales "$f"; then + Message "ERROR: you have files which do not belong to the glibc-locales" + rc=1 + [ -z "$fast_check" ] || continue + fi done return $rc } check_dirs() {