[Issue 8 drafts 0001325]: Allow make to remake an included file

2022-10-06 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The issue 328 has been set as DUPLICATE OF the following issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Applied
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5087 
Resolution: Accepted As Marked
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-12-09 09:56 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
has duplicate   328 Auto-Dependency Generation
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076  
2020-10-28 09:14 geoffclare Note Added: 0005077  
2020-10-28 11:23 joerg  Note Added: 0005078  
2020-10-28 12:16 joerg  Note Edited: 0005078 
2020-10-28 13:47 psmith Note Added: 0005079  
2020-10-28 14:44 geoffclare Note Added: 0005080  
2020-10-28 14:49 psmith Note Added: 0005081  

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-12-09 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has a resolution that has been APPLIED. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Applied
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5087 
Resolution: Accepted As Marked
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-12-09 09:56 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076  
2020-10-28 09:14 geoffclare Note Added: 0005077  
2020-10-28 11:23 joerg  Note Added: 0005078  
2020-10-28 12:16 joerg  Note Edited: 0005078 
2020-10-28 13:47 psmith Note Added: 0005079  
2020-10-28 14:44 geoffclare Note Added: 0005080  
2020-10-28 14:49 psmith Note Added: 0005081  
2020-10-28 14:50 psmith Note Added: 0005082  

Re: make pattern rules (was: Re: [Issue 8 drafts 0001325]: Allow make to remake an included file)

2020-11-10 Thread Geoff Clare via austin-group-l at The Open Group
Joerg Schilling wrote, on 09 Nov 2020:
>
> Geoff Clare via austin-group-l at The Open Group 
>  wrote:
> 
> > Paul Smith wrote, on 07 Nov 2020:
> > >
> > > Unless we are proposing pattern rules for inclusion in POSIX, [...]
> >
> > This was proposed in 2011 in bug 513, which is still open.
> 
[...]
> 
> Do you believe we have a chance to get to a text for Issue-8?

As with any enhancement request that doesn't need a sponsor, all it
needs is for someone to propose some suitable, detailed wording
changes and for those changes to be accepted (perhaps after some
modifications) in a teleconference.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: make pattern rules (was: Re: [Issue 8 drafts 0001325]: Allow make to remake an included file)

2020-11-09 Thread Paul Smith via austin-group-l at The Open Group
On Mon, 2020-11-09 at 14:16 +0100, Joerg Schilling wrote:
> Paul Smith via austin-group-l at The Open Group <
> austin-group-l@opengroup.org> wrote:
> My idea is to start with a subset of the features of the original 
> implementation and to add some commonly *agreed* new features.

Sure.

> > I don't understand the distinction you're trying to draw between
> > "disabled" and "deleted".  Regardless, if you define a pattern rule
> > with no commands then the previous pattern is gone and cannot be
> > "re-
> > enabled", so I think "deleted" is the correct term.
> 
> Well, the fact that gmake still lists a "deleted" rule with gmake -p
> is  confusing users.

I don't agree: it tells users that someone deleted that rule which I
think is a useful thing to know.  It's clear from the fact that no
commands are shown, that this pattern cannot be used.

> > Yes, that could be done.
> > 
> > It's different than MAKEFLAGS += -r, however, because the latter is
> > guaranteed to only delete the _built-in_ rules.  This is almost
> > always what the user wants.
> 
> As mentioned before: internal rules need to be parsed before reading
> the users Makefile, so a line in the form
> 
> MAKEFLAGS += -r
> 
> in the users Makefile is inefficient unless you ignore the rules for
> the precedence of definitions that are in POSIX.

I'm afraid I don't see the issue.  It's not hard to keep a flag in any
default rule specifying that it was created as a default, and either
delete them all or just ignore them when searching rules, if they are
disabled.  Or, depending on the implementation, you can keep the
default rules in a separate list and not search that list if the
default rules are disabled.

There are multiple implementation possibilities, which are not
inefficient.

> > Having "%:%" delete ALL the existing pattern rules is problematic
> > because it relies on a specific ordering of appearance in
> > makefiles.  I'm sure such a feature would lead to a lot of head-
> > scratching followed by cursing once a stray "%:%" pattern was
> > discovered down in the bowels of the makefile system.
> 
> Given that pattern rules _are_ based on the concept of a specific
> ordering, this is a perfect enhancement.

I disagree.  The thing that users want is to remove the built-in rules.

I see no reason why we should force them to add this special line as
the first thing in their makefile to be sure they don't accidentally
remove their own pattern rules.

We don't require people to set .SUFFIXES: as the first thing in their
makefile, before they define any suffix rules, for example.

> > I would prefer to use a special target which forced all built-in /
> > system rules (only) to be dropped, something like:
> > 
> >   .NOBUILTINS:
> 
> This may be a useful potential enhancement, but this would still
> differ from
> 
>   $make -r

Since we are making it up there's no reason that it needs to differ
from "make -r": we can just say that it doesn't :).

> since .NOBUILTINS: would only affect rules from the internal
> makefile, but not disable macro defitions.

"make -r" does not disable macro definitions either.  The standard
says:

> -r
>   Clear the suffix list and do not use the built-in rules.

That does not mention macros anywhere, and in fact GNU make does not
remove default macro definitions when given -r.

This is the expected behavior because often makefiles will use the
default macro definitions when defining their own rules, even if they
are invoked with "make -r".



Re: make pattern rules (was: Re: [Issue 8 drafts 0001325]: Allow make to remake an included file)

2020-11-09 Thread Joerg Schilling via austin-group-l at The Open Group
Paul Smith via austin-group-l at The Open Group  
wrote:

> Unless we are proposing pattern rules for inclusion in POSIX, which I
> personally would be in favor of since they are much more useful than
> suffix rules, perhaps we should move the discussion to a different
> list?

I would like to do this, but I am of course not willing to have any potential 
incompatible changes from GNU make.

> On Fri, 2020-11-06 at 13:25 +0100, Joerg Schilling wrote:
> > > I'm not sure where the idea that pattern rules are immutable comes
> > > from: in GNU make any pattern rule can be overwritten at any time,
> > > including the default pattern rules.
> > 
> > This is how pattern rules have been defined when they appeared in
> > SunPro Make in January 1986.
>
> Well, it's not how pattern rules in GNU make work.
>
> > The fact that gmake overwrites existing pattern rules is not
> > sufficient (as it does not permit to remove them)
>
> That is not the case.  You can absolutely remove them.

The accepted way on UNIX for copying ideas from other implementations is to 
create a compatible clone with no "incompatible enhancements".

My idea is to start with a subset of the features of the original 
implementation and to add some commonly *agreed* new features.

This could be new features to remove single pattern rules or all pattern rules.

> I don't understand the distinction you're trying to draw between
> "disabled" and "deleted".  Regardless, if you define a pattern rule
> with no commands then the previous pattern is gone and cannot be "re-
> enabled", so I think "deleted" is the correct term.

Well, the fact that gmake still lists a "deleted" rule with gmake -p is 
confusing users. I just verified that gmake in fact correctly adds a new 
pattern rule with the same patterns of a deleted one to the end of the list.

> Yes, that could be done.
>
> It's different than MAKEFLAGS += -r, however, because the latter is
> guaranteed to only delete the _built-in_ rules.  This is almost always
> what the user wants.

As mentioned before: internal rules need to be parsed before reading the users
Makefile, so a line in the form

MAKEFLAGS += -r

in the users Makefile is inefficient unless you ignore the rules for the 
precedence of definitions that are in POSIX.

> Having "%:%" delete ALL the existing pattern rules is problematic
> because it relies on a specific ordering of appearance in makefiles.
> I'm sure such a feature would lead to a lot of head-scratching followed
> by cursing once a stray "%:%" pattern was discovered down in the bowels
> of the makefile system.

Given that pattern rules _are_ based on the concept of a specific ordering, 
this is a perfect enhancement.

People who may get problems with that, are obviously using unplanned Makefiles.

> I would prefer to use a special target which forced all built-in /
> system rules (only) to be dropped, something like:
>
>   .NOBUILTINS:

This may be a useful potential enhancement, but this would still differ from

$make -r

since .NOBUILTINS: would only affect rules from the internal makefile, but not
disable macro defitions.

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
  Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



Re: make pattern rules (was: Re: [Issue 8 drafts 0001325]: Allow make to remake an included file)

2020-11-09 Thread Joerg Schilling via austin-group-l at The Open Group
Geoff Clare via austin-group-l at The Open Group  
wrote:

> Paul Smith wrote, on 07 Nov 2020:
> >
> > Unless we are proposing pattern rules for inclusion in POSIX, [...]
>
> This was proposed in 2011 in bug 513, which is still open.

the problem with this bug report is that I got the impression, it started with 
the wrong intention.

The important point is that you need pattern rules if you like to put 
compilation results into platform specific sub-directories.

I like to get pattern rules into the standard by only requiring a subset of 
what 
has been available since January 1986.

The documentation is currently on page 30 of the man page:

http://schilytools.sourceforge.net/man/man1/make.1s.html

I would only standardize the form:

   tp%ts: dp%ds
rule

and mention

   tp%ts: [dependency ...] dp%ds [dependency ...]
rule

only as a potential enhancement that is not part of the standard.

Smake e.g. currently only supports:

   tp%ts: dp%ds 
rule

and 

   tp%ts:
rule

BTW: this reminds me that I need to add documentation for:

   tp%ts:
rule

Note that the behavior of SunPro Make was not changed since 1986 with regards 
to pattern matching rules.

Do you believe we have a chance to get to a text for Issue-8?

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
  Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



Re: make pattern rules (was: Re: [Issue 8 drafts 0001325]: Allow make to remake an included file)

2020-11-09 Thread Geoff Clare via austin-group-l at The Open Group
Paul Smith wrote, on 07 Nov 2020:
>
> Unless we are proposing pattern rules for inclusion in POSIX, [...]

This was proposed in 2011 in bug 513, which is still open.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



make pattern rules (was: Re: [Issue 8 drafts 0001325]: Allow make to remake an included file)

2020-11-07 Thread Paul Smith via austin-group-l at The Open Group
Unless we are proposing pattern rules for inclusion in POSIX, which I
personally would be in favor of since they are much more useful than
suffix rules, perhaps we should move the discussion to a different
list?

On Fri, 2020-11-06 at 13:25 +0100, Joerg Schilling wrote:
> > I'm not sure where the idea that pattern rules are immutable comes
> > from: in GNU make any pattern rule can be overwritten at any time,
> > including the default pattern rules.
> 
> This is how pattern rules have been defined when they appeared in
> SunPro Make in January 1986.

