Module Name:    othersrc
Committed By:   agc
Date:           Wed Jun  1 15:02:12 UTC 2011

Modified Files:
        othersrc/external/bsd/gensetlist: bsd.setlist.mk gensetlist.c

Log Message:
Recognise LINKS definitions in Makefiles, and generate the appropriate
set list entries, so that "make setlist" in src/usr.bin/cksum, for
example, DTRT:

% pwd
/usr/src/usr.bin/cksum
% make setlist

[src/distrib/sets/lists/base/mi]
./usr/bin/cksum         base-cksum-bin
./usr/bin/sum           base-cksum-bin
./usr/bin/md2           base-cksum-bin
./usr/bin/md4           base-cksum-bin
./usr/bin/md5           base-cksum-bin
./usr/bin/sha1          base-cksum-bin
./usr/bin/rmd160                base-cksum-bin

...


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 othersrc/external/bsd/gensetlist/bsd.setlist.mk
cvs rdiff -u -r1.7 -r1.8 othersrc/external/bsd/gensetlist/gensetlist.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: othersrc/external/bsd/gensetlist/bsd.setlist.mk
diff -u othersrc/external/bsd/gensetlist/bsd.setlist.mk:1.6 othersrc/external/bsd/gensetlist/bsd.setlist.mk:1.7
--- othersrc/external/bsd/gensetlist/bsd.setlist.mk:1.6	Mon May 30 03:49:56 2011
+++ othersrc/external/bsd/gensetlist/bsd.setlist.mk	Wed Jun  1 15:02:11 2011
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.setlist.mk,v 1.6 2011/05/30 03:49:56 agc Exp $
+# $NetBSD: bsd.setlist.mk,v 1.7 2011/06/01 15:02:11 agc Exp $
 
 # Copyright (c) 2010,2011 Alistair Crooks <[email protected]>
 # All rights reserved.
@@ -54,6 +54,10 @@
 GENSETLIST_ARGS+=-v SCRIPTSDIR=${SCRIPTSDIR:Q}
 .endif
 
+.if defined(LINKS)
+GENSETLIST_ARGS+=-v LINKS=${LINKS:Q}
+.endif
+
 .if defined(MLINKS)
 GENSETLIST_ARGS+=-v MLINKS=${MLINKS:Q}
 .endif

Index: othersrc/external/bsd/gensetlist/gensetlist.c
diff -u othersrc/external/bsd/gensetlist/gensetlist.c:1.7 othersrc/external/bsd/gensetlist/gensetlist.c:1.8
--- othersrc/external/bsd/gensetlist/gensetlist.c:1.7	Mon May 30 03:48:36 2011
+++ othersrc/external/bsd/gensetlist/gensetlist.c	Wed Jun  1 15:02:11 2011
@@ -50,6 +50,8 @@
 	int		 incc;			/* # of headers */
 	char		*defs[MAX_DEFS];	/* definitions */
 	int		 defc;			/* # of definitions */
+	char		*mlinks[MAX_LINKS];	/* man page hard links */
+	int		 mlinkc;		/* # of links */
 	char		*links[MAX_LINKS];	/* hard links */
 	int		 linkc;			/* # of links */
 	char		*symlinks[MAX_LINKS];	/* symbolic links */
@@ -120,6 +122,7 @@
 	static regex_t	 mandir;
 	static regex_t	 sub;
 	static regex_t	 mlinks;
+	static regex_t	 links;
 	static regex_t	 shlib;
 	static regex_t	 incs;
 	static regex_t	 prog;
@@ -145,6 +148,8 @@
 		(void) regcomp(&sub, "^[ \t]*([^ \t]+)", REG_EXTENDED);
 		(void) regcomp(&prog, "^[ \t]*PROG[ \t]*=[ \t]*([^ \t]+)",
 				REG_EXTENDED);
+		(void) regcomp(&links, "^[ \t]*LINKS[ \t]*=",
+				REG_EXTENDED);
 		(void) regcomp(&bindir, "^[ \t]*BINDIR[ \t]*=[ \t]*([^ \t]+)",
 				REG_EXTENDED);
 		(void) regcomp(&mandir, "^[ \t]*MANDIR[ \t]*=[ \t]*([^ \t]+)",
@@ -248,6 +253,17 @@
 		for (cp = &in[(int)matches[0].rm_eo] ; 
 		     regexec(&sublinks, cp, 10, matches, 0) == 0 ;
 		     cp += matches[0].rm_eo) {
+			(void) asprintf(&vars->mlinks[vars->mlinkc++], 
+				"%.*s",
+				(int)(matches[2].rm_eo - matches[2].rm_so),
+				&cp[(int)matches[2].rm_so]);
+		}
+		return 1;
+	}
+	if (regexec(&links, in, 10, matches, 0) == 0) {
+		for (cp = &in[(int)matches[0].rm_eo] ; 
+		     regexec(&sublinks, cp, 10, matches, 0) == 0 ;
+		     cp += matches[0].rm_eo) {
 			(void) asprintf(&vars->links[vars->linkc++], 
 				"%.*s",
 				(int)(matches[2].rm_eo - matches[2].rm_so),
@@ -406,6 +422,12 @@
 			vars.bindir, vars.progname, vars.category,
 			pdefs(&vars, buf, sizeof(buf), NULL));
 	}
+	/* binary links */
+	for (i = 0 ; i < vars.linkc ; i++) {
+		printf(".%s\t\tbase-%s-bin\t%s\n",
+			vars.links[i], vars.category,
+			pdefs(&vars, buf, sizeof(buf), NULL));
+	}
 	/* scripts */
 	for (i = 0 ; i < vars.scriptc ; i++) {
 		printf(".%s/%s\t\tbase-%s-bin\t%s\n",
@@ -460,23 +482,23 @@
 			pdefs(&vars, buf, sizeof(buf), ".man"));
 	}
 	/* man page links */
-	for (i = 0 ; i < vars.linkc ; i++) {
+	for (i = 0 ; i < vars.mlinkc ; i++) {
 		printf(".%s/cat%c/%.*s.0\t\tcomp-%s-catman\t\t%s\n",
 			vars.mandir,
-			vars.links[i][strlen(vars.links[i]) - 1],
-			(int)strlen(vars.links[i]) - 2,
-			vars.links[i], vars.category,
+			vars.mlinks[i][strlen(vars.mlinks[i]) - 1],
+			(int)strlen(vars.mlinks[i]) - 2,
+			vars.mlinks[i], vars.category,
 			pdefs(&vars, buf, sizeof(buf), ".cat"));
 		printf(".%s/html%c/%.*s.html\t\tcomp-%s-htmlman\t\t%s\n",
 			vars.mandir,
-			vars.links[i][strlen(vars.links[i]) - 1],
-			(int)strlen(vars.links[i]) - 2,
-			vars.links[i], vars.category,
+			vars.mlinks[i][strlen(vars.mlinks[i]) - 1],
+			(int)strlen(vars.mlinks[i]) - 2,
+			vars.mlinks[i], vars.category,
 			pdefs(&vars, buf, sizeof(buf), ".html"));
 		printf(".%s/man%c/%s\t\tcomp-%s-man\t\t%s\n",
 			vars.mandir,
-			vars.links[i][strlen(vars.links[i]) - 1],
-			vars.links[i], vars.category,
+			vars.mlinks[i][strlen(vars.mlinks[i]) - 1],
+			vars.mlinks[i], vars.category,
 			pdefs(&vars, buf, sizeof(buf), ".man"));
 	}
 	/* libs */

Reply via email to