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)