Well, it's not how pattern rules in GNU make work.

> The fact that gmake overwrites existing pattern rules is not
> sufficient (as it does not permit to remove them)

That is not the case.  You can absolutely remove them.

>  and it is a non-compliance related to the original definition so
> this modification from gmake causes unpredictable behavior.

There is non-compliance with the POSIX standard.

There are differences of implementation in areas that are not covered
by the standard.

There is no such thing as non-compliance with areas that are not
covered by the standard.

> Well after some searching (documentation could be better), I
> discovered that gmake seems to disable (not to delete) pattern rules
> if a rule with the same pattern but no command is defined. This is
> not compliant to the definition of how pattern rules work.

I don't understand the distinction you're trying to draw between
"disabled" and "deleted".  Regardless, if you define a pattern rule
with no commands then the previous pattern is gone and cannot be "re-
enabled", so I think "deleted" is the correct term.

I think the docs are pretty clear:

https://www.gnu.org/software/make/manual/html_node/Canceling-Rules.html

> This is non-compliant behavior

Pattern rules are not part of the POSIX standard, so "non-compliant
behavior" is not an appropriate term.

I'm happy to discuss incompatibilities between SunPro make/smake and
GNU make as long as the discussion proceeds from a position that they
are two co-equal implementations each with their own long history and
(certainly in the case of GNU make) vast user bases that rely on the
existing behaviors.  However, I don't have the energy for discussions
that begin with the premise that everything that exists in SunPro
make/smake is canonical and any behavior in GNU make that differs from
that is "non-compliant".

> The series:
> 
> %.o: %.c
>   echo some command
> 
> %.o: %.c
> 
> could be defined to require to completely remove the first definition
> from the chain of pattern rules.

That is already the way GNU make works.  Although I don't know what you
mean by the "first definition"; there can only be one instance of a
given pattern rule (note, not one instance of a given pattern _target_;
obviously many pattern rules may be defined with the same target).

> As a result, the series:
> 
> %.o: %.c
>   echo some command
> 
> %.o: %.c
> 
> %.o: %.c
>   echo some new command
> 
> could be defined as to first define a pattern rule, then to
> completely remove it from the chain of pattern rules and to finaly
> add a new rule with a different command to the current end of the
> pattern rule chain, without being completely incompatible to the
> existing pattern rule specs.

There is no single "spec" for pattern rules, there is only how SunPro
make handles pattern rules and how GNU make handles pattern rules.

In GNU make there's no need to delete the pattern rule before you
define a new one.  You just define the new one and it replaces the
existing one.  I don't see the point in requiring people to delete the
pattern rule first.  What does that buy you?

> To fix this problem, the nonsense pattern with no command definition:
> 
> %: %
> 
> could be defined as the method to completely remove all existing
> pattern rules from the current chain of pattern rules.

Yes, that could be done.

It's different than MAKEFLAGS += -r, however, because the latter is
guaranteed to only delete the _built-in_ rules.  This is almost always
what the user wants.

Having "%:%" delete ALL the existing pattern rules is problematic
because it relies on a specific ordering of appearance in makefiles.
I'm sure such a feature would lead to a lot of head-scratching followed
by cursing once a stray "%:%" pattern was discovered down in the bowels
of the makefile system.

Possibly even accidentally as the result of a variable expanding to
empty unexpectedly...

A number of the enhancements to GNU make are intended to reduce the
reliance on order of definition as much as possible.  Users do want and
rely on these enhancements.

I would prefer to use a special target which forced all built-in /
system rules (only) to be dropped, something like:

  .NOBUILTINS:

This would provide the identical behavior as "make -r", but without
modifying MAKEFLAGS.  This seems like something that could easily be
added to the standard as well, without even considering pattern 

Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-06 Thread Joerg Schilling via austin-group-l at The Open Group
Paul Smith via austin-group-l at The Open Group  
wrote:

> On Thu, 2020-11-05 at 19:36 +0100, Joerg Schilling wrote:
> > .SUFFIXES:
> > .SUFFIXES: .o .c
> > .c.o:
> > echo foo
> > 
> > In other words, a users makefile has full control over the "builtin"
> > default rules even without a need to use "make -r".
>
> Sure, it's easy to redefine a suffix rule.  The issue in question was
> that Geoff wanted to not use the .c.o rule at all.  He wanted to use
> other rules to build .o files in other ways, but the .c.o rule was
> interfering with it.  There's no way to DELETE that .c.o rule other
> than -r.

Well, this indeed is a problem with the suffix rules. You need to be careful to 
understand their working method correctly. But I expect people to either not 
touch these rules at all or to learn how to use them first.

smake in former times had simple suffix rules this way:

.o: .c .s .l
$(CC) -c $(CFLAGS) $(CPPFLAGS) $<
$(AS) -o $*.o $(ASFLAGS) $<
$(LEX) $(LFLAGS) $<;$(CC) -c $(CFLAGS) lex.yy.c;rm lex.yy.c;mv lex.yy.o 
$@

which is easier to understand, but I stopped to define them 21 years ago 
because three methods for implicit rules (simple suffix, suffix and pattern) 
most
likely are too much for users.

> In fact, GNU make allows users to disable built-in rules completely
> WITHOUT having to require users to add -r to the make command line,
> because it allows users to add this to their makefile:
>
> MAKEFLAGS += -r

I would not call this an advantage, since it is in conflict with all other
make implementations and people that may have seen this to work (how ever) in 
gmake, will realize that this cannot work if you follow the lines of POSIX and 
first read the internal rules and then the external makefiles. If a make 
implementation reads the external makefile, it is thus too late to disable the 
internal rules unless you introduce dirty tricks that are not compatible to the 
POSIX definitions.

> and it does the right thing.  Of course this is problematic as well
> because that is now passed to sub-make invocations which may not be
> what you want.  However, in practice it is rarely a problem.

This is true, if you pass this to sub-makes, it is not too late...

> In fact, most of the built-in rules in GNU make ARE defined as suffix
> rules; see this from default.c:
>
> ".c.o",
> "$(COMPILE.c) $(OUTPUT_OPTION) $<",

I cannot confirm this, gmake at the same time defines

%.o: %.c
#  recipe to execute (built-in):
$(COMPILE.c) $(OUTPUT_OPTION) $<

whis is a rule with precedence before suffix rules.

> However, GNU make also provides a number of built-in rules that cannot
> be expressed as suffix rules, such as these:
>
> /* RCS.  */
> { "%", "%,v",
> "$(CHECKOUT,v)" },
> { "%", "RCS/%,v",
> "$(CHECKOUT,v)" },
> { "%", "RCS/%",
> "$(CHECKOUT,v)" },

Classical make implementation (and in this special case, this also applies to 
SunPro Make) implement this hardcoded in C. This is why I so far have been 
hesitant to define similar rules in smake. RCS is non-standard, dead and slower 
than SCCS anyway, so this does not seem to be a problem ;-)

> > - pattern matching rules have precedence over suffix rules and may 
> >   themselves not be overwritten
> > 
> > - pattern matching rules match in the order of their apperance to the
> >   parser. The first pattern rule that matches a specific pattern is 
> >   used. Later specifying a replacement rule for a specific pattern is
> >   impossible.
> > 
> > - The built in default rules must to be "read" by make before the 
> >   users makefiles are parsed in order to allow them (the suffix
> >   rules) to be overwritten. Any pattern matching rule that appears
> >   in the builtin default rules thus would have precedence over 
> >   anything else and cannot be overwritten.
>
> Maybe these are problems in SunOS make / smake, but they are certainly
> not problems in GNU make.
>
> I'm not sure where the idea that pattern rules are immutable comes
> from: in GNU make any pattern rule can be overwritten at any time,
> including the default pattern rules.

This is how pattern rules have been defined when they appeared in SunPro Make 
in January 1986. 

If this was a problem, people could have made a bug report at that time but 
this did not happen Given that pattern rules are not (neither in SunPro 
Make, nor in smake) used in the built in rules, there is no need to have a 
method to remove them later, since they are only used by the user makefiles.

Since I tend to avoid a hard coded implementation for SCCS support in smake, I 
tend to introduce SCCS checkout support in a future version of smake using 
pattern rules. This would introduce the need to be able to withdraw existing
pattern rules selectively.

The fact that gmake overwrites existing pattern rules is not sufficient (as it 
does not permit to remove them) and it is a non-compliance related to the 
original definition so 

Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-06 Thread Geoff Clare via austin-group-l at The Open Group
Paul Smith wrote, on 05 Nov 2020:
>
> On Thu, 2020-11-05 at 09:25 +, Geoff Clare via austin-group-l at
> The Open Group wrote:
> > > .SUFFIXES:
> > > .SUFFIXES: .c .i .o

> The order in which suffix rules are found depends on the order in which
> the suffixes appear in .SUFFIXES.  To make your example work you need
> the order to be this:
> 
> .SUFFIXES:
> .SUFFIXES: .o .i .c

Oh, I see.  Thanks!

Don't know how I had missed that the order is important. I'm used to
putting things in alphabetical order when editing POSIX/SUS text, so
that's what I naturally did here.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Paul Smith via austin-group-l at The Open Group
On Thu, 2020-11-05 at 15:42 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> > I agree we can't over-simplify but I don't see a problem with the
> > specific case you mention.
> 
> If the first target_name operand is the name of an include file that
> needs to be created, your statement "All include file regeneration is
> complete before make attempts to bring [up-to-date] the
> first target_name operand" creates a paradox.

I don't really see a paradox here, sorry.  Maybe I'm just not good
enough at detailed reading.  All include file generation is performed,
then make attempts to bring the operands up to date.  Why is there a
paradox if an operand is also an include file?

But I don't see a problem per se with the current wording so I'm happy
to let this thread die as an academic discussion.

Thanks Geoff!



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Paul Smith via austin-group-l at The Open Group
On Thu, 2020-11-05 at 19:36 +0100, Joerg Schilling wrote:
> .SUFFIXES:
> .SUFFIXES: .o .c
> .c.o:
> echo foo
> 
> In other words, a users makefile has full control over the "builtin"
> default rules even without a need to use "make -r".

Sure, it's easy to redefine a suffix rule.  The issue in question was
that Geoff wanted to not use the .c.o rule at all.  He wanted to use
other rules to build .o files in other ways, but the .c.o rule was
interfering with it.  There's no way to DELETE that .c.o rule other
than -r.

