make-3.79.1 builds fine on NEXTSTEP, but the functions/wildcard and
features/parallelism tests fail.
- wildcard problem: Due to some never-defined macro
_DIRENT_HAVE_D_NAMLEN d_namlen always stays zero. This seems to
affect all systems using struct direct (versus struct
dirent). (semi-clean patch to dir.c appended.)
- parallelism: The parallelism test using a sub-make fails. The
problem is apparently that on non-jobserver systems (NS does not
have sigaction()) `-j n' arguments are not passed to
submakes. Suggestion: Use `-j' in this testcase (which does get
passed down). However, if the test is intended to explicitely test
for the jobserver, one should probably document that this failure is
expected for non-jobserver systems. (See patch to parallelism.)
- jobserver: I've added a mostly mechanical patch to enable the
jobserver on systems which miss sigaction() but do have sigvec(). It
passes the tests, but I haven't stress-tested it. The autoconf
changes are trivial, but I couldn't test them.
- The README mentions the GNATS Web interface to report make bugs, but
this doesn't seem to be available without username/password?
Regards,
Timm
*** dir.c.orig Mon May 8 20:26:00 2000
--- dir.c Wed Apr 4 05:06:50 2001
***************
*** 1066,1072 ****
}
d = (struct dirent *) buf;
FAKE_DIR_ENTRY (d);
! #ifdef _DIRENT_HAVE_D_NAMLEN
d->d_namlen = len - 1;
#endif
#ifdef _DIRENT_HAVE_D_TYPE
--- 1066,1076 ----
}
d = (struct dirent *) buf;
FAKE_DIR_ENTRY (d);
! /* _DIRENT_HAVE_D_NAMLEN is never defined AFAICT.
! Workaround: Try to follow the logic of NAMLEN() instead.
! Fix. TW 1999-05-28 */
! /* #ifdef _DIRENT_HAVE_D_NAMLEN */
! #ifndef HAVE_DIRENT_H /* NAMLEN() uses d_namlen, so fill it in. */
d->d_namlen = len - 1;
#endif
#ifdef _DIRENT_HAVE_D_TYPE
*** tests/scripts/features/parallelism.orig Wed Apr 4 05:17:24 2001
--- tests/scripts/features/parallelism Wed Apr 4 05:23:19 2001
***************
*** 11,17 ****
start up to four jobs simultaneously. In this case, since the
first command is a sleep command, the output of the second
and third commands will appear before the first if indeed
! make is running all of these commands in parallel.";
if (!$parallel_jobs) {
return -1;
--- 11,19 ----
start up to four jobs simultaneously. In this case, since the
first command is a sleep command, the output of the second
and third commands will appear before the first if indeed
! make is running all of these commands in parallel. A test with a call
! to a subprocess make is called with -j alone without a number to
! make this work for systems without the jobserver.";
if (!$parallel_jobs) {
return -1;
***************
*** 91,97 ****
close(MAKEFILE);
! &run_make_with_options("$makefile3", "-j 4", &get_logfile);
$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
&compare_output($answer, &get_logfile(1));
--- 93,99 ----
close(MAKEFILE);
! &run_make_with_options("$makefile3", "-j", &get_logfile);
$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
&compare_output($answer, &get_logfile(1));
*** configure.in.orig Fri Jun 23 18:09:41 2000
--- configure.in Wed Apr 4 06:41:51 2001
***************
*** 103,109 ****
AC_CHECK_FUNCS( memmove memcpy strchr strdup psignal mkstemp mktemp fdopen \
dup2 getcwd sigsetmask sigaction getgroups setlinebuf \
! seteuid setegid setreuid setregid pipe strerror strsignal)
AC_CHECK_SYMBOL(sys_siglist)
AC_FUNC_ALLOCA
--- 103,110 ----
AC_CHECK_FUNCS( memmove memcpy strchr strdup psignal mkstemp mktemp fdopen \
dup2 getcwd sigsetmask sigaction getgroups setlinebuf \
! seteuid setegid setreuid setregid pipe strerror strsignal \
! sigvec)
AC_CHECK_SYMBOL(sys_siglist)
AC_FUNC_ALLOCA
***************
*** 185,191 ****
no/no) has_wait_nohang=no ;;
esac
! case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$has_wait_nohang/$make_cv_job_server" in
yes/yes/yes/yes) AC_DEFINE(MAKE_JOBSERVER, 1,
[Define this to enable job server support in GNU make.]);;
esac
--- 186,197 ----
no/no) has_wait_nohang=no ;;
esac
! has_sigaction_or_sigvec=yes
! case "$ac_cv_func_sigaction/$ac_cv_func_sigvec" in
! no/no) has_sigaction_or_sigvec=no ;;
! esac
!
! case
"$ac_cv_func_pipe/$has_sigaction_or_sigvec/$has_wait_nohang/$make_cv_job_server" in
yes/yes/yes/yes) AC_DEFINE(MAKE_JOBSERVER, 1,
[Define this to enable job server support in GNU make.]);;
esac
***************
*** 305,311 ****
case "$make_cv_job_server/$user_job_server" in
no/yes) echo
echo "WARNING: Make job server requires a POSIX-ish system that"
! echo " supports the pipe(), sigaction(), and either"
echo " waitpid() or wait3() functions. Your system doesn't"
echo " appear to provide one or more of those."
echo " Disabling job server support."
--- 311,317 ----
case "$make_cv_job_server/$user_job_server" in
no/yes) echo
echo "WARNING: Make job server requires a POSIX-ish system that"
! echo " supports the pipe(), either sigaction() or sigvec(), and
either"
echo " waitpid() or wait3() functions. Your system doesn't"
echo " appear to provide one or more of those."
echo " Disabling job server support."
*** config.h.in.orig Fri Jun 23 18:10:51 2000
--- config.h.in Wed Apr 4 06:25:45 2001
***************
*** 262,267 ****
--- 262,270 ----
/* Define if you have the sigaction function. */
#undef HAVE_SIGACTION
+ /* Define if you have the sigvec function. */
+ #undef HAVE_SIGVEC
+
/* Define if you have the sigsetmask function. */
#undef HAVE_SIGSETMASK
*** main.c.orig Tue Jun 13 16:24:45 2000
--- main.c Wed Apr 4 05:46:28 2001
***************
*** 1356,1361 ****
--- 1356,1367 ----
sa.sa_flags = SA_INTERRUPT;
# endif
# define HANDLESIG(s) sigaction (s, &sa, NULL)
+ # elif defined HAVE_SIGVEC
+ struct sigvec sv;
+ bzero ((char *)&sv, sizeof (struct sigvec));
+ sv.sv_handler = child_handler;
+ sv.sv_flags = SV_INTERRUPT; /* XXX ? */
+ # define HANDLESIG(s) sigvec (s, &sv, NULL)
# else
# define HANDLESIG(s) signal (s, child_handler)
# endif
--
Timm Wetzel <[EMAIL PROTECTED]>
Biomed. NMR GmbH Tel +49 551 201-1091 FAX +49 551 201-1307
Am Fassberg 11, D-37077 Goettingen, Germany
_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make