update to version 0.9.0
ADDED: CVS_CHECKSUM field to pkg_src_summary. This gives a way to compare two pkgsrc trees by comparing their pkg_src_summaries comparing not only an information about package versions but also an information about CVS files and their revisions. new script added: 'cvs_checksum' that analyses local cvs repository and lists all files in it with their revisions and, optionally, calculates a checksum for all this. Run 'cvs_checksum -h' for more information. CKSUM environment variable sets a checksum program, by default, standard 'cksum'. pkg_src_summary can generate new field: CVS_CHECKSUM, a checksum calculated by 'cvs_checksum' program for a package. By default CVS_CHECKSUM is NOT generated. 'pkg_cmp_summary -c' prints '!' (this means "not equal") for packages with the same versions but different CVS_CHECKSUM provided that CVS_CHECKSUM is set in both compared packages.
This commit is contained in:
parent
c6b90e0259
commit
28945ad237
9 changed files with 146 additions and 27 deletions
|
@ -1,4 +1,5 @@
|
|||
@comment $NetBSD: PLIST,v 1.5 2008/05/10 20:03:11 cheusov Exp $
|
||||
@comment $NetBSD: PLIST,v 1.6 2008/06/14 07:41:36 cheusov Exp $
|
||||
bin/cvs_checksum
|
||||
bin/pkg_cmp_summary
|
||||
bin/pkg_grep_summary
|
||||
bin/pkg_list_all_pkgs
|
||||
|
@ -9,6 +10,7 @@ bin/pkg_src_summary
|
|||
bin/pkg_summary4view
|
||||
bin/pkg_update_src_summary
|
||||
bin/pkg_update_summary
|
||||
man/man1/cvs_checksum.1
|
||||
man/man1/pkg_cmp_summary.1
|
||||
man/man1/pkg_list_all_pkgs.1
|
||||
man/man1/pkg_micro_src_summary.1
|
||||
|
|
|
@ -17,11 +17,13 @@ SCRIPTS+= pkg_refresh_summary pkg_src_fetch_var
|
|||
SCRIPTS+= pkg_micro_src_summary pkg_src_summary
|
||||
SCRIPTS+= pkg_update_src_summary pkg_summary4view
|
||||
SCRIPTS+= pkg_update_summary pkg_grep_summary
|
||||
SCRIPTS+= cvs_checksum
|
||||
|
||||
MAN= pkg_cmp_summary.1 pkg_micro_src_summary.1
|
||||
MAN+= pkg_src_summary.1 pkg_update_src_summary.1
|
||||
MAN+= pkg_summary4view.1 pkg_update_summary.1
|
||||
MAN+= pkg_refresh_summary.1 pkg_list_all_pkgs.1
|
||||
MAN+= cvs_checksum.1
|
||||
|
||||
FILES= README NEWS TODO pkg_grep_summary.awk
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
VERSION= 0.8.1
|
||||
VERSION= 0.9.0
|
||||
|
|
|
@ -1,3 +1,24 @@
|
|||
Version 0.9.0, by Aleksey Cheusov, Sat, 14 Jun 2008 10:38:55 +0300
|
||||
|
||||
ADDED: CVS_CHECKSUM field to pkg_src_summary. This gives a way to
|
||||
compare two pkgsrc trees by comparing their pkg_src_summaries
|
||||
comparing not only an information about package versions but also
|
||||
an information about CVS files and their revisions.
|
||||
|
||||
new script added: 'cvs_checksum' that analyses local cvs
|
||||
repository and lists all files in it with their revisions and,
|
||||
optionally, calculates a checksum for all this. Run
|
||||
'cvs_checksum -h' for more information. CKSUM environment
|
||||
variable sets a checksum program, by default, standard 'cksum'.
|
||||
|
||||
pkg_src_summary can generate new field: CVS_CHECKSUM, a checksum
|
||||
calculated by 'cvs_checksum' program for a package. By default
|
||||
CVS_CHECKSUM is NOT generated.
|
||||
|
||||
'pkg_cmp_summary -c' prints '!' (this means "not equal") for
|
||||
packages with the same versions but different CVS_CHECKSUM provided
|
||||
that CVS_CHECKSUM is set in both compared packages.
|
||||
|
||||
Version 0.8.0, by Aleksey Cheusov
|
||||
|
||||
FIXED: pkg_src_summary pkgpath
|
||||
|
|
48
pkg_summary-utils/files/cvs_checksum.1
Normal file
48
pkg_summary-utils/files/cvs_checksum.1
Normal file
|
@ -0,0 +1,48 @@
|
|||
.\" $NetBSD: cvs_checksum.1,v 1.1 2008/06/14 07:41:36 cheusov Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2008 by Aleksey Cheusov (vle@gmx.net)
|
||||
.\" Absolutely no warranty.
|
||||
.\"
|
||||
.Dd Jan 29, 2008
|
||||
.Dt CVS_CHECKSUM 1
|
||||
.Sh NAME
|
||||
.Nm cvs_checksum
|
||||
.Nd outputs a checksum of all files with their revisions
|
||||
from the working directory
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Ar cvsdirs ...
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
analyses CVS/Entries file and (with -l option) outputs a list of all
|
||||
files with their revisions in the working CVS directory. By default
|
||||
checksum is output.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl h
|
||||
display help message
|
||||
.It Fl l
|
||||
List of files with their revisions are output
|
||||
.El
|
||||
.Sh ENVIRONMENT
|
||||
.Bd -literal
|
||||
.Bl -tag -width Cm
|
||||
.It Cm CKSUM
|
||||
problem for calculating a checksum, By default
|
||||
the standard utility cksum is used.
|
||||
.El
|
||||
.Ed
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
cvs_checksum /usr/src/bin/sh
|
||||
cvs_checksum -l /usr/pkgsrc/devel/libjudy /usr/pkgsrc/x11/xxkb
|
||||
env CKSUM=md5 cvs_checksum /usr/src/bin/sh
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr cvs 1 ,
|
||||
.Xr cksum 1 ,
|
||||
.Xr md5 1
|
||||
.Sh AUTHOR
|
||||
.An Aleksey Cheusov
|
||||
.Aq vle@gmx.net
|
|
@ -30,33 +30,36 @@ function usage (){
|
|||
printf "\
|
||||
pkg_cmp_summary - compares two summary files\n\
|
||||
usage: pkg_cmp_summary -h\n\
|
||||
pkg_cmp_summary [-p] summary1 summary2\n\
|
||||
pkg_cmp_summary [OPTIONS] summary1 summary2\n\
|
||||
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\
|
||||
" > "/dev/stderr"
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
if (ARGV [1] ~ /^(-h|--help)$/){
|
||||
usage()
|
||||
exit 0
|
||||
skip = 0
|
||||
for (i = 1; i <= ARGC; ++i){
|
||||
if (ARGV [i] ~ /^(-h|--help)$/){
|
||||
usage()
|
||||
exit 0
|
||||
}else if (ARGV [i] ~ /^(-p|--with-pkgpath)$/){
|
||||
with_pkgpath = 1
|
||||
ARGV [i] = ""
|
||||
|
||||
++skip
|
||||
}else if (ARGV [i] ~ /^(-c|--use-checksum)$/){
|
||||
use_checksum = 1
|
||||
ARGV [i] = ""
|
||||
|
||||
++skip
|
||||
}
|
||||
}
|
||||
if (ARGV [1] ~ /^(-p|--with-pkgpath)$/){
|
||||
with_pkgpath = 1
|
||||
ARGV [1] = ""
|
||||
|
||||
if (ARGC != 4){
|
||||
usage()
|
||||
exit 1
|
||||
}
|
||||
|
||||
skip = 1
|
||||
}else{
|
||||
if (ARGC != 3){
|
||||
usage()
|
||||
exit 1
|
||||
}
|
||||
if (ARGC-skip != 3){
|
||||
usage()
|
||||
exit 1
|
||||
}
|
||||
|
||||
file1 = ARGV [1 + skip]
|
||||
|
@ -74,6 +77,11 @@ $0 ~ /^PKGNAME=/ {
|
|||
next
|
||||
}
|
||||
|
||||
use_checksum && $0 ~ /^CVS_CHECKSUM=/ {
|
||||
checksum = trim(substr($0, 14))
|
||||
next
|
||||
}
|
||||
|
||||
with_pkgpath && $0 ~ /^PKGPATH=/ {
|
||||
pkgpath = trim(substr($0, 9))
|
||||
next
|
||||
|
@ -93,6 +101,12 @@ NF == 0 {
|
|||
pkgbase = pkgname
|
||||
sub(/-[^-]+$/, "", pkgbase)
|
||||
|
||||
# current checksum
|
||||
curr_checksum = checksum
|
||||
|
||||
# cleaning...
|
||||
pkgname = pkgpath = checksum = ""
|
||||
|
||||
#
|
||||
if (FILENAME == file1){
|
||||
# first file!
|
||||
|
@ -100,6 +114,10 @@ NF == 0 {
|
|||
duplicates [pkgbase] += 1
|
||||
}else{
|
||||
names [pkgbase] = ver
|
||||
|
||||
if (use_checksum){
|
||||
checksums [pkgbase] = curr_checksum
|
||||
}
|
||||
}
|
||||
}else{
|
||||
# second file!
|
||||
|
@ -116,6 +134,17 @@ NF == 0 {
|
|||
|
||||
ver1 = names [pkgbase]
|
||||
res = dewey_cmp(ver1, ver)
|
||||
|
||||
if (use_checksum && res == "="){
|
||||
prev_checksum = checksums [pkgbase]
|
||||
if (prev_checksum != "" &&
|
||||
curr_checksum != "" &&
|
||||
prev_checksum != curr_checksum)
|
||||
{
|
||||
res = "!"
|
||||
}
|
||||
}
|
||||
|
||||
print res, pkgbase, ver1, ver
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $NetBSD: pkg_cmp_summary.1,v 1.4 2008/04/27 11:40:50 cheusov Exp $
|
||||
.\" $NetBSD: pkg_cmp_summary.1,v 1.5 2008/06/14 07:41:36 cheusov Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2008 by Aleksey Cheusov (vle@gmx.net)
|
||||
.\" Absolutely no warranty.
|
||||
|
@ -30,10 +30,12 @@ Format of the results:
|
|||
< second file contains newer version
|
||||
> second file contains earlier version
|
||||
? versions are incomparable (incorrect version, for example)
|
||||
! versions are not equal (versions themselves are the same but
|
||||
CVS_CHECKSUMs are different)
|
||||
.
|
||||
PKGBASE is PKGNAME with version stripped,
|
||||
VER1 and VER2 are package versions. VER2 is present only if
|
||||
R is `<' or `>'. PKGPATH appears in output if -p option is specified.
|
||||
VER1 and VER2 are package versions.
|
||||
PKGPATH appears in output if -p option is specified.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
|
@ -42,6 +44,8 @@ display help message
|
|||
.It Fl p
|
||||
use PKGPATH:PKGBASE pair for identifing a package, by default only PKGBASE
|
||||
is used to identify the package.
|
||||
.It Fl c
|
||||
use CVS_CHECKSUM field for comparing in addition to PKGNAME (and PKGPATH)
|
||||
.El
|
||||
.Sh AUTHOR
|
||||
.An Aleksey Cheusov
|
||||
|
|
|
@ -56,7 +56,7 @@ EOF
|
|||
|
||||
# list of fields for default pkg_src_summary
|
||||
if test -z "$PSS_FIELDS"; then
|
||||
PSS_FIELDS='PKGNAME PKGPATH DEPENDS BUILD_DEPENDS CONFLICTS HOMEPAGE COMMENT LICENSE ONLYFOR NOTFOR MAINTAINER CATEGORIES DESCRIPTION PLIST'
|
||||
PSS_FIELDS='PKGNAME PKGPATH DEPENDS BUILD_DEPENDS CONFLICTS HOMEPAGE COMMENT LICENSE ONLYFOR NOTFOR MAINTAINER CATEGORIES DESCRIPTION PLIST' # CVS_CHECKSUM'
|
||||
fi
|
||||
|
||||
if test -z "$PSS_PPERS"; then
|
||||
|
@ -95,8 +95,12 @@ fi
|
|||
if echo "$PSS_FIELDS" | grep PLIST > /dev/null; then
|
||||
field_plist=1
|
||||
fi
|
||||
if echo "$PSS_FIELDS" | grep CVS_CHECKSUM > /dev/null; then
|
||||
field_cvs_checksum=1
|
||||
fi
|
||||
varnames="`echo $PSS_FIELDS |
|
||||
awk '{gsub(/PLIST/, \"\")
|
||||
gsub(/CVS_CHECKSUM/, \"\")
|
||||
gsub(/ONLYFOR/, \"ONLY_FOR_PLATFORM\")
|
||||
gsub(/NOTFOR/, \"NOT_FOR_PLATFORM\")
|
||||
gsub(/DESCRIPTION/, \"DESCR_SRC\")
|
||||
|
@ -159,6 +163,13 @@ cd_and_print_summary (){
|
|||
|
||||
enrich_summary "$tmpfn" >"$summaryfn" || return 1
|
||||
|
||||
# CVS_CHECKSUM
|
||||
if test "$field_cvs_checksum"; then
|
||||
cvs_checksum $1 > "$tmpfn" || return 1
|
||||
read cksum < "$tmpfn" || return 1
|
||||
printf "CVS_CHECKSUM=%s\n" "$cksum" >>"$summaryfn" || return 1
|
||||
fi
|
||||
|
||||
# not expanding PLIST yet
|
||||
if test "$field_plist"; then
|
||||
plist_fn=$1/PLIST
|
||||
|
@ -253,7 +264,7 @@ if test "$PSS_SLAVES"; then
|
|||
qfields="$PSS_FIELDS"
|
||||
fi
|
||||
|
||||
environ="PSS_SLAVES= BMAKE=$BMAKE PKGSRCDIR=$PKGSRCDIR"
|
||||
environ="PSS_SLAVES= BMAKE=$BMAKE CKSUM=$CKSUM PKGSRCDIR=$PKGSRCDIR"
|
||||
|
||||
runpipe0 \
|
||||
packages2stdout "$@" '|' \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $NetBSD: pkg_src_summary.1,v 1.7 2008/05/11 21:53:18 cheusov Exp $
|
||||
.\" $NetBSD: pkg_src_summary.1,v 1.8 2008/06/14 07:41:36 cheusov Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2008 by Aleksey Cheusov (vle@gmx.net)
|
||||
.\" Absolutely no warranty.
|
||||
|
@ -27,7 +27,9 @@ display help message
|
|||
A list of fields (separated by space character) to be generated. By
|
||||
default the following fields are generated: PKGNAME, PKGPATH, DEPENDS,
|
||||
BUILD_DEPENDS, CONFLICTS, HOMEPAGE, COMMENT, LICENSE, ONLYFOR, NOTFOR,
|
||||
MAINTAINER, CATEGORIES, DESCRIPTION (multiline), PLIST(multiline).
|
||||
MAINTAINER, CATEGORIES,
|
||||
DESCRIPTION (multiline), PLIST(multiline).
|
||||
The following are NOT generated by default: CVS_CHECKSUM.
|
||||
.It Fl p
|
||||
use 'bmake plist' for obtaining PLIST
|
||||
.El
|
||||
|
|
Loading…
Reference in a new issue