However as I mentioned in my previous message you can still do it
without requiring -r, if you're very careful to order your suffixes
correctly so that the built-in .c.o rule is not considered.

> > In my opinion the -r option is wrong.
> 
> Well GNU make makes the mistake to define pattern matching implicit
> rules in its default rules and this causes the following problems:

This is irrelevant to the topic at hand.

In fact, GNU make allows users to disable built-in rules completely
WITHOUT having to require users to add -r to the make command line,
because it allows users to add this to their makefile:

MAKEFLAGS += -r

and it does the right thing.  Of course this is problematic as well
because that is now passed to sub-make invocations which may not be
what you want.  However, in practice it is rarely a problem.

In fact, most of the built-in rules in GNU make ARE defined as suffix
rules; see this from default.c:

".c.o",
"$(COMPILE.c) $(OUTPUT_OPTION) $<",
".cc.o",
"$(COMPILE.cc) $(OUTPUT_OPTION) $<",
".C.o",
"$(COMPILE.C) $(OUTPUT_OPTION) $<",
".cpp.o",

etc.

However, GNU make also provides a number of built-in rules that cannot
be expressed as suffix rules, such as these:

/* RCS.  */
{ "%", "%,v",
"$(CHECKOUT,v)" },
{ "%", "RCS/%,v",
"$(CHECKOUT,v)" },
{ "%", "RCS/%",
"$(CHECKOUT,v)" },

> - pattern matching rules have precedence over suffix rules and may 
>   themselves not be overwritten
> 
> - pattern matching rules match in the order of their apperance to the
>   parser. The first pattern rule that matches a specific pattern is 
>   used. Later specifying a replacement rule for a specific pattern is
>   impossible.
> 
> - The built in default rules must to be "read" by make before the 
>   users makefiles are parsed in order to allow them (the suffix
>   rules) to be overwritten. Any pattern matching rule that appears
>   in the builtin default rules thus would have precedence over 
>   anything else and cannot be overwritten.

Maybe these are problems in SunOS make / smake, but they are certainly
not problems in GNU make.

I'm not sure where the idea that pattern rules are immutable comes
from: in GNU make any pattern rule can be overwritten at any time,
including the default pattern rules.

Also, pattern rules can be completely canceled without overwriting
them, including as well the default pattern rules.  It's just annoying
to have to do it by hand, and make sure you get them all, so something
like MAKEFLAGS += -r is much more robust.

Also, user-defined pattern rules are always added to be searched before
built-in pattern rules so the first one will always be a user-defined
pattern, if such exists.

And finally, it's not actually true that the first pattern rule that
matches is used.  That used to be the case but quite a while ago the
pattern matcher was changed so that the rule with the shortest matching
stem is chosen first.  If multiple pattern rules have stems with the
same length then the first one is chosen.

This algorithm change is a little controversial and I'm not sure about
it, but it seems to be acceptable in practice and it does avoid
worrying about the order in which patterns are defined.



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Paul Smith via austin-group-l at The Open Group
On Thu, 2020-11-05 at 09:25 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> > .SUFFIXES:
> > .SUFFIXES: .c .i .o
> 
> 
> That doesn't make any difference, since .c and .o are both in the
> specified suffixes, so that brings the default .c.o rule into play.

Sorry, I didn't read your example closely enough.

Not only do you have to remove pre-existing suffixes, but you have to
be very careful to order the suffixes correctly when you redefine them.

I find the text in the standard somewhat confusing (particularly how
when first introducing inference rules they are shown as ".s1.s2" but
then a few paragraphs later this is changed to ".s2.s1"; if you miss
that switch then the rest of the text doesn't make any sense).

The order in which suffix rules are found depends on the order in which
the suffixes appear in .SUFFIXES.  To make your example work you need
the order to be this:

.SUFFIXES:
.SUFFIXES: .o .i .c

rather than ".c .i .o"... in particular you want the .c suffix to be
after the .i suffix so that rules with .i are preferred.



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Joerg Schilling via austin-group-l at The Open Group
Paul Smith via austin-group-l at The Open Group  
wrote:

> On Thu, 2020-11-05 at 09:25 +, Geoff Clare via austin-group-l at
> The Open Group wrote:
> > That doesn't make any difference, since .c and .o are both in the
> > specified suffixes, so that brings the default .c.o rule into play.
>
> Hm.  Right, I forgot that clearing the suffixes doesn't also delete the
> rules.  It's annoying that there's no POSIX way to delete the default
> rules from within the makefile.

There is no need to do that.

In former times, there was no way to clear .SUFFIXES, but at that time, SunOS 
defined default rules that look this way:

SUFFIXES= .o .c ...
.SUFFIXES: $(SUFFIXES)

so you could clear it by overwriting the SUFFIXES variable from your user 
makefile.

Now POSIX requires that writing:

.SUFFIXES:

into a Makefile clears the suffix list and thus effectively disables all default
implicit rules.

If you only like the .c.o rule but are not happy with the builtin default rule 
for e.g. .c.o:, you can overwrite it by e.g. writing:

.SUFFIXES:
.SUFFIXES: .o .c
.c.o:
echo foo

In other words, a users makefile has full control over the "builtin" default 
rules even without a need to use "make -r".

> In my opinion the -r option is wrong.  Whether or not the default rules
> should be used is a function of the _makefile_, not a function of the
> _user_ of the makefile (the person who runs make).  If the makefile is
> written so that it doesn't want or need the default rules then the
> makefile should be able to delete them.  It shouldn't be up to the
> invoker of make to do that.

Well GNU make makes the mistake to define pattern matching implicit rules in 
its default rules and this causes the following problems:

-   pattern matching rules have precedence over suffix rules and may 
themselves not be overwritten

-   pattern matching rules match in the order of their apperance to the
parser. The first pattern rule that matches a specific pattern is 
used. Later specifying a replacement rule for a specific pattern is
impossible.

-   The built in default rules must to be "read" by make before the users
makefiles are parsed in order to allow them (the suffix rules) to be
overwritten. Any pattern matching rule that appears in the builtin 
default rules thus would have precedence over anything else and cannot
be overwritten.

For this reason, SunPro Make intentionally does not make use of pattern 
matching rules in the builtin default rules in order to permit the user to 
have full control over the behavior of make without a need to call "make -r".

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
  Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has been RESOLVED. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Resolved
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5087 
Resolution: Accepted As Marked
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-05 16:23 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076  
2020-10-28 09:14 geoffclare Note Added: 0005077  
2020-10-28 11:23 joerg  Note Added: 0005078  
2020-10-28 12:16 joerg  Note Edited: 0005078 
2020-10-28 13:47 psmith Note Added: 0005079  
2020-10-28 14:44 geoffclare Note Added: 0005080  
2020-10-28 14:49 psmith Note Added: 0005081  
2020-10-28 14:50 psmith Note Added: 0005082  
2020-10-28 

Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Geoff Clare via austin-group-l at The Open Group
Paul Smith wrote, on 05 Nov 2020:
>
> On Thu, 2020-11-05 at 09:57 +, Geoff Clare via austin-group-l at
> The Open Group wrote:
> > > > The aim here was to describe the cut-off-point where all include
> > > > file generation has been completed and after which the new
> > > > contents of the files is used. This cut-off-point needs to be
> > > > before make starts the "real work", i.e. starts the work to bring
> > > > the first target operand, or the first target make encounters if
> > > > there are no operands, up-to-date.
> > > Can we just say that?  All include file regeneration is complete
> > > before make attempts to bring the first target_name operand, or the
> > > first target make encounters if no target is specified?
> > 
> > If we simplify it too much, it won't be correct. For example,
> > consider the case where the first target_name operand is the name of
> > an include file that needs to be created.
> 
> I agree we can't over-simplify but I don't see a problem with the
> specific case you mention.

If the first target_name operand is the name of an include file that
needs to be created, your statement "All include file regeneration is
complete before make attempts to bring [up-to-date] the first
target_name operand" creates a paradox.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Paul Smith via austin-group-l at The Open Group
On Thu, 2020-11-05 at 09:57 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> > > The aim here was to describe the cut-off-point where all include
> > > file generation has been completed and after which the new
> > > contents of the files is used. This cut-off-point needs to be
> > > before make starts the "real work", i.e. starts the work to bring
> > > the first target operand, or the first target make encounters if
> > > there are no operands, up-to-date.
> > Can we just say that?  All include file regeneration is complete
> > before make attempts to bring the first target_name operand, or the
> > first target make encounters if no target is specified?
> 
> If we simplify it too much, it won't be correct. For example,
> consider the case where the first target_name operand is the name of
> an include file that needs to be created.

I agree we can't over-simplify but I don't see a problem with the
specific case you mention.

For GNU make, at any rate, nothing special will be done if a
target_name operand is also an include file.

The include file will be rebuilt (if needed) as usual, then make will
attempt to build the target_name operand and realize it's already up to
date, and go on to the next one (or finish).



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Paul Smith via austin-group-l at The Open Group
On Thu, 2020-11-05 at 09:25 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> That doesn't make any difference, since .c and .o are both in the
> specified suffixes, so that brings the default .c.o rule into play.

Hm.  Right, I forgot that clearing the suffixes doesn't also delete the
rules.  It's annoying that there's no POSIX way to delete the default
rules from within the makefile.

In my opinion the -r option is wrong.  Whether or not the default rules
should be used is a function of the _makefile_, not a function of the
_user_ of the makefile (the person who runs make).  If the makefile is
written so that it doesn't want or need the default rules then the
makefile should be able to delete them.  It shouldn't be up to the
invoker of make to do that.

And if the makefile is written so that it _does_ need the default
rules, it shouldn't be up to the user to delete them with -r.

Of course that's a completely separate topic :).




Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Geoff Clare via austin-group-l at The Open Group
Paul Smith wrote, on 04 Nov 2020:
>
> On Wed, 2020-11-04 at 10:48 +, Geoff Clare via austin-group-l at
> The Open Group wrote:

> > The aim here was to describe the cut-off-point where all include file
> > generation has been completed and after which the new contents of the
> > files is used. This cut-off-point needs to be before make starts the
> > "real work", i.e. starts the work to bring the first target operand,
> > or the first target make encounters if there are no operands, up-to-
> > date.
> 
> Can we just say that?  All include file regeneration is complete before
> make attempts to bring the first target_name operand, or the first
> target make encounters if no target is specified?

If we simplify it too much, it won't be correct. For example, consider
the case where the first target_name operand is the name of an include
file that needs to be created.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-05 09:50 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005100) geoffclare (manager) - 2020-11-05 09:50
 https://austingroupbugs.net/view.php?id=1325#c5100 
