| @@ -1,16 +1,16 @@ | | | @@ -1,16 +1,16 @@ |
1 | #!@SH@ -e | | 1 | #!@SH@ -e |
2 | # | | 2 | # |
3 | # $Id: pkg_chk.sh,v 1.62 2009/02/21 20:50:06 abs Exp $ | | 3 | # $Id: pkg_chk.sh,v 1.63 2009/03/25 00:00:52 abs Exp $ |
4 | # | | 4 | # |
5 | # TODO: Make -g check dependencies and tsort | | 5 | # TODO: Make -g check dependencies and tsort |
6 | # TODO: Make -g list user-installed packages first, followed by commented | | 6 | # TODO: Make -g list user-installed packages first, followed by commented |
7 | # out automatically installed packages | | 7 | # out automatically installed packages |
8 | # TODO: List user-installed packages that are not in config | | 8 | # TODO: List user-installed packages that are not in config |
9 | | | 9 | |
10 | PATH=${PATH}:/usr/sbin:/usr/bin | | 10 | PATH=${PATH}:/usr/sbin:/usr/bin |
11 | | | 11 | |
12 | SUMMARY_FILE=pkg_summary.gz | | 12 | SUMMARY_FILE=pkg_summary.gz |
13 | OLD_SUMMARY_FILE=pkg_chk-summary | | 13 | OLD_SUMMARY_FILE=pkg_chk-summary |
14 | | | 14 | |
15 | is_binary_available() | | 15 | is_binary_available() |
16 | { | | 16 | { |
| @@ -247,59 +247,61 @@ generate_conf_from_installed() | | | @@ -247,59 +247,61 @@ generate_conf_from_installed() |
247 | FILE=$1 | | 247 | FILE=$1 |
248 | if [ -r $FILE ]; then | | 248 | if [ -r $FILE ]; then |
249 | mv $FILE ${FILE}.old | | 249 | mv $FILE ${FILE}.old |
250 | fi | | 250 | fi |
251 | echo "# Generated automatically at $(date)" > $FILE | | 251 | echo "# Generated automatically at $(date)" > $FILE |
252 | echo $(pkgdirs_from_installed) | tr ' ' '\n' >> $FILE | | 252 | echo $(pkgdirs_from_installed) | tr ' ' '\n' >> $FILE |
253 | } | | 253 | } |
254 | | | 254 | |
255 | get_bin_pkg_info() | | 255 | get_bin_pkg_info() |
256 | { | | 256 | { |
257 | summary_file=$PACKAGES/$SUMMARY_FILE | | 257 | summary_file=$PACKAGES/$SUMMARY_FILE |
258 | if [ -f $summary_file ] ; then | | 258 | if [ -f $summary_file ] ; then |
259 | if [ -z "$(find $PACKAGES -type f -newer $summary_file -name '*.t[bg]z')" ] ; then | | 259 | if [ -z "$(find $PACKAGES -type f -newer $summary_file -name '*.t[bg]z')" ] ; then |
| | | 260 | msg_progress Reading $summary_file |
260 | zcat $summary_file | | 261 | zcat $summary_file |
261 | return; | | 262 | return; |
262 | fi | | 263 | fi |
263 | echo "*** Ignoring $SUMMARY_FILE as PACKAGES contains newer files" >&2 | | 264 | echo "*** Ignoring $SUMMARY_FILE as PACKAGES contains newer files" >&2 |
264 | fi | | 265 | fi |
| | | 266 | msg_progress Scan $PACKAGES |
265 | list_bin_pkgs | ${XARGS} ${PKG_INFO} -X | | 267 | list_bin_pkgs | ${XARGS} ${PKG_INFO} -X |
266 | } | | 268 | } |
267 | | | 269 | |
268 | get_build_ver() | | 270 | get_build_ver() |
269 | { | | 271 | { |
270 | if [ -n "$opt_b" -a -z "$opt_s" ] ; then | | 272 | if [ -n "$opt_b" -a -z "$opt_s" ] ; then |
271 | ${PKG_INFO} -. -q -b $PACKAGES/$PKGNAME$PKG_SUFX | ${GREP} . | | 273 | ${PKG_INFO} -q -b $PACKAGES/$PKGNAME$PKG_SUFX | ${GREP} . |
272 | return | | 274 | return |
273 | fi | | 275 | fi |
274 | # Unfortunately pkgsrc always outputs to a file, but it does helpfully | | 276 | # Unfortunately pkgsrc always outputs to a file, but it does |
275 | # allows # us to specify the name | | 277 | # helpfully allows us to specify the name |
276 | rm -f $MY_TMPFILE | | 278 | rm -f $MY_TMPFILE |
277 | ${MAKE} _BUILD_VERSION_FILE=$MY_TMPFILE $MY_TMPFILE | | 279 | ${MAKE} _BUILD_VERSION_FILE=$MY_TMPFILE $MY_TMPFILE |
278 | cat $MY_TMPFILE | | 280 | cat $MY_TMPFILE |
279 | } | | 281 | } |
280 | | | 282 | |
281 | list_bin_pkgs () | | 283 | list_bin_pkgs () |
282 | { | | 284 | { |
283 | ls -t $PACKAGES | grep "$PKG_SUFX_RE"'$' | ${SED} "s|^|$PACKAGES/|" | | 285 | ls -t $PACKAGES | grep "$PKG_SUFX_RE"'$' | ${SED} "s|^|$PACKAGES/|" |
284 | } | | 286 | } |
285 | | | 287 | |
286 | # Given a binary package filename as the first argumennt, return a list | | 288 | # Given a binary package filename as the first argumennt, return a list |
287 | # of exact package versions against which it was built and on which it | | 289 | # of exact package versions against which it was built and on which it |
288 | # depends | | 290 | # depends |
289 | # | | 291 | # |
290 | list_dependencies() | | 292 | list_dependencies() |
291 | { | | 293 | { |
292 | ${PKG_INFO} -. -q -n $1 | ${GREP} .. || true | | 294 | ${PKG_INFO} -q -n $1 | ${GREP} .. || true |
293 | } | | 295 | } |
294 | | | 296 | |
295 | # Pass a list of pkgdirs, outputs a tsorted list including any dependencies | | 297 | # Pass a list of pkgdirs, outputs a tsorted list including any dependencies |
296 | # | | 298 | # |
297 | list_packages() | | 299 | list_packages() |
298 | { | | 300 | { |
299 | # Convert passed in list of pkgdirs to a list of binary package files | | 301 | # Convert passed in list of pkgdirs to a list of binary package files |
300 | pkglist='' | | 302 | pkglist='' |
301 | for pkgdir in $* ; do | | 303 | for pkgdir in $* ; do |
302 | pkgname=`pkgdir2pkgname $pkgdir` | | 304 | pkgname=`pkgdir2pkgname $pkgdir` |
303 | if [ -z "$pkgname" ]; then | | 305 | if [ -z "$pkgname" ]; then |
304 | fatal_later "$pkgdir - Unable to extract pkgname" | | 306 | fatal_later "$pkgdir - Unable to extract pkgname" |
305 | continue | | 307 | continue |
| @@ -829,27 +831,26 @@ fi | | | @@ -829,27 +831,26 @@ fi |
829 | AWK_PARSE_SUMMARY='$1=="PKGNAME"{pkgname=$2} $1=="PKGPATH"{pkgpath=$2} NF==0{if (pkgpath && pkgname) print pkgpath ":" pkgname; pkgpath=""; pkgname=""} END{if (pkgpath && pkgname) print pkgpath ":" pkgname}' | | 831 | AWK_PARSE_SUMMARY='$1=="PKGNAME"{pkgname=$2} $1=="PKGPATH"{pkgpath=$2} NF==0{if (pkgpath && pkgname) print pkgpath ":" pkgname; pkgpath=""; pkgname=""} END{if (pkgpath && pkgname) print pkgpath ":" pkgname}' |
830 | | | 832 | |
831 | if [ -n "$opt_b" -a -z "$opt_s" ] ; then | | 833 | if [ -n "$opt_b" -a -z "$opt_s" ] ; then |
832 | case $PACKAGES in | | 834 | case $PACKAGES in |
833 | http://*|ftp://*) | | 835 | http://*|ftp://*) |
834 | PKGDB=`ftp -o - $PACKAGES/$SUMMARY_FILE | ${GZIP_CMD} -cd \ | | 836 | PKGDB=`ftp -o - $PACKAGES/$SUMMARY_FILE | ${GZIP_CMD} -cd \ |
835 | | ${AWK} -F= "$AWK_PARSE_SUMMARY"` | | 837 | | ${AWK} -F= "$AWK_PARSE_SUMMARY"` |
836 | if [ -z "$PKGDB" ] | | 838 | if [ -z "$PKGDB" ] |
837 | then | | 839 | then |
838 | PKGDB=`ftp -o - $PACKAGES/$OLD_SUMMARY_FILE` | | 840 | PKGDB=`ftp -o - $PACKAGES/$OLD_SUMMARY_FILE` |
839 | fi;; | | 841 | fi;; |
840 | *) | | 842 | *) |
841 | if [ -d "$PACKAGES" ] ; then | | 843 | if [ -d "$PACKAGES" ] ; then |
842 | msg_progress Scan $PACKAGES | | | |
843 | PKGDB=$(get_bin_pkg_info | bin_pkg_info2pkgdb) | | 844 | PKGDB=$(get_bin_pkg_info | bin_pkg_info2pkgdb) |
844 | PKGSRCDIR=NONE | | 845 | PKGSRCDIR=NONE |
845 | fi;; | | 846 | fi;; |
846 | esac | | 847 | esac |
847 | fi | | 848 | fi |
848 | | | 849 | |
849 | if [ -n "$opt_g" ]; then | | 850 | if [ -n "$opt_g" ]; then |
850 | verbose "Write $PKGCHK_CONF based on installed packages" | | 851 | verbose "Write $PKGCHK_CONF based on installed packages" |
851 | generate_conf_from_installed $PKGCHK_CONF | | 852 | generate_conf_from_installed $PKGCHK_CONF |
852 | fi | | 853 | fi |
853 | | | 854 | |
854 | if [ -n "$opt_r" -o -n "$opt_u" ];then | | 855 | if [ -n "$opt_r" -o -n "$opt_u" ];then |
855 | verbose "Enumerate PKGDIRLIST from installed packages" | | 856 | verbose "Enumerate PKGDIRLIST from installed packages" |