Module Name: src Committed By: uebayasi Date: Wed Sep 2 05:09:25 UTC 2015
Modified Files: src/usr.bin/config: defs.h files.c main.c mkdevsw.c mkheaders.c mkioconf.c mkswap.c Log Message: In `-S' mode, generate *.c files under conf/ subdirectory. Register generated .c files to the `files' list internally. To generate a diff of this commit: cvs rdiff -u -r1.83 -r1.84 src/usr.bin/config/defs.h cvs rdiff -u -r1.26 -r1.27 src/usr.bin/config/files.c cvs rdiff -u -r1.84 -r1.85 src/usr.bin/config/main.c cvs rdiff -u -r1.12 -r1.13 src/usr.bin/config/mkdevsw.c cvs rdiff -u -r1.27 -r1.28 src/usr.bin/config/mkheaders.c cvs rdiff -u -r1.30 -r1.31 src/usr.bin/config/mkioconf.c cvs rdiff -u -r1.8 -r1.9 src/usr.bin/config/mkswap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/config/defs.h diff -u src/usr.bin/config/defs.h:1.83 src/usr.bin/config/defs.h:1.84 --- src/usr.bin/config/defs.h:1.83 Tue Sep 1 16:01:23 2015 +++ src/usr.bin/config/defs.h Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: defs.h,v 1.83 2015/09/01 16:01:23 uebayasi Exp $ */ +/* $NetBSD: defs.h,v 1.84 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -433,6 +433,8 @@ struct nvlist *machinesubarches; const char *ioconfname; /* ioconf name, mutually exclusive to machine */ const char *srcdir; /* path to source directory (rel. to build) */ const char *builddir; /* path to build directory */ +int builddirfd; /* dir fd of builddir */ +int buildconfdirfd; /* dir fd of builddir/conf */ const char *defbuilddir; /* default build directory */ const char *ident; /* kernel "ident"ification string */ int errors; /* counts calls to error() */ Index: src/usr.bin/config/files.c diff -u src/usr.bin/config/files.c:1.26 src/usr.bin/config/files.c:1.27 --- src/usr.bin/config/files.c:1.26 Tue Sep 1 16:01:23 2015 +++ src/usr.bin/config/files.c Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: files.c,v 1.26 2015/09/01 16:01:23 uebayasi Exp $ */ +/* $NetBSD: files.c,v 1.27 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: files.c,v 1.26 2015/09/01 16:01:23 uebayasi Exp $"); +__RCSID("$NetBSD: files.c,v 1.27 2015/09/02 05:09:25 uebayasi Exp $"); #include <sys/param.h> #include <errno.h> @@ -278,13 +278,15 @@ fixfiles(void) struct config *cf; char swapname[100]; - addfile("devsw.c", NULL, 0, NULL); - addfile("ioconf.c", NULL, 0, NULL); + buildprefix_push("conf"); + addfile("conf/devsw.c", NULL, 0, NULL); + addfile("conf/ioconf.c", NULL, 0, NULL); TAILQ_FOREACH(cf, &allcf, cf_next) { - (void)snprintf(swapname, sizeof(swapname), "swap%s.c", + (void)snprintf(swapname, sizeof(swapname), "conf/swap%s.c", cf->cf_name); addfile(intern(swapname), NULL, 0, NULL); } + buildprefix_pop(); } err = 0; Index: src/usr.bin/config/main.c diff -u src/usr.bin/config/main.c:1.84 src/usr.bin/config/main.c:1.85 --- src/usr.bin/config/main.c:1.84 Tue Sep 1 16:01:23 2015 +++ src/usr.bin/config/main.c Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.84 2015/09/01 16:01:23 uebayasi Exp $ */ +/* $NetBSD: main.c,v 1.85 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: main.c,v 1.84 2015/09/01 16:01:23 uebayasi Exp $"); +__RCSID("$NetBSD: main.c,v 1.85 2015/09/02 05:09:25 uebayasi Exp $"); #ifndef MAKE_BOOTSTRAP #include <sys/cdefs.h> @@ -100,6 +100,8 @@ extern int yydebug; #endif int dflag; +static const char *buildconfdir = "."; + static struct dlhash *obsopttab; static struct hashtab *mkopttab; static struct nvlist **nextopt; @@ -522,11 +524,15 @@ main(int argc, char **argv) /* * Ready to go. Build all the various files. */ - if (mksubdirs() || mksymlinks() || mkmakefile() || mkheaders() || mkswap() || + if ((Sflag && mksubdirs()) || mksymlinks() || mkmakefile() || mkheaders() || mkswap() || mkioconf() || (do_devsw ? mkdevsw() : 0) || mkident() || errors) stop(); (void)printf("Build directory is %s\n", builddir); (void)printf("Don't forget to run \"make depend\"\n"); + + close(buildconfdirfd); + close(builddirfd); + return 0; } @@ -650,9 +656,6 @@ mksubdirs(void) const char *prefix, *sep; char buf[MAXPATHLEN]; - if (!Sflag) - return 0; - TAILQ_FOREACH(fi, &allfiles, fi_next) { if ((fi->fi_flags & FI_SEL) == 0) continue; @@ -672,6 +675,8 @@ mksubdirs(void) mksubdir(buf); } + buildconfdir = "conf"; + return 0; } @@ -689,6 +694,9 @@ mksymlinks(void) p = buf; + if ((buildconfdirfd = open(buildconfdir, O_RDONLY)) == -1) + errx(EXIT_FAILURE, "cannot opens %s", buildconfdir); + snprintf(buf, sizeof(buf), "%s/arch/%s/include", srcdir, machine); ret = recreate(p, "machine"); ret = recreate(p, machine); @@ -1464,6 +1472,8 @@ setupdirs(void) errx(EXIT_FAILURE, "cannot create %s", builddir); } else if (!S_ISDIR(st.st_mode)) errx(EXIT_FAILURE, "%s is not a directory", builddir); + if ((builddirfd = open(builddir, O_RDONLY)) == -1) + errx(EXIT_FAILURE, "cannot opens %s", builddir); if (chdir(builddir) == -1) err(EXIT_FAILURE, "cannot change to %s", builddir); if (stat(srcdir, &st) == -1) Index: src/usr.bin/config/mkdevsw.c diff -u src/usr.bin/config/mkdevsw.c:1.12 src/usr.bin/config/mkdevsw.c:1.13 --- src/usr.bin/config/mkdevsw.c:1.12 Mon Nov 10 21:13:04 2014 +++ src/usr.bin/config/mkdevsw.c Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: mkdevsw.c,v 1.12 2014/11/10 21:13:04 christos Exp $ */ +/* $NetBSD: mkdevsw.c,v 1.13 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: mkdevsw.c,v 1.12 2014/11/10 21:13:04 christos Exp $"); +__RCSID("$NetBSD: mkdevsw.c,v 1.13 2015/09/02 05:09:25 uebayasi Exp $"); #include <stdio.h> #include <string.h> @@ -53,9 +53,10 @@ mkdevsw(void) { FILE *fp; + fchdir(buildconfdirfd); if ((fp = fopen("devsw.c.tmp", "w")) == NULL) { warn("cannot create devsw.c"); - return (1); + goto err; } emitheader(fp); @@ -67,17 +68,21 @@ mkdevsw(void) if (ferror(fp)) { warn("error writing devsw.c"); fclose(fp); - return 1; + goto err; } (void)fclose(fp); if (moveifchanged("devsw.c.tmp", "devsw.c") != 0) { warn("error renaming devsw.c"); - return (1); + goto err; } - + fchdir(builddirfd); return (0); + +err: + fchdir(builddirfd); + return (1); } static void Index: src/usr.bin/config/mkheaders.c diff -u src/usr.bin/config/mkheaders.c:1.27 src/usr.bin/config/mkheaders.c:1.28 --- src/usr.bin/config/mkheaders.c:1.27 Thu Aug 20 09:44:24 2015 +++ src/usr.bin/config/mkheaders.c Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: mkheaders.c,v 1.27 2015/08/20 09:44:24 christos Exp $ */ +/* $NetBSD: mkheaders.c,v 1.28 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: mkheaders.c,v 1.27 2015/08/20 09:44:24 christos Exp $"); +__RCSID("$NetBSD: mkheaders.c,v 1.28 2015/09/02 05:09:25 uebayasi Exp $"); #include <sys/param.h> #include <ctype.h> @@ -392,6 +392,7 @@ emitioconfh(void) struct devi *i; tfname = "tmp_ioconf.h"; + fchdir(buildconfdirfd); if ((tfp = fopen(tfname, "w")) == NULL) return (herr("open", tfname, NULL)); @@ -415,7 +416,11 @@ emitioconfh(void) if (fclose(tfp) == EOF) return (herr("clos", tfname, NULL)); - return (moveifchanged(tfname, "ioconf.h")); + if (moveifchanged(tfname, "ioconf.h") != 0) + return (herr("mvif", tfname, NULL)); + + fchdir(builddirfd); + return 0; } /* @@ -528,6 +533,7 @@ herr(const char *what, const char *fname warn("error %sing %s", what, fname); if (fp) (void)fclose(fp); + fchdir(builddirfd); return (1); } Index: src/usr.bin/config/mkioconf.c diff -u src/usr.bin/config/mkioconf.c:1.30 src/usr.bin/config/mkioconf.c:1.31 --- src/usr.bin/config/mkioconf.c:1.30 Fri Aug 28 03:55:15 2015 +++ src/usr.bin/config/mkioconf.c Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: mkioconf.c,v 1.30 2015/08/28 03:55:15 uebayasi Exp $ */ +/* $NetBSD: mkioconf.c,v 1.31 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: mkioconf.c,v 1.30 2015/08/28 03:55:15 uebayasi Exp $"); +__RCSID("$NetBSD: mkioconf.c,v 1.31 2015/09/02 05:09:25 uebayasi Exp $"); #include <sys/param.h> #include <err.h> @@ -87,9 +87,10 @@ mkioconf(void) FILE *fp; qsort(packed, npacked, sizeof *packed, cforder); + fchdir(buildconfdirfd); if ((fp = fopen("ioconf.c.tmp", "w")) == NULL) { warn("cannot write ioconf.c"); - return (1); + goto err; } fprintf(fp, "#include \"ioconf.h\"\n"); @@ -116,15 +117,20 @@ mkioconf(void) #if 0 (void)unlink("ioconf.c.tmp"); #endif - return (1); + goto err; } (void)fclose(fp); if (moveifchanged("ioconf.c.tmp", "ioconf.c") != 0) { warn("error renaming ioconf.c"); - return (1); + goto err; } + fchdir(builddirfd); return (0); + +err: + fchdir(builddirfd); + return (1); } static int Index: src/usr.bin/config/mkswap.c diff -u src/usr.bin/config/mkswap.c:1.8 src/usr.bin/config/mkswap.c:1.9 --- src/usr.bin/config/mkswap.c:1.8 Wed Oct 29 17:14:50 2014 +++ src/usr.bin/config/mkswap.c Wed Sep 2 05:09:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: mkswap.c,v 1.8 2014/10/29 17:14:50 christos Exp $ */ +/* $NetBSD: mkswap.c,v 1.9 2015/09/02 05:09:25 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: mkswap.c,v 1.8 2014/10/29 17:14:50 christos Exp $"); +__RCSID("$NetBSD: mkswap.c,v 1.9 2015/09/02 05:09:25 uebayasi Exp $"); #include <sys/param.h> #include <errno.h> @@ -97,9 +97,10 @@ mkoneswap(struct config *cf) (void)snprintf(fname, sizeof(fname), "swap%s.c", cf->cf_name); (void)snprintf(tname, sizeof(tname), "swap%s.c.tmp", cf->cf_name); + fchdir(buildconfdirfd); if ((fp = fopen(tname, "w")) == NULL) { warn("cannot open %s", fname); - return (1); + goto err; } autogen_comment(fp, fname); @@ -149,8 +150,9 @@ mkoneswap(struct config *cf) } if (moveifchanged(tname, fname) != 0) { warn("error renaming %s", fname); - return (1); + goto err; } + fchdir(builddirfd); return (0); wrerror: @@ -160,5 +162,7 @@ mkoneswap(struct config *cf) #if 0 (void)unlink(fname); #endif + err: + fchdir(builddirfd); return (1); }