-- 
I have updated https://austingroupbugs.net/view.php?id=1325#c5087 based on
comments here and on the mailing list.
The changes are:

Restructured the page 2892 change.

Added "(unless the later include line is itself inside the dynamic include
file)" in the second bullet in the page 2904 change.

Improved wording in the page 2911 change (avoiding "gotchas"). 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076  
2020-10-28 09:14 

Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Geoff Clare via austin-group-l at The Open Group
Joerg Schilling  wrote, on 05 Nov 2020:
>
> Geoff Clare via austin-group-l at The Open Group 
>  wrote:
> 
> > The make utility shall use one of the following two methods
> > to attempt to create the file or bring it up-to-date:
> >
> > 1. The "immediate remaking" method
> >
> > If make uses this method, any target rules or inference
> > rules for the pathname that were parsed before the include line
> > was parsed shall be used to attempt to create the file or to
> > bring it up-to-date before opening the file.
> >
> > 2. The "delayed remaking" method
> >
> > If make uses this method, no attempt shall be made to
> > create the file or bring it up-to-date until after the
> > makefile(s) have been read.  During processing of the include
> > line, make shall read the current contents of the file,
> > if it exists, or treat it as an empty file if it does not exist.
> > Once the makefile(s) have been read, make shall use any
> > applicable target rule or inference rule for the pathname,
> > regardless of whether it is parsed before or after the include
> > line, when creating the file or bringing it up-to-date. 
> > Additionally in this case, [...]
> >
> > If the pathname is relative, [...]
> 
> Sorry, but this would result in non-portable makefiles and it is not 
> acceptable.
> 
> In order to permit portable makefiles, all rules to make/remake include files 
> need to be before the include statement.

That's a constraint on applications, not on impelementations.  It is
covered by the first bullet point in the proposed APPLICATION USAGE
addition.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Joerg Schilling via austin-group-l at The Open Group
Geoff Clare via austin-group-l at The Open Group  
wrote:

> The make utility shall use one of the following two methods
> to attempt to create the file or bring it up-to-date:
>
> 1. The "immediate remaking" method
>
>   If make uses this method, any target rules or inference
>   rules for the pathname that were parsed before the include line
>   was parsed shall be used to attempt to create the file or to
>   bring it up-to-date before opening the file.
>
> 2. The "delayed remaking" method
>
>   If make uses this method, no attempt shall be made to
>   create the file or bring it up-to-date until after the
>   makefile(s) have been read.  During processing of the include
>   line, make shall read the current contents of the file,
>   if it exists, or treat it as an empty file if it does not exist.
>   Once the makefile(s) have been read, make shall use any
>   applicable target rule or inference rule for the pathname,
>   regardless of whether it is parsed before or after the include
>   line, when creating the file or bringing it up-to-date. 
>   Additionally in this case, [...]
>
> If the pathname is relative, [...]

Sorry, but this would result in non-portable makefiles and it is not acceptable.

In order to permit portable makefiles, all rules to make/remake include files 
need to be before the include statement.

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
  Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-05 Thread Geoff Clare via austin-group-l at The Open Group
Paul Smith wrote, on 04 Nov 2020:
>
> On Wed, 2020-11-04 at 16:47 +, Geoff Clare via austin-group-l at
> The Open Group wrote:

> > Here's a modified version of the proposed example that uses this new
> > technique.  Note that you have to use "make -r" otherwise it uses the
> > default .c.o rule instead!  The rules for a.o and b.o seem to be
> > needed by SunPro make but not by GNU make.
> > 
> > .POSIX:
> > .SUFFIXES: .c .i .o
> 
> To avoid using make -r you can clear the suffixes before defining new
> ones:
> 
>.SUFFIXES:
>.SUFFIXES: .c .i .o

That doesn't make any difference, since .c and .o are both in the
specified suffixes, so that brings the default .c.o rule into play.

One way of handling the issue is to alert the user to the need to
use -r if they forget:

CC = echo "Please use make -r"; false

(Of course, this means you can't use $(CC) in the specified rules,
but my example uses c99 so it works there.)

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-05 00:54 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005099) dwheeler (reporter) - 2020-11-05 00:54
 https://austingroupbugs.net/view.php?id=1325#c5099 
-- 
The ability to remake included files is broadly useful, as demonstrated by
the many "make" implementations that support this capability.  Here's a
specific example of a Makefile fragment using it (this example uses several
GNU make capabilities that are missing from POSIX, but the point is to show
that remaking included files *is* a capability people use):
https://github.com/david-a-wheeler/make-booster .

geoffclare: Thank you for creating this compromise text. I think it is
absolutely *vital* that it not conflict with the very-widely-used GNU make
implementation.

The POSIX specification of "make" lacks many functionalities that are
needed, and thus many people end up creating Makefiles specific to a
specific implementation (e.g., GNU make). I hope that the POSIX
specification will be extended to handle more situations. This is only one
step towards that desirable result, but it seems like a good step forward. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-04 22:53 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005098) joerg (reporter) - 2020-11-04 22:53
 https://austingroupbugs.net/view.php?id=1325#c5098 
-- 
Re: https://austingroupbugs.net/view.php?id=1325#c5094 my impression is that you
are missunderstanding the
intention of https://austingroupbugs.net/view.php?id=1325#c5087 

The intention of that text is to describe what may be done in a portable
way. This of course cannot include rules related to an include file that
appear after the include statement, since this would neither work with
SunPro Make, nor with smake.

The text in https://austingroupbugs.net/view.php?id=1325#c5087 describes the
common denominator of smake, SunPro
Make and GNU make. It describes makefile variants that would not work with
all implementations as being non-compliant.

Makefiles that make use of rules that appear after the related include
statement, depend on a vendor specific enhancement. They are not forbidden,
but rather based on non-portable extensions.

If you believe that https://austingroupbugs.net/view.php?id=1325#c5087 depends
on a required feature that is not
or cannot be supported by GNU make, this would be a reason for a veto, but
from what I can say, this does not apply. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 

Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Paul Smith via austin-group-l at The Open Group
On Wed, 2020-11-04 at 18:05 +0100, Joerg Schilling via austin-group-l
at The Open Group wrote:
> I am not sure whether I missed something, but I cannot see a method
> that may work in a portable way and unless I missed something, I see
> no new idea that makes things really better than what we are
> currently discussing.

In the paper I discuss the problems with the generated output and the
advantages to avoiding it.

> The problem I see is that the advanced method available with SunPro
> Make does not seem to be supported by GNU make and the options
> mentioned in the paper from above seem to be GCC specific and still
> require a separate compiler call.

They are technically not GCC-specific: clang also provides these
options.  But that support is not necessary: in the paper I go over a
few alternatives to use if your compiler isn't capable of generating
dependencies as a side-effect of compilation.  Whatever process you use
to generate the .d files is simply added to the compiler invocation
rule.

Yes, it means you may need to run the compiler twice but it still works
and you have to run the compiler twice when using generated include
files anyway.  The built-in compiler support is simply an efficiency
improvement, it's not a fundamental requirement.



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Paul Smith via austin-group-l at The Open Group
On Wed, 2020-11-04 at 16:47 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> Having read this, I'm now wondering why we are bothering to add
> requirements for generating include files, if it is no longer the
> recommended way of doing things.

There are other uses for auto-generating included files: it does give
you a bit of "meta-programming" capability and some flexibility to
auto-generate rules that plain makefiles cannot.  Implicit rules, and
particularly POSIX suffix rules, are really not powerful enough to
provide all the different types of templating you might want.

However I don't know if this is sufficient justification for a change
to POSIX.

I wrote a post about this too:

http://make.mad-scientist.net/constructed-include-files/

Looks like this post needs to be updated to note you don't need to use
-include anymore as well :)

> > This post obviously makes use of GNU make-specific features but I
> > don't believe there's anything there that couldn't be also
> > implemented in standard make. 
> 
> To improve efficiency it relies on the compiler having an option to
> request creation of a dependency list at the same time as creating
> the .o file. However, something similar is possible with standard c99
> by creating a .i file and then creating the .o and .d from that.

Yes.  But in any event, even if you do the simple thing and just run it
twice you're no worse off since regenerated include files require
running the compiler twice as well.

> Here's a modified version of the proposed example that uses this new
> technique.  Note that you have to use "make -r" otherwise it uses the
> default .c.o rule instead!  The rules for a.o and b.o seem to be
> needed by SunPro make but not by GNU make.
> 
> .POSIX:
> .SUFFIXES: .c .i .o

To avoid using make -r you can clear the suffixes before defining new
ones:

   .SUFFIXES:
   .SUFFIXES: .c .i .o




Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Paul Smith via austin-group-l at The Open Group
On Wed, 2020-11-04 at 10:48 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> > - 
> >  (0005094) psmith (developer) - 2020-11-03 15:23
> >  https://austingroupbugs.net/view.php?id=1325#c5094 
> > 
> > Regarding the change to page 2891 lines 97033-97035:
> 
> It's there because GNU make uses re-execution.  The re-executed make
> doesn't know what targets the previous invocation updated, so it
> doesn't know to treat them as already up-to-date.

I understand.  I need to stop thinking of the re-exec'd make and simply
consider the entirety of the process.  The real process GNU make
undertakes is something like:

   1. Read all makefiles.  Don't error if they do not exist.
   2. Consider all makefiles as goal targets and try to rebuild them.
   3. If any rebuild, clear out all knowledge of all parsed makefiles and
  go to step 1 (GNU make does this via re-exec but that's not required
  of course).
   4. If any required makefiles are missing, fail.
   5. Build the normal goal targets.

So, it's never the case that by the time you get to step #5, any
makefile will be reconsidered: at that point all makefiles will be
known to be up to date.

> The aim here was to describe the cut-off-point where all include file
> generation has been completed and after which the new contents of the
> files is used. This cut-off-point needs to be before make starts the
> "real work", i.e. starts the work to bring the first target operand,
> or the first target make encounters if there are no operands, up-to-
> date.

Can we just say that?  All include file regeneration is complete before
make attempts to bring the first target_name operand, or the first
target make encounters if no target is specified?

> > In the portability text (second bullet), a portable workaround to
> > using a macro defined in one included file in the include line of
> > another, is to put the second include _inside_ the first included
> > file instead of in the outer including makefile.
> 
> Okay, that sounds like it is worth adding.  Maybe something like:
> 
> Include lines and rules for creating dynamic include files do not
> depend on the contents of any earlier dynamic include file. For
> example, defining a macro in a dynamic include file and using
> that
> macro in a later include line should be avoided (unless the later
> include line is itself inside the dynamic include file).

