View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000602 | 1003.1(2008)/Issue 7 | Shell and Utilities | public | 2012-09-07 07:50 | 2019-06-10 08:55 |
| Reporter | Assigned To | ajosey | |||
| Priority | normal | Severity | Comment | Type | Clarification Requested |
| Status | Closed | Resolution | Accepted As Marked | ||
| Name | Yury Pukhalsky | ||||
| Organization | |||||
| User Reference | |||||
| Section | make | ||||
| Page Number | 2911 | ||||
| Line Number | 95883-95887 | ||||
| Interp Status | Approved | ||||
| Final Accepted Text | 0000602:0001363 | ||||
| Summary | 0000602: Chain inference rules | ||||
| Description | I'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 Action | Am 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. | ||||
| Tags | tc2-2008 | ||||
|
|
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. |
|
|
Interpretation Proposed 29 Mar 2013 |
|
|
Interpretation approved 3 May 2013 |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2012-09-07 07:50 |
|
New Issue | |
| 2012-09-07 07:50 |
|
Status | New => Under Review |
| 2012-09-07 07:50 |
|
Assigned To | => ajosey |
| 2012-09-07 07:50 |
|
Name | => Yury Pukhalsky |
| 2012-09-07 07:50 |
|
Section | => make |
| 2012-09-07 07:50 |
|
Page Number | => 2943 |
| 2012-09-07 07:50 |
|
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 |