View Issue Details

IDProjectCategoryView StatusLast Update
00006021003.1(2008)/Issue 7Shell and Utilitiespublic2019-06-10 08:55
Reporteruser124Assigned Toajosey  
PrioritynormalSeverityCommentTypeClarification Requested
Status ClosedResolutionAccepted As Marked 
NameYury Pukhalsky
Organization
User Reference
Sectionmake
Page Number2911
Line Number95883-95887
Interp StatusApproved
Final Accepted Text0000602:0001363
Summary0000602: Chain inference rules
DescriptionI've used Base_TC1_Draft3.pdf [EDIT: Page and line numbers changed to Issue 7 (2008)] for the reference.

In line 95629 it's written that:

A target is considered out-of-date if it is older than any of its prerequisites or if it does not exist. The make utility shall treat all prerequisites as targets themselves and recursively ensure that they are up-to-date…

The paragraph starting with 95883 sets forth the methods to update a target.

And more specifically, in lines starting from 95885:

If the .s1 suffix is found in .SUFFIXES, the inference rules shall be searched in the order defined for the first .s2.s1 rule whose prerequisite file ( $*.s2) exists. If the target is out-of-date with respect to this prerequisite, the commands for that inference rule shall be executed.

Therefore it sets the methods to resolve chain rules:
.a.b:

.b.c:


I understand that according to the standard if in the beginning we have only
file.a and file.b and file.c don't exist it should properly make file.b and then
file.c. While for example in the HP-UX make it's not so. In absence of
intermediate file.b the make stops with "don't know how to make" error.

See http://lists.gnu.org/archive/html/automake/2012-07/msg00054.html for the
details.
Desired ActionAm I right that HP-UX make behaviour violates the standard?

And also probably if my conclusions are true, this point about chain suffix rules should be clarified in the standard.
Tagstc2-2008

Activities

geoffclare

2012-09-12 16:11

manager   bugnote:0001363

Interpretation response
------------------------
The standard is unclear on this issue, and no conformance distinction
can be made between alternative implementations based on this. This is
being referred to the sponsor.

Rationale:
-------------
The behavior noticed in HP-UX does not violate what the standard
was intended to require. However, the standard could be misread
to reach the conclusion implied by this defect report. The changes
suggested below explicitly state the required behavior and allow
extensions to provide inference rule chaining when intermediate
targets are not specified in the makefile.

Notes to the Editor (not part of this interpretation):
-------------------------------------------------------

At page 2917 line 95916 change:

Its prerequisites in turn shall be processed recursively until a
target is found that has no prerequisites, at which point the
recursion stops.

to:


Its prerequisites in turn shall be processed recursively until a
target is found that has no prerequisites, or further recursion would
require applying two inference rules one immediately after the other,
at which point the recursion shall stop. As an extension,
implementations may continue recursion when two or more successive
inference rules need to be applied; however, if there are multiple
different chains of such rules that could be used to create the
target, it is unspecified which chain is used.

ajosey

2013-03-29 08:06

manager   bugnote:0001525

Interpretation Proposed 29 Mar 2013

ajosey

2013-05-03 12:18

manager   bugnote:0001570

Interpretation approved 3 May 2013

Issue History

Date Modified Username Field Change
2012-09-07 07:50 user124 New Issue
2012-09-07 07:50 user124 Status New => Under Review
2012-09-07 07:50 user124 Assigned To => ajosey
2012-09-07 07:50 user124 Name => Yury Pukhalsky
2012-09-07 07:50 user124 Section => make
2012-09-07 07:50 user124 Page Number => 2943
2012-09-07 07:50 user124 Line Number => 97362-97366
2012-09-12 15:26 msbrown Project 1003.1(2004)/Issue 6 => 1003.1(2008)/Issue 7
2012-09-12 15:32 msbrown Page Number 2943 => 2911
2012-09-12 15:32 msbrown Line Number 97362-97366 => 95883-95887
2012-09-12 15:32 msbrown Interp Status => ---
2012-09-12 15:32 msbrown Description Updated
2012-09-12 15:33 msbrown Description Updated
2012-09-12 15:33 msbrown Description Updated
2012-09-12 16:11 geoffclare Interp Status --- => Pending
2012-09-12 16:11 geoffclare Note Added: 0001363
2012-09-12 16:11 geoffclare Status Under Review => Interpretation Required
2012-09-12 16:11 geoffclare Resolution Open => Accepted As Marked
2012-09-12 16:12 geoffclare Final Accepted Text => 0000602:0001363
2012-09-12 16:13 geoffclare Tag Attached: tc2-2008
2013-03-29 08:06 ajosey Interp Status Pending => Proposed
2013-03-29 08:06 ajosey Note Added: 0001525
2013-05-03 12:18 ajosey Interp Status Proposed => Approved
2013-05-03 12:18 ajosey Note Added: 0001570
2019-06-10 08:55 agadmin Status Interpretation Required => Closed