OK.

> If adding "ddir" to the search path is achieved by means of an
> extension (such as -I), then the requirement in the standard does not
> apply to "ddir"; it only applies to the default search path.
> 
> It is only the default search path that I see as a problem.  If a
> user explicitly wants a directory searched, then that implies they
> know what's in that directory and will choose include file names with
> that in mind.  If there's a clash which causes their makefile to
> behave differently than intended, that's the user's fault.

Yes, exactly.

> Sounds like we are in agreement with how GNU make should handle this
> issue. It can prioritise specified search paths over remaking, but
> not the default search path. I believe the currently proposed text
> allows that, because specifying a search path involves using an
> extension.

OK, I'm OK with making this change to GNU make to meet the standard if
needed.

Thanks!



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Paul Smith via austin-group-l at The Open Group
On Wed, 2020-11-04 at 12:01 +, Geoff Clare via austin-group-l at
The Open Group wrote:
> I haven't been able to come up with a common initial statement that
> is preferable to just describing the two methods separately. So
> unless someone else wants to give it a go, I suggest that I should
> restructure that part along these lines:
> 
> The make utility shall use one of the following two methods
> to attempt to create the file or bring it up-to-date:
> 
> 1. The "immediate remaking" method
> 
> If make uses this method, any target rules or inference
> rules for the pathname that were parsed before the include line
> was parsed shall be used to attempt to create the file or to
> bring it up-to-date before opening the file.
> 
> 2. The "delayed remaking" method
> 
> If make uses this method, no attempt shall be made to
> create the file or bring it up-to-date until after the
> makefile(s) have been read.  During processing of the include
> line, make shall read the current contents of the file,
> if it exists, or treat it as an empty file if it does not exist.
> Once the makefile(s) have been read, make shall use any
> applicable target rule or inference rule for the pathname,
> regardless of whether it is parsed before or after the include
> line, when creating the file or bringing it up-to-date. 

This seems OK to me.

I like the idea of using two separate sections; the process seems
different enough that it's confusing to shoe-horn it into a single one.



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Joerg Schilling via austin-group-l at The Open Group
Geoff Clare via austin-group-l at The Open Group  
wrote:

> > I wrote a blog post about this which may be interesting:
> > http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ 
>
> Having read this, I'm now wondering why we are bothering to add
> requirements for generating include files, if it is no longer the
> recommended way of doing things.

I am not sure whether I missed something, but I cannot see a method that may 
work in a portable way and unless I missed something, I see no new idea that 
makes things really better than what we are currently discussing.

The problem I see is that the advanced method available with SunPro Make does 
not seem to be supported by GNU make and the options mentioned in the paper 
from above seem to be GCC specific and still require a separate compiler call. 
The intention for POSIX however is to standardize portable solutions. This is 
why I believe that the current solution from bug 1325 is the right way to go 
in the close future.

The method based on cc -E as distributed by the schily makefilesystem has been 
verified to be portable to virtually any platform - even to the Microsoft 
compiler, see the shell script conf/mkdep-msc.sh

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
  Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Geoff Clare via austin-group-l at The Open Group
> -- 
>  (0005096) psmith (developer) - 2020-11-03 15:31
>  https://austingroupbugs.net/view.php?id=1325#c5096 
> -- 
> Apropos of the example given here: I just want to say that in the GNU
> project we have completely moved away from using rebuilt included makefiles
> as part of automatic prerequisite generation, as being (a) tricky, (b)
> impossible to make completely seamless, (c) inefficient, and (d) wholly
> unnecessary.
> 
> I wrote a blog post about this which may be interesting:
> http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ 

Having read this, I'm now wondering why we are bothering to add
requirements for generating include files, if it is no longer the
recommended way of doing things.

> This post obviously makes use of GNU make-specific features but I don't
> believe there's anything there that couldn't be also implemented in
> standard make. 

To improve efficiency it relies on the compiler having an option to
request creation of a dependency list at the same time as creating
the .o file. However, something similar is possible with standard c99
by creating a .i file and then creating the .o and .d from that.

At first sight it also looked like it depended on $(wildcard ...) but
then I realised it could just use:

-include $(DEPFILES)

instead of:

include $(wildcard $(DEPFILES))

Here's a modified version of the proposed example that uses this new
technique.  Note that you have to use "make -r" otherwise it uses the
default .c.o rule instead!  The rules for a.o and b.o seem to be
needed by SunPro make but not by GNU make.

.POSIX:
.SUFFIXES: .c .i .o

OFILES = a.o b.o

pgm: $(OFILES)
c99 $(OFILES) -o pgm

a.o: a.i

b.o: b.i

.c.i:
c99 -E $< > $@
cfile=$<; dfile=$${cfile%.c}.d; \
{ \
set -o pipefail; \
printf '%s: %s ' $@ $<; \
LC_ALL=C sed -n \
'/^#[[:blank:]]*[[:digit:]]/s/.*"\([^"]*\.h\)".*/\1/p' $@ | \
LC_ALL=C sort -u | tr '\n' ' '; \
echo; \
} > "$$dfile"

.i.o:
c99 -c $<

-include $(OFILES:.o=.d)

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://www.austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:   
https://www.austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-04 16:45 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005097) joerg (reporter) - 2020-11-04 16:45
 https://www.austingroupbugs.net/view.php?id=1325#c5097 
-- 
Re: https://www.austingroupbugs.net/view.php?id=1325#c5096 The most advanced
method has been introduced in January
1986 by SunPro Make.

You put this line:

.KEEP_STATE:

or

.KEEP_STATE: state-file-name

into the Makefile and make then manages the include dependencies in a
hidden way by setting the "SUNPRO_DEPENDENCIES=" environment to:

SUNPRO_DEPENDENCIES="some/unique/path "

with  set to $@ for the current command. 

The compiler then (as a side-effect) writes the dependencies in make syntax
into some/unique/path and SunPro Make collects all such output into the
file .make.state or in state-file-name. This is safe and increases overall
performance as it avoids a second compiler call.

Together with changes to SunPro Make and the UNIX linker from around 1993,
based on the environment SGS_SUPPORT=libmakestate.so.1, a callback
interface in the linker delivers all needed information on path names of
linked libraries. This completely closes all loopholes on dependencies that
before typically have been in hierarchical makefile systems. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://www.austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 

Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Geoff Clare via austin-group-l at The Open Group
Geoff Clare wrote, on 04 Nov 2020:
>
> > > If a target rule or inference rule for the pathname has been parsed
> > > before the include line is parsed, make shall use the rule to attempt
> > > to create the file or to bring it up-to-date.
> > 
> > I don't think this is quite correct.  In GNU make, anyway, it's not
> > required that an inference rule parsed before the include line is parsed
> > will always be used.  If a target rule, or a different inference rule, is
> > defined after the include line then that will be used instead.
> 
> I see your point.  I was trying to find a way to make an initial single
> statement that was true for both methods, but maybe that's not possible.
> The text may need to separate the two descriptions entirely. I'll give
> it some more thought.

I haven't been able to come up with a common initial statement that is
preferable to just describing the two methods separately. So unless
someone else wants to give it a go, I suggest that I should restructure
that part along these lines:

The make utility shall use one of the following two methods
to attempt to create the file or bring it up-to-date:

1. The "immediate remaking" method

If make uses this method, any target rules or inference
rules for the pathname that were parsed before the include line
was parsed shall be used to attempt to create the file or to
bring it up-to-date before opening the file.

2. The "delayed remaking" method

If make uses this method, no attempt shall be made to
create the file or bring it up-to-date until after the
makefile(s) have been read.  During processing of the include
line, make shall read the current contents of the file,
if it exists, or treat it as an empty file if it does not exist.
Once the makefile(s) have been read, make shall use any
applicable target rule or inference rule for the pathname,
regardless of whether it is parsed before or after the include
line, when creating the file or bringing it up-to-date. 
Additionally in this case, [...]

If the pathname is relative, [...]

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-04 Thread Geoff Clare via austin-group-l at The Open Group
> -- 
>  (0005094) psmith (developer) - 2020-11-03 15:23
>  https://austingroupbugs.net/view.php?id=1325#c5094 
> -- 
> Thank you for all your effort Geoff!  I like this version very much.  A few
> notes / clarifying questions:
> 
> Regarding the change to page 2891 lines 97033-97035: is this because smake
> / SunPro make will re-consider and re-build included makefiles if they
> appear as prerequisites to another target?  GNU make never reconsiders a
> target after it's been considered, regardless of whether or not it's an
> included file.

It's there because GNU make uses re-execution.  The re-executed make
doesn't know what targets the previous invocation updated, so it doesn't
know to treat them as already up-to-date.

> Regarding this:
> 
> > If a target rule or inference rule for the pathname has been parsed
> before the include line is parsed, make shall use the rule to attempt to
> create the file or to bring it up-to-date.
> 
> I don't think this is quite correct.  In GNU make, anyway, it's not
> required that an inference rule parsed before the include line is parsed
> will always be used.  If a target rule, or a different inference rule, is
> defined after the include line then that will be used instead.

I see your point.  I was trying to find a way to make an initial single
statement that was true for both methods, but maybe that's not possible.
The text may need to separate the two descriptions entirely. I'll give
it some more thought.

> For the section "Additionally in this case, the new contents of the file,
> if it is successfully created or updated, shall be used when processing
> rules for the following targets after the makefile(s) have been read:"
> followed by the bullet points, can you give me a hint as to what we are
> trying to ensure or prevent by this text?  By listing these specific things
> I worry that I will overlook something that we do today that will become
> invalid as a result of this text.  Is there a difference we are trying to
> surface between how included files normally work, and these rebuilt
> included files work?

The aim here was to describe the cut-off-point where all include file
generation has been completed and after which the new contents of the
files is used. This cut-off-point needs to be before make starts the
"real work", i.e. starts the work to bring the first target operand, or
the first target make encounters if there are no operands, up-to-date.
The third bullet is because make has to (recursively) bring the
prerequisites of this first target up-to-date before the target itself.

Perhaps there is a better way to achieve this aim - I'm open to
suggestions.

> Is it not sufficient to say something like, the new
> contents of the file will be used when processing rules that appear after
> the included file as if the text had appeared in the makefile?

Surely that's not true for GNU make.  I thought it would use old include
file contents when processing a later rule that is used to generate
another include file.

