Import bmake-20170720
compat.c: pass SIGINT etc onto child and wait for it to exit before we self-terminate.
This commit is contained in:
parent
7ef48313e3
commit
56028c60f4
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/NetBSD/bmake/dist/; revision=321402 svn path=/vendor/NetBSD/bmake/20170720/; revision=321403; tag=vendor/NetBSD/bmake/20170720
@ -1,3 +1,10 @@
|
||||
2017-07-20 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (_MAKE_VERSION): 20170720
|
||||
Merge with NetBSD make, pick up
|
||||
o compat.c: pass SIGINT etc onto child and wait for it to exit
|
||||
before we self-terminate.
|
||||
|
||||
2017-07-11 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (_MAKE_VERSION): 20170711
|
||||
|
4
Makefile
4
Makefile
@ -1,7 +1,7 @@
|
||||
# $Id: Makefile,v 1.94 2017/07/15 18:22:14 sjg Exp $
|
||||
# $Id: Makefile,v 1.95 2017/07/20 19:36:13 sjg Exp $
|
||||
|
||||
# Base version on src date
|
||||
_MAKE_VERSION= 20170711
|
||||
_MAKE_VERSION= 20170720
|
||||
|
||||
PROG= bmake
|
||||
|
||||
|
30
compat.c
30
compat.c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $ */
|
||||
/* $NetBSD: compat.c,v 1.107 2017/07/20 19:29:54 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||
@ -70,14 +70,14 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $";
|
||||
static char rcsid[] = "$NetBSD: compat.c,v 1.107 2017/07/20 19:29:54 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $");
|
||||
__RCSID("$NetBSD: compat.c,v 1.107 2017/07/20 19:29:54 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -118,6 +118,8 @@ __RCSID("$NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $");
|
||||
static GNode *curTarg = NULL;
|
||||
static GNode *ENDNode;
|
||||
static void CompatInterrupt(int);
|
||||
static pid_t compatChild;
|
||||
static int compatSigno;
|
||||
|
||||
/*
|
||||
* CompatDeleteTarget -- delete a failed, interrupted, or otherwise
|
||||
@ -176,8 +178,17 @@ CompatInterrupt(int signo)
|
||||
}
|
||||
if (signo == SIGQUIT)
|
||||
_exit(signo);
|
||||
bmake_signal(signo, SIG_DFL);
|
||||
kill(myPid, signo);
|
||||
/*
|
||||
* If there is a child running, pass the signal on
|
||||
* we will exist after it has exited.
|
||||
*/
|
||||
compatSigno = signo;
|
||||
if (compatChild > 0) {
|
||||
KILLPG(compatChild, signo);
|
||||
} else {
|
||||
bmake_signal(signo, SIG_DFL);
|
||||
kill(myPid, signo);
|
||||
}
|
||||
}
|
||||
|
||||
/*-
|
||||
@ -370,7 +381,7 @@ CompatRunCommand(void *cmdp, void *gnp)
|
||||
/*
|
||||
* Fork and execute the single command. If the fork fails, we abort.
|
||||
*/
|
||||
cpid = vFork();
|
||||
compatChild = cpid = vFork();
|
||||
if (cpid < 0) {
|
||||
Fatal("Could not fork");
|
||||
}
|
||||
@ -483,7 +494,12 @@ CompatRunCommand(void *cmdp, void *gnp)
|
||||
}
|
||||
}
|
||||
free(cmdStart);
|
||||
|
||||
compatChild = 0;
|
||||
if (compatSigno) {
|
||||
bmake_signal(compatSigno, SIG_DFL);
|
||||
kill(myPid, compatSigno);
|
||||
}
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
|
11
job.c
11
job.c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $ */
|
||||
/* $NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||
@ -70,14 +70,14 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $";
|
||||
static char rcsid[] = "$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $");
|
||||
__RCSID("$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -348,11 +348,6 @@ static Job childExitJob; /* child exit pseudo-job */
|
||||
(void)fprintf(fp, TARG_FMT, targPrefix, gn->name)
|
||||
|
||||
static sigset_t caught_signals; /* Set of signals we handle */
|
||||
#if defined(SYSV)
|
||||
#define KILLPG(pid, sig) kill(-(pid), (sig))
|
||||
#else
|
||||
#define KILLPG(pid, sig) killpg((pid), (sig))
|
||||
#endif
|
||||
|
||||
static void JobChildSig(int);
|
||||
static void JobContinueSig(int);
|
||||
|
8
make.h
8
make.h
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: make.h,v 1.102 2016/12/07 15:00:46 christos Exp $ */
|
||||
/* $NetBSD: make.h,v 1.103 2017/07/20 19:29:54 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
@ -543,4 +543,10 @@ int cached_stat(const char *, void *);
|
||||
#define PATH_MAX MAXPATHLEN
|
||||
#endif
|
||||
|
||||
#if defined(SYSV)
|
||||
#define KILLPG(pid, sig) kill(-(pid), (sig))
|
||||
#else
|
||||
#define KILLPG(pid, sig) killpg((pid), (sig))
|
||||
#endif
|
||||
|
||||
#endif /* _MAKE_H_ */
|
||||
|
@ -143,6 +143,11 @@ int Str_Match(const char *, const char *);
|
||||
char *Str_SYSVMatch(const char *, const char *, int *len);
|
||||
void Str_SYSVSubst(Buffer *, char *, char *, int);
|
||||
|
||||
#ifndef HAVE_STRLCPY
|
||||
/* strlcpy.c */
|
||||
size_t strlcpy(char *, const char *, size_t);
|
||||
#endif
|
||||
|
||||
/* suff.c */
|
||||
void Suff_ClearSuffixes(void);
|
||||
Boolean Suff_IsTransform(char *);
|
||||
|
Loading…
Reference in New Issue
Block a user