Commit 501e1920 authored by Rusty Russell's avatar Rusty Russell

tools: add build_verbose to show every command executed.

parent 64eca8b8
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
static char *tmpdir = NULL; static char *tmpdir = NULL;
static unsigned int count; static unsigned int count;
bool tools_verbose = false;
/* Ten minutes. */ /* Ten minutes. */
const unsigned int default_timeout_ms = 10 * 60 * 1000; const unsigned int default_timeout_ms = 10 * 60 * 1000;
...@@ -77,6 +78,9 @@ char *run_with_timeout(const void *ctx, const char *cmd, ...@@ -77,6 +78,9 @@ char *run_with_timeout(const void *ctx, const char *cmd,
return talloc_asprintf(ctx, "Failed to create pipe: %s", return talloc_asprintf(ctx, "Failed to create pipe: %s",
strerror(errno)); strerror(errno));
if (tools_verbose)
printf("Running: %s\n", cmd);
gettimeofday(&start, NULL); gettimeofday(&start, NULL);
pid = fork(); pid = fork();
if (pid == -1) { if (pid == -1) {
...@@ -128,6 +132,13 @@ char *run_with_timeout(const void *ctx, const char *cmd, ...@@ -128,6 +132,13 @@ char *run_with_timeout(const void *ctx, const char *cmd,
else else
*timeout_ms -= ms; *timeout_ms -= ms;
if (tools_verbose) {
printf("%s", ret);
printf("Finished: %u ms, %s %u\n", ms,
WIFEXITED(status) ? "exit status" : "killed by signal",
WIFEXITED(status) ? WEXITSTATUS(status)
: WTERMSIG(status));
}
*ok = (WIFEXITED(status) && WEXITSTATUS(status) == 0); *ok = (WIFEXITED(status) && WEXITSTATUS(status) == 0);
return ret; return ret;
} }
...@@ -167,6 +178,8 @@ static int unlink_all(char *dir) ...@@ -167,6 +178,8 @@ static int unlink_all(char *dir)
{ {
char cmd[strlen(dir) + sizeof("rm -rf ")]; char cmd[strlen(dir) + sizeof("rm -rf ")];
sprintf(cmd, "rm -rf %s", dir); sprintf(cmd, "rm -rf %s", dir);
if (tools_verbose)
printf("Running: %s\n", cmd);
if (system(cmd) != 0) if (system(cmd) != 0)
warn("Could not remove temporary work in %s", dir); warn("Could not remove temporary work in %s", dir);
return 0; return 0;
...@@ -192,25 +205,34 @@ char *temp_dir(const void *ctx) ...@@ -192,25 +205,34 @@ char *temp_dir(const void *ctx)
} }
talloc_set_destructor(tmpdir, unlink_all); talloc_set_destructor(tmpdir, unlink_all);
} }
if (tools_verbose)
printf("Created temporary directory %s\n", tmpdir);
return tmpdir; return tmpdir;
} }
char *temp_file(const void *ctx, const char *extension) char *temp_file(const void *ctx, const char *extension)
{ {
return talloc_asprintf(ctx, "%s/%u%s", char *f = talloc_asprintf(ctx, "%s/%u%s",
temp_dir(ctx), count++, extension); temp_dir(ctx), count++, extension);
if (tools_verbose)
printf("Created temporary file %s\n", f);
return f;
} }
char *maybe_temp_file(const void *ctx, const char *extension, bool keep, char *maybe_temp_file(const void *ctx, const char *extension, bool keep,
const char *srcname) const char *srcname)
{ {
size_t baselen; size_t baselen;
char *f;
if (!keep) if (!keep)
return temp_file(ctx, extension); return temp_file(ctx, extension);
baselen = strrchr(srcname, '.') - srcname; baselen = strrchr(srcname, '.') - srcname;
return talloc_asprintf(ctx, "%.*s%s", baselen, srcname, extension); f = talloc_asprintf(ctx, "%.*s%s", baselen, srcname, extension);
if (tools_verbose)
printf("Creating file %s\n", f);
return f;
} }
bool move_file(const char *oldname, const char *newname) bool move_file(const char *oldname, const char *newname)
...@@ -220,17 +242,28 @@ bool move_file(const char *oldname, const char *newname) ...@@ -220,17 +242,28 @@ bool move_file(const char *oldname, const char *newname)
int fd; int fd;
bool ret; bool ret;
if (tools_verbose)
printf("Moving file %s to %s: ", oldname, newname);
/* Simple case: rename works. */ /* Simple case: rename works. */
if (rename(oldname, newname) == 0) if (rename(oldname, newname) == 0) {
if (tools_verbose)
printf("rename worked\n");
return true; return true;
}
/* Try copy and delete: not atomic! */ /* Try copy and delete: not atomic! */
contents = grab_file(NULL, oldname, &size); contents = grab_file(NULL, oldname, &size);
if (!contents) if (!contents) {
if (tools_verbose)
printf("read failed: %s\n", strerror(errno));
return false; return false;
}
fd = open(newname, O_WRONLY|O_CREAT|O_TRUNC, 0666); fd = open(newname, O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (fd < 0) { if (fd < 0) {
if (tools_verbose)
printf("output open failed: %s\n", strerror(errno));
ret = false; ret = false;
goto free; goto free;
} }
...@@ -239,10 +272,15 @@ bool move_file(const char *oldname, const char *newname) ...@@ -239,10 +272,15 @@ bool move_file(const char *oldname, const char *newname)
if (close(fd) != 0) if (close(fd) != 0)
ret = false; ret = false;
if (ret) if (ret) {
if (tools_verbose)
printf("copy worked\n");
unlink(oldname); unlink(oldname);
else } else {
if (tools_verbose)
printf("write/close failed\n");
unlink(newname); unlink(newname);
}
free: free:
talloc_free(contents); talloc_free(contents);
......
...@@ -26,6 +26,8 @@ char **get_libs(const void *ctx, const char *dir, ...@@ -26,6 +26,8 @@ char **get_libs(const void *ctx, const char *dir,
unsigned int *num, char **infofile); unsigned int *num, char **infofile);
/* From tools.c */ /* From tools.c */
/* If set, print all commands run, all output they give and exit status. */
extern bool tools_verbose;
char *talloc_basename(const void *ctx, const char *dir); char *talloc_basename(const void *ctx, const char *dir);
char *talloc_dirname(const void *ctx, const char *dir); char *talloc_dirname(const void *ctx, const char *dir);
char *talloc_getcwd(const void *ctx); char *talloc_getcwd(const void *ctx);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment