consistency_check.sh (3023B)
1# vim: set ts=4 sw=4 et: 2 3consistency_check_existing () { 4 while IFS=" " read -r dep origname deplabel; do 5 [ -f "$XBPS_SRCPKGDIR/$dep/template" ] && continue 6 case "$deplabel" in 7 makedepends|hostmakedepends|checkdepends) 8 msg_warn "unsatisfied $deplabel in $origname: $dep does not exist\n"; 9 ;; 10 *) printf "%s %s %s\n" "$dep" "$origname" "$deplabel" ;; 11 esac 12 done 13} 14 15consistency_convert_pkgname () { 16 local origname= pkgname version= revision= 17 while IFS=" " read -r dep origname deplabel; do 18 case "$deplabel" in 19 makedepends|hostmakedepends|checkdepends) 20 printf "%s %s %s\n" "$dep" "$origname" "$deplabel" 21 continue 22 ;; 23 esac 24 case "$dep" in 25 *\<*|*\>*|*=*) 26 printf "%s %s %s\n" "$dep" "$origname" "$deplabel" 27 continue 28 ;; 29 esac 30 if pkgname=$(xbps-uhelper getpkgname "$dep" 2> /dev/null) && \ 31 version=$(xbps-uhelper getpkgversion "$dep" 2> /dev/null) && \ 32 revision=$(xbps-uhelper getpkgrevision "$dep" 2> /dev/null); then 33 printf "%s %s %s\n" "${pkgname}>=${version}_${revision}" "$origname" "$deplabel" 34 else 35 printf "%s %s %s\n" "$dep>=0" "$origname" "$deplabel" 36 fi 37 done 38} 39 40consistency_check_smart () { 41 local pkgname= depdef= dep= 42 while IFS=" " read -r depdef origname deplabel; do 43 case "$deplabel" in 44 makedepends|hostmakedepends|checkdepends) 45 printf "%s %s %s\n" "$depdef" "$origname" "$deplabel" 46 continue 47 ;; 48 esac 49 50 dep=$(xbps-uhelper getpkgdepname "$depdef") 51 52 if [ ! -f "$XBPS_SRCPKGDIR/$dep/template" ]; then 53 msg_warn "unsatisfied $deplabel in $origname: $dep does not exist\n"; 54 continue 55 fi 56 ( 57 XBPS_TARGET_PKG=$dep 58 read_pkg 59 xbps-uhelper pkgmatch "$depdef" "${pkgname}-${version}_${revision}" && return 60 msg_red "unsatisfied $deplabel in $origname: $dep is $version, but required is $depdef\n"; 61 ) 62 done 63} 64 65consistency_check() { 66 local pkg= pkgname= 67 for pkg in "$XBPS_SRCPKGDIR"/*/template; do 68 pkg=${pkg%/*} 69 XBPS_TARGET_PKG=${pkg##*/} 70 ( 71 read_pkg 72 [ "$depends" ] && printf "%s $pkgname depends\n" $depends 73 [ "$conflicts" ] && printf "%s $pkgname conflicts\n" $conflicts 74 [ -L "$XBPS_SRCPKGDIR/$XBPS_TARGET_PKG" ] && return 75 [ "$makedepends" ] && printf "%s $pkgname makedepends\n" $makedepends 76 [ "$hostmakedepends" ] && printf "%s $pkgname hostmakedepends\n" $hostmakedepends 77 [ "$checkdepends" ] && printf "%s $pkgname checkdepends\n" $checkdepends 78 ) 79 done | grep -v "^virtual?" | sed "s/^[^ ]*?//" | consistency_check_existing | \ 80 consistency_convert_pkgname | consistency_check_smart 81}