> In the portability text (second bullet), a portable workaround to using a
> macro defined in one included file in the include line of another, is to
> put the second include _inside_ the first included file instead of in the
> outer including makefile.  This can be less convenient in some situations
> but it will work in all situations.

Okay, that sounds like it is worth adding.  Maybe something like:

Include lines and rules for creating dynamic include files do not
depend on the contents of any earlier dynamic include file. For
example, defining a macro in a dynamic include file and using that
macro in a later include line should be avoided (unless the later
include line is itself inside the dynamic include file).

(the only difference is the added part in parentheses).

> 
> In the portability text I don't understand the need for the third
> bullet...?

It was an attempt at guidance on how to prevent re-execution-ad-infinitum.

> In the make examples text I am not sure what the point of the initial
> -include line is... why is that needed in this situation?

So that SunPro make knows the prerequisites for the include file (if
it already exists) when it processes the second include line.

> It also seems
> that each target will list all its prerequisites twice, although of course
> that's not a problem.  You might also consider using the make variable
> $(CC) in these examples rather than hardcoding the c99 value.

It's intended as an updated version of the previous example, which
uses c99.  I would not object to changing both examples to use $(CC).

> Regarding the issue of searching of include files, I don't agree with this
> as written.  I do understand the problem you're addressing, and I have no
> problems making some types of changes to GNU make to meet the standard, but
> the 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-03 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-03 15:31 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005096) psmith (developer) - 2020-11-03 15:31
 https://austingroupbugs.net/view.php?id=1325#c5096 
-- 
Apropos of the example given here: I just want to say that in the GNU
project we have completely moved away from using rebuilt included makefiles
as part of automatic prerequisite generation, as being (a) tricky, (b)
impossible to make completely seamless, (c) inefficient, and (d) wholly
unnecessary.

I wrote a blog post about this which may be interesting:
http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ 
This post obviously makes use of GNU make-specific features but I don't
believe there's anything there that couldn't be also implemented in
standard make. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-03 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-03 15:23 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005095) psmith (developer) - 2020-11-03 15:23
 https://austingroupbugs.net/view.php?id=1325#c5095 
-- 
Thank you for all your effort Geoff!  I like this version very much.  A few
notes / clarifying questions:

Regarding the change to page 2891 lines 97033-97035: is this because smake
/ SunPro make will re-consider and re-build included makefiles if they
appear as prerequisites to another target?  GNU make never reconsiders a
target after it's been considered, regardless of whether or not it's an
included file.

Regarding this:

> If a target rule or inference rule for the pathname has been parsed
before the include line is parsed, make shall use the rule to attempt to
create the file or to bring it up-to-date.

I don't think this is quite correct.  In GNU make, anyway, it's not
required that an inference rule parsed before the include line is parsed
will always be used.  If a target rule, or a different inference rule, is
defined after the include line then that will be used instead.

For the section "Additionally in this case, the new contents of the file,
if it is successfully created or updated, shall be used when processing
rules for the following targets after the makefile(s) have been read:"
followed by the bullet points, can you give me a hint as to what we are
trying to ensure or prevent by this text?  By listing these specific things
I worry that I will overlook something that we do today that will become
invalid as a result of this text.  Is there a difference we are trying to
surface between how included files normally work, and these rebuilt
included files work?  Is it not sufficient to say something like, the new
contents of the file will be used when processing rules that appear after
the included file as if the text had appeared in the makefile?

In the portability text (second bullet), a portable workaround to using a
macro defined in one included file in the include line of another, is to
put the second include _inside_ the first included file instead of in the
outer including makefile.  This can be less convenient in some situations
but it will work in all situations.

In the portability text I don't understand the need for the third
bullet...?

In the make examples text I am not sure what the point of the initial
-include line is... why is that needed in this situation?  It also seems
that each target will list all its prerequisites twice, although of course
that's not a problem.  You might also consider using the make variable
$(CC) in these examples rather than hardcoding the c99 value.

Regarding the issue of searching of include files, I don't agree with this
as written.  I do understand the problem you're addressing, and I have no
problems making some types of changes to GNU make to meet the standard, but
the loss of functionality here is too great.

Consider an environment where users want to place their included files in a
separate directory "ddir" then use "include $(CFILES:.c=.d)" and adds
"ddir" to the include file search path.  This won't work as expected with
this wording.

One way to square this circle may be to provide a bit more context around
included search paths; we may need to make a 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-11-03 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-11-03 15:23 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005094) psmith (developer) - 2020-11-03 15:23
 https://austingroupbugs.net/view.php?id=1325#c5094 
-- 
Thank you for all your effort Geoff!  I like this version very much.  A few
notes / clarifying questions:

Regarding the change to page 2891 lines 97033-97035: is this because smake
/ SunPro make will re-consider and re-build included makefiles if they
appear as prerequisites to another target?  GNU make never reconsiders a
target after it's been considered, regardless of whether or not it's an
included file.

Regarding this:

> If a target rule or inference rule for the pathname has been parsed
before the include line is parsed, make shall use the rule to attempt to
create the file or to bring it up-to-date.

I don't think this is quite correct.  In GNU make, anyway, it's not
required that an inference rule parsed before the include line is parsed
will always be used.  If a target rule, or a different inference rule, is
defined after the include line then that will be used instead.

For the section "Additionally in this case, the new contents of the file,
if it is successfully created or updated, shall be used when processing
rules for the following targets after the makefile(s) have been read:"
followed by the bullet points, can you give me a hint as to what we are
trying to ensure or prevent by this text?  By listing these specific things
I worry that I will overlook something that we do today that will become
invalid as a result of this text.  Is there a difference we are trying to
surface between how included files normally work, and these rebuilt
included files work?  Is it not sufficient to say something like, the new
contents of the file will be used when processing rules that appear after
the included file as if the text had appeared in the makefile?

In the portability text (second bullet), a portable workaround to using a
macro defined in one included file in the include line of another, is to
put the second include _inside_ the first included file instead of in the
outer including makefile.  This can be less convenient in some situations
but it will work in all situations.

In the portability text I don't understand the need for the third
bullet...?

In the make examples text I am not sure what the point of the initial
-include line is... why is that needed in this situation?  It also seems
that each target will list all its prerequisites twice, although of course
that's not a problem.  You might also consider using the make variable
$(CC) in these examples rather than hardcoding the c99 value.

Regarding the issue of searching of include files, I don't agree with this
as written.  I do understand the problem you're addressing, and I have no
problems making some types of changes to GNU make to meet the standard, but
the loss of functionality here is too great.

Consider an environment where users want to place their included files in a
separate directory "ddir" then use "include $(CFILES:.c=.d)" and adds
"ddir" to the include file search path.  This won't work as expected with
this wording.

One way to square this circle may be to provide a bit more context around
included search paths; we may need to make a 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-31 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-31 09:21 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005090) geoffclare (manager) - 2020-10-31 09:21
 https://austingroupbugs.net/view.php?id=1325#c5090 
-- 
Re: https://austingroupbugs.net/view.php?id=1325#c5089 Good catch. I've updated
the application usage section of
https://austingroupbugs.net/view.php?id=1325#c5087, although not quite in the
way you suggested. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076  
2020-10-28 09:14 geoffclare Note Added: 0005077  
2020-10-28 11:23 joerg  Note Added: 0005078  
2020-10-28 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-30 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-30 18:52 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005089) joerg (reporter) - 2020-10-30 18:52
 https://austingroupbugs.net/view.php?id=1325#c5089 
-- 
I did read https://austingroupbugs.net/view.php?id=1325#c5087 and I am not yet
sure whether I fully done with my
review yet, but we need to change:

Rules for creating include files do not depend on the contents of any
earlier include file. For example, defining a macro in an include file and
using that macro in a later include line should be avoided.

into 

Rules for creating include files do not depend on the contents of any
earlier non-statoc include file. For example, defining a macro in an
include file and using that macro in a later include line should be
avoided. A non-static include file is an include file that has a rule to
create or update that include file. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-30 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-30 15:56 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005087) geoffclare (manager) - 2020-10-30 15:56
 https://austingroupbugs.net/view.php?id=1325#c5087 
-- 
Here is an alternative proposal that is intended to allow GNU make's
delayed remaking of include files.  It also fixes some things we missed in
the original resolution:The wording change was made in text
whose context is a relative pathname. It needs to be separated from that
context so that it also applies to absolute pathnames.

The -n option is ignored when the command lines in a rule are being
processed in order to create or update an include file. GNU make also does
the same for -q and -t, but SunPro make doesn't.
I have also proposed a change to c99 -E to ensure it is usable for
generating dependencies. The change is the minimum needed for this purpose
- a more detailed change could be made instead if desired. Alternatively we
could add a -M option.

Page and line numbers are for Issue 8 draft 1.

On page 2888 line 96923 (make -n option), change:However, lines
with a  ('+') prefix shall be
executed.to:However, lines with a 
('+') prefix and lines being processed in order to create an include file
or to bring it up-to-date (see Include Lines in the EXTENDED
DESCRIPTION section) shall be executed.
On page 2889 lines 96929-96931 (make -q option), after:However,
a makefile command line (associated with the targets) with a 
('+') prefix shall be executedadd:and it is
unspecified whether command lines that do not have a  prefix and
are being processed in order to create an include file or to bring it
up-to-date (see Include Lines in the EXTENDED DESCRIPTION section)
are executed
On page 2889 lines 96943-96944 (make -t option), after:However,
a command line with a  ('+') prefix shall be
executed.add:and it is unspecified whether command
lines that do not have a  prefix and are being processed in
order to create an include file or to bring it up-to-date (see Include
Lines in the EXTENDED DESCRIPTION section) are executed
On page 2891 lines 97033-97035 (make extended description),
after:A target shall be considered up-to-date if it exists and
is newer than all of its dependencies, or if it has already been made
up-to-date by the current invocation of make (regardless of the
target's existence or age)add:, except that
targets that are made up-to-date in order for them to be processed as
include line pathnames (see Include Lines below) need not be
considered up-to-date during later processing
On page 2892 lines 97097-97102 (make extended description),
change:Each pathname that does not begin with a '/'
shall be treated as relative to the current working directory of the
process, not relative to the directory containing the makefile. If the file
does not exist in this location, it is unspecified whether additional
directories are searched. If the file cannot be opened, and if the word
include was prefixed with a  character, the file shall
be ignored. Otherwise, if the file cannot be opened an error shall
occur.to:If the pathname does
not begin with a '/', it shall be treated as relative to the current
working directory of the process, not relative to the directory containing
the makefile.
If a target rule or inference rule for the 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 15:08 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005084) shware_systems (reporter) - 2020-10-28 15:08
 https://austingroupbugs.net/view.php?id=1325#c5084 
