config(8) 'make config' v2

2013-10-28 Thread Marc Espie
Theo says no need for reconfig, make config will do just fine.

okays ?


Index: config.h
===
RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/config.h,v
retrieving revision 1.25
diff -u -p -r1.25 config.h
--- config.h5 Dec 2012 23:20:26 -   1.25
+++ config.h28 Oct 2013 07:44:56 -
@@ -339,6 +339,10 @@ void   defoption(const char *name);
 intdevbase_has_instances(struct devbase *, int);
 intdeva_has_instances(struct deva *, int);
 void   setupdirs(void);
+intpflag;
+char   *sflag;
+char   *bflag;
+char   *startdir;
 
 /* mkheaders.c */
 intmkheaders(void);
Index: main.c
===
RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/main.c,v
retrieving revision 1.44
diff -u -p -r1.44 main.c
--- main.c  22 Jun 2012 22:02:29 -  1.44
+++ main.c  28 Oct 2013 07:47:13 -
@@ -93,15 +93,24 @@ usage(void)
exit(1);
 }
 
+int pflag = 0;
+char *sflag = NULL;
+char *bflag = NULL;
+char *startdir;
+
 int
 main(int argc, char *argv[])
 {
char *p;
const char *last_component;
char *outfile = NULL;
-   int pflag, ch, eflag, uflag, fflag;
+   int ch, eflag, uflag, fflag;
+   char dirbuffer[PATH_MAX];
 
pflag = eflag = uflag = fflag = 0;
+   startdir = getcwd(dirbuffer, sizeof dirbuffer);
+   if (startdir == NULL)
+   warn(Can't getcwd, no make reconfig);
while ((ch = getopt(argc, argv, egpfb:s:o:u)) != -1) {
switch (ch) {
 
@@ -148,10 +157,12 @@ main(int argc, char *argv[])
break;
 
case 'b':
+   bflag = optarg;
builddir = optarg;
break;
 
case 's':
+   sflag = optarg;
srcdir = optarg;
break;
 
Index: mkmakefile.c
===
RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/mkmakefile.c,v
retrieving revision 1.37
diff -u -p -r1.37 mkmakefile.c
--- mkmakefile.c17 Sep 2012 17:36:13 -  1.37
+++ mkmakefile.c28 Oct 2013 17:57:38 -
@@ -60,6 +60,7 @@
 static const char *srcpath(struct files *);
 
 static int emitdefs(FILE *);
+static int emitreconfig(FILE *);
 static int emitfiles(FILE *, int);
 
 static int emitobjs(FILE *);
@@ -120,6 +121,10 @@ mkmakefile(void)
if ((*fn)(ofp))
goto wrerror;
}
+   if (startdir != NULL) {
+   if (emitreconfig(ofp) != 0)
+   goto wrerror;
+   }
if (ferror(ifp)) {
(void)fprintf(stderr,
config: error reading %s (at line %d): %s\n,
@@ -271,6 +276,33 @@ emitdefs(FILE *fp)
for (nv = mkoptions; nv != NULL; nv = nv-nv_next)
if (fprintf(fp, %s=%s\n, nv-nv_name, nv-nv_str)  0)
return (1);
+   return (0);
+}
+
+static int
+emitreconfig(FILE *fp)
+{
+   if (fputs(\n
+   .PHONY: config\n
+   config:\n, fp)  0)
+   return (1);
+   if (fprintf(fp, \tcd %s  config , startdir)  0)
+   return (1);
+   if (pflag) {
+   if (fputs(-p , fp)  0)
+   return (1);
+   }
+   if (sflag) {
+   if (fprintf(fp, -s %s , sflag)  0)
+   return (1);
+   }
+   if (bflag) {
+   if (fprintf(fp, -b %s , bflag)  0)
+   return (1);
+   }
+   /* other options */
+   if (fprintf(fp, %s\n, conffile)  0)
+   return (1);
return (0);
 }
 



Re: config(8) 'make config' v2

2013-10-28 Thread Vadim Zhukov
2013/10/28 Marc Espie es...@nerim.net:
 Theo says no need for reconfig, make config will do just fine.

 okays ?


 Index: config.h
 ===
 RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/config.h,v
 retrieving revision 1.25
 diff -u -p -r1.25 config.h
 --- config.h5 Dec 2012 23:20:26 -   1.25
 +++ config.h28 Oct 2013 07:44:56 -
 @@ -339,6 +339,10 @@ void   defoption(const char *name);
  intdevbase_has_instances(struct devbase *, int);
  intdeva_has_instances(struct deva *, int);
  void   setupdirs(void);
 +intpflag;
 +char   *sflag;
 +char   *bflag;
 +char   *startdir;

  /* mkheaders.c */
  intmkheaders(void);
 Index: main.c
 ===
 RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/main.c,v
 retrieving revision 1.44
 diff -u -p -r1.44 main.c
 --- main.c  22 Jun 2012 22:02:29 -  1.44
 +++ main.c  28 Oct 2013 07:47:13 -
 @@ -93,15 +93,24 @@ usage(void)
 exit(1);
  }

 +int pflag = 0;
 +char *sflag = NULL;
 +char *bflag = NULL;
 +char *startdir;
 +
  int
  main(int argc, char *argv[])
  {
 char *p;
 const char *last_component;
 char *outfile = NULL;
 -   int pflag, ch, eflag, uflag, fflag;
 +   int ch, eflag, uflag, fflag;
 +   char dirbuffer[PATH_MAX];

 pflag = eflag = uflag = fflag = 0;
 +   startdir = getcwd(dirbuffer, sizeof dirbuffer);
 +   if (startdir == NULL)
 +   warn(Can't getcwd, no make reconfig);

make config here, too.

 while ((ch = getopt(argc, argv, egpfb:s:o:u)) != -1) {
 switch (ch) {

 @@ -148,10 +157,12 @@ main(int argc, char *argv[])
 break;

 case 'b':
 +   bflag = optarg;
 builddir = optarg;
 break;

 case 's':
 +   sflag = optarg;
 srcdir = optarg;
 break;

 Index: mkmakefile.c
 ===
 RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/mkmakefile.c,v
 retrieving revision 1.37
 diff -u -p -r1.37 mkmakefile.c
 --- mkmakefile.c17 Sep 2012 17:36:13 -  1.37
 +++ mkmakefile.c28 Oct 2013 17:57:38 -
 @@ -60,6 +60,7 @@
  static const char *srcpath(struct files *);

  static int emitdefs(FILE *);
 +static int emitreconfig(FILE *);
  static int emitfiles(FILE *, int);

  static int emitobjs(FILE *);
 @@ -120,6 +121,10 @@ mkmakefile(void)
 if ((*fn)(ofp))
 goto wrerror;
 }
 +   if (startdir != NULL) {
 +   if (emitreconfig(ofp) != 0)
 +   goto wrerror;
 +   }
 if (ferror(ifp)) {
 (void)fprintf(stderr,
 config: error reading %s (at line %d): %s\n,
 @@ -271,6 +276,33 @@ emitdefs(FILE *fp)
 for (nv = mkoptions; nv != NULL; nv = nv-nv_next)
 if (fprintf(fp, %s=%s\n, nv-nv_name, nv-nv_str)  0)
 return (1);
 +   return (0);
 +}
 +
 +static int
 +emitreconfig(FILE *fp)
 +{
 +   if (fputs(\n
 +   .PHONY: config\n
 +   config:\n, fp)  0)
 +   return (1);
 +   if (fprintf(fp, \tcd %s  config , startdir)  0)
 +   return (1);
 +   if (pflag) {
 +   if (fputs(-p , fp)  0)
 +   return (1);
 +   }
 +   if (sflag) {
 +   if (fprintf(fp, -s %s , sflag)  0)
 +   return (1);
 +   }
 +   if (bflag) {
 +   if (fprintf(fp, -b %s , bflag)  0)
 +   return (1);
 +   }
 +   /* other options */
 +   if (fprintf(fp, %s\n, conffile)  0)
 +   return (1);
 return (0);
  }

Reads and runs fine here on i386. Handy, thanks.

--
  WBR,
  Vadim Zhukov



V3 Re: config(8) 'make config' v2

2013-10-28 Thread Marc Espie
Backforth with Theo. A bit more logic.
Most trees are moveable, and it's possible to
do so when -b is not in use...

Index: config.h
===
RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/config.h,v
retrieving revision 1.25
diff -u -p -r1.25 config.h
--- config.h5 Dec 2012 23:20:26 -   1.25
+++ config.h28 Oct 2013 07:44:56 -
@@ -339,6 +339,10 @@ void   defoption(const char *name);
 intdevbase_has_instances(struct devbase *, int);
 intdeva_has_instances(struct deva *, int);
 void   setupdirs(void);
+intpflag;
+char   *sflag;
+char   *bflag;
+char   *startdir;
 
 /* mkheaders.c */
 intmkheaders(void);
Index: main.c
===
RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/main.c,v
retrieving revision 1.44
diff -u -p -r1.44 main.c
--- main.c  22 Jun 2012 22:02:29 -  1.44
+++ main.c  28 Oct 2013 18:36:33 -
@@ -93,13 +93,19 @@ usage(void)
exit(1);
 }
 
+int pflag = 0;
+char *sflag = NULL;
+char *bflag = NULL;
+char *startdir;
+
 int
 main(int argc, char *argv[])
 {
char *p;
const char *last_component;
char *outfile = NULL;
-   int pflag, ch, eflag, uflag, fflag;
+   int ch, eflag, uflag, fflag;
+   char dirbuffer[PATH_MAX];
 
pflag = eflag = uflag = fflag = 0;
while ((ch = getopt(argc, argv, egpfb:s:o:u)) != -1) {
@@ -148,10 +154,12 @@ main(int argc, char *argv[])
break;
 
case 'b':
+   bflag = optarg;
builddir = optarg;
break;
 
case 's':
+   sflag = optarg;
srcdir = optarg;
break;
 
@@ -163,7 +171,15 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
if (argc  1 || (eflag  argv[0] == NULL))
+
usage();
+   if (bflag) {
+   startdir = getcwd(dirbuffer, sizeof dirbuffer);
+   if (startdir == NULL)
+   warn(Use of -b and can't getcwd, no make config);
+   } else {
+   startdir = ../../conf;
+   }
 
if (eflag) {
 #ifdef MAKE_BOOTSTRAP
Index: mkmakefile.c
===
RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/mkmakefile.c,v
retrieving revision 1.37
diff -u -p -r1.37 mkmakefile.c
--- mkmakefile.c17 Sep 2012 17:36:13 -  1.37
+++ mkmakefile.c28 Oct 2013 18:36:46 -
@@ -60,6 +60,7 @@
 static const char *srcpath(struct files *);
 
 static int emitdefs(FILE *);
+static int emitreconfig(FILE *);
 static int emitfiles(FILE *, int);
 
 static int emitobjs(FILE *);
@@ -120,6 +121,10 @@ mkmakefile(void)
if ((*fn)(ofp))
goto wrerror;
}
+   if (startdir != NULL) {
+   if (emitreconfig(ofp) != 0)
+   goto wrerror;
+   }
if (ferror(ifp)) {
(void)fprintf(stderr,
config: error reading %s (at line %d): %s\n,
@@ -271,6 +276,33 @@ emitdefs(FILE *fp)
for (nv = mkoptions; nv != NULL; nv = nv-nv_next)
if (fprintf(fp, %s=%s\n, nv-nv_name, nv-nv_str)  0)
return (1);
+   return (0);
+}
+
+static int
+emitreconfig(FILE *fp)
+{
+   if (fputs(\n
+   .PHONY: config\n
+   config:\n, fp)  0)
+   return (1);
+   if (fprintf(fp, \tcd %s  config , startdir)  0)
+   return (1);
+   if (pflag) {
+   if (fputs(-p , fp)  0)
+   return (1);
+   }
+   if (sflag) {
+   if (fprintf(fp, -s %s , sflag)  0)
+   return (1);
+   }
+   if (bflag) {
+   if (fprintf(fp, -b %s , bflag)  0)
+   return (1);
+   }
+   /* other options */
+   if (fprintf(fp, %s\n, conffile)  0)
+   return (1);
return (0);
 }