RFR: 8351029: IncludeCustomExtension does not work on cygwin with source code below /home
Magnus Ihse Bursie
ihse at openjdk.org
Wed May 7 21:44:53 UTC 2025
On Wed, 7 May 2025 21:17:47 GMT, Erik Joelsson <erikj at openjdk.org> wrote:
>> If you check out your source code in Cygwin, somewhere under /home/... (as opposed to /cygpath/...), IncludeCustomExtension does not work.
>>
>> The problem is that TOPDIR gets a different lexical value from the spec.gmk file when setup in Makefile, even if this was the same directory. Since THIS_INCLUDE is calculated as a relative path by string substitution of $(TOPDIR), the path failed to relativize correctly.
>
> make/PreInitSupport.gmk line 256:
>
>> 254: # We need to include the given SPEC file to setup TOPDIR properly
>> 255: SPEC_FILE := $(strip $2)
>> 256: -include $$(SPEC_FILE)
>
> Is it safe to include SPEC here? I thought the point of PreInit.gmk was that it didn't load it.
Yeah, it is a bit scary. I don't really like it either. I tested this and it seemed okay, but we are not sure we are including the proper spec at this point, since we can pick an arbitrary spec file for e.g. tab expansion. I can't really say what could go wrong, but it is more of the lines "this is not obviously wrong" rather than "this is obviously right".
I also toyed with the idea of extracting the TOPDIR line from the spec file, but that would mean accessing grep (and possibly some other tool like sed, awk or cut) before we have properly checked for that, and we have not done anything like that so early up until now, so that was not attractive either.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25100#discussion_r2078535348
More information about the build-dev
mailing list