-- 
Re: 5082
Since a file that does not exist has 0 lines, same as a file of size 0, the
standard does specify that the attempt to replace the include line with the
file contents means the include directive gets ignored. Any other
interpretation I see as presuming things not in evidence; it would take an
explicit allowance for other behaviors for these to be conforming. Granted,
other behaviors are desirable, but that is what these reports are adding. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 14:53 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005083) psmith (developer) - 2020-10-28 14:53
 https://austingroupbugs.net/view.php?id=1325#c5083 
-- 
Yes, that part of the manual is out of date.  Thanks for pointing it out! 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076  
2020-10-28 09:14 geoffclare Note Added: 0005077  
2020-10-28 11:23 joerg  Note Added: 0005078  
2020-10-28 12:16 joerg  Note Edited: 0005078 
2020-10-28 13:47 psmith Note Added: 0005079

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 14:50 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005082) psmith (developer) - 2020-10-28 14:50
 https://austingroupbugs.net/view.php?id=1325#c5082 
-- 
Just to note, while the standard can define that mk1 is rebuilt in this
makefile:

  .POSIX:
  mk1: ; echo all: > mk1
  include mk1

it can't be the case that a makefile like this:

  .POSIX:
  include mk1
  mk1: ; echo all: > mk1

is required to fail.  The current standard doesn't explicitly define what
happens if a file to be included does not exist and the changes made here
should not define it either. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 0005076 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 14:49 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005081) psmith (developer) - 2020-10-28 14:49
 https://austingroupbugs.net/view.php?id=1325#c5081 
-- 
> GNU make of course could continue to implement its current behavior as an
extension. GNU make would however be required to add an attempt to remake
an include file just before it is going to be opened.

Clearly that's not going to work.

First, as I already explained above, currently it is not possible for GNU
make to transition back from "building targets" to "reading makefiles" and
implementing this new behavior would be a very significant amount of work. 
This is not just a simple little change.

Second, it would mean that for every included makefile GNU make would have
to try to build it twice: once before it was included and then again after
all makefiles are read in.

Third, it's not possible to be backward compatible.  Consider this
situation:

  all:

  %.mk : ; echo 'all: ; echo foo' > $@

  include foo.mk

  foo.mk: ; echo 'all: ; echo bar' > foo.mk

In current GNU make the result will be "echo bar".

After the change you suggest, the result will be "echo foo". 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 14:44 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005080) geoffclare (manager) - 2020-10-28 14:44
 https://austingroupbugs.net/view.php?id=1325#c5080 
-- 
Re: https://austingroupbugs.net/view.php?id=1325#c5079 My statement was based on
the GNU make manual.

https://www.gnu.org/software/make/manual/html_node/Include.html

"If an included makefile cannot be found in any of these directories, a
warning message is generated, but it is not an immediately fatal error;
processing of the makefile containing the include continues."

Is that part of the online manual out of date? 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 13:47 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005079) psmith (developer) - 2020-10-28 13:47
 https://austingroupbugs.net/view.php?id=1325#c5079 
-- 
> That's because it writes to standard error when its exit status is 0 and
the standard does not allow that. In order to conform it would have to
somehow defer writing diagnostic messages about include files until it
knows what the exit status is going to be.

To the best of my knowledge, GNU make does not write any messages about
include files at all, to anywhere, until it knows whether they can be
remade.

  $ cat Makefile
  /tmp/foo.mk: ; touch /tmp/foo.mk
  include /tmp/foo.mk
  all: ; echo hi

  $ rm -f /tmp/foo.mk && make
  touch /tmp/foo.mk
  echo hi
  hi
  $ echo $?

  $ rm -f /tmp/foo.mk && make >/dev/null
  $ echo $?
  0

You may be referring to an old bug, that has since been fixed, that warned
about an included makefile first before it was remade.  Or you may be
referring to an issue I'm not aware of. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith   

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 11:23 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005078) joerg (reporter) - 2020-10-28 11:23
 https://austingroupbugs.net/view.php?id=1325#c5078 
-- 
Re: https://austingroupbugs.net/view.php?id=1325#c5077 The current wording from
https://austingroupbugs.net/view.php?id=1325#c5066 is not in conflict
with the current behavior of GNU make and for this reason, there is no need
to change the wording.

Given that there are many existing makefiles that fail with the first run
of GNU make on a maiden file tree, I see no benefit with the current
behavior from GNU make. But

If there are really benefits with the current behavior in GNU make, GNU
make of course could continue to implement its current behavior as an
extension. GNU make would however be required to add an attempt to remake
an include file just before it is going to be opened. This would fix bugs
reported against GNU make since 1998 and this would permit to grant a
common behavior amongst various make implementations.

There are currently four actively maintained make implementations that
implement POSIX compliance or near POSIX compliance and that need to be
taken into consideration:

smake exists since 40 years and implements the method from SunPro Make for
the include directive since 1995

SunPro Make exists since nearly 35 years. It introduced the include feature
on UNIX.

BSD make exists since 32 years (originally as pmake) and currently does not
apply rules for the include directive. This needs to be enhanced, but there
is no existing behavior that could be in conflict and BSD make is currently
the make implementation with the biggest deviations from existing POSIX
behavior anyway.

GNU make exists since 31 years and uses a method that could be made
compatible with few effort without breaking compatibility to its existing
behavior. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-28 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-28 09:14 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005077) geoffclare (manager) - 2020-10-28 09:14
 https://austingroupbugs.net/view.php?id=1325#c5077 
-- 
Re https://austingroupbugs.net/view.php?id=1325#c5076 The suggested alternative
wording would still require a
change to GNU make in order for it to conform. That's because it writes to
standard error when its exit status is 0 and the standard does not allow
that. In order to conform it would have to somehow defer writing diagnostic
messages about include files until it knows what the exit status is going
to be. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071 
2020-10-27 14:04 psmith Note Added: 0005072  
2020-10-27 14:36 psmith Note Added: 0005073  
2020-10-27 15:24 joerg  Note Added: 0005074  
2020-10-27 15:26 joerg  Note Edited: 0005074 
2020-10-27 18:28 psmith Note Added: 0005075  
2020-10-27 18:30 psmith Note Added: 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 18:30 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005076) psmith (developer) - 2020-10-27 18:30
 https://austingroupbugs.net/view.php?id=1325#c5076 
-- 
The contention above that it is currently possible for existing makefiles
to work with both SunPro make and GNU make shows that it should be possible
to provide compatible wording.

The phrase "make will use the rule to attempt to create the file or to
bring it up to date before opening the file" should be removed, and of
course the commentary regarding "historical" versions of GNU make should
also be removed.

For example, I would be OK with wording that:

(a) required rules that rebuilt makefiles to appear before the include
itself, and
(b) required that missing makefiles are rebuilt and the contents of the
rebuilt makefiles are read by make, before the goal targets are checked

For (a), GNU make would simply implement an enhancement over the standard
which allowed rules to also appear after the include line.  For (b), that
requirement is satisfied today by both major implementations.

If you wanted to add in a statement that this is only required for
makefiles that are missing that's OK as long as it doesn't preclude
rebuilding makefiles which are present but out of date, and it doesn't
preclude using normal prerequisite detection to decide which include files
are out of date; these can be enhancements provided by GNU make. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 18:28 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005075) psmith (developer) - 2020-10-27 18:28
 https://austingroupbugs.net/view.php?id=1325#c5075 
-- 
I have seen no indication anywhere from either Roland or Richard that their
intent was to copy (as in, duplicate) the behavior of SunPro make.  That is
an assumption on your part which you repeatedly state, that I have never
seen anyone corroborate.  It seems unlikely to me that this would have been
the intent since the behaviors are so different: such difference seems
highly unlikely to have been a mistake.  It's quite possible that they
heard of the idea of rebuilding makefiles in the abstract, but consciously
decided to implement it in a way that they felt was better.

Put another way, it is absolutely not true that GNU make's implementation
of include is somehow just a buggy attempt to duplicate SunPro make's
implementation where we could standardize SunPro make's behavior and "fix
some bugs" in GNU make's implementation.  It is a completely different
implementation with different intentions and real advantages.

In any event, the intent of people back in the 1980's is irrelevant to us
here.  The reality today is that, regardless of provenance, the algorithm I
stated above is the way that GNU make handles rebuilding included makefiles
and has done for 30 years.

I have no intention of changing it in a totally non-backward-compatible
way, nor will I agree to implement a radically different behavior that
happens only in POSIX mode.

In summary, either the POSIX standard should provide wording which allows
for rebuilding makefiles in a way that does not contradict the current GNU
make behavior, or else we should not add any text about rebuilding
makefiles to the standard and allow the status quo to continue.


As for all the rest of your comments above, needless to say my position is
that you are wrong about some of your statements of fact and I disagree
with your characterization of many other things.  Just one example: your
final paragraph, implying that "the strategy for include files" is
different than that for Makefiles is not correct.  All makefiles, including
default, provided with -f, provided with the MAKEFILES environment
variable, and via include, are treated the same way.

However this is not the right place to discuss things which aren't related
to the standard.  If you want to have a conversation about things like that
feel free to email me privately or use one of the GNU make mailing lists. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online 

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 15:24 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005074) joerg (reporter) - 2020-10-27 15:24
 https://austingroupbugs.net/view.php?id=1325#c5074 
-- 
The include directive has been introduced by SunPro Make in January 1986
together with other features like conditional macro assignments, pattern
macro substitutions and pattern matching implicit rules. The behavior of
SunPro Make did not change since then and is consistent.

gmake first appeared three years later and copied many of the new SunPro
Make features. People would assume that this has been done in a compatible
way.

The current behavior of gmake is not self consistent and even changed
compared to previous gmake versions. The current POSIX text does not break
anything that was not broken before by incompatible changes in gmake
already. You did not mention a single project that would no longer work if
you did make gmake compatible to the include implementation in SunPro Make
and smake.

I am not aware of a single gmake based project that fails with SunPro Make
just beause of the ideosyncratic implementation for the include feature in
gmake. The makefiles designed for gmake typically fail because they are
using non-standad features like "if" and a Makefile that contains .POSIX
and "if" at the same time is definitely non-compliant. In other words: it
seem to be your problem, if you or your customers missuse .POSIX for
purposes other than 100% POSIX compliance. Since SunPro Make is POSIX
certified (via Solaris), I expect that conforming Makefiles that contain a
.POSIX line work with SunPro Make. If they do not, they are not fully
conforming and beyond the scope of this discussion.

