-
Notifications
You must be signed in to change notification settings - Fork 6k
8343883: Cannot resolve user specified toolchain-path for lld after JDK-8338304 #21999
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
👋 Welcome back syan! A progress list of the required criteria for merging this PR into |
@sendaoYan This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 38 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
@sendaoYan The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
GHA report failure 'macos-aarch64 / test - Test (tier1) ' at 'install dependcencies' stage |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work!
make/autoconf/flags-ldflags.m4
Outdated
@@ -74,7 +74,11 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], | |||
# Clang needs the lld linker to work correctly | |||
BASIC_LDFLAGS="-fuse-ld=lld -Wl,--exclude-libs,ALL" | |||
if test "x$CXX_IS_USER_SUPPLIED" = xfalse && test "x$CC_IS_USER_SUPPLIED" = xfalse; then | |||
UTIL_REQUIRE_PROGS(LLD, lld) | |||
if test "x$TOOLCHAIN_PATH" != x; then | |||
UTIL_REQUIRE_PROGS(LLD, lld, $TOOLCHAIN_PATH) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, this is not correct. Did you test this patch without having lld in the toolchain path? Doing this will remove the normal lookup in $PATH
and only look in $TOOLCHAIN_PATH
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After I remove the lld binary from $TOOLCHAIN_PATH
, such as mv /home/yansendao/software/acc/x86_64/bin/lld /tmp/
, the configure command generate configure: error: Could not find required tool for LLD
as expected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the statement UTIL_REQUIRE_PROGS(LLD, lld)
lookup in $PATH
, the line 77 condition statement in this PR has make sure that, and if the configure command doesn't received option --with-toolchain-path
, the normal lookup in $PATH
still work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant, if you have lld in your PATH but not in TOOLCHAIN_PATH and you specify a toolchain path, then your patch will introduce a regression.
My first reaction was that "You need to use I think the proper solution is to remove this setting of the PATH from But. That is a bit of a risky change that can cause breakage, so I will not propose you do it now. |
I created https://bugs.openjdk.org/browse/JDK-8344030 to track the idea of a better solution. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks better, thanks.
@@ -74,7 +74,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], | |||
# Clang needs the lld linker to work correctly | |||
BASIC_LDFLAGS="-fuse-ld=lld -Wl,--exclude-libs,ALL" | |||
if test "x$CXX_IS_USER_SUPPLIED" = xfalse && test "x$CC_IS_USER_SUPPLIED" = xfalse; then | |||
UTIL_REQUIRE_PROGS(LLD, lld) | |||
UTIL_REQUIRE_PROGS(LLD, lld, $TOOLCHAIN_PATH:$PATH) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, I am not 100% sure that this will work if $TOOLCHAIN_PATH is empty. You need to check that. If not, this should probably be fixed in UTIL_CHECK_PROGS instead to allow for that, since this is a more elegant solution if empty path values are allowed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The call tree is UTIL_REQUIRE_PROGS -> UTIL_LOOKUP_PROGS. The UTIL_LOOKUP_PROGS
seems have deal with empty path.
https://github.com/openjdk/jdk/blob/master/make/autoconf/util_paths.m4#L404
And I have verify both set $TOOLCHAIN_PATH
and unset $TOOLCHAIN_PATH
locally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have lld in $PATH
but not in $TOOLCHAIN_PATH
works normal.
Thanks all for the advice and review. The change has been verified locally. /integrate |
Going to push as commit 63eb485.
Your commit was automatically rebased without conflicts. |
@sendaoYan Pushed as commit 63eb485. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Hi all,
After JDK-8338304, below configure command will generate failure
error: Could not find required tool for LLD
. The lld linker located in path which config with option--with-toolchain-path
, but the checkUTIL_REQUIRE_PROGS(LLD, lld)
introduced by JDK-8338304 was unable to find the lld. This PR add the condition to deal with user specidied--with-toolchain-path
to find the correct lld fullpath. The change has beeen verified locally, trivial fix, the risk is low.Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/21999/head:pull/21999
$ git checkout pull/21999
Update a local copy of the PR:
$ git checkout pull/21999
$ git pull https://git.openjdk.org/jdk.git pull/21999/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 21999
View PR using the GUI difftool:
$ git pr show -t 21999
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/21999.diff
Using Webrev
Link to Webrev Comment