On 31/01/2013 3:39 AM, Tim Bell wrote:
Second round of this change:

http://cr.openjdk.java.net/~tbell/8006933/01/

Ok.

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.

You mean even though the corba Defs-utils.gmk defines NAWK as awk this isn't a problem because it doesn't actually get used?

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.

Ok. I did some experimenting too and am a bit perplexed as, as far as I can tell, the sub-shell exits with the return code from the last command. So I don't understand why make did not detect this error. :(

Thanks,
David

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

Reply via email to