Useful make implementations call "sh -ce cmd" since 1976 and never changed
that. If you really like to permit people to use different shell flags, you
could implement the method from smake that is based on MAKE_SHELL_FLAG and
MAKE_SHELL_IFLAG. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 14:36 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005073) psmith (developer) - 2020-10-27 14:36
 https://austingroupbugs.net/view.php?id=1325#c5073 
-- 
> POSIX requires a POSIX compliant behavior only in case that .POSIX
appears in the Makefile. Gmake therefore could use .POSIX to switch to
compliant behavior that matches SunPro Make and smake.

No, that won't happen.

Practically, there are many thousands of makefiles out there which set
.POSIX in order to enable certain types of behavior (primarily the "set -e"
breakage) but which still rely on GNU make's method of rebuilding
makefiles.  I'm definitely not going to break all those makefiles.

Also practically, GNU make's implementation creates a very bright line
between "parsing makefiles" and "building targets", and the transition
across that line is one way.  There is no way to go back to parsing
makefiles (in particular, defining new rules and modifying the DAG) once
GNU make starts building targets.  Supporting this would require complex
changes.  The only way to implement this behavior otherwise would be to
re-exec make after each included makefile has been rebuilt, so its rules
could be parsed in a new invocation.

Philosophically, the POSIX standard should not be changed to require a
major new feature which immediately causes arguably the most widely-used
implementation of make to become non-standard in a fundamental way. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 14:04 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005072) psmith (developer) - 2020-10-27 14:04
 https://austingroupbugs.net/view.php?id=1325#c5072 
-- 
GNU make's algorithm for rebuilding makefiles, which has been in place for
probably 30 years (certainly far enough back that I have no history from
before it was available), works like this:

1. Parse all makefiles; if any included makefiles are missing, make a note
of them
2. After parsing is complete, try to rebuild all makefiles regardless of
whether they are missing or not (even existing makefiles are rebuilt, if
they are out of date)
3. If any required makefile does not exist and could not be created, fail
4. If any makefile was rebuilt, re-exec make and start again.

There are some trade-offs between this algorithm and that implemented by
SunPro make; however GNU make's algorithm provides capability that the
SunPro make algorithm cannot and that capability is considered valuable and
is in very wide-spread use among GNU make users.  I won't change it. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
2020-10-27 13:10 joerg  Note Edited: 0005071

[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 10:09 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005070) geoffclare (manager) - 2020-10-27 10:09
 https://austingroupbugs.net/view.php?id=1325#c5070 
-- 
Re https://austingroupbugs.net/view.php?id=1325#c5068 your example doesn't fit
the situation described in the
text, as a.mk already exists when you run make, whereas the text has the
caveat "that itself needs to be made via a rule". 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-27 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-27 13:09 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005071) joerg (reporter) - 2020-10-27 13:09
 https://austingroupbugs.net/view.php?id=1325#c5071 
-- 
Re: https://austingroupbugs.net/view.php?id=1325#c5068 also note that the
background for deciding to make the
documented behavior mandatory was that our various tests discovered
non-orthogonal behavior in GNU make and even an unexplained incompatibility
between gmake-4.1 and gmake-4.3.

Given that gmake implements other deviations from the POSIX standard (e.g.
space and backslash handling) gmake cannot be used for POSIX makefiles the
way it currently behaves. 

POSIX requires a POSIX compliant behavior only in case that .POSIX appears
in the Makefile. Gmake therefore could use .POSIX switch to compliant
behavior that matches SunPro Make and smake. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
2020-10-27 10:09 geoffclare Note Added: 0005070  
2020-10-27 13:09 joerg  Note Added: 0005071  
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Resolved
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
Resolution: Accepted As Marked
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 16:57 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005068) rhansen (manager) - 2020-10-26 16:57
 https://austingroupbugs.net/view.php?id=1325#c5068 
-- 
> Historical versions of GNU make delay the use of the rule until after all
makefiles have been read,

That is true, but...

> which means that a rule for an include file cannot be defined in an
earlier include file (that itself needs to be made via a rule).

I don't think that is correct. With the following files, make foo
(GNU Make 4.3) properly builds a.mk and foo:

# Makefile
include a.mk
-include b.mk

# a.mk
b.mk:
printf 'foo:\n\techo foo >foo\n' >b.mk

Here is the script I used to test:

#!/bin/sh
d=$(mktemp -d) || exit 1
trap 'rm -rf "$d"' EXIT
cd "$d" &&
printf -- 'include a.mk\n-include b.mk\n' >Makefile &&
printf 'b.mk:\n\tprintf '\''foo:\\n\\techo foo >foo\\n'\'' >b.mk\n' >a.mk
&&
make foo &&
[ -f foo ]

Furthermore, GNU Make 4.3 allows the rule for an include file to be defined
after the include line like this:

# Makefile
-include a.mk
include b.mk

# b.mk
a.mk:
printf 'foo:\n\techo foo >foo\n' >a.mk

Here is the script I used to test:

#!/bin/sh
d=$(mktemp -d) || exit 1
trap 'rm -rf "$d"' EXIT
cd "$d" &&
printf -- 'include a.mk\n-include b.mk\n' >Makefile &&
printf 'b.mk:\n\tprintf '\''foo:\\n\\techo foo >foo\\n'\'' >b.mk\n' >a.mk
&&
make foo &&
[ -f foo ] 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has been UPDATED. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Resolved
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
Resolution: Reopened
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 17:08 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

-- 
 (0005069) nick (manager) - 2020-10-26 17:08
 https://austingroupbugs.net/view.php?id=1325#c5069 
-- 
Reopening in the light of https://austingroupbugs.net/view.php?id=1415 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has been set PARENT OF issue 0001415. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Resolved
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
Resolution: Accepted As Marked
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 15:54 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has been REOPENED. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 22:34 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has been UPDATED. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Under Review
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 22:34 UTC
== 
Summary:Allow make to remake an included file
==
Relationships   ID  Summary
--
parent of   0001415 The text added as a result of Issue #13...
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
2020-10-26 15:54 geoffclare Tag Attached: issue8 
2020-10-26 16:54 nick   Relationship added   parent of 0001415   
2020-10-26 16:57 rhansenNote Added: 0005068  
2020-10-26 16:58 rhansenNote Edited: 0005068 
2020-10-26 17:00 rhansenNote Edited: 0005068 
2020-10-26 17:08 nick   Note Added: 0005069  
2020-10-26 17:08 nick   Resolution   Accepted As Marked =>
Reopened
2020-10-26 22:34 nick   Status   Resolved => Under
Review
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


The following issue has been RESOLVED. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: Resolved
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text:https://austingroupbugs.net/view.php?id=1325#c5066 
Resolution: Accepted As Marked
Fixed in Version:   
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 15:54 UTC
== 
Summary:Allow make to remake an included file
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
2020-10-26 15:54 geoffclare Page Number   => (page or range of
pages)
2020-10-26 15:54 geoffclare Line Number   => (Line or range of
lines)
2020-10-26 15:54 geoffclare Final Accepted Text   =>
https://austingroupbugs.net/view.php?id=1325#c5066
2020-10-26 15:54 geoffclare Status   New => Resolved 
2020-10-26 15:54 geoffclare Resolution   Open => Accepted As
Marked
2020-10-26 15:54 geoffclare version   => Draft 1 
==




[Issue 8 drafts 0001325]: Allow make to remake an included file

2020-10-26 Thread Austin Group Bug Tracker via austin-group-l at The Open Group


A NOTE has been added to this issue. 
== 
https://austingroupbugs.net/view.php?id=1325 
== 
Reported By:dmitry_goncharov
Assigned To:
== 
Project:Issue 8 drafts
Issue ID:   1325
Category:   Shell and Utilities
Type:   Clarification Requested
Severity:   Editorial
Priority:   normal
Status: New
Name:   Dmitry Goncharov 
Organization:
User Reference:  
Section:(section number or name, can be interface name) 
Page Number:(page or range of pages) 
Line Number:(Line or range of lines) 
Final Accepted Text: 
== 
Date Submitted: 2020-02-09 17:17 UTC
Last Modified:  2020-10-26 15:53 UTC
== 
Summary:Allow make to remake an included file
== 

-- 
 (0005066) geoffclare (manager) - 2020-10-26 15:53
 https://austingroupbugs.net/view.php?id=1325#c5066 
-- 
In Issue 8 draft 1 page 2892 lines 97098-97102 (make extended description),
change:If the file does not exist in this location, it is
unspecified whether additional directories are searched. If the file cannot
be opened, and if the word include was prefixed with a
 character, the file shall be ignored. Otherwise, if the file
cannot be opened an error shall occur.to:If a
target rule or inference rule for the pathname has been parsed before the
include line is parsed make shall use the rule to attempt to create
the file or to bring it up to date before opening the file. If the pathname
is relative, the file does not exist, and it cannot be created using such a
rule, it is unspecified whether additional directories are searched for an
existing file of the same relative pathname. If, after applying such a rule
(if any), the file cannot be opened, and if the word include was
prefixed with a  character, the file shall be ignored.
Otherwise, if the file cannot be opened an error shall occur.
In issue 8 draft 1 page 2911 after line 97926 (make rationale), insert a
new paragraph:This standard specifies that if a target rule or
inference rule for an include line pathname has been parsed before the
include line is parsed, make will use the rule to attempt to create
the file or to bring it up to date before opening the file. Historical
versions of GNU make delay the use of the rule until after all
makefiles have been read, which means that a rule for an include file
cannot be defined in an earlier include file (that itself needs to be made
via a rule). Historical versions of BSD make do not attempt to
(re-)make the include file. This standard also specifies that an include
file is first (re-)made if possible, and only if not possible can other
directories be searched. Historical versions of GNU make first
search the include directories, then attempt to (re-)make the include
file(s) in reverse order of the include line's appearance in the makefile.
 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2020-02-09 17:17 dmitry_goncharovNew Issue
2020-02-09 17:17 dmitry_goncharovName  => Dmitry Goncharov
2020-02-09 17:17 dmitry_goncharovSection   => (section number or
name, can be interface name)
2020-02-09 18:29 shware_systems Note Added: 0004780  
2020-02-10 13:27 joerg  Note Added: 0004781  
2020-02-10 13:28 joerg  Note Edited: 0004781 
2020-10-26 15:52 geoffclare Project  Online Pubs => Issue 8
drafts
2020-10-26 15:53 geoffclare Note Added: 0005066  
==