Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
comparison bin/check-ports @ 64:ffd5f575edd5
FIX: Work around the bug in "pkg rquery -i" not asking the port's INDEX file.
Parse the index file directly.
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Thu, 21 Mar 2019 15:48:58 +0100 |
| parents | 0ae7697702b3 |
| children | 1f3a64254c9c |
comparison
equal
deleted
inserted
replaced
| 63:0ae7697702b3 | 64:ffd5f575edd5 |
|---|---|
| 40 | 40 |
| 41 # | 41 # |
| 42 # Directly installed from ports | 42 # Directly installed from ports |
| 43 # | 43 # |
| 44 : ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository} | 44 : ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository} |
| 45 | |
| 46 # | |
| 47 # For the workaround of the bug in pkg rquery -I | |
| 48 # | |
| 49 : ${PORTSDIR:=/usr/ports} | |
| 50 : ${INDEXDIR:=${PORTSDIR}} | |
| 51 : ${INDEXFILE:=INDEX-11} | |
| 52 | |
| 45 | 53 |
| 46 get_remote_repo_versions() { | 54 get_remote_repo_versions() { |
| 47 local _repo _data _rv | 55 local _repo _data _rv |
| 48 | 56 |
| 49 _repo=$1 | 57 _repo=$1 |
| 94 EOF223777 | 102 EOF223777 |
| 95 return 1 | 103 return 1 |
| 96 } | 104 } |
| 97 | 105 |
| 98 get_immediate_index_version() { | 106 get_immediate_index_version() { |
| 99 local _name _val _rv | 107 local _package _line _fqpn _n _lines |
| 100 | 108 |
| 101 _name=$1 | 109 _package=$1 |
| 102 | 110 |
| 103 _val=$(pkg rquery -I "${_name}" | cut -f 1 -d '|') | 111 # _val=$(pkg rquery -I "${_package}" | cut -f 1 -d '|') |
| 104 _rv=$? | 112 # _rv=$? |
| 105 immediate_index_version=${_val##*-} | 113 # immediate_index_version=${_val##*-} |
| 106 return ${_rv} | 114 # return ${_rv} |
| 115 | |
| 116 if [ -r "${INDEXDIR}/${INDEXFILE}" ] ; then | |
| 117 # | |
| 118 # Note: Direct piping does not set immediate_index_version at return correctly | |
| 119 # "_line" is set correctly and parsing works, but the return 0 seems to kill | |
| 120 # some of the previous effects. | |
| 121 # | |
| 122 # "grep" does a fast pre-selection, reading, parsing and comparing is done for | |
| 123 # exact matching. | |
| 124 # | |
| 125 _lines=$(egrep '^'"${_package}" "${INDEXDIR}/${INDEXFILE}") | |
| 126 while read _line ; do | |
| 127 _fqpn="${_line%%|*}" | |
| 128 _n=${_fqpn%-*} | |
| 129 if [ "${_package}" = "${_n}" ] ; then | |
| 130 immediate_index_version="${_fqpn##*-}" | |
| 131 return 0 | |
| 132 fi | |
| 133 done <<EOF1334TGH1 | |
| 134 ${_lines} | |
| 135 EOF1334TGH1 | |
| 136 fi | |
| 137 | |
| 138 immediate_index_version="" | |
| 139 return 1 | |
| 107 } | 140 } |
| 108 | 141 |
| 109 get_immediate_remote_repo_version() { | 142 get_immediate_remote_repo_version() { |
| 110 local _repo _name _version _rv | 143 local _repo _name _version _rv |
| 111 | 144 |
