Minutes of the 22nd April 2021 Teleconference Austin-1122 Page 1 of 1
Submitted by Andrew Josey, The Open Group. 23rd April 2021
Attendees:
Nick Stoughton, USENIX, ISO/IEC JTC 1 / SC 22 OR
Don Cragun, IEEE PASC OR
Joerg Schilling
Mark Ziegast, SHware Systems Dev.
Eric Blake, Red Hat, The Open Group OR
Andrew Josey, The Open Group
Geoff Clare, The Open Group
Richard Hansen
Keld Simonsen
Apologies:
Eric Ackermann, HPI, University of Potsdam
* General news
This was a general bugs meeting (Monday meetings are now gettext meetings).
* Outstanding actions
(Please note that this section has been flushed to shorten the minutes -
to locate the previous set of outstanding actions, look to the minutes
from 13th June 2019 and earlier)
Bug 1254: "asynchronous list" description uses "command" instead of "AND-OR list" OPEN
https://austingroupbugs.net/view.php?id=1254
Action: Joerg to investigate how his shell behaves.
Bug 700 - Nick to raise this issue with the C committee
Bug 713 - Nick to raise with the C committee.
Bug 739 - Nick to raise with the C committee.
* Current Business
Bug 1436: make: add "-j max_jobs" option to support simultaneous rule processing Accepted as Marked
https://austingroupbugs.net/view.php?id=1436
This is tagged for Issue 8.
At (TC2) page 2969 line 98438, make SYNOPSIS, add:
[-j maxjobs]
(SD shaded as the rest)
After page 2969 line 98472, make OPTIONS, add:
-j maxjobs Set the maximum number of targets that can be updated
concurrently. If this option is specified multiple times, the
last value of maxjobs specified shall take precedence. If this
option is not specified, or if maxjobs is 1, only one target
shall be updated at a time (no parallelization). If the value
of maxjobs is non-positive, the behavior is unspecified. When
this option is specified with maxjobs greater than 1 and a rule
invokes make (perhaps via $(MAKE)), the parent make
shall attempt to establish communication with the child make
in an unspecified manner, possibly via an implementation-specific
flag in MAKEFLAGS. If the -j option is passed to the child make
via the MAKEFLAGS environment variable with the same maxjobs
value as the parent and is not overridden by a maxjobs value
from another source (even if it has the same value), the child
make shall establish communication with the parent make before
it attempts to update any targets. In all other cases it is
unspecified whether the child make establishes communication
with the parent make. The parent make and any children it is
communicating with, recursively, shall between them update no
more than maxjobs targets in parallel. Implementations are
permitted to silently limit maxjobs to an unspecified positive
value; if this limit is 1, make need not attempt to establish
communication with a child make.
At page 2972 line 98587, make EXTENDED DESCRIPTION, change:
The make utility shall treat all prerequisites as targets
themselves and recursively ensure that they are up-to-date,
processing them in the order in which they appear in the rule.
The make utility shall use the modification times of files to
determine whether the corresponding targets are out-of-date.
to:
The make utility shall treat all prerequisites as targets
themselves and recursively ensure that they are up-to-date,
using the modification times of files to determine whether the
corresponding targets are out-of-date. If the -j option is not
specified, a rule's prerequisites shall be processed in the
order in which they appear in the rule. If targets are being
updated in parallel (see -j in OPTIONS), the order of processing
of prerequisites is unspecified except the make utility shall
ensure that all of a prerequisite's own prerequisites are
up-to-date before the prerequisite itself is made up-to-date.
At page 2986 line 99174, make RATIONALE, delete the bullet item:
Syntax supporting parallel execution (such as from various
multi-processor vendors, GNU, and others)
After page 2987 line 99244, make RATIONALE, add a new paragraph:
Some implementations of make allow omission of the option-argument
for the -j option, although not in the manner described in item
2.b in [xref to XBD 12.1] (where the option-argument, if present,
needs to be directly adjacent to the option in the same argument
string). To allow the option-argument to follow -j as a separate
argument, these implementations check whether the next argument
begins with a digit. If it does, it is treated as an option-argument
for -j; if it does not, the -j is processed as not having an
option-argument and the next argument is processed as if it
followed a -j option-argument. This behavior is not suitable
for inclusion in this standard as it does not meet the syntax
guidelines. However, it is an allowed extension since following
-j with an argument that does not begin with a digit would
otherwise be a syntax error. At least one implementation of
make uses -j 0 to mean "use a sensible value for the
maximum number of targets that can be updated in parallel". If
an implementation wants to add this feature, the standard
developers suggest following this convention.
At page 2988 line 99280, make RATIONALE, change:
The make utilities in most historical implementations process
the prerequisites of a target in left-to-right order, and the
makefile format requires this. It supports the standard idiom
used in many makefiles that produce yacc programs; for example:
foo: y.tab.o lex.o main.o
$(CC) $(CFLAGS) −o $@ t.tab.o lex.o main.o
In this example, if make chose any arbitrary order, the lex.o
might not be made with the correct y.tab.h. Although there may
be better ways to express this relationship, it is widely used
historically. Implementations that desire to updatem prerequisites
in parallel should require an explicit extension to make or the
makefile format to accomplish it, as described previously.
to:
When targets are not being updated in parallel (see -j in
OPTIONS), make processes the prerequisites of a target in
left-to-right order. This supports a common idiom used in many
makefiles that produce yacc programs; for example:
foo: y.tab.o lex.o main.o
$(CC) $(CFLAGS) −o $@ y.tab.o lex.o main.o
In this example, if make chose any arbitrary order, the lex.o
might not be made with the correct y.tab.h. Although there may
be better ways to express this relationship (that would be
needed if -j is specified), it is widely used historically.
Bug 1437: make: (document .NOTPARALLEL and .WAIT special targets) in RATIONAL OPEN
https://austingroupbugs.net/view.php?id=1437
We started on this item, notes in the etherpad.
We will continue this on the next general bugs call (next Thursday)
Next Steps
----------
Apologies in advance
Eric Blake, 2021-04-26
Eric Ackermann, 2021-04-22
The next calls are on:
April 26th 2021 (Monday) Gettext
This call will be for 90 minutes.
April 29th 2021 (Thursday) General Bugs
This call will be for 90 minutes.
Calls are anchored on US time. (8am Pacific)
Please check the calendar invites for dial in details.
Bugs are at:
https://austingroupbugs.net
An etherpad is usually up for the meeting, with a URL using the date format as below:
https://posix.rhansen.org/p/20xx-mm-dd
(For write access this uses The Open Group single sign on,
for those individuals with gitlab.opengroup.org accounts.
Please contact Andrew if you need to be setup)