3 # $NetBSD: chkdatabase.awk,v 1.2 2003/05/06 17:42:04 jmmv Exp $
5 # Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
8 # This code is derived from software contributed to The NetBSD Foundation
11 # Redistribution and use in source and binary forms, with or without
12 # modification, are permitted provided that the following conditions
14 # 1. Redistributions of source code must retain the above copyright
15 # notice, this list of conditions and the following disclaimer.
16 # 2. Redistributions in binary form must reproduce the above copyright
17 # notice, this list of conditions and the following disclaimer in the
18 # documentation and/or other materials provided with the distribution.
19 # 3. All advertising materials mentioning features or use of this software
20 # must display the following acknowledgement:
21 # This product includes software developed by the NetBSD
22 # Foundation, Inc. and its contributors.
23 # 4. Neither the name of The NetBSD Foundation nor the names of its
24 # contributors may be used to endorse or promote products derived
25 # from this software without specific prior written permission.
27 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
28 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
31 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 # POSSIBILITY OF SUCH DAMAGE.
40 # This script reads a pkgsrc database created with the 'print-summary-data'
41 # target and returns a lists of packages which are listed as DEPENDS and/or
42 # BUILD_DEPENDS but do not have their own dependencies recorded yet.
43 # This can be used as part of a loop which makes several passes to record
44 # the complete dependency tree for a package in the database
49 printf("Reading database file\n") > "/dev/stderr";
50 fflush
("/dev/stderr");
54 /^
(build_
)?depends
/ {
56 # Read in the entire depends tree
57 # These lines look like:
59 #depends /usr/pkgsrc/math/scilab xless-[0-9]*:../../x11/xless pvm-3.4.3:../../parallel/pvm3
60 #build_depends /usr/pkgsrc/math/scilab libtool-base>=1.4.20010614nb9:../../devel/libtool-base
64 # mark this package as having its depencencies listed
65 depended_pkgs
[pkg
] =
1;
67 # now go through the dependency lists and pull out all pkg directories that
68 # we will need to examine to ensure they have been depended.
69 for(i=
3; i
<=
NF; i
++) {
73 sub(/[\.\
/]*/,"",pkgdir
);
76 gsub(/\
/.
*/,"",pkgcat
);
77 pkgdir=pkgcat
"/" pkgdir
;
78 if(debug
) printf("Corrected missing category directory to get \"%s\"\n",pkgdir
) > "/dev/stderr";
81 printf("package in directory %s %s on:\n",pkg
,deptype
) > "/dev/stderr";
82 printf("\tpkgpat = %s\n",pkgpat
) > "/dev/stderr";
83 printf("\tpkgdir = %s\n",pkgdir
) > "/dev/stderr";
86 # mark this package directory as being one which is depended upon
87 depended_on_pkgs
[pkgdir
] =
1;
96 for(pkg in depended_on_pkgs
) {
97 if(pkg in depended_pkgs
) {
98 if(debug
) printf("Package: %s is already depended\n",pkg
) > "/dev/stderr";
101 if(debug
)printf("Package: %s is NOT depended\n",pkg
) > "/dev/stderr";
108 while(i in not_depended
) {
109 printf("%s\n",not_depended
[i
]);
112 close("/dev/stderr");