History log of /freebsd-current/contrib/bmake/job.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# c9f4001f 13-May-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20240508

Merge commit '3c2ab5fddc576e58f3ffa70dc5fa95144646a513'


# 548bfc56 03-May-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20240430

Merge commit '507951f55039f9d1ceae507d510f8cb68225fbc5'


# c59c3bf3 13-Mar-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20240309

Merge commit '368b06ce6b0135d6de13f7265f6dcbaeb791b3bb'


# d5e0a182 13-Jan-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20240108


# 8c973ee2 24-Apr-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20230414

Merge commit '51d8a8b4ac1dd7265e891149e470a803906de2a7'


# 4fde40d9 27-Jan-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge/update to bmake-20230126


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 548bfc56 03-May-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20240430

Merge commit '507951f55039f9d1ceae507d510f8cb68225fbc5'


# c59c3bf3 13-Mar-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20240309

Merge commit '368b06ce6b0135d6de13f7265f6dcbaeb791b3bb'


# d5e0a182 13-Jan-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20240108


# 8c973ee2 24-Apr-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20230414

Merge commit '51d8a8b4ac1dd7265e891149e470a803906de2a7'


# 4fde40d9 27-Jan-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge/update to bmake-20230126


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# c59c3bf3 13-Mar-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20240309

Merge commit '368b06ce6b0135d6de13f7265f6dcbaeb791b3bb'


# d5e0a182 13-Jan-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20240108


# 8c973ee2 24-Apr-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20230414

Merge commit '51d8a8b4ac1dd7265e891149e470a803906de2a7'


# 4fde40d9 27-Jan-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge/update to bmake-20230126


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# d5e0a182 13-Jan-2024 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20240108


# 8c973ee2 24-Apr-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20230414

Merge commit '51d8a8b4ac1dd7265e891149e470a803906de2a7'


# 4fde40d9 27-Jan-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge/update to bmake-20230126


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 8c973ee2 24-Apr-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20230414

Merge commit '51d8a8b4ac1dd7265e891149e470a803906de2a7'


# 4fde40d9 27-Jan-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge/update to bmake-20230126


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 4fde40d9 27-Jan-2023 Simon J. Gerraty <sjg@FreeBSD.org>

Merge/update to bmake-20230126


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 954401e6 26-Jul-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20220724

Merge commit '308a28d6cd2e87028e535eabccb89a9dc2fd9515'


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 1d3f2ddc 03-Apr-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220330
Merge commit 'a052cb432096794be5070dc68a2b302eaf5a4783'


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 9f45a3c8 05-Feb-2022 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20220204


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 12904384 18-Dec-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20211212

commit '2935fe8237c83c1dcb113dd5335733263e68e6fd'


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#

# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week

# b0c40a00 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge


# dba7b0ef 10-Feb-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210206

Changes of interest

o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals


# 06b9b3e0 13-Jan-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20210110

Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD

Some interesting entries from ChangeLog

o .MAKE.{UID,GID} represent uid and gid running make.

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o add more unit tests for META MODE

Merge commit '8e11a9b4250be3c3379c45fa820bff78d99d5946' into main

Change-Id: I464fd4c013067f0915671c1ccc96d2d8090b2b9c


# e2eeea75 19-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week


# 956e45f6 07-Nov-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20201101

Lots of new unit-tests increase code coverage.

Lots of refactoring, cleanup and simlpification to reduce
code size.

Fixes for Bug 223564 and 245807

Updates to dirdeps.mk and meta2deps.py


# 2c3632d1 05-Sep-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200902

Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).

o variable parsing detects more errors.

o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.


# 3841c287 11-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200710

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.
In META MODE; a target flagged .META is out-of-date if meta file
is missing

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031

# 2d147b47 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20200704

Key changes include reduced noise at end of failed build log
and avoid evaluation of unnecessary terms in conditionals.

MFC after: 1 week


# 49caa483 20-May-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20200517

Changes since 20181221 are mostly portability related
hence the large gap in versions imported.

There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.

FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.

Summary of changes from ChangeLog

o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert

plus more unit-tests


# 494f7191 18-May-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20180512

Skip polling job token pipe,
better handle sysV style includes with variables.


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@

# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@

# 50d2e745 01-Mar-2018 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-201802222

Fixes segfault in Var_Set if val is NULL
Don't treat .info as warning with -W


# c7019bf7 23-Jul-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Import bmake-20170720

Includes fix for compat handling of interrupts.


# e1cee40d 20-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20170420


# b46b9039 14-Apr-2017 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake 20170413


# 45447996 19-Dec-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20161212


# e48f47dd 20-May-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160512


# be19d90b 10-Mar-2016 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20160307


# 4c620fe5 23-Oct-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake 20151020


# db29cad8 20-Apr-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20150418

PR: 199486


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien

# 1bbe5942 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130904


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.

# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX

# 51ee2c1c 02-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130730
Main feature of interest is .MAKE.JOB.PREFIX=
to suppress --- job --- tokens.


# 74d2e02b 05-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130604 to fix file descriptor leak.


# 1748de26 02-Apr-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20130330


# 3cbdda60 01-Feb-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Merge bmake-20130123

Approved by: marcel (mentor)


# 3955d011 02-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Merge bmake-20120831 from vendor/NetBSD/bmake/dist.

Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg


# 3b96abba 10-Sep-2021 Simon J. Gerraty <sjg@FreeBSD.org>

make: fix MAKE_JOB_ERROR_TOKEN

The rework of GetBooleanVar to GetBooleanExpr requires
we add "${" and ":U}" around the expression so it can be directly
evaluated.

Reported by: mjg
MFC after: 1 week

#
# 72 columns --|
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR: <If and which Problem Report is related.>
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#
# Uncomment and complete these metadata fields, as appropriate:
#
# PR:
# Reported by: <If someone else reported the issue.>
# Reviewed by: <If someone else reviewed your modification.>
# Approved by: <If you needed approval for this commit.>
# Obtained from: <If the change is from a third party.>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
#
# "Pull Request" and "Differential Revision" require the *full* GitHub or
# Phabricator URL. The commit author should be set appropriately, using
# `git commit --author` if someone besides the committer sent in the change.
#


# 68c4481a 25-Jun-2021 Simon J. Gerraty <sjg@FreeBSD.org>

Update to bmake-20210621

MFC after: 1 week


# 9093286b 08-Jul-2020 Simon J. Gerraty <sjg@FreeBSD.org>

Revert r363031


# 329d20de 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Revert accidentally commited local change to bmake to prevent debilitating
excess system time from poor API usage.

Approved by: sbruno@


# 06bf2a6a 10-May-2018 Matt Macy <mmacy@FreeBSD.org>

Add simple preempt safe epoch API

Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by: imp@, shurd@
Approved by: sbruno@


# 2d395cb5 05-Sep-2013 Simon J. Gerraty <sjg@FreeBSD.org>

If MAKE_JOB_ERROR_TOKEN is set to false, do not put an error token ("E")
into the job queue.
This avoids closing down an entire build on failure of one branch.
Probably has no use outside the context of universe/tinderbox.

Reviewed by: obrien


# 9a4bc556 16-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes)
for backwards compatability.


# d191243d 04-Aug-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Move the call to Job_SetPrefix() to Job_Init() so that
makefiles have had a chance to set .MAKE.JOB.PREFIX