Thread View: gnu.utils.bug
1 messages
1 total messages
Started by Marta Kallstrom
Sat, 18 Nov 1989 01:19
make-3.56 alterations
Author: Marta Kallstrom
Date: Sat, 18 Nov 1989 01:19
Date: Sat, 18 Nov 1989 01:19
60 lines
2789 bytes
2789 bytes
I have finished porting make-3.56 to the Cogent Research
XTM -- a distributed parallel system with a UNIX-like OS,
based on a Linda communication mechanism. This is our
first upgrade since 3.27, which we are shipping with our
system. Incidentally, we are very happy with your software!
I found two problems in 3.56, which I hope have been fixed
in later versions, but in case they haven't, I'll explain
them. (I did not run a "diff" on our files since we differ
in more areas than those I am going to mention.)
1. The archiver on the XTM is not compatible with UNIX ar,
so I defined NO_ARCHIVES. In commands.c, set_file_variables(),
I moved the #endif of the #ifndef NO_ARCHIVES above the "else".
Otherwise, automatic variables "at" and "percent" are not
initialized, thus disabling all other automatic variables
except "star". (Actually, their value fields are full of
garbage.)
2. I needed to reinstate return values for three functions:
execute_file_commands(), notice_finished_file(), and remake_file().
Without these return values, if job_slots > 1 (which it often is
on our parallel system), execute_file_commands() no longer
differentitates between targets whose jobs are finished and
those whose jobs are still running. When execute_file_commands()
returns to remake_file(), the latter routine assumes that all
jobs for the target are finished and sets the file's command_state
to cs_finished, but the file's update_status may not be set, so
an error results.
The changes I made are:
commands.c:
execute_file_commands(): return integer status
return 0 on command_state == cs_running
return file->update_status on command_state == cs_finished
return 0 on *p == '\0'
return notice_finished_file(file) on if (status) and
and on else if (job_slots == 1)
return 0 at end of function
remake.c
notice_finished_file(): return integer status
return file->update_status at end of function
remake_file(): return integer status
status = execute_file_commands(file)
if (file->command_state == cs_finished) {
file->update_status = status;
return notice_finished_file(file);
}else return 0;
update_file_1(): (no change in declaration)
file->update_status = remake_file(file)
I hope you can make use of this.
Marta Kallstrom
Software Engineer
Cogent Research, Inc.
marta@cse.ogc.edu
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads