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

java_binary wrapper should forward restricted_to #20600

Closed
wants to merge 1 commit into from

Conversation

tgeng
Copy link
Contributor

@tgeng tgeng commented Dec 18, 2023

Otherwise, the synthetic deploy jar target won't be buildable if the java_binary has restricted_to set to a non-default value. For example, consider the following top-level BUILD file.

environment_group(
    name = "foo-env",
    defaults = [
        "foo-default",
    ],
    environments = [
        "foo-default",
        "foo-custom",
    ],
)

environment(
    name = "foo-default",
)

environment(
    name = "foo-custom",
)

java_binary(
    name = "foo",
    create_executable = False,
    restricted_to = ["foo-custom"],
)

With Bazel 7, one gets an error when building the synthetic foo_deployjars_internal_rule.

> bazel build //:foo_deployjars_internal_rule
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: in deploy_jars_nonexec rule //:foo_deployjars_internal_rule: dependency //:foo doesn't support expected environment: //:foo-default
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: in deploy_jars_nonexec rule //:foo_deployjars_internal_rule: the current command line flags disqualify all supported environments because of incompatible select() paths:
 
  environment: //:foo-default
    removed by: //:foo_deployjars_internal_rule (/Users/tgeng/tmp/java_playground/BUILD:20:12)
    because of a select() that chooses dep: //:foo
    which lacks: //:foo-default

To see why, run: blaze build --target_environment=//:foo-default //:foo
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: Analysis of target '//:foo_deployjars_internal_rule' failed
ERROR: Analysis of target '//:foo_deployjars_internal_rule' failed; build aborted
INFO: Elapsed time: 0.070s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully

Otherwise, the synthetic deploy jar target won't be buildable if the
`java_binary` has `restricted_to` set to a non-default value.
@github-actions github-actions bot added the awaiting-review PR is awaiting review from an assigned reviewer label Dec 18, 2023
@sgowroji sgowroji added the team-Rules-Java Issues for Java rules label Dec 19, 2023
@hvadehra hvadehra added awaiting-PR-merge PR has been approved by a reviewer and is ready to be merge internally and removed awaiting-review PR is awaiting review from an assigned reviewer labels Dec 19, 2023
@hvadehra
Copy link
Member

@bazel-io flag

@bazel-io bazel-io added the potential release blocker Flagged by community members using "@bazel-io flag". Should be added to a release blocker milestone label Dec 19, 2023
@fmeum
Copy link
Collaborator

fmeum commented Dec 19, 2023

@bazel-io fork 7.0.1

@bazel-io bazel-io removed the potential release blocker Flagged by community members using "@bazel-io flag". Should be added to a release blocker milestone label Dec 19, 2023
@github-actions github-actions bot removed the awaiting-PR-merge PR has been approved by a reviewer and is ready to be merge internally label Dec 19, 2023
bazel-io pushed a commit to bazel-io/bazel that referenced this pull request Dec 19, 2023
Otherwise, the synthetic deploy jar target won't be buildable if the `java_binary` has `restricted_to` set to a non-default value. For example, consider the following top-level `BUILD` file.
```
environment_group(
    name = "foo-env",
    defaults = [
        "foo-default",
    ],
    environments = [
        "foo-default",
        "foo-custom",
    ],
)

environment(
    name = "foo-default",
)

environment(
    name = "foo-custom",
)

java_binary(
    name = "foo",
    create_executable = False,
    restricted_to = ["foo-custom"],
)
```

With Bazel 7, one gets an error when building the synthetic `foo_deployjars_internal_rule`.
```
> bazel build //:foo_deployjars_internal_rule
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: in deploy_jars_nonexec rule //:foo_deployjars_internal_rule: dependency //:foo doesn't support expected environment: //:foo-default
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: in deploy_jars_nonexec rule //:foo_deployjars_internal_rule: the current command line flags disqualify all supported environments because of incompatible select() paths:

  environment: //:foo-default
    removed by: //:foo_deployjars_internal_rule (/Users/tgeng/tmp/java_playground/BUILD:20:12)
    because of a select() that chooses dep: //:foo
    which lacks: //:foo-default

To see why, run: blaze build --target_environment=//:foo-default //:foo
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: Analysis of target '//:foo_deployjars_internal_rule' failed
ERROR: Analysis of target '//:foo_deployjars_internal_rule' failed; build aborted
INFO: Elapsed time: 0.070s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully
```

Closes bazelbuild#20600.

PiperOrigin-RevId: 592249456
Change-Id: Ifb98c6afff7e49ca25f5b3d570f081e578e85cdb
iancha1992 pushed a commit that referenced this pull request Dec 19, 2023
Otherwise, the synthetic deploy jar target won't be buildable if the
`java_binary` has `restricted_to` set to a non-default value. For
example, consider the following top-level `BUILD` file.
```
environment_group(
    name = "foo-env",
    defaults = [
        "foo-default",
    ],
    environments = [
        "foo-default",
        "foo-custom",
    ],
)

environment(
    name = "foo-default",
)

environment(
    name = "foo-custom",
)

java_binary(
    name = "foo",
    create_executable = False,
    restricted_to = ["foo-custom"],
)
```

With Bazel 7, one gets an error when building the synthetic
`foo_deployjars_internal_rule`.
```
> bazel build //:foo_deployjars_internal_rule
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: in deploy_jars_nonexec rule //:foo_deployjars_internal_rule: dependency //:foo doesn't support expected environment: //:foo-default
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: in deploy_jars_nonexec rule //:foo_deployjars_internal_rule: the current command line flags disqualify all supported environments because of incompatible select() paths:

  environment: //:foo-default
    removed by: //:foo_deployjars_internal_rule (/Users/tgeng/tmp/java_playground/BUILD:20:12)
    because of a select() that chooses dep: //:foo
    which lacks: //:foo-default

To see why, run: blaze build --target_environment=//:foo-default //:foo
ERROR: /Users/tgeng/tmp/java_playground/BUILD:20:12: Analysis of target '//:foo_deployjars_internal_rule' failed
ERROR: Analysis of target '//:foo_deployjars_internal_rule' failed; build aborted
INFO: Elapsed time: 0.070s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully
```

Closes #20600.

Commit
04c1577

PiperOrigin-RevId: 592249456
Change-Id: Ifb98c6afff7e49ca25f5b3d570f081e578e85cdb

Co-authored-by: Tianyu Geng <[email protected]>
@iancha1992
Copy link
Member

@bazel-io fork 7.1.0

@iancha1992
Copy link
Member

The changes in this PR have been included in Bazel 7.0.1 RC2. Please test out the release candidate and report any issues as soon as possible. If you're using Bazelisk, you can point to the latest RC by setting USE_BAZEL_VERSION=last_rc.
Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
team-Rules-Java Issues for Java rules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants