summaryrefslogtreecommitdiff
path: root/mk/scripts
diff options
context:
space:
mode:
authordmcmahill <dmcmahill>2003-03-19 20:46:55 +0000
committerdmcmahill <dmcmahill>2003-03-19 20:46:55 +0000
commit7a4812cb57e28eb9f89f5b8be18fd9fb845dd86b (patch)
tree7a459a1f60b1b681139ce2bd8104222330ef47f3 /mk/scripts
parent8e2aad373d6cbce20fa4ba4810dd9e88efe5809a (diff)
downloadpkgsrc-7a4812cb57e28eb9f89f5b8be18fd9fb845dd86b.tar.gz
- fix a bug in the HOMEPAGE link when the URL contains an ampersand
- fix a bug in which caused only packages listed as DEPENDS to show up in the 'packages needed to build' section. Now the BUILD_DEPENDS are also shown. Thanks to Christian Hattemer for noting this. - fix a bug which caused error messages claiming that category and top level README.html files could not be created even though they were created. This bug only showed up if an old README.html file did not exist. As part of this, clean up and unify the code which handles comparing the new README.html file to a possibly pre-existing one and only copying it over if there is a change.
Diffstat (limited to 'mk/scripts')
-rwxr-xr-xmk/scripts/genreadme.awk121
1 files changed, 80 insertions, 41 deletions
diff --git a/mk/scripts/genreadme.awk b/mk/scripts/genreadme.awk
index ce4ae24a1c4..79ba1f1e8d3 100755
--- a/mk/scripts/genreadme.awk
+++ b/mk/scripts/genreadme.awk
@@ -1,5 +1,5 @@
#!/usr/bin/awk -f
-# $NetBSD: genreadme.awk,v 1.7 2003/03/19 02:12:11 dmcmahill Exp $
+# $NetBSD: genreadme.awk,v 1.8 2003/03/19 20:46:55 dmcmahill Exp $
#
# Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -135,6 +135,7 @@ BEGIN {
/^homepage /{
homepage[$2] = $3;
+ gsub(/&/, "\\\\&", homepage[$2]);
next;
}
@@ -200,8 +201,8 @@ END {
fflush("/dev/stdout");
printf("") > dependsfile;
for (toppkg in topdepends){
- if (debug) printf("calling find_all_depends(%s)\n", toppkg);
- find_all_depends(toppkg);
+ if (debug) printf("calling find_all_depends(%s, run)\n", toppkg);
+ find_all_depends(toppkg, "run");
if (debug) printf("%s depends on: %s, topdepends on %s\n",
toppkg, alldepends[toppkg],
topdepends[toppkg]);
@@ -218,7 +219,7 @@ END {
fflush("/dev/stdout");
printf("") > builddependsfile;
for (toppkg in topbuilddepends){
- find_all_depends(toppkg);
+ find_all_depends(toppkg, "build");
printf("%s build_depends on: %s\n",
toppkg, alldepends[toppkg]) >> builddependsfile;
}
@@ -434,13 +435,20 @@ END {
}
close(readme);
close(templatefile);
- cmd = "if [ ! -d " pkgdir " ]; then echo "pkgdir" does not exist ; exit 1 ; fi ; if [ ! -f "readmenew" ] || ! cmp -s "readme" "readmenew" ; then mv -f " readme " " readmenew " ; fi";
+ cmd = "if [ ! -d " pkgdir " ]; then exit 1 ; fi";
if (debug) printf("Execute: %s\n",cmd);
rc = system(cmd);
if (rc != 0) {
- printf("**** WARNING ****\nCould not create %s (rc=%d)\n",
- readmenew,rc) > "/dev/stderr";
+ printf("\n**** WARNING ****\nPackage directory %s\n",
+ pkgdir) > "/dev/stderr";
+ printf("Does not exist. This is probably ") > "/dev/stderr";
+ printf("due to an incorrect DEPENDS line.\n") > "/dev/stderr";
+ printf("Try running: grep %s */*/Makefile\n", fulldir2pkgdir(pkgdir)) > "/dev/stderr";
+ printf("or: grep %s */*/buildlink2.mk\n", fulldir2pkgdir(pkgdir)) > "/dev/stderr";
+ printf("to find the problem\n", pkgdir) > "/dev/stderr";
printf("**** ------- ****\n") > "/dev/stderr";
+ } else {
+ copy_readme(readmenew, readme);
}
}
printf("\n");
@@ -516,15 +524,8 @@ END {
}
close(readme);
close(templatefile);
- cmd = "if [ ! -f "readmenew" ]; then mv -f " readme " " readmenew " ; fi ; if ! cmp -s " readme" "readmenew" ; then mv -f " readme " " readmenew " ; fi ";
- if (debug) printf("Execute: %s\n",cmd);
- rc=system(cmd);
- if (rc != 0) {
- printf("**** WARNING ****\nCould not create %s (rc=%d)\n",
- readmenew,rc) > "/dev/stderr";
- printf("**** ------- ****\n") > "/dev/stderr";
- }
-
+ copy_readme(readmenew, readme);
+
gsub(/href=\"/, "href=\""category"/", pkgs);
allcat = sprintf("%s<TR><TD VALIGN=TOP><a href=\"%s/%s\">%s</a>: %s<TD>\n",
allcat, category, readme_name,
@@ -535,9 +536,9 @@ END {
close(top_make);
printf("Generating toplevel readmes:\n");
- templatefile=PKGSRCDIR "/templates/README.top";
+ templatefile = PKGSRCDIR "/templates/README.top";
fatal_check_file(templatefile);
- readmenew=PKGSRCDIR "/"readme_name;
+ readmenew = PKGSRCDIR "/"readme_name;
printf("\t%s\n", readmenew);
print "" > readme;
while((getline < templatefile) > 0){
@@ -548,19 +549,12 @@ END {
}
close(readme);
close(templatefile);
- cmd="if [ ! -f "readmenew" ]; then mv -f "readme " " readmenew " ; fi ; if ! cmp -s "readme" "readmenew" ; then mv -f " readme " " readmenew " ; fi ";
- if (debug) printf("Execute: %s\n",cmd);
- rc = system(cmd);
- if (rc != 0) {
- printf("**** WARNING ****\nCould not create %s (rc=%d)\n",
- readmenew,rc) > "/dev/stderr";
- printf("**** ------- ****\n") > "/dev/stderr";
- }
+ copy_readme(readmenew, readme);
templatefile = PKGSRCDIR "/templates/README.all";
fatal_check_file(templatefile);
readmenew = PKGSRCDIR "/README-all.html";
- printf("\t%s\n",readmenew);
+ printf("\t%s\n", readmenew);
# sort the pkgs
sfile = TMPDIR"/unsorted";
spipe = "sort " sfile;
@@ -589,23 +583,16 @@ END {
}
close(readme);
close(templatefile);
- cmd = "if [ ! -f "readmenew" ]; then mv -f "readme " " readmenew " ; fi ; if ! cmp -s "readme" "readmenew" ; then mv -f " readme " " readmenew " ; fi ";
- if (debug) printf("Execute: %s\n",cmd);
- rc = system(cmd);
- if (rc != 0) {
- printf("**** WARNING ****\nCould not create %s (rc=%d)\n",
- readmenew,rc) > "/dev/stderr";
- printf("**** ------- ****\n") > "/dev/stderr";
- }
+ copy_readme(readmenew, readme);
close("/dev/stderr");
exit 0;
}
-function find_all_depends(pkg, pkgreg, i, deps, depdir){
+function find_all_depends(pkg, type, pkgreg, i, deps, depdir, topdep){
# pkg is the package directory, like math/scilab
-# printf("find_all_depends(%s)\n",pkg);
+# printf("find_all_depends(%s, %s)\n", pkg, type);
# if we find the package already has been fully depended
# then return the depends list
if (pkg in alldepends){
@@ -616,16 +603,23 @@ function find_all_depends(pkg, pkgreg, i, deps, depdir){
# if this package has no top dependencies, enter an empty flat dependency
# list for it.
- if (topdepends[pkg] ~ "^[ \t]*$") {
+ if( type == "run" ) {
+# we only want DEPENDS
+ topdep = topdepends[pkg];
+ } else {
+# we want BUILD_DEPENDS and DEPENDS
+ topdep = topdepends[pkg] " " topbuilddepends[pkg];
+ }
+ if (topdep ~ "^[ \t]*$") {
alldepends[pkg] = " ";
if (debug) printf("\t%s has no depends(%s). Returning %s\n",
- pkg, topdepends[pkg], alldepends[pkg]);
+ pkg, topdep, alldepends[pkg]);
return(alldepends[pkg]);
}
# recursively gather depends that each of the depends has
pkgreg = reg2str(pkg);
- split(topdepends[pkg], deps);
+ split(topdep, deps);
i = 1;
alldepends[pkg] = " ";
while ( i in deps ) {
@@ -645,7 +639,7 @@ function find_all_depends(pkg, pkgreg, i, deps, depdir){
# we depend on may also have depended on
# deps[i].
if (alldepends[pkg] !~ reg2str(deps[i])){
- alldepends[pkg] = alldepends[pkg] " " deps[i] " " find_all_depends(depdir);
+ alldepends[pkg] = alldepends[pkg] " " deps[i] " " find_all_depends(depdir, type);
}
else {
if (debug) printf("\t%s is already listed in %s\n",
@@ -721,3 +715,48 @@ function fatal_check_file(file, cmd){
}
}
+# 'new' is the newly created README.html file
+# 'old' is the existing (possibly not present) README.html file
+#
+# This function copies over the 'new' file if the 'old' one does
+# not exist or if they are different. In addition, the 'new' one
+# which is a temporary file is removed at the end
+
+function copy_readme(old, new, cmd, rc) {
+
+# if the README.html file does not exist at all then copy over
+# the one we created
+
+ cmd = "if [ ! -f "old" ]; then cp " new " " old " ; fi";
+ if (debug) printf("copy_readme() execute: %s\n",cmd);
+ rc = system(cmd);
+ if (rc != 0) {
+ printf("**** WARNING ****\nThe command\n %s\n", cmd) > "/dev/stderr";
+ printf("failed with result code %d\n", rc) > "/dev/stderr";
+ printf("**** ------- ****\n") > "/dev/stderr";
+ }
+
+# Compare the existing README.html file to the one we created. If they are
+# not the same, then copy over the one we created
+
+ cmd = " if ! cmp -s "new" "old" ; then mv -f " new " " old " ; fi";
+ if (debug) printf("copy_readme() execute: %s\n",cmd);
+ rc = system(cmd);
+ if (rc != 0) {
+ printf("**** WARNING ****\nThe command\n %s\n", cmd) > "/dev/stderr";
+ printf("failed with result code %d\n", rc) > "/dev/stderr";
+ printf("**** ------- ****\n") > "/dev/stderr";
+ }
+
+# If the temp file still exists, then delete it
+ cmd = " if [ -f "new" ]; then rm -f "new" ; fi";
+ if (debug) printf("copy_readme() execute: %s\n",cmd);
+ rc = system(cmd);
+ if (rc != 0) {
+ printf("**** WARNING ****\nThe command\n %s\n", cmd) > "/dev/stderr";
+ printf("failed with result code %d\n", rc) > "/dev/stderr";
+ printf("**** ------- ****\n") > "/dev/stderr";
+ }
+
+}
+