Review request: 8006933: Need to use nawk on Solaris to avoid	awk limitations
    Tim Bell 
    tim.bell at oracle.com
       
    Wed Jan 30 17:39:58 UTC 2013
    
    
  
Second round of this change:
     http://cr.openjdk.java.net/~tbell/8006933/01/
In response to feedback raised on this thread:
David wrote:
> Do we fix the old build in the corba repo too?
No, the old build does not generate accurate dependencies in this area, 
so there is nothing similar to fix - the old corba build is all or nothing.
> Can we also fix the fact that the failure doesn't cause make to detect
> the error? I think that is caused by the whole thing being executed in a
> sub-shell.
I tried without success (many ways) to trap the error from the original 
/usr/bin/awk.  Given that we are using nawk after this change, I'd like 
to move on.
Dmitry wrote:
> It might be better to remove AWK completely
>
> $(FIND) . -type f | sed 's!\./!$3 : $4/!g' > $5
Good idea, but I was not able to implement it because sed does not 
support captures, and the expression suggested above would drop part of 
the string.
Let me give an example:
If the output of the find is ./org/omg/CORBA/StringSeqHolder.java
$3 is /tmp/jdk8/build/solaris-x86-normal-server-release/corba/gensrc/
$4 is 
/tmp/jdk8/corba/src/share/classes/org/omg/PortableInterceptor/CORBAX.idl
$(SED) 's!\./!$3 : $4/!g' would generate:
/tmp/jdk8/build/solaris-x86-normal-server-release/corba/gensrc/ : 
/tmp/jdk8/corba/src/share/classes/org/omg/PortableInterceptor/CORBAX.idl
(losing the /org/omg/CORBA/StringSeqHolder.java substring)
$(SED) 's!\./!$3/!g' | $(NAWK) '{ print $$$$1 ": $4" }' would generate 
what we want:
/tmp/jdk8/build/solaris-x86-normal-server-release/corba/gensrc/org/omg/CORBA/StringSeqHolder.java: 
/tmp/jdk8/corba/src/share/classes/org/omg/PortableInterceptor/CORBAX.idl
(and you can see why the length of the strings becomes a problem for the 
old Solaris awk which predates the Posix standard)
> or ever
>
> find . -type f -printf "$3%s : $4\n"
Another good suggestion, but not all versions of find support printf 
(MacOS,  and /usr/bin/find on Solaris).  It would be possible to use 
/usr/bin/gfind on Solaris, but I don't know of a solution on the Mac.
Tim
> On 01/28/13 02:42, Erik Joelsson wrote:
>> The fix looks good to me. What strikes me most is the use of "sed" 
>> instead of $(SED) on the same line.
>>
>> /Erik
>>
>> On 2013-01-25 11:36, Tim Bell wrote:
>>> Here is the bug report:
>>> http://bugs.sun.com/view_bug.do?bug_id=8006933
>>>
>>> Use nawk instead of awk to avoid "awk: string too long near line 1" 
>>> errors when running idlj in corba.  For new 'build-infra' style 
>>> builds, this needs to be fixed in common/makefiles/IdlCompilation.gmk
>>>
>>> The errors are seen if the path to the build directory in the source 
>>> tree is too long, greater than ~92.
>>>
>>>   http://cr.openjdk.java.net/~tbell/8006933/00/
>>>
>>> Thanks in advance for any feedback.
>>>
>>> Tim
    
    
More information about the build-dev
mailing list