bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

fixes for NEXTSTEP3.3 (make-3.79.1)


From: Timm Wetzel
Subject: fixes for NEXTSTEP3.3 (make-3.79.1)
Date: 04 Apr 2001 17:42:56 +0200

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             <address@hidden>
Biomed. NMR GmbH        Tel +49 551 201-1091    FAX +49 551 201-1307
Am Fassberg 11, D-37077 Goettingen, Germany




reply via email to

[Prev in Thread] Current Thread [Next in Thread]