Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
view bin/check-ports @ 3:86209db28490
Check return value of "query_repo" and query only for installed packages
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Fri, 13 Oct 2017 09:35:46 +0200 |
| parents | 7c9ddbea00c8 |
| children | ba95569a12b1 |
line wrap: on
line source
#!/bin/sh : ${LOCAL_REPO:=LocalRepo} : ${FREEBSD_REPO:=FreeBSD} : ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository} installed_packages=$(pkg query '%n') #for p in ${installed_packages} ; do # echo -n $p" " # pkg query '%v' $p # pkg rquery '%v' $p #done #pkg query '%n %v %R' $installed_packages | # while read vn vv vR ; do# # remote_ver=$(pkg rquery -r FreeBSD '%v' $vn) # version_compare=$(pkg version --test-version ${vv} ${remote_ver}) # echo $vn $vv ${remote_ver} ${version_compare} $vR # done do_rquery() { _repo="$1" _packagage_name="$2" remote_ver=$(pkg rquery -U -r ${_repo} '%v' ${_package_name}) } remote_data() { _repo="$1" shift _temp=$(pkg rquery -U -r "${_repo}" '%n|%v' "$@") _rv=$? eval remote_${_repo}_data="\"\${_temp}\"" return ${_rv} } all_remote_data() { _repo="$1" _temp=$(pkg rquery -U -r "${_repo}" --all '%n|%v') _rv=$? eval remote_${_repo}_data="\"\${_temp}\"" return ${_rv} } query_repo() { _repo="$1" _package_name="$2" eval _repo_packages="\${remote_${_repo}_data}" while read _p _v ; do if [ "$_p" = "${_package_name}" ] ; then repo_version="${_v}" return 0 fi done <<EOFABCDEFG43 ${_repo_packages} EOFABCDEFG43 repo_version="" return 1 } installed_data="$(pkg query '%n|%v|%R' $installed_packages)" remote_data FreeBSD ${installed_packages} remote_data LocalRepo ${installed_packages} _OLDIFS="${IFS}" IFS='|' while read vn vv vR ; do if [ "${vR}" = "${PORTS_DIRECT_INSTALLED_REPO}" ] ; then _local_ver_label="$(pkg version -U -I -n ${vn} | sed -E -e 's/.+[[:space:]]+//')" elif [ "${vR}" = "${LOCAL_REPO}" ] ; then if ! query_repo "${vR}" "${vn}" ; then echo "ERROR: ${vn} ${vR}" fi elif [ "${vR}" = "${FREEBSD_REPO}" ] ; then if ! query_repo "${vR}" "${vn}" ; then echo "ERROR 2: ${vn} ${vR}" fi else echo "UNKNOWN REPOSITORY \`${vR}' for packet \`${vn}'" >&2 fi done <<EOFEOFEOF687 ${installed_data} EOFEOFEOF687
