version -> 0.14.1
FIX in pkg_src_summary: I forgot that grep's exit status may be 1 which is fatal if 'set -e' pkg_cmp_summary: support for multi-variant package summaries. Option -m added for this. pkg_grep_summary: in order to support summaries for multi-variant packages it is strongly recommented to use 'fvalue' variable in condition instead of '$2'. Man page and README update accordingly.
This commit is contained in:
parent
56bf23bfc0
commit
6ddfd3350d
7 changed files with 53 additions and 28 deletions
|
@ -1 +1 @@
|
|||
VERSION= 0.14.0
|
||||
VERSION= 0.14.1
|
||||
|
|
|
@ -122,11 +122,11 @@ Try to use pkg_grep_summary like the following
|
|||
|
||||
pkg_grep_summary -h
|
||||
|
||||
pkg_grep_summary 'PKGNAME' '$2 ~ /judy/' \
|
||||
pkg_grep_summary 'PKGNAME' 'fvalue ~ /judy/' \
|
||||
< /usr/pkgsrc/packages/pkg_summary.txt
|
||||
pkg_grep_summary 'PKGPATH' '$2 ~ /^lang\//' \
|
||||
pkg_grep_summary 'PKGPATH' 'fvalue ~ /^lang\//' \
|
||||
< /usr/pkgsrc/packages/pkg_summary.txt
|
||||
pkg_grep_summary 'DEPENDS' '$2 ~ /libX/' \
|
||||
pkg_grep_summary 'DEPENDS' 'fvalue ~ /libX/' \
|
||||
< /usr/pkgsrc/pkg_src_summary.txt
|
||||
pkg_grep_summary 'COMMENT' 'toupper($2) ~ /DNS/' \
|
||||
pkg_grep_summary 'COMMENT' 'toupper(fvalue) ~ /DNS/' \
|
||||
< /usr/pkgsrc/pkg_src_summary.txt
|
||||
|
|
|
@ -35,6 +35,8 @@ OPTIONS:\n\
|
|||
-h|--help display this help\n\
|
||||
-p|--with-pkgpath use PKGPATH:PKGBASE pair for identifing a package\n\
|
||||
-c|--use-checksum also use CVS_CHECKSUM field in comparing packages\n\
|
||||
-m|--multi support multi-variant packages, that is packages\n\
|
||||
with building options in PKGPATH section\n\
|
||||
" > "/dev/stderr"
|
||||
}
|
||||
|
||||
|
@ -53,6 +55,11 @@ BEGIN {
|
|||
use_checksum = 1
|
||||
ARGV [i] = ""
|
||||
|
||||
++skip
|
||||
}else if (ARGV [i] ~ /^(-m|--multi)$/){
|
||||
with_multivar = 1
|
||||
ARGV [i] = ""
|
||||
|
||||
++skip
|
||||
}
|
||||
}
|
||||
|
@ -84,22 +91,29 @@ use_checksum && $0 ~ /^CVS_CHECKSUM=/ {
|
|||
|
||||
with_pkgpath && $0 ~ /^PKGPATH=/ {
|
||||
pkgpath = trim(substr($0, 9))
|
||||
full_pkgpath = pkgpath
|
||||
if (with_multivar && pkgpath ~ /:/){
|
||||
sub(/:.*$/, "", pkgpath)
|
||||
}
|
||||
next
|
||||
}
|
||||
|
||||
NF == 0 {
|
||||
# option PKGPATH
|
||||
if (with_pkgpath){
|
||||
pkgname = pkgpath " " pkgname
|
||||
}
|
||||
|
||||
# ver
|
||||
ver = pkgname
|
||||
sub(/^.*-/, "", ver)
|
||||
|
||||
# pkgbase
|
||||
pkgbase = pkgname
|
||||
sub(/-[^-]+$/, "", pkgbase)
|
||||
sub(/-[^-]+$/, "", pkgname)
|
||||
|
||||
# option PKGPATH
|
||||
if (with_pkgpath){
|
||||
pkgbase = pkgpath " " pkgname
|
||||
full_pkgbase = full_pkgpath " " pkgname
|
||||
}else{
|
||||
pkgbase = pkgname
|
||||
full_pkgbase = pkgname
|
||||
}
|
||||
|
||||
# current checksum
|
||||
curr_checksum = checksum
|
||||
|
@ -114,6 +128,9 @@ NF == 0 {
|
|||
duplicates [pkgbase] += 1
|
||||
}else{
|
||||
names [pkgbase] = ver
|
||||
if (with_multivar && pkgpath != full_pkgpath){
|
||||
full_pkgpaths [pkgbase] = full_pkgbase
|
||||
}
|
||||
|
||||
if (use_checksum){
|
||||
checksums [pkgbase] = curr_checksum
|
||||
|
@ -128,7 +145,8 @@ NF == 0 {
|
|||
}
|
||||
|
||||
if (! (pkgbase in names)){
|
||||
print "+", pkgbase, ver
|
||||
print "+", full_pkgbase, ver
|
||||
|
||||
next
|
||||
}
|
||||
|
||||
|
@ -145,7 +163,7 @@ NF == 0 {
|
|||
}
|
||||
}
|
||||
|
||||
print res, pkgbase, ver1, ver
|
||||
print res, full_pkgbase, ver1, ver
|
||||
}
|
||||
|
||||
next
|
||||
|
@ -154,7 +172,11 @@ NF == 0 {
|
|||
END {
|
||||
for (pkgbase in names){
|
||||
if (! (pkgbase in present)){
|
||||
print "-", pkgbase, names [pkgbase]
|
||||
if (pkgbase in full_pkgpaths)
|
||||
print "-", full_pkgpaths [pkgbase], names [pkgbase]
|
||||
else
|
||||
print "-", pkgbase, names [pkgbase]
|
||||
|
||||
delete duplicates [pkgbase]
|
||||
}else if (pkgbase in duplicates){
|
||||
print duplicates [pkgbase]+1, pkgbase
|
||||
|
|
|
@ -36,13 +36,13 @@ OPTIONS:
|
|||
-h|--help display this message
|
||||
|
||||
EXAMPLES:
|
||||
pkg_grep_summary 'PKGNAME' '\$2 ~ /judy/' \\
|
||||
pkg_grep_summary 'PKGNAME' 'fvalue ~ /judy/' \\
|
||||
< /usr/pkgsrc/packages/pkg_summary.txt
|
||||
pkg_grep_summary 'PKGPATH' '\$2 ~ /^lang\//' \\
|
||||
pkg_grep_summary 'PKGPATH' 'fvalue ~ /^lang\//' \\
|
||||
< /usr/pkgsrc/packages/pkg_summary.txt
|
||||
pkg_grep_summary 'DEPENDS' '\$2 ~ /libX/' \\
|
||||
pkg_grep_summary 'DEPENDS' 'fvalue ~ /libX/' \\
|
||||
< /usr/pkgsrc/pkg_src_summary.txt
|
||||
pkg_grep_summary 'COMMENT' 'toupper(\$2) ~ /DNS/' \\
|
||||
pkg_grep_summary 'COMMENT' 'toupper(fvalue) ~ /DNS/' \\
|
||||
< /usr/pkgsrc/pkg_src_summary.txt
|
||||
EOF
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $NetBSD: pkg_grep_summary.1,v 1.2 2008/07/07 14:36:33 cheusov Exp $
|
||||
.\" $NetBSD: pkg_grep_summary.1,v 1.3 2008/09/07 16:53:32 cheusov Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2008 by Aleksey Cheusov (vle@gmx.net)
|
||||
.\" Absolutely no warranty.
|
||||
|
@ -35,13 +35,13 @@ display help message
|
|||
.El
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
pkg_grep_summary 'PKGNAME' '$2 ~ /judy/' \\
|
||||
pkg_grep_summary 'PKGNAME' 'fvalue ~ /judy/' \\
|
||||
< /usr/pkgsrc/packages/pkg_summary.txt
|
||||
pkg_grep_summary 'PKGPATH' '$2 ~ /^lang\\//' \\
|
||||
pkg_grep_summary 'PKGPATH' 'fvalue ~ /^lang\\//' \\
|
||||
< /usr/pkgsrc/packages/pkg_summary.txt
|
||||
pkg_grep_summary 'DEPENDS' '$2 ~ /libX/' \\
|
||||
pkg_grep_summary 'DEPENDS' 'fvalue ~ /libX/' \\
|
||||
< /usr/pkgsrc/pkg_src_summary.txt
|
||||
pkg_grep_summary 'COMMENT' 'toupper($2) ~ /DNS/' \\
|
||||
pkg_grep_summary 'COMMENT' 'toupper(fvalue) ~ /DNS/' \\
|
||||
< /usr/pkgsrc/pkg_src_summary.txt
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
|
|
|
@ -26,6 +26,9 @@ grep_summary__skip == 1 && NF > 0 {
|
|||
}
|
||||
|
||||
($1 == grep_summary__field) || ("" == grep_summary__field) {
|
||||
$1=$1
|
||||
fvalue = $0
|
||||
sub(/^[^=]*=/, "", fvalue)
|
||||
if (grep_summary__skip == -1){
|
||||
update_skip()
|
||||
}
|
||||
|
|
|
@ -451,17 +451,17 @@ else
|
|||
fi
|
||||
|
||||
if test "$multi_var"; then
|
||||
pkg_grep_summary VARIANTS7 '$2 != ""' \
|
||||
pkg_grep_summary VARIANTS7 'fvalue != ""' \
|
||||
< $partial_summary_fn >$multi_pkgs_fn
|
||||
|
||||
if test -s $multi_pkgs_fn; then
|
||||
pkg_grep_summary VARIANTS7 '$2 == ""' \
|
||||
pkg_grep_summary VARIANTS7 'fvalue == ""' \
|
||||
< $partial_summary_fn >$normal_pkgs_fn
|
||||
grep -v VARIANTS7 $normal_pkgs_fn > $partial_summary_fn
|
||||
grep -v VARIANTS7 $normal_pkgs_fn > $partial_summary_fn || true
|
||||
|
||||
rm $normal_pkgs_fn
|
||||
|
||||
runpipe0 \
|
||||
runpipe_re '0 0 [01] 0' \
|
||||
summary2all_variants < $multi_pkgs_fn '|' \
|
||||
pkg_src_summary $make_plist '|' \
|
||||
grep -v VARIANTS7 '|' \
|
||||
|
|
Loading…
Reference in a new issue