void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

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}