FreeBSD Bugzilla – Attachment 105277 Details for
Bug 145694
[patch] enable config(8) execution outside of the kernel source tree.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 7.17 KB, created by
Aleksandr Rybalko
on 2010-04-14 12:40:01 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
Aleksandr Rybalko
Created:
2010-04-14 12:40:01 UTC
Size:
7.17 KB
patch
obsolete
>Index: mkoptions.c >=================================================================== >--- mkoptions.c (revision 206411) >+++ mkoptions.c (working copy) >@@ -294,7 +294,11 @@ read_options(void) > char genopt[MAXPATHLEN]; > > SLIST_INIT(&otab); >- (void) snprintf(fname, sizeof(fname), "../../conf/options"); >+ if ( *ksrcdir != '\0' ) >+ (void) snprintf(fname, sizeof(fname), "%s/conf/options", >+ ksrcdir); >+ else >+ (void) snprintf(fname, sizeof(fname), "../../conf/options"); > openit: > fp = fopen(fname, "r"); > if (fp == 0) { >@@ -306,7 +310,12 @@ next: > (void) fclose(fp); > if (first == 1) { > first++; >- (void) snprintf(fname, sizeof fname, "../../conf/options.%s", machinename); >+ if ( *ksrcdir != '\0' ) >+ (void) snprintf(fname, sizeof fname, >+ "%s/conf/options.%s", ksrcdir, machinename); >+ else >+ (void) snprintf(fname, sizeof fname, >+ "../../conf/options.%s", machinename); > fp = fopen(fname, "r"); > if (fp != 0) > goto next; >Index: main.c >=================================================================== >--- main.c (revision 206411) >+++ main.c (working copy) >@@ -72,6 +72,7 @@ static const char rcsid[] = > > char * PREFIX; > char destdir[MAXPATHLEN]; >+char ksrcdir[MAXPATHLEN]; > char srcdir[MAXPATHLEN]; > > int debugging; >@@ -110,8 +111,9 @@ main(int argc, char **argv) > char xxx[MAXPATHLEN]; > char *kernfile; > >+ *ksrcdir = '\0'; > kernfile = NULL; >- while ((ch = getopt(argc, argv, "Cd:gpVx:")) != -1) >+ while ((ch = getopt(argc, argv, "Cd:gk:pVx:")) != -1) > switch (ch) { > case 'C': > filebased = 1; >@@ -125,6 +127,12 @@ main(int argc, char **argv) > case 'g': > debugging++; > break; >+ case 'k': >+ if (*ksrcdir == '\0') >+ strlcpy(ksrcdir, optarg, sizeof(ksrcdir)); >+ else >+ errx(EXIT_FAILURE, "Kernel ksrcdir already set"); >+ break; > case 'p': > profiling++; > break; >@@ -164,7 +172,8 @@ main(int argc, char **argv) > len = strlen(destdir); > while (len > 1 && destdir[len - 1] == '/') > destdir[--len] = '\0'; >- get_srcdir(); >+ if (*ksrcdir == '\0') >+ get_srcdir(); > } else { > strlcpy(destdir, CDIR, sizeof(destdir)); > strlcat(destdir, PREFIX, sizeof(destdir)); >@@ -210,11 +219,14 @@ main(int argc, char **argv) > * for "sys" (to make genassym.c work along with #include <sys/xxx>) > * and similarly for "machine". > */ >- if (*srcdir == '\0') >- (void)snprintf(xxx, sizeof(xxx), "../../include"); >- else >+ if (*ksrcdir != '\0') > (void)snprintf(xxx, sizeof(xxx), "%s/%s/include", >+ ksrcdir, machinename); >+ else if (*srcdir != '\0') >+ (void)snprintf(xxx, sizeof(xxx), "%s/%s/include", > srcdir, machinename); >+ else >+ (void)snprintf(xxx, sizeof(xxx), "../../include"); > (void) unlink(path("machine")); > (void) symlink(xxx, path("machine")); > if (strcmp(machinename, machinearch) != 0) { >@@ -222,12 +234,15 @@ main(int argc, char **argv) > * make symbolic links in compilation directory for > * machinearch, if it is different than machinename. > */ >- if (*srcdir == '\0') >+ if (*ksrcdir != '\0') >+ (void)snprintf(xxx, sizeof(xxx), "%s/%s/include", >+ ksrcdir, machinearch); >+ else if (*srcdir != '\0') >+ (void)snprintf(xxx, sizeof(xxx), "%s/%s/include", >+ srcdir, machinearch); >+ else > (void)snprintf(xxx, sizeof(xxx), "../../../%s/include", > machinearch); >- else >- (void)snprintf(xxx, sizeof(xxx), "%s/%s/include", >- srcdir, machinearch); > (void) unlink(path(machinearch)); > (void) symlink(xxx, path(machinearch)); > } >@@ -278,7 +293,7 @@ static void > usage(void) > { > >- fprintf(stderr, "usage: config [-CgpV] [-d destdir] sysname\n"); >+ fprintf(stderr, "usage: config [-CgpV] [-k srcdir] [-d destdir] sysname\n"); > fprintf(stderr, " config -x kernel\n"); > exit(EX_USAGE); > } >Index: mkmakefile.c >=================================================================== >--- mkmakefile.c (revision 206411) >+++ mkmakefile.c (working copy) >@@ -116,7 +116,12 @@ makefile(void) > int versreq; > > read_files(); >- snprintf(line, sizeof(line), "../../conf/Makefile.%s", machinename); >+ if (*ksrcdir != '\0') >+ snprintf(line, sizeof(line), "%s/conf/Makefile.%s", >+ ksrcdir, machinename); >+ else >+ snprintf(line, sizeof(line), "../../conf/Makefile.%s", >+ machinename); > ifp = fopen(line, "r"); > if (ifp == 0) { > snprintf(line, sizeof(line), "Makefile.%s", machinename); >@@ -139,7 +144,9 @@ makefile(void) > fprintf(ofp, "DEBUG=-g\n"); > if (profiling) > fprintf(ofp, "PROFLEVEL=%d\n", profiling); >- if (*srcdir != '\0') >+ if (*ksrcdir != '\0') >+ fprintf(ofp,"S=%s\n", ksrcdir); >+ else if (*srcdir != '\0') > fprintf(ofp,"S=%s\n", srcdir); > while (fgets(line, BUFSIZ, ifp) != 0) { > if (*line != '%') { >@@ -347,7 +354,12 @@ next: > printf("%s: missing include filename.\n", fname); > exit(1); > } >- (void) snprintf(ifname, sizeof(ifname), "../../%s", wd); >+ if (*ksrcdir != '\0') >+ (void) snprintf(ifname, sizeof(ifname), "%s/%s", >+ ksrcdir, wd); >+ else >+ (void) snprintf(ifname, sizeof(ifname), "../../%s", >+ wd); > read_file(ifname); > while (((wd = get_word(fp)) != (char *)EOF) && wd) > ; >@@ -544,9 +556,17 @@ read_files(void) > char fname[MAXPATHLEN]; > struct files_name *nl, *tnl; > >- (void) snprintf(fname, sizeof(fname), "../../conf/files"); >+ if (*ksrcdir != '\0') >+ (void) snprintf(fname, sizeof(fname), "%s/conf/files", >+ ksrcdir); >+ else >+ (void) snprintf(fname, sizeof(fname), "../../conf/files"); > read_file(fname); >- (void) snprintf(fname, sizeof(fname), >+ if (*ksrcdir != '\0') >+ (void) snprintf(fname, sizeof(fname), >+ "%s/conf/files.%s", ksrcdir, machinename); >+ else >+ (void) snprintf(fname, sizeof(fname), > "../../conf/files.%s", machinename); > read_file(fname); > for (nl = STAILQ_FIRST(&fntab); nl != NULL; nl = tnl) { >Index: config.8 >=================================================================== >--- config.8 (revision 206411) >+++ config.8 (working copy) >@@ -38,6 +38,7 @@ > .Nm > .Op Fl CVgp > .Op Fl d Ar destdir >+.Op Fl k Ar ksrcdir > .Ar SYSTEM_NAME > .Nm > .Op Fl x Ar kernel >@@ -78,6 +79,10 @@ Note that > does not append > .Ar SYSTEM_NAME > to the directory given. >+.It Fl k Ar ksrcdir >+Use >+.Ar ksrcdir >+as the kernel source tree directory, instead of the default one. > .It Fl g > Configure a system for debugging. > .It Fl x Ar kernel >Index: config.h >=================================================================== >--- config.h (revision 206411) >+++ config.h (working copy) >@@ -196,6 +196,8 @@ extern int maxusers; > > extern char *PREFIX; /* Config file name - for error messages */ > extern char srcdir[]; /* root of the kernel source tree */ >+extern char ksrcdir[]; /* root of the kernel source tree >+ * set by -k flag */ > > #define eq(a,b) (!strcmp(a,b)) > #define ns(s) strdup(s) >Index: lang.l >=================================================================== >--- lang.l (revision 206411) >+++ lang.l (working copy) >@@ -259,7 +259,10 @@ include(const char *fname, int ateof) > fnamebuf = NULL; > fp = fopen(fname, "r"); > if (fp == NULL && fname[0] != '.' && fname[0] != '/') { >- asprintf(&fnamebuf, "../../conf/%s", fname); >+ if (*ksrcdir != '\0') >+ asprintf(&fnamebuf, "%s/conf/%s", ksrcdir, fname); >+ else >+ asprintf(&fnamebuf, "../../conf/%s", fname); > if (fnamebuf != NULL) { > fp = fopen(fnamebuf, "r"); > free(fnamebuf);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 145694
: 105277