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 */