| @@ -1,16 +1,16 @@ | | | @@ -1,16 +1,16 @@ |
1 | #!@SH@ -e | | 1 | #!@SH@ -e |
2 | # | | 2 | # |
3 | # $Id: pkg_chk.sh,v 1.65 2009/07/22 21:56:13 sketch Exp $ | | 3 | # $Id: pkg_chk.sh,v 1.66 2012/05/13 13:43:59 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 | { |
| @@ -359,46 +359,40 @@ list_packages() | | | @@ -359,46 +359,40 @@ list_packages() |
359 | pkgdir2pkgname() | | 359 | pkgdir2pkgname() |
360 | { | | 360 | { |
361 | pkgdir=$1 | | 361 | pkgdir=$1 |
362 | for pkgline in $PKGDB ; do | | 362 | for pkgline in $PKGDB ; do |
363 | case $pkgline in | | 363 | case $pkgline in |
364 | "$pkgdir:"*) | | 364 | "$pkgdir:"*) |
365 | echo $pkgline | ${SED} 's/[^:]*://' | | 365 | echo $pkgline | ${SED} 's/[^:]*://' |
366 | return; | | 366 | return; |
367 | ;; | | 367 | ;; |
368 | esac | | 368 | esac |
369 | done | | 369 | done |
370 | } | | 370 | } |
371 | | | 371 | |
372 | pkgdirs_from_conf() | | 372 | determine_tags() |
373 | { | | 373 | { |
374 | CONF=$1; shift | | | |
375 | LIST="$*" | | | |
376 | if [ ! -r $CONF ];then | | | |
377 | fatal "Unable to read PKGCHK_CONF '$CONF'" | | | |
378 | fi | | | |
379 | | | | |
380 | # Determine list of tags | | 374 | # Determine list of tags |
381 | # | | 375 | # |
382 | if [ "$PKGSRCDIR" = NONE ]; then | | 376 | if [ "$PKGSRCDIR" = NONE ]; then |
383 | OPSYS=$(uname -s) | | 377 | OPSYS=$(uname -s) |
384 | OS_VERSION=$(uname -r) | | 378 | OS_VERSION=$(uname -r) |
385 | MACHINE_ARCH=$(uname -p) | | 379 | MACHINE_ARCH=$(uname -p) |
386 | else | | 380 | else |
387 | extract_make_vars Makefile OPSYS OS_VERSION MACHINE_ARCH | | 381 | extract_make_vars Makefile OPSYS OS_VERSION MACHINE_ARCH |
388 | fi | | 382 | fi |
389 | | | 383 | |
390 | TAGS="$(hostname | ${SED} -e 's,\..*,,'),$(hostname),$OPSYS-$OS_VERSION-$MACHINE_ARCH,$OPSYS-$OS_VERSION,$OPSYS-$MACHINE_ARCH,$OPSYS,$OS_VERSION,$MACHINE_ARCH" | | 384 | TAGS="$(hostname | ${SED} -e 's,\..*,,'),$(hostname),$OPSYS-$OS_VERSION-$MACHINE_ARCH,$OPSYS-$OS_VERSION,$OPSYS-$MACHINE_ARCH,$OPSYS,$OS_VERSION,$MACHINE_ARCH" |
391 | if [ -f /usr/X11R6/lib/libX11.so -o -f /usr/X11R6/lib/libX11.a ];then | | 385 | if [ -f /usr/X11R7/lib/libX11.a -o -f /usr/X11R6/lib/libX11.a ];then |
392 | TAGS="$TAGS,x11" | | 386 | TAGS="$TAGS,x11" |
393 | fi | | 387 | fi |
394 | if [ -n "$PKGCHK_TAGS" ];then | | 388 | if [ -n "$PKGCHK_TAGS" ];then |
395 | TAGS="$TAGS,$PKGCHK_TAGS" | | 389 | TAGS="$TAGS,$PKGCHK_TAGS" |
396 | fi | | 390 | fi |
397 | if [ -n "$PKGCHK_NOTAGS" ];then | | 391 | if [ -n "$PKGCHK_NOTAGS" ];then |
398 | if [ -n "$opt_U" ];then | | 392 | if [ -n "$opt_U" ];then |
399 | opt_U="$opt_U,$PKGCHK_NOTAGS" | | 393 | opt_U="$opt_U,$PKGCHK_NOTAGS" |
400 | else | | 394 | else |
401 | opt_U="$PKGCHK_NOTAGS" | | 395 | opt_U="$PKGCHK_NOTAGS" |
402 | fi | | 396 | fi |
403 | fi | | 397 | fi |
404 | | | 398 | |
| @@ -408,26 +402,36 @@ pkgdirs_from_conf() | | | @@ -408,26 +402,36 @@ pkgdirs_from_conf() |
408 | case ",$opt_U," in | | 402 | case ",$opt_U," in |
409 | *,\*,*) | | 403 | *,\*,*) |
410 | TAGS='' | | 404 | TAGS='' |
411 | ;; | | 405 | ;; |
412 | esac | | 406 | esac |
413 | if [ -n "$TAGS" ];then | | 407 | if [ -n "$TAGS" ];then |
414 | if [ -n "$opt_D" ];then | | 408 | if [ -n "$opt_D" ];then |
415 | opt_D="$opt_D,$TAGS" | | 409 | opt_D="$opt_D,$TAGS" |
416 | else | | 410 | else |
417 | opt_D="$TAGS" | | 411 | opt_D="$TAGS" |
418 | fi | | 412 | fi |
419 | fi | | 413 | fi |
420 | verbose "set TAGS=$opt_D" | | 414 | verbose "set TAGS=$opt_D" |
| | | 415 | } |
| | | 416 | |
| | | 417 | pkgdirs_from_conf() |
| | | 418 | { |
| | | 419 | CONF=$1; shift |
| | | 420 | LIST="$*" |
| | | 421 | if [ ! -r $CONF ];then |
| | | 422 | fatal "Unable to read PKGCHK_CONF '$CONF'" |
| | | 423 | fi |
| | | 424 | |
421 | | | 425 | |
422 | # Extract list of valid pkgdirs (skip any 'alreadyset' in $LIST) | | 426 | # Extract list of valid pkgdirs (skip any 'alreadyset' in $LIST) |
423 | # | | 427 | # |
424 | LIST="$LIST "$(${AWK} -v alreadyset="$LIST" -v setlist="$opt_D" -v unsetlist="$opt_U" ' | | 428 | LIST="$LIST "$(${AWK} -v alreadyset="$LIST" -v setlist="$opt_D" -v unsetlist="$opt_U" ' |
425 | BEGIN { | | 429 | BEGIN { |
426 | split(alreadyset, tmp, " "); | | 430 | split(alreadyset, tmp, " "); |
427 | for (tag in tmp) { skip[tmp[tag]] = 1; } | | 431 | for (tag in tmp) { skip[tmp[tag]] = 1; } |
428 | | | 432 | |
429 | split(setlist, tmp, ","); | | 433 | split(setlist, tmp, ","); |
430 | for (tag in tmp) { taglist[tmp[tag]] = 1; } | | 434 | for (tag in tmp) { taglist[tmp[tag]] = 1; } |
431 | | | 435 | |
432 | split(unsetlist, tmp, ","); | | 436 | split(unsetlist, tmp, ","); |
433 | for (tag in tmp) { skip[tmp[tag]] = 1; nofile[tmp[tag]] = 1 ; | | 437 | for (tag in tmp) { skip[tmp[tag]] = 1; nofile[tmp[tag]] = 1 ; |
| @@ -838,26 +842,28 @@ if [ -n "$opt_b" -a -z "$opt_s" ] ; then | | | @@ -838,26 +842,28 @@ if [ -n "$opt_b" -a -z "$opt_s" ] ; then |
838 | | ${AWK} -F= "$AWK_PARSE_SUMMARY"` | | 842 | | ${AWK} -F= "$AWK_PARSE_SUMMARY"` |
839 | if [ -z "$PKGDB" ] | | 843 | if [ -z "$PKGDB" ] |
840 | then | | 844 | then |
841 | PKGDB=`ftp -o - $PACKAGES/$OLD_SUMMARY_FILE` | | 845 | PKGDB=`ftp -o - $PACKAGES/$OLD_SUMMARY_FILE` |
842 | fi;; | | 846 | fi;; |
843 | *) | | 847 | *) |
844 | if [ -d "$PACKAGES" ] ; then | | 848 | if [ -d "$PACKAGES" ] ; then |
845 | PKGDB=$(get_bin_pkg_info | bin_pkg_info2pkgdb) | | 849 | PKGDB=$(get_bin_pkg_info | bin_pkg_info2pkgdb) |
846 | PKGSRCDIR=NONE | | 850 | PKGSRCDIR=NONE |
847 | fi;; | | 851 | fi;; |
848 | esac | | 852 | esac |
849 | fi | | 853 | fi |
850 | | | 854 | |
| | | 855 | determine_tags |
| | | 856 | |
851 | if [ -n "$opt_g" ]; then | | 857 | if [ -n "$opt_g" ]; then |
852 | verbose "Write $PKGCHK_CONF based on installed packages" | | 858 | verbose "Write $PKGCHK_CONF based on installed packages" |
853 | generate_conf_from_installed $PKGCHK_CONF | | 859 | generate_conf_from_installed $PKGCHK_CONF |
854 | fi | | 860 | fi |
855 | | | 861 | |
856 | if [ -n "$opt_r" -o -n "$opt_u" ];then | | 862 | if [ -n "$opt_r" -o -n "$opt_u" ];then |
857 | verbose "Enumerate PKGDIRLIST from installed packages" | | 863 | verbose "Enumerate PKGDIRLIST from installed packages" |
858 | PKGDIRLIST=$(pkgdirs_from_installed) | | 864 | PKGDIRLIST=$(pkgdirs_from_installed) |
859 | fi | | 865 | fi |
860 | | | 866 | |
861 | if [ -n "$opt_p" ] ; then | | 867 | if [ -n "$opt_p" ] ; then |
862 | pkgdirs_from_conf $PKGCHK_CONF $PKGDIRLIST | tr ' ' '\n' | | 868 | pkgdirs_from_conf $PKGCHK_CONF $PKGDIRLIST | tr ' ' '\n' |
863 | exit | | 869 | exit |