Update to 0.30.0

New utility pkg_summary2build_graph that converts src_summary
    to build dependency graph.
This commit is contained in:
Aleksey Cheusov 2009-05-30 14:18:32 +00:00 committed by Thomas Klausner
parent b4ed54ae55
commit 2e8bc70906
7 changed files with 178 additions and 4 deletions

View file

@ -17,3 +17,4 @@ pkg_refresh_summary - output an information about latest/newest version
pkg_grep_summary - grep the summary using AWK expression
pkg_cleanup_distdir - remove old unused distfiles
pkg_uniq_summary - filter out repeated package summaries
pkg_summary2build_graph- convert src_summary to build dependency graph

View file

@ -1,4 +1,4 @@
@comment $NetBSD: PLIST,v 1.13 2009/03/31 20:31:46 cheusov Exp $
@comment $NetBSD: PLIST,v 1.14 2009/05/30 14:18:32 cheusov Exp $
bin/cvs_checksum
bin/pkg_assignments2pkgpath
bin/pkg_cleanup_distdir
@ -10,6 +10,7 @@ bin/pkg_refresh_summary
bin/pkg_src_fetch_var
bin/pkg_src_summary
bin/pkg_summary2bb_pkgs
bin/pkg_summary2build_graph
bin/pkg_summary4view
bin/pkg_uniq_summary
bin/pkg_update_src_summary
@ -22,6 +23,7 @@ man/man1/pkg_list_all_pkgs.1
man/man1/pkg_micro_src_summary.1
man/man1/pkg_refresh_summary.1
man/man1/pkg_src_summary.1
man/man1/pkg_summary2build_graph.1
man/man1/pkg_summary4view.1
man/man1/pkg_uniq_summary.1
man/man1/pkg_update_src_summary.1

View file

@ -26,7 +26,7 @@ SCRIPTS+= pkg_update_src_summary pkg_summary4view
SCRIPTS+= pkg_update_summary pkg_grep_summary
SCRIPTS+= cvs_checksum pkg_assignments2pkgpath
SCRIPTS+= pkg_uniq_summary pkg_summary2bb_pkgs
SCRIPTS+= pkg_cleanup_distdir
SCRIPTS+= pkg_cleanup_distdir pkg_summary2build_graph
MAN= pkg_summary-utils.7
MAN+= pkg_cmp_summary.1 pkg_grep_summary.1
@ -35,7 +35,7 @@ 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 pkg_uniq_summary.1
MAN+= pkg_cleanup_distdir.1
MAN+= pkg_cleanup_distdir.1 pkg_summary2build_graph.1
FILES= README NEWS TODO pkg_grep_summary.awk pkg_src_summary.mk

View file

@ -1 +1 @@
VERSION= 0.29.0
VERSION= 0.30.0

View file

@ -1,3 +1,9 @@
----------------------------------------------------------------------
Version 0.30.0, by Aleksey Cheusov, Sat, 30 May 2009 17:12:18 +0300
- New utility pkg_summary2build_graph that converts src_summary
to build dependency graph.
----------------------------------------------------------------------
Version 0.29.0, by Aleksey Cheusov, Sun, 10 May 2009 23:00:18 +0300

View file

@ -0,0 +1,43 @@
.\" $NetBSD: pkg_summary2build_graph.1,v 1.1 2009/05/30 14:18:32 cheusov Exp $
.\"
.\" Copyright (c) 2008 by Aleksey Cheusov (cheusov@tut.by)
.\" Absolutely no warranty.
.\"
.\" ------------------------------------------------------------------
.de VB \" Verbatim Begin
.ft CW
.nf
.ne \\$1
..
.de VE \" Verbatim End
.ft R
.fi
..
.\" ------------------------------------------------------------------
.TH PKG_SUMMARY2BUILD_GRAPH 1 "Jan 29, 2008" "" ""
.SH NAME
.B pkg_summary2build_graph
converts src_summary to build dependency graph
.SH SYNOPSIS
.BI pkg_summary2build_graph " [files...]"
.SH DESCRIPTION
.B pkg_summary2build_graph
converts src_summary to build dependency graph analysing
{alter,native}:../../dep/endencies entries in DEPENDS and
BUILD_DEPENDS fields. Format of the output:
.VB
package2 package3
package1
...
.VE
Here package1 has no dependencies and package3 depends on package2.
.SH EXAMPLES
.VB
pkg_list_all_pkgs | pkg_src_summary | pkg_summary2build_graph
.VE
.SH SEE ALSO
.BR pkg_summary-utils(7) ,
.BR pkg_summary(5) ,
.BR pkg_src_summary(1)
.SH AUTHOR
Aleksey Cheusov <vle@gmx.net>

View file

@ -0,0 +1,122 @@
#!/usr/bin/env runawk
# Copyright (c) 2008-2009 Aleksey Cheusov <vle@gmx.net>
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
############################################################
#env "LC_ALL=C"
#use "power_getopt.awk"
#use "alt_assert.awk"
#use "braceexpand.awk"
############################################################
#.begin-str help
# pkg_summary2build_graph - converts src_summary to build
# dependency graph analysing {alter,native}:../../dep/endencies entries
# in DEPENDS and BUILD_DEPENDS fields.
# Format of the output:
# package1
# package2 package3
# ...
# Here package3 depends on package2, package1 has no dependencies.
# usage: pkg_summary2build_graph [OPTIONS] [files...]
# OPTIONS:
# -h|--help display this help
#.end-str
############################################################
/^PKGNAME=/ {
pkgname = substr($0, 9)
pkgbase = pkgname
sub(/-[^-]+$/, "", pkgbase)
pkgpaths [pkgbase] = 1
next
}
/^PKGPATH=/ {
pkgpath = substr($0, 9)
nodep_pkgpaths [pkgpath] = 1
next
}
NF == 0 {
assert(pkgbase != "", "Cannot find pkgbase")
assert(pkgpath != "", "Cannot find pkgpath")
pkgpaths [pkgbase] = pkgpath
pkgbase = pkgpath = ""
next
}
/^DEPENDS=/ || /^BUILD_DEPENDS=/ {
sub(/^[^=]+=/, "")
delete deps
for (i=1; i <= NF; ++i){
if ($i !~ /[{]/){
sub(/^.*:(..\/..\/)?/, "", $i)
deps [$i " " pkgpath] = 1
delete nodep_pkgpaths [pkgpath]
delete nodep_pkgpaths [$i]
}else{
depbase = $i
sub(/:.*$/, "", depbase)
depbase = braceexpand(depbase)
sub(/ .*$/, "", depbase)
sub(/-\[[^\[\]]*\].$|(>|>=|<|<=|=|-)[^><=-]*$/, "", depbase)
delete nodep_pkgpaths [pkgpath]
hidden_deps [depbase " " pkgpath] = 1
}
}
for (dep in deps){
print dep
}
}
END {
ex = 0
for (hdep in hidden_deps){
base = hdep
sub(/ .*$/, "", base)
if (! (base in pkgpaths)){
print "Cannot find PKGPATH for " base > "/dev/stderr"
ex = 1
}else{
pkgpath = hdep
sub(/^.* /, "", pkgpath)
print pkgpaths [base], pkgpath
}
}
for (pkgpath in nodep_pkgpaths){
print pkgpath
}
exit ex
}