Print this page
make: remove maketool support
*** 47,63 ****
#include <sys/stat.h> /* open() */
#include <sys/wait.h> /* wait() */
#include <ulimit.h> /* ulimit() */
#include <unistd.h> /* close(), dup2() */
-
-
- /*
- * Defined macros
- */
- #define SEND_MTOOL_MSG(cmds)
-
/*
* typedefs & structs
*/
/*
--- 47,56 ----
*** 134,258 ****
close(i);
}
}
/*
- * dosys_mksh(command, ignore_error, call_make, silent_error, target)
- *
- * Check if command string contains meta chars and dispatch to
- * the proper routine for executing one command line.
- *
- * Return value:
- * Indicates if the command execution failed
- *
- * Parameters:
- * command The command to run
- * ignore_error Should we abort when an error is seen?
- * call_make Did command reference $(MAKE) ?
- * silent_error Should error messages be suppressed for dmake?
- * target Target we are building
- *
- * Global variables used:
- * do_not_exec_rule Is -n on?
- * working_on_targets We started processing real targets
- */
- Doname
- dosys_mksh(register Name command, register Boolean ignore_error, register Boolean call_make, Boolean silent_error, Boolean always_exec, Name target, Boolean redirect_out_err, char *stdout_file, char *stderr_file, pathpt vroot_path, int nice_prio)
- {
- register int length = command->hash.length;
- register wchar_t *p;
- register wchar_t *q;
- register wchar_t *cmd_string;
- struct stat before;
- Doname result;
- Boolean working_on_targets_mksh = true;
- Wstring wcb(command);
- p = wcb.get_string();
- cmd_string = p;
-
- /* Strip spaces from head of command string */
- while (iswspace(*p)) {
- p++, length--;
- }
- if (*p == (int) nul_char) {
- return build_failed;
- }
- /* If we are faking it we just return */
- if (do_not_exec_rule &&
- working_on_targets_mksh &&
- !call_make &&
- !always_exec) {
- return build_ok;
- }
-
- /* Copy string to make it OK to write it. */
- q = ALLOC_WC(length + 1);
- (void) wscpy(q, p);
- /* Write the state file iff this command uses make. */
- /* XXX - currently does not support recursive make's, $(MAKE)'s
- if (call_make && command_changed) {
- write_state_file(0, false);
- }
- (void) stat(make_state->string_mb, &before);
- */
- /*
- * Run command directly if it contains no shell meta chars,
- * else run it using the shell.
- */
- /* XXX - command->meta *may* not be set correctly */
- if (await(ignore_error,
- silent_error,
- target,
- cmd_string,
- command->meta ?
- doshell(q, ignore_error, redirect_out_err, stdout_file, stderr_file, nice_prio) :
- doexec(q, ignore_error, redirect_out_err, stdout_file, stderr_file, vroot_path, nice_prio),
- false,
- NULL,
- -1)) {
-
- #ifdef PRINT_EXIT_STATUS
- warning_mksh(NOCATGETS("I'm in dosys_mksh(), and await() returned result of build_ok."));
- #endif
-
- result = build_ok;
- } else {
-
- #ifdef PRINT_EXIT_STATUS
- warning_mksh(NOCATGETS("I'm in dosys_mksh(), and await() returned result of build_failed."));
- #endif
-
- result = build_failed;
- }
- retmem(q);
-
- /* XXX - currently does not support recursive make's, $(MAKE)'s
- if ((report_dependencies_level == 0) &&
- call_make) {
- make_state->stat.time = (time_t)file_no_time;
- (void)exists(make_state);
- if (before.st_mtime == make_state->stat.time) {
- return result;
- }
- makefile_type = reading_statefile;
- if (read_trace_level > 1) {
- trace_reader = true;
- }
- (void) read_simple_file(make_state,
- false,
- false,
- false,
- false,
- false,
- true);
- trace_reader = false;
- }
- */
- return result;
- }
-
- /*
* doshell(command, ignore_error)
*
* Used to run command lines that include shell meta-characters.
* The make macro SHELL is supposed to contain a path to the shell.
*
--- 127,136 ----
*** 266,276 ****
* Global variables used:
* filter_stderr If -X is on we redirect stderr
* shell_name The Name "SHELL", used to get the path to shell
*/
int
! doshell(wchar_t *command, register Boolean ignore_error, Boolean redirect_out_err, char *stdout_file, char *stderr_file, int nice_prio)
{
char *argv[6];
int argv_index = 0;
int cmd_argv_index;
int length;
--- 144,154 ----
* Global variables used:
* filter_stderr If -X is on we redirect stderr
* shell_name The Name "SHELL", used to get the path to shell
*/
int
! doshell(wchar_t *command, register Boolean ignore_error, char *stdout_file, char *stderr_file, int nice_prio)
{
char *argv[6];
int argv_index = 0;
int cmd_argv_index;
int length;
*** 314,326 ****
}
argv[argv_index] = NULL;
(void) fflush(stdout);
if ((childPid = fork()) == 0) {
enable_interrupt((void (*) (int)) SIG_DFL);
- if (redirect_out_err) {
- redirect_io(stdout_file, stderr_file);
- }
#if 0
if (filter_stderr) {
redirect_stderr();
}
#endif
--- 192,201 ----
*** 434,444 ****
*
* Global variables used:
* filter_stderr If -X is on we redirect stderr
*/
int
! doexec(register wchar_t *command, register Boolean ignore_error, Boolean redirect_out_err, char *stdout_file, char *stderr_file, pathpt vroot_path, int nice_prio)
{
int arg_count = 5;
char **argv;
int length;
char nice_prio_buf[MAXPATHLEN];
--- 309,319 ----
*
* Global variables used:
* filter_stderr If -X is on we redirect stderr
*/
int
! doexec(register wchar_t *command, register Boolean ignore_error, char *stdout_file, char *stderr_file, pathpt vroot_path, int nice_prio)
{
int arg_count = 5;
char **argv;
int length;
char nice_prio_buf[MAXPATHLEN];
*** 512,524 ****
/* Then exec the command with that argument list. */
(void) fflush(stdout);
if ((childPid = fork()) == 0) {
enable_interrupt((void (*) (int)) SIG_DFL);
- if (redirect_out_err) {
- redirect_io(stdout_file, stderr_file);
- }
#if 0
if (filter_stderr) {
redirect_stderr();
}
#endif
--- 387,396 ----
*** 557,567 ****
*
* Global variables used:
* filter_stderr Set if -X is on
*/
Boolean
! await(register Boolean ignore_error, register Boolean silent_error, Name target, wchar_t *command, pid_t running_pid, Boolean send_mtool_msgs, void *xdrs_p, int job_msg_id)
{
int status;
char *buffer;
int core_dumped;
int exit_status;
--- 429,439 ----
*
* Global variables used:
* filter_stderr Set if -X is on
*/
Boolean
! await(register Boolean ignore_error, register Boolean silent_error, Name target, wchar_t *command, pid_t running_pid, void *xdrs_p, int job_msg_id)
{
int status;
char *buffer;
int core_dumped;
int exit_status;
*** 604,667 ****
/*
* If the child returned an error, we now try to print a
* nice message about it.
*/
- SEND_MTOOL_MSG(
- make_output_msg = new Avo_CmdOutput();
- (void) sprintf(tmp_buf, "%d", job_msg_id);
- make_output_msg->appendOutput(strdup(tmp_buf));
- );
tmp_buf[0] = (int) nul_char;
if (!silent_error) {
if (exit_status != 0) {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 103, "*** Error code %d"),
exit_status);
- SEND_MTOOL_MSG(
- (void) sprintf(&tmp_buf[strlen(tmp_buf)],
- catgets(libmksdmsi18n_catd, 1, 104, "*** Error code %d"),
- exit_status);
- );
} else {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 105, "*** Signal %d"),
termination_signal);
- SEND_MTOOL_MSG(
- (void) sprintf(&tmp_buf[strlen(tmp_buf)],
- catgets(libmksdmsi18n_catd, 1, 106, "*** Signal %d"),
- termination_signal);
- );
if (core_dumped) {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 107, " - core dumped"));
- SEND_MTOOL_MSG(
- (void) sprintf(&tmp_buf[strlen(tmp_buf)],
- catgets(libmksdmsi18n_catd, 1, 108, " - core dumped"));
- );
}
}
if (ignore_error) {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 109, " (ignored)"));
- SEND_MTOOL_MSG(
- (void) sprintf(&tmp_buf[strlen(tmp_buf)],
- catgets(libmksdmsi18n_catd, 1, 110, " (ignored)"));
- );
}
(void) fprintf(stdout, "\n");
(void) fflush(stdout);
! SEND_MTOOL_MSG(
! make_output_msg->appendOutput(strdup(tmp_buf));
! );
! }
! SEND_MTOOL_MSG(
! xdr_msg = (RWCollectable*) make_output_msg;
! xdr(xdrs_p, xdr_msg);
! delete make_output_msg;
! );
#ifdef PRINT_EXIT_STATUS
warning_mksh(NOCATGETS("I'm in await(), returning failed."));
#endif
--- 476,508 ----
/*
* If the child returned an error, we now try to print a
* nice message about it.
*/
tmp_buf[0] = (int) nul_char;
if (!silent_error) {
if (exit_status != 0) {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 103, "*** Error code %d"),
exit_status);
} else {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 105, "*** Signal %d"),
termination_signal);
if (core_dumped) {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 107, " - core dumped"));
}
}
if (ignore_error) {
(void) fprintf(stdout,
catgets(libmksdmsi18n_catd, 1, 109, " (ignored)"));
}
(void) fprintf(stdout, "\n");
(void) fflush(stdout);
! }
#ifdef PRINT_EXIT_STATUS
warning_mksh(NOCATGETS("I'm in await(), returning failed."));
#endif