From f33a95bc86a4b2bfdc6cae3b40946bc73652d72c Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Mon, 24 Feb 2020 16:41:16 +0000 Subject: [PATCH] Create ../compile Give up the battle to keep extra files in $MACHINE/compile to keep the file in the tree. Instead, create CDIR (usually ../compile) if it doesn't exist when we're using a default build location (eg, not using -d). If it does, we do nothing. This only affects people that do old-school builds, but it's bit me a dozen times since last summer so time to fix the bug. --- usr.sbin/config/main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/usr.sbin/config/main.c b/usr.sbin/config/main.c index ba017c22b95..a4f75021a03 100644 --- a/usr.sbin/config/main.c +++ b/usr.sbin/config/main.c @@ -116,6 +116,7 @@ main(int argc, char **argv) char *kernfile; struct includepath* ipath; int printmachine; + bool cust_dest = false; printmachine = 0; kernfile = NULL; @@ -140,6 +141,7 @@ main(int argc, char **argv) strlcpy(destdir, optarg, sizeof(destdir)); else errx(EXIT_FAILURE, "directory already set"); + cust_dest = true; break; case 'g': debugging++; @@ -232,7 +234,14 @@ main(int argc, char **argv) exit(0); } - /* Make compile directory */ + /* + * Make CDIR directory, if doing a default destination. Some version + * control systems delete empty directories and this seemlessly copes. + */ + if (!cust_dest && stat(CDIR, &buf)) + if (mkdir(CDIR, 0777)) + err(2, "%s", CDIR); + /* Create the compile directory */ p = path((char *)NULL); if (stat(p, &buf)) { if (mkdir(p, 0777))