Skip to content
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

Fix handling of linkmode from attr and config setting #3615

Closed

Conversation

HakanSunay
Copy link

What type of PR is this?

Bug fix

What does this PR do? Why is it needed?

This PR enables proper functionality of go_binary and go_test rules with --@io_bazel_rules_go//go/config:linkmode=X, where X is considered as pie in the context of this text, for simplicity.

Previously, when building go_binary and go_test rules with --@io_bazel_rules_go//go/config:linkmode=pie, the configuration parameter would be disregarded due to the presence of a default value for the linkmode attribute in the rules. This default attribute value would always be used during the transition.

With this update, if --@io_bazel_rules_go//go/config:linkmode=pie is set, it will be applied to all valid rules through //go/config:linkmode. If both the configuration option and the attribute are set, the attribute takes precedence, providing more precise control.

In contrast, if the attribute is explicitly set to "normal", the configuration option will be given priority. To modify this behavior, it might be necessary to update the default value of the linkmode attribute to an empty string or use a mechanism (if such exists) that can differentiate between default and user-specified values.

Which issues(s) does this PR fix?

Fixes #3614

Other notes for review

Open to testing suggestions.

fmeum added a commit that referenced this pull request Jul 17, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615
fmeum added a commit that referenced this pull request Jul 17, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615

Co-authored-by: Hakan Halil <hhalil@vmware.com>
fmeum added a commit that referenced this pull request Jul 17, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615

Co-authored-by: Hakan Halil <hhalil@vmware.com>
@fmeum
Copy link
Collaborator

fmeum commented Jul 17, 2023

I looked into this and implemented your follow-up suggestion (add a dedicated default value for the linkmode attribute) in #3627, which also seems to resolves the issue. Please take a look and verify that it solves the problem you are experiencing.

fmeum added a commit that referenced this pull request Jul 17, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615

Co-authored-by: Hakan Halil <hhalil@vmware.com>
fmeum added a commit that referenced this pull request Jul 17, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615
fmeum added a commit that referenced this pull request Jul 17, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615
fmeum added a commit that referenced this pull request Jul 18, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615
@fmeum fmeum closed this in #3627 Jul 18, 2023
fmeum added a commit that referenced this pull request Jul 18, 2023
The value of the flag was always overriden by the `linkmode` `go_binary`
attribute, even if that attribute was at its default (`normal`) value.
Instead, use a default of `auto` to distinguish this case from the case
where no attribute value has been set explicitly.

Fixes #3614
Closes #3615
@HakanSunay HakanSunay deleted the topic/rules_go/issue-3614 branch July 18, 2023 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

go_binary and go_test rules do not take --@io_bazel_rules_go//go/config:linkmode=pie into account
2 participants