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:
Aleksey Cheusov 2008-09-07 16:53:32 +00:00 committed by Thomas Klausner
parent 56bf23bfc0
commit 6ddfd3350d
7 changed files with 53 additions and 28 deletions

View file

@ -1 +1 @@
VERSION= 0.14.0
VERSION= 0.14.1

View file

@ -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

View file

@ -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

View file

@ -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
}

View file

@ -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

View file

@ -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()
}

View file

@ -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 '|' \