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

Refactor rules into configurable phases #865

Merged
merged 32 commits into from
Dec 25, 2019

Conversation

borkaehw
Copy link
Contributor

@borkaehw borkaehw commented Oct 23, 2019

Description

This is the first step we would like to take to merge bazelbuild/rules_scala and higherkindness/rules_scala. We are turning the implementation part into pipeline.

Details in this design doc. Feel free to leave comment in the design doc or this PR.

The massive PR is just so people can see the full idea but that we're happy to break it up into multiple PRs.

Motivation

We learned a good lesson from Andy Scott's work of converting higherkindness/rules_scala into configurable phases. This will help us to move custom functionality into bazelbuild/rules_scala.

@borkaehw borkaehw force-pushed the customizable-phase branch 2 times, most recently from c314492 to 28f8495 Compare October 24, 2019 17:07
@borkaehw
Copy link
Contributor Author

@andyscott Could you also take a look when you get a chance? We would like to have your feedback since you are the original author of phase architecture. 😃

@ianoc
Copy link
Contributor

ianoc commented Oct 24, 2019

Is this not really just a different implementation of scala rules looking at the size of the replacement?

@borkaehw
Copy link
Contributor Author

@ianoc There are two commits.

The first one is all about moving code around, grouping common code together. For example, We grouped related helper functions that used to be in rule_impl.bzl into phase_compile.bzl. This way we can make them private functions and it's clear they are not used in other places. We are able to simplify code further more by moving code in rule_impe.bzl and common.bzl to the file that those functions are only imported from, but it will make this PR bigger. We could do that in other PR.

The second one is about implementing the customizability of phase architecture. It includes some changes to the first commit and tests that could also be an example of how we can add zinc compilation step in the future.

So the answer is no, this is not just a different implementation. It also introduces a more flexible structure for future features.

@ianoc
Copy link
Contributor

ianoc commented Oct 24, 2019

On the face of it i'd be strongly -1 of a large change like this. Its re-learning the world for all existing contributers and effectively re-doing these rules to match the other ones from what I can see. At some point if they follow different designs/philosophies should they not just remain separate?

@SrodriguezO
Copy link
Contributor

@ianoc The spirit of this PR is to incorporate an architecture that makes the rules much more customizable while increasing maintainability in the process.

effectively re-doing these rules to match the other ones from what I can see

Rest assured that this is not the goal. We learned some lessons from higherkindness/rules_scala--like this phases architecture--which we think will add much value to bazelbuild/rules_scala in the long term.

From the design doc:

This will provide two major benefits:
  1) it will be easier for contributors to implement new functionality by creating additional default phases. Phases also give us more clear idea what steps are shared across rules.
  2) consumers will be able to configure the rules to their specific use cases by defining new phases within their workspace without impacting other consumers.

Although superficially it may seem like we're trying to simply import higherkindness/rules_scala, the real goal is to improve the configurability and maintainability of the rule set.

Its re-learning the world for all existing contributers

The phases @borkaehw used parallel existing helper methods, so there won't be much to re-learn. The phases architecture itself isn't terribly complicated.

@borkaehw
Copy link
Contributor Author

We can keep the helper functions unmoved but still achieve the same goal. It will greatly reduce the size of changes.

Although I believe it's a good opportunity clean up the code base, we can always do it later.

@ittaiz
Copy link
Member

ittaiz commented Oct 25, 2019

Thanks.
To be honest I'm still not sure what I think of this direction (not saying it's bad at all but very different so I need some time) but I greatly appreciate the effort.
While @ianoc's comment definitely resonate with me I'm trying to get used to the phases architecture and evaluate it on its own merits.

I'll reply next week with more thoughts and details.

@SrodriguezO
Copy link
Contributor

Sounds great. Thanks @ittaiz

@long-stripe
Copy link
Contributor

@borkaehw I agree with the notion of unbundling the moving helper functions from this PR - anything to reduce the size of this diff and make it more reviewable. If it is at all possible, to make it more digestible you could even think about stacking PRs, but not a dealbreaker to me.

I'll try and take an earnest look at (1) the design doc, and (2) this PR in the coming days.

@borkaehw
Copy link
Contributor Author

you could even think about stacking PRs

@long-stripe Do you mean having multiple commits in same PR?

@long-stripe
Copy link
Contributor

I mean something like https://graysonkoonce.com/stacked-pull-requests-keeping-github-diffs-small/, since rules_scala usually squash merges, so even if you have multiple commits in a PR those get fused into one into master. Not sure how this all plays with squash merges though.

For the intent of reviewing, multiple commits that replay a story would also help, but only if it makes sense.

@borkaehw borkaehw force-pushed the customizable-phase branch 2 times, most recently from 184426e to a6e9445 Compare October 25, 2019 19:33
@borkaehw
Copy link
Contributor Author

I have undone roughly 600 lines of code changes, it brings the diff from +1,806 −1,275 to +1,232 −630. Most of the deletion comes from the removal of scala_binary_common and _lib, as well as simplifying RULE_impls.

I will try to break it up more, but hopefully it's now easier to review than original PR.

@borkaehw borkaehw force-pushed the customizable-phase branch 2 times, most recently from 132606e to 1324234 Compare October 25, 2019 22:08
@borkaehw
Copy link
Contributor Author

@long-stripe I have read through the stacked PRs article. I have reduced the changes and broken down the PR into 4 commits, in a reasonable way I think. Are we still in favor of stacked PRs?

@long-stripe
Copy link
Contributor

@borkaehw not categorically! I was only suggesting something like it, broken up commits is probably also good too.

@borkaehw borkaehw force-pushed the customizable-phase branch 4 times, most recently from 6bf2574 to 7fd8f4c Compare October 29, 2019 18:21
@ittaiz
Copy link
Member

ittaiz commented Oct 30, 2019

@borkaehw is this ready?
I reviewed a third of the PR in it's initial state and then you force pushed (to accommodate requests from others) and I now need to start all over. I want to make sure you don't have anything else cooking.

This is a large and complex PR and I don't want us to fall into the pitfall of having a LGTM because the code is too large to ingest. We need to understand all of the changes and it will take some time (obviously I'll make sure not to merge any other PRs and cause merge conflicts in the meantime).

@borkaehw
Copy link
Contributor Author

@ittaiz Thanks and my apology at the same time. This PR is ready for review and nothing else is work in progress. I force pushed to deal with some typos, change coda to final, and add scala_test test for the custom phase. No major refactor.

I will avoid force push in the future.

@andyscott
Copy link
Contributor

This looks like a reasonable port of both code and design approach that I did for higherkindess/rules_scala. I'm particularly bullish on using phases for organizing the rule implementation. They bring flexilibity and organization to rule implementations. That being said, I'm still not sold on my own approach for phase replacements (for this PR, as well as for the current code in higherkindness/rules_scala). It might be simpler to just let folks assemble their own custom rules and call the phases à la carte.

@borkaehw
Copy link
Contributor Author

borkaehw commented Dec 3, 2019

@ittaiz I have finished the work for documentation and tests. Please take a look and let me know what would be the next step toward merging. Thanks.

@ittaiz
Copy link
Member

ittaiz commented Dec 19, 2019

Small update (but valuable)- I ran this branch across Wix's codebase and everything is green!
I still have work here :( but it's a good sign
@ianoc @andyscott it would be very beneficial to get the same feedback from Stripe's repos

Copy link
Member

@ittaiz ittaiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to do the very detailed review I planned on doing but I'm hoping our serious test coverage will be our savior. Wix's green build definitely made me feel better.
@borkaehw My plan is to wait a few more days for Stripe's response and meanwhile I hope you can fix my few small comments and prepare the "followup" tasks doc (doesn't mean you'll have to do all of them but I would like everything we discussed here mentioned there).
If nothing dramatic happens we'll merge this towards end of next week

docs/customizable_phase.md Outdated Show resolved Hide resolved
scala/private/phases/phase_collect_jars.bzl Outdated Show resolved Hide resolved
scala/private/phases/phase_final.bzl Show resolved Hide resolved
scala/private/phases/phase_merge_jars.bzl Show resolved Hide resolved
transitive_rjars = p.compile.rjars, #calling rules need this for the classpath in the launcher
)

def phase_library_final(ctx, p):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a bit of a broken record but can you please make sure we add this to the list of things we followup on? This needs to happen first (I might even take it myself) since it's an API change (of the phases) that we want to land before people start using anything

README.md Show resolved Hide resolved
scala/private/phases/api.bzl Show resolved Hide resolved
@ittaiz
Copy link
Member

ittaiz commented Dec 19, 2019

@kevingessner @softprops and others are welcome to test this out and give feedback before we merge it in

@ittaiz
Copy link
Member

ittaiz commented Dec 19, 2019

btw, I love the fact that after we moved the phases and such to advanced usage then it's very clear to see that the API hasn't changed. Only changes to advanced-usage, private/phases and tests of that. Nice.

@long-stripe
Copy link
Contributor

I just tried out 5b6f4ae with the default configuration on a branch against our CI and got ✅.

I'll have limited bandwidth coming up over the holidays, but perhaps @andyscott can check it out further with respect to phase customization?

@ittaiz ittaiz mentioned this pull request Dec 19, 2019
@borkaehw
Copy link
Contributor Author

Thank you all for your effort. Happy to see it moving forward smoothly. I will conclude the follow-up tasks in a document.

Copy link
Member

@ittaiz ittaiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good, thanks!
What we need now is the follow up doc and hopefully a bit more feedback from the community though the latter isn’t blocking the merge

@borkaehw
Copy link
Contributor Author

borkaehw commented Dec 20, 2019

@ittaiz I have summarized the follow-up actions in this doc. Please take a look and let me know if I missed something.
https://docs.google.com/document/d/1_oWoZ9T4ya82M3NU6Liew5x2IGoZMzZoEkFDknMKix4/edit?usp=sharing

Last thing, since we borrowed the phase architecture from higherkindness/rules_scala, @andyscott is the original author, we have to figure out the attribution to give credit to Andy. Please hold off on merging before we hear back from him. I have contacted him, but it's holiday season. I will also be on vacation the next 2 weeks, I won't be completely offline but the response may take longer. @SrodriguezO is another person you can contact with. Thanks!

@andyscott
Copy link
Contributor

I wouldn't mind being officially listed in AUTHORS, as this PR pulls over the fundamental design components of the alternative rules. I worked extensively on this design in my own free time.

That being said, feel free to merge this PR when ready.

@andyscott
Copy link
Contributor

I went ahead and opened a PR ;)

#903

@andyscott
Copy link
Contributor

andyscott commented Dec 23, 2019

Can we merge this soon and then iterate in follow up PRs?

I've tested this against Stripe's largest Scala repository and the changes are peaceful.

@ittaiz
Copy link
Member

ittaiz commented Dec 23, 2019

@andyscott thats the plan.
I’m merging it this Wednesday.

@ittaiz ittaiz merged commit 937d469 into bazelbuild:master Dec 25, 2019
@borkaehw borkaehw deleted the customizable-phase branch January 7, 2020 03:41
tian000 pushed a commit to ConsultingMD/rules_scala that referenced this pull request Jan 17, 2020
* Fix code for Bazel change --incompatible_no_support_tools_in_action_inputs (bazelbuild#758)

* Specs2 filtering runner now filters test cases according to filter. (bazelbuild#759)

This allows the bazel test runner correctly generate the test log, based only on tests that actually did run.

* Add scala_doc rule (bazelbuild#760)

* move collect_plugin_paths to common.bzl

* add scala_doc rule + aspect implementations

* add basic scala_doc Markdown documentation

* add scala_doc example

* collect plugins in aspect too

* declare_directory for scaldoc output path or else it complains

* add a simple test target for scala_doc rule

* add doc note about scaladoc being kind of slow

* fix scala_doc.md code block

* privatize scaladoc aspect

* get more src_files/compile_jars

* also accept scalacopts in scala_doc

* turn off scaladoc warnings for now

* use host_path_separator in classpath

* Update scala_doc.md

fix the string `scala_doc` which was copy-pasted as `scala_binary`

* Explicitly convert depset to list (bazelbuild#761)

This will be required by Bazel 0.27, where the flag
`--incompatible_no_support_tools_in_action_inputs` will be on by
default.

The function `collect_plugin_paths` iterates over its argument, so we
need to flatten the depset.

* Make sure that plus-one-deps from exports of direct deps also propagate (bazelbuild#764)

* PlusOne propagates PlusOne deps of exports

* rename of tests

* correct test dependency

* use scala toolchain to toggle on +1 collection

* fix grpc opencensus stats integration (bazelbuild#762)

* fix grpc opencensus stats integration
- upgrade opencensus-java packages to the latest (0.22.1)
- add opencensus-impl and opencensus-impl-core

* add opencensus-impl transitive dependency com.lmax:disruptor

* Add Canva to the adopters list (bazelbuild#770)

* Depset is not iterable (bazelbuild#773)

* Specify which version of bazel is required. (bazelbuild#772)

* Specify which version of bazel is required.

* Update README.md

* Specs2 filtering of JUnit descriptions (bazelbuild#766)

* Specs2 now will create its JUnit Description tree with filtered child items

* Creating a filtered description tree from Specs2 utilities - keeps ordering and hashCodes intact

* Redirecting test error output

* Update "Getting started" WORKSPACE block (bazelbuild#778)

* Migrate from java_common.create_provider to JavaInfo() (bazelbuild#781)

* Migrate from java_common.create_provider to JavaInfo()

* Fix scala/private/common.bzl

* Fix some build failures.

* Fix some more builds.

* Remove scala/private/common:create_java_provider

* Remove unused _create_provider.

* Remove unused load statement

* Also propagate deps and runtime_deps in scala_import with no jars.

* Address review comments.

* Update custom-jvm-rule.bzl

* Update BUILD

* typo

* Removed implicit value for deps_providers.

* Add dummy intermediate jar file for scala_import with no jars.

* Cleanup code.

* Replace + with lists extend.

* Revert enabling --all_incompatible_changes test by mistake.

* Passing source-jar into JavaInfo (bazelbuild#783)

* expose source_jar in JavaInfo

* nit: clarify conditional

* nit: replace one hack with another

* nit: replace concat with append

* remove "main" attr usage

it's no longer needed

* add comment

* remove usage of attr scala with JavaInfo outputs (bazelbuild#784)

* Port bazelbuild/bazel#8196 : improve java_stub_template MANIFEST.MF construction speed (bazelbuild#736)

* Import java_stub_template from bazelbuild@8b8271e

* Port changes from bazelbuild/bazel#8196

* Remove java_stub_template from WORKSPACE

* Update java_stub_template archive URL

* Make java_stub_template a normal file

* JavaInfo provider should be given for deps (bazelbuild#774)

* a JavaInfo provider should be given for deps

* flatten providers lists

* Revert "flatten providers lists"

This reverts commit a464f61.

* remove print warning if dep has no JavaInfo since it's required now (bazelbuild#788)

* Handle FileAlreadyExistsException in ScalaPBGenerator (bazelbuild#789)

* Exclude jmh from reproducibility test, since the code generator is non-deterministic. (bazelbuild#791)

bazelbuild#699

* warn if jvm_flags is used in scala_library (bazelbuild#795)

* Allow for code coverage to be run on 0.27.1 (bazelbuild#780)

* Allow for code coverage to be run on 0.27.1

* Update expected-coverage.dat

* actually remove all merge conflicts

remove scala_doc
merge conflict


spacing


newline

* Replace jar_sha256 with artifact_sha256. (bazelbuild#792)

* Simplify _jacoco_offline_instrument. (bazelbuild#790)

resolve_command shouldn't be required here.

* silence tut (bazelbuild#799)

* Due to limitations in the toolchains implementation this is required … (bazelbuild#801)

* Add test for host deps

* Add a test hopefully to illustrate host deps

* Update test

* Change api usage to use binds

* Remove errant print

* See if behavior is different on 0.28.1

* incompatible_string_join_requires_strings: string.join(list) accepts invalid (non-string) list elements

* Add a to_list

* Another case of depset iterable

* Windows ci can only support 0.28.0 via chocolaty right now

* Add scalac_jvm_flags option to toolchain (bazelbuild#803)

* Add scalac_jvm_flags to scala_toolchain

This allows things like setting the max heap on all Scalac workers.

* Add docs

* Fix comment

* Add enable_code_coverage_aspect to the docs

* Flags on target should override flags on toolchain.

Also fix comment.

* Add `scala_test_jvm_flags` to toolchain (bazelbuild#804)

* Add scala_test_jvm_flags to the toolchain

* Fix package name

* Fix target names

* Add trivial test suite and rename some things

* Wrap all jvm_flags in _expand_location

* Remove the deprecated attribute proto_source_root. (bazelbuild#793)

* Remove the deprecated attribute proto_source_root.

Replace it with strip_import_prefix, its spiritual successor.

* Update Bazel version on Travis

* Update rules_scala to work with Bazel >=0.27.

The flag --incompatible_string_join_requires_strings was flipped, which
this repository was incompatible with.

* Update to Bazel 0.26 instead.

test_coverage_on fails for some mysterious reason that seems unrelated to the cleanup crusade I'm pursuing at the moment.

* add point release number so that downloading Bazel succeeds

* change whitespace to re-trigger build

* update Bazel version, hopefully properly

* update test_expected_failure/

* minimize diff

* re-trigger Travis

* re-trigger Travis again

* update README.md

note the last version of 0.23 that we ran CI on.

* Fix a regression that breaks scalapb when jvm_flags are set on the toolchain (bazelbuild#806)

* Fix a regression that breaks scalapb when jvm_flags are set on the toolchain

* Move passing manual tests to new directory

* Migrate from old-style .java provider to JavaInfo. (bazelbuild#807)

* Migrate from old-style .java provider to JavaInfo.

* Remove usage of .scala.

* Flip these around to be correct (bazelbuild#810)

* Clean up jmh rule a bit (bazelbuild#811)

* Move scala_repositories macro out to its own file + move scala_doc.bzl (bazelbuild#808)

* move scala_repositories macro out to its own file

* move scala_repositories.bzl and scala_doc.bzl to private

* Pin Bazel versions (bazelbuild#812)

* Pin Bazel versions

* ensure one set of jobs is named test

* Keep the original build structure

* fix version for windows

* add ci stopgap to scripts used in ci

* fix ci errors

* adjust for buildkite

* remove unused param

* Tweak travis image config

* use sh language

* libxml2-utils

* use apt addon

* Add notes about updating bazel versions

* Move scala_binary to its own file (bazelbuild#813)

* add a note about code organization in CONTRIBUTING.md

* wip move scala_binary out

* fully split out scala_binary properly

* _library_outputs is the same thing as common_outputs

* fix a bunch more scalac_provider references

* rename scala_provider function to get_scalac_provider per review

* back to the old variable names

* Delurk Powershell for a more unified test setup (bazelbuild#814)

* Attempt to delurk powershell

* 💥

* adjust

* adjust

* Add a basic PR template (bazelbuild#817)

* Move scala_test/scala_test_suite to their own file (bazelbuild#815)

* move scala_test rule to its own file

* move scala_test_suite to scala_test.bzl, move sanitize_string_for_usage function to common.bzl for now

* add a docstring about scala_test.bzl

* move test_resolve_deps to private variable in scala_test.bzl

* remove suites attribute debug print

* move scala_repl rule to its own file (bazelbuild#820)

* remove long-deprecated 'suites' attr in scala_test (bazelbuild#819)

* move scala_junit_test rule to its own file (bazelbuild#822)

* rename proto rule while maintaining backwards compat (bazelbuild#821)

* Disable windows CI (bazelbuild#823)

* Move library rules (bazelbuild#827)

* move library_attrs to common_attributes.bzl

* move scala_macro_library rule to its own file

* move all _library rules to scala_library.bzl, private stuff too

* move _lib into scala_library.bzl

* alphasort

* Buildifier as the only lint (bazelbuild#826)

* Load buildifier directly

* update lint scripts

* let buildifier reformat everything

* Test lints in CI

* remove accidental file extension

* use skylib version compatible with rules_go and buildifier

* fix an unformatted file that breaks ci (bazelbuild#830)

* use travis job pipelines (bazelbuild#829)

* Default to usage of scala_proto_library instead of scalapb_proto_library alias (bazelbuild#831)

* Refactor build_deployable (bazelbuild#832)

* build_deployable -> merge_jars with a more explicit interface

* add docstring doc to merge_jars

* buildifier fix

* parameterize the entire progress_message

* Update README.md to include Grand Rounds (bazelbuild#835)

* Minor fix to error message (bazelbuild#841)

Was not properly adding space, as such:

```
java.lang.IllegalStateException: Was not able to discover any classes for archives=testsuite/test/example/example.jarprefixes=Set(), suffixes=Set(Test)
```

* Remove jvm_flags debug print for scala_library (bazelbuild#840)

* remove jvm_flags debug print for scala_library

* hard fail for jvm_flags in scala_library, re-add jvm_flags attr for other rules

* remove fail, not needed if attr isn't supported

* Improve classpath manifest file construction (bazelbuild#842)

* use java_common.merge instead of manual _collect util functions (bazelbuild#838)

* Fix paths in --proto_path and avoid copying proto files (bazelbuild#850)

* Fix paths in proto_path and avoid copying

* Prepare mapping in advance

* Condensed all transformations into one method

* Added tests

* Buildifier corrections

* Split sh test (bazelbuild#849)

* Split shell ingetration tests

* Fix test_repl no target from clean build

* Fix scala_library_jar_without_srcs_must_fail_on_mismatching_resource_strip_prefix (bazelbuild#859)

* Fix test_scala_import_source_jar_should_not_be_fetched_when_env_bazel_jvm_fetch_sources_is_set_to_non_true (bazelbuild#858)

* Add a test build for bazel 1.0 (bazelbuild#861)

* Add a test build for bazel 1.0

* cp

* cp

* I think i messed this up a little and it wasn't running the older ones too, making sure we run everything this time

* cp

* include Bazel 1.0.0 in compatibility table (bazelbuild#863)

* fix typo in codeowners github handle

* Mirror all http_archives. (bazelbuild#878)

Context: bazelbuild/bazel#10270

* Bump v1.0.0 compatibility test to v1.1.0 (bazelbuild#882)

* Bump v1.1.0 compatibility test to v1.2.1 (bazelbuild#883)

* Bump v1.1.0 compatibility test to v1.2.0

* Upgrade MacOS from HighSierra to Mojave

* Empty commit to trigger a new build

* Bump bazel to v1.2.1

* Fix sha for 0.28.0

* Revert "Upgrade MacOS from HighSierra to Mojave"

This reverts commit a239d4e.

* Update sha for 0.28.0 to HEAD

* Explicitly label bazel 0.28.1 (bazelbuild#885)

* Bump scala 2.12 to v2.12.10 (bazelbuild#886)

* Convert maven_jar to jvm_maven_import_external (bazelbuild#889)

* Bump Bazel to v2.0.0 (bazelbuild#902)

* authorship attribution for higherkindness/rules_scala design (bazelbuild#903)

* Refactor rules into configurable phases (bazelbuild#865)

* Add configurable phases

* Refactor rules implementation into configurable phases

* Customizable phases

* Customizable phases tests

* Break up init to more reasonable phases

* Move final to non-configurable phase

* Rename parameter builtin_customizable_phases

* Fix ijar

* Switch default for buildijar

* Add TODOs

* Rename provider

* Move to advanced_usage

* rename custom_phases

* Make default phase private

* Fix exports_jars

* Adjusted_phases

* Rename p to be more clear

* Add in-line comments

* Fix lint

* Add doc for phases

* Doc for consumers

* Doc for contributors

* Add more content

* Fix md

* Test for all rules

* Fix junit test

* Fix lint

* Add more tests

* Fix junit test

* Fix doc

* Change _test_ to _scalatest_

* More doc on provider

* expand locations in scalacopts (bazelbuild#890)

* expand locations in scalac options

* allow plugins in expansion

* add a happy path test

* make the target names more obvious

* comment

* Revert "expand locations in scalacopts (bazelbuild#890)" (bazelbuild#904)

This reverts commit 5c966ee.

* expand locations in scalacptops, take 2 (bazelbuild#907)

* expand locations in scalacopts (bazelbuild#890)

* expand locations in scalac options

* allow plugins in expansion

* add a happy path test

* make the target names more obvious

* comment

* access ctx.attr.plugins with fallback

* reformat

* Plugin expansion- Use input plugins param instead of ctx (bazelbuild#909)

* See test failing

* Use input plugins param instead of ctx

* Remove phase scala provider (bazelbuild#913)

* phase_jvm_flags uses JavaInfo provider instead of scala_provider

* remove phase scala_provider

* readme clarifies minimum version at HEAD is 1.1.0

* travis.yml moved from 0.28.1 to 1.1.0

* Use https to access central.maven.org (bazelbuild#920)

See https://support.sonatype.com/hc/en-us/articles/360041287334
And use repo.maven.apache.org instead of central.maven.org

* remove me from codeowners

I'm not currently a maintainer of this project.

* Return providers array instead of legacy struct (bazelbuild#916)

* runfiles and files are part of explicit DefaultInfo provider
and do not come from attributes

* removed transitive_rjars attribute as it was only needed internally
and before phases was exposed mistakenly because that's how the infra worked
Now internally phases use p.compile.rjars

* executable attribute part of DefaultInfo as well

* use coverage_common.instrumented_files_info provider instead of attribute

* remove redundant attributes

* linting

* return array of providers instead of struct

* scala_import return array of providers instead of struct

* Move declare_executable to phase file (bazelbuild#919)

* chore(docs): update WORKSPACE setup for skylib (bazelbuild#926)

* scalatest final-remove redundant coverage handling (bazelbuild#923)

* update bazel-toolchains version (bazelbuild#937)

fix bazelbuild#901

* Move code from rule impls/common to phases (bazelbuild#930)

* collect_srcjars to phase

* move compile_or_empty and needed code to phase_compile (from rule_impls)

* phase_compile to take scalac_provider from phases instead of rule_impls

* rule_impls loads are loaded as private and unused are removed

* get_scalac_provider in phase_scalac_provider and not rule_impls

* move write_java_wrapper from rule_impls to phase_java_wrapper

* move merge_jars from rule_impls to phase_merge_jars

* move get_unused_dependency_checker_mode from rule_impls to get_unused_dependency_checker_mode

* move write_manifest from common to get_write_manifest

* move collect_jars_from_common_ctx from rule_impls to phase_collect_jars

* move write_executable from rule_impls to phase_write_executable

* linting

* [CR] inline _collect_jars_from_common_ctx

* [CR] inline _collect_srcjars

* [CR] inline write_java_wrapper

* [CR] inline merge_jars

* [CR] inline _write_executable

* add default for fetch sources

Co-authored-by: Laurent Le Brun <laurentlb@gmail.com>
Co-authored-by: Igal Tabachnik <hmemcpy@gmail.com>
Co-authored-by: Long Cao <48221800+long-stripe@users.noreply.github.com>
Co-authored-by: P. Oscar Boykin <johnynek@users.noreply.github.com>
Co-authored-by: Ittai Zeidman <ittaiz@gmail.com>
Co-authored-by: Mackenzie Starr <mackestarr@gmail.com>
Co-authored-by: Jonathon Belotti <jonathon@canva.com>
Co-authored-by: ianoc-stripe <ianoc@stripe.com>
Co-authored-by: Parth <parth.mehrotra.cs@gmail.com>
Co-authored-by: Christopher Johnson <tenorviol@yahoo.com>
Co-authored-by: Irina Iancu <iirina@users.noreply.github.com>
Co-authored-by: joshrosen-stripe <48632449+joshrosen-stripe@users.noreply.github.com>
Co-authored-by: Paul Tarjan <github@paulisageek.com>
Co-authored-by: Benjamin Peterson <benjamin@python.org>
Co-authored-by: David Haxton <haxton.dc@gmail.com>
Co-authored-by: Alex Beal <39505601+beala-stripe@users.noreply.github.com>
Co-authored-by: lberki <lberki@users.noreply.github.com>
Co-authored-by: Andy Scott <andyscott@users.noreply.github.com>
Co-authored-by: Mantas Sakalauskas <mantass@wix.com>
Co-authored-by: Shachar Anchelovich <shacharan@wix.com>
Co-authored-by: ignasl <ignasl@wix.com>
Co-authored-by: Bor Kae Hwang <borkaehw@umich.edu>
Co-authored-by: Philipp Wollermann <philwo@google.com>
Co-authored-by: chenrui <rui@meetup.com>
Co-authored-by: Jin <jin@users.noreply.github.com>
Co-authored-by: Andreas Herrmann <andreash87@gmx.ch>
tian000 pushed a commit to ConsultingMD/rules_scala that referenced this pull request Apr 5, 2020
* Fix code for Bazel change --incompatible_no_support_tools_in_action_inputs (bazelbuild#758)

* Specs2 filtering runner now filters test cases according to filter. (bazelbuild#759)

This allows the bazel test runner correctly generate the test log, based only on tests that actually did run.

* Add scala_doc rule (bazelbuild#760)

* move collect_plugin_paths to common.bzl

* add scala_doc rule + aspect implementations

* add basic scala_doc Markdown documentation

* add scala_doc example

* collect plugins in aspect too

* declare_directory for scaldoc output path or else it complains

* add a simple test target for scala_doc rule

* add doc note about scaladoc being kind of slow

* fix scala_doc.md code block

* privatize scaladoc aspect

* get more src_files/compile_jars

* also accept scalacopts in scala_doc

* turn off scaladoc warnings for now

* use host_path_separator in classpath

* Update scala_doc.md

fix the string `scala_doc` which was copy-pasted as `scala_binary`

* Explicitly convert depset to list (bazelbuild#761)

This will be required by Bazel 0.27, where the flag
`--incompatible_no_support_tools_in_action_inputs` will be on by
default.

The function `collect_plugin_paths` iterates over its argument, so we
need to flatten the depset.

* Make sure that plus-one-deps from exports of direct deps also propagate (bazelbuild#764)

* PlusOne propagates PlusOne deps of exports

* rename of tests

* correct test dependency

* use scala toolchain to toggle on +1 collection

* fix grpc opencensus stats integration (bazelbuild#762)

* fix grpc opencensus stats integration
- upgrade opencensus-java packages to the latest (0.22.1)
- add opencensus-impl and opencensus-impl-core

* add opencensus-impl transitive dependency com.lmax:disruptor

* Add Canva to the adopters list (bazelbuild#770)

* Depset is not iterable (bazelbuild#773)

* Specify which version of bazel is required. (bazelbuild#772)

* Specify which version of bazel is required.

* Update README.md

* Specs2 filtering of JUnit descriptions (bazelbuild#766)

* Specs2 now will create its JUnit Description tree with filtered child items

* Creating a filtered description tree from Specs2 utilities - keeps ordering and hashCodes intact

* Redirecting test error output

* Update "Getting started" WORKSPACE block (bazelbuild#778)

* Migrate from java_common.create_provider to JavaInfo() (bazelbuild#781)

* Migrate from java_common.create_provider to JavaInfo()

* Fix scala/private/common.bzl

* Fix some build failures.

* Fix some more builds.

* Remove scala/private/common:create_java_provider

* Remove unused _create_provider.

* Remove unused load statement

* Also propagate deps and runtime_deps in scala_import with no jars.

* Address review comments.

* Update custom-jvm-rule.bzl

* Update BUILD

* typo

* Removed implicit value for deps_providers.

* Add dummy intermediate jar file for scala_import with no jars.

* Cleanup code.

* Replace + with lists extend.

* Revert enabling --all_incompatible_changes test by mistake.

* Passing source-jar into JavaInfo (bazelbuild#783)

* expose source_jar in JavaInfo

* nit: clarify conditional

* nit: replace one hack with another

* nit: replace concat with append

* remove "main" attr usage

it's no longer needed

* add comment

* remove usage of attr scala with JavaInfo outputs (bazelbuild#784)

* Port bazelbuild/bazel#8196 : improve java_stub_template MANIFEST.MF construction speed (bazelbuild#736)

* Import java_stub_template from bazelbuild@8b8271e

* Port changes from bazelbuild/bazel#8196

* Remove java_stub_template from WORKSPACE

* Update java_stub_template archive URL

* Make java_stub_template a normal file

* JavaInfo provider should be given for deps (bazelbuild#774)

* a JavaInfo provider should be given for deps

* flatten providers lists

* Revert "flatten providers lists"

This reverts commit a464f61.

* remove print warning if dep has no JavaInfo since it's required now (bazelbuild#788)

* Handle FileAlreadyExistsException in ScalaPBGenerator (bazelbuild#789)

* Exclude jmh from reproducibility test, since the code generator is non-deterministic. (bazelbuild#791)

bazelbuild#699

* warn if jvm_flags is used in scala_library (bazelbuild#795)

* Allow for code coverage to be run on 0.27.1 (bazelbuild#780)

* Allow for code coverage to be run on 0.27.1

* Update expected-coverage.dat

* actually remove all merge conflicts

remove scala_doc
merge conflict


spacing


newline

* Replace jar_sha256 with artifact_sha256. (bazelbuild#792)

* Simplify _jacoco_offline_instrument. (bazelbuild#790)

resolve_command shouldn't be required here.

* silence tut (bazelbuild#799)

* Due to limitations in the toolchains implementation this is required … (bazelbuild#801)

* Add test for host deps

* Add a test hopefully to illustrate host deps

* Update test

* Change api usage to use binds

* Remove errant print

* See if behavior is different on 0.28.1

* incompatible_string_join_requires_strings: string.join(list) accepts invalid (non-string) list elements

* Add a to_list

* Another case of depset iterable

* Windows ci can only support 0.28.0 via chocolaty right now

* Add scalac_jvm_flags option to toolchain (bazelbuild#803)

* Add scalac_jvm_flags to scala_toolchain

This allows things like setting the max heap on all Scalac workers.

* Add docs

* Fix comment

* Add enable_code_coverage_aspect to the docs

* Flags on target should override flags on toolchain.

Also fix comment.

* Add `scala_test_jvm_flags` to toolchain (bazelbuild#804)

* Add scala_test_jvm_flags to the toolchain

* Fix package name

* Fix target names

* Add trivial test suite and rename some things

* Wrap all jvm_flags in _expand_location

* Remove the deprecated attribute proto_source_root. (bazelbuild#793)

* Remove the deprecated attribute proto_source_root.

Replace it with strip_import_prefix, its spiritual successor.

* Update Bazel version on Travis

* Update rules_scala to work with Bazel >=0.27.

The flag --incompatible_string_join_requires_strings was flipped, which
this repository was incompatible with.

* Update to Bazel 0.26 instead.

test_coverage_on fails for some mysterious reason that seems unrelated to the cleanup crusade I'm pursuing at the moment.

* add point release number so that downloading Bazel succeeds

* change whitespace to re-trigger build

* update Bazel version, hopefully properly

* update test_expected_failure/

* minimize diff

* re-trigger Travis

* re-trigger Travis again

* update README.md

note the last version of 0.23 that we ran CI on.

* Fix a regression that breaks scalapb when jvm_flags are set on the toolchain (bazelbuild#806)

* Fix a regression that breaks scalapb when jvm_flags are set on the toolchain

* Move passing manual tests to new directory

* Migrate from old-style .java provider to JavaInfo. (bazelbuild#807)

* Migrate from old-style .java provider to JavaInfo.

* Remove usage of .scala.

* Flip these around to be correct (bazelbuild#810)

* Clean up jmh rule a bit (bazelbuild#811)

* Move scala_repositories macro out to its own file + move scala_doc.bzl (bazelbuild#808)

* move scala_repositories macro out to its own file

* move scala_repositories.bzl and scala_doc.bzl to private

* Pin Bazel versions (bazelbuild#812)

* Pin Bazel versions

* ensure one set of jobs is named test

* Keep the original build structure

* fix version for windows

* add ci stopgap to scripts used in ci

* fix ci errors

* adjust for buildkite

* remove unused param

* Tweak travis image config

* use sh language

* libxml2-utils

* use apt addon

* Add notes about updating bazel versions

* Move scala_binary to its own file (bazelbuild#813)

* add a note about code organization in CONTRIBUTING.md

* wip move scala_binary out

* fully split out scala_binary properly

* _library_outputs is the same thing as common_outputs

* fix a bunch more scalac_provider references

* rename scala_provider function to get_scalac_provider per review

* back to the old variable names

* Delurk Powershell for a more unified test setup (bazelbuild#814)

* Attempt to delurk powershell

* 💥

* adjust

* adjust

* Add a basic PR template (bazelbuild#817)

* Move scala_test/scala_test_suite to their own file (bazelbuild#815)

* move scala_test rule to its own file

* move scala_test_suite to scala_test.bzl, move sanitize_string_for_usage function to common.bzl for now

* add a docstring about scala_test.bzl

* move test_resolve_deps to private variable in scala_test.bzl

* remove suites attribute debug print

* move scala_repl rule to its own file (bazelbuild#820)

* remove long-deprecated 'suites' attr in scala_test (bazelbuild#819)

* move scala_junit_test rule to its own file (bazelbuild#822)

* rename proto rule while maintaining backwards compat (bazelbuild#821)

* Disable windows CI (bazelbuild#823)

* Move library rules (bazelbuild#827)

* move library_attrs to common_attributes.bzl

* move scala_macro_library rule to its own file

* move all _library rules to scala_library.bzl, private stuff too

* move _lib into scala_library.bzl

* alphasort

* Buildifier as the only lint (bazelbuild#826)

* Load buildifier directly

* update lint scripts

* let buildifier reformat everything

* Test lints in CI

* remove accidental file extension

* use skylib version compatible with rules_go and buildifier

* fix an unformatted file that breaks ci (bazelbuild#830)

* use travis job pipelines (bazelbuild#829)

* Default to usage of scala_proto_library instead of scalapb_proto_library alias (bazelbuild#831)

* Refactor build_deployable (bazelbuild#832)

* build_deployable -> merge_jars with a more explicit interface

* add docstring doc to merge_jars

* buildifier fix

* parameterize the entire progress_message

* Update README.md to include Grand Rounds (bazelbuild#835)

* Minor fix to error message (bazelbuild#841)

Was not properly adding space, as such:

```
java.lang.IllegalStateException: Was not able to discover any classes for archives=testsuite/test/example/example.jarprefixes=Set(), suffixes=Set(Test)
```

* Remove jvm_flags debug print for scala_library (bazelbuild#840)

* remove jvm_flags debug print for scala_library

* hard fail for jvm_flags in scala_library, re-add jvm_flags attr for other rules

* remove fail, not needed if attr isn't supported

* Improve classpath manifest file construction (bazelbuild#842)

* use java_common.merge instead of manual _collect util functions (bazelbuild#838)

* Fix paths in --proto_path and avoid copying proto files (bazelbuild#850)

* Fix paths in proto_path and avoid copying

* Prepare mapping in advance

* Condensed all transformations into one method

* Added tests

* Buildifier corrections

* Split sh test (bazelbuild#849)

* Split shell ingetration tests

* Fix test_repl no target from clean build

* Fix scala_library_jar_without_srcs_must_fail_on_mismatching_resource_strip_prefix (bazelbuild#859)

* Fix test_scala_import_source_jar_should_not_be_fetched_when_env_bazel_jvm_fetch_sources_is_set_to_non_true (bazelbuild#858)

* Add a test build for bazel 1.0 (bazelbuild#861)

* Add a test build for bazel 1.0

* cp

* cp

* I think i messed this up a little and it wasn't running the older ones too, making sure we run everything this time

* cp

* include Bazel 1.0.0 in compatibility table (bazelbuild#863)

* fix typo in codeowners github handle

* Mirror all http_archives. (bazelbuild#878)

Context: bazelbuild/bazel#10270

* Bump v1.0.0 compatibility test to v1.1.0 (bazelbuild#882)

* Bump v1.1.0 compatibility test to v1.2.1 (bazelbuild#883)

* Bump v1.1.0 compatibility test to v1.2.0

* Upgrade MacOS from HighSierra to Mojave

* Empty commit to trigger a new build

* Bump bazel to v1.2.1

* Fix sha for 0.28.0

* Revert "Upgrade MacOS from HighSierra to Mojave"

This reverts commit a239d4e.

* Update sha for 0.28.0 to HEAD

* Explicitly label bazel 0.28.1 (bazelbuild#885)

* Bump scala 2.12 to v2.12.10 (bazelbuild#886)

* Convert maven_jar to jvm_maven_import_external (bazelbuild#889)

* Bump Bazel to v2.0.0 (bazelbuild#902)

* authorship attribution for higherkindness/rules_scala design (bazelbuild#903)

* Refactor rules into configurable phases (bazelbuild#865)

* Add configurable phases

* Refactor rules implementation into configurable phases

* Customizable phases

* Customizable phases tests

* Break up init to more reasonable phases

* Move final to non-configurable phase

* Rename parameter builtin_customizable_phases

* Fix ijar

* Switch default for buildijar

* Add TODOs

* Rename provider

* Move to advanced_usage

* rename custom_phases

* Make default phase private

* Fix exports_jars

* Adjusted_phases

* Rename p to be more clear

* Add in-line comments

* Fix lint

* Add doc for phases

* Doc for consumers

* Doc for contributors

* Add more content

* Fix md

* Test for all rules

* Fix junit test

* Fix lint

* Add more tests

* Fix junit test

* Fix doc

* Change _test_ to _scalatest_

* More doc on provider

* expand locations in scalacopts (bazelbuild#890)

* expand locations in scalac options

* allow plugins in expansion

* add a happy path test

* make the target names more obvious

* comment

* Revert "expand locations in scalacopts (bazelbuild#890)" (bazelbuild#904)

This reverts commit 5c966ee.

* expand locations in scalacptops, take 2 (bazelbuild#907)

* expand locations in scalacopts (bazelbuild#890)

* expand locations in scalac options

* allow plugins in expansion

* add a happy path test

* make the target names more obvious

* comment

* access ctx.attr.plugins with fallback

* reformat

* Plugin expansion- Use input plugins param instead of ctx (bazelbuild#909)

* See test failing

* Use input plugins param instead of ctx

* Remove phase scala provider (bazelbuild#913)

* phase_jvm_flags uses JavaInfo provider instead of scala_provider

* remove phase scala_provider

* readme clarifies minimum version at HEAD is 1.1.0

* travis.yml moved from 0.28.1 to 1.1.0

* Use https to access central.maven.org (bazelbuild#920)

See https://support.sonatype.com/hc/en-us/articles/360041287334
And use repo.maven.apache.org instead of central.maven.org

* remove me from codeowners

I'm not currently a maintainer of this project.

* Return providers array instead of legacy struct (bazelbuild#916)

* runfiles and files are part of explicit DefaultInfo provider
and do not come from attributes

* removed transitive_rjars attribute as it was only needed internally
and before phases was exposed mistakenly because that's how the infra worked
Now internally phases use p.compile.rjars

* executable attribute part of DefaultInfo as well

* use coverage_common.instrumented_files_info provider instead of attribute

* remove redundant attributes

* linting

* return array of providers instead of struct

* scala_import return array of providers instead of struct

* Move declare_executable to phase file (bazelbuild#919)

* chore(docs): update WORKSPACE setup for skylib (bazelbuild#926)

* scalatest final-remove redundant coverage handling (bazelbuild#923)

* update bazel-toolchains version (bazelbuild#937)

fix bazelbuild#901

* Move code from rule impls/common to phases (bazelbuild#930)

* collect_srcjars to phase

* move compile_or_empty and needed code to phase_compile (from rule_impls)

* phase_compile to take scalac_provider from phases instead of rule_impls

* rule_impls loads are loaded as private and unused are removed

* get_scalac_provider in phase_scalac_provider and not rule_impls

* move write_java_wrapper from rule_impls to phase_java_wrapper

* move merge_jars from rule_impls to phase_merge_jars

* move get_unused_dependency_checker_mode from rule_impls to get_unused_dependency_checker_mode

* move write_manifest from common to get_write_manifest

* move collect_jars_from_common_ctx from rule_impls to phase_collect_jars

* move write_executable from rule_impls to phase_write_executable

* linting

* [CR] inline _collect_jars_from_common_ctx

* [CR] inline _collect_srcjars

* [CR] inline write_java_wrapper

* [CR] inline merge_jars

* [CR] inline _write_executable

* use correct delimiter for joined values (bazelbuild#941)

* deploy_jar creation uses args file to support long classpaths (bazelbuild#942)

* deploy_jar creation uses args file to support long classpaths

* allow bazel to not always use param file

* linting

* exposing java jar to BEP from all binary rules (bazelbuild#943)

* exposing java jar to BEP from all binary rules
added a passing e2e for java jar of scala library for symmetry

* simplify test setup

* remove ctx.outputs.jar usage from phase_library_final (exists in p.compile.full_jars)

* linting

* remove unused method (bazelbuild#945)

* Fix resource_strip_prefix of scala_libary for external repositories (bazelbuild#944)

* Fix resource_strip_prefix of scala_libary for external repositories

If repository `A` has a `scala_library` with `resources` and
`resource_strip_prefix` on which repository `B` depends then repository
`B` fails to build complaining that resource doesn't start with correct
prefix

* Push prefix handling down to _adjust_resources_path_by_strip_prefix
Use skylib to concat paths

* Rewrite test with the external repo
This reflects situation described in PR

* Run buildifier

* Revert external repository

* Revrite test with local_repository

* Revert visiblity of scala_library

* Custom phases expose custom providers (bazelbuild#946)

* rules_scala custom phases should expose providers- failing test

* rules_scala custom phases should expose providers- passing test
while doing it I found and fixed a bug in phases adjustments of first/last (they were duplicated)
Additionally this mandates bazel 2.0.0 as they have some kind of bug with providers before that (don't have an issue to ref but couldn't get the build to pass with lower bazel version)

* update readme to note when we stopped fully supporting 1.1.0

* remove unneeded 1.2.1 shas

* drop 1.1.0 travis builds

* remove 1.1.0 from bazel wrapper

* break after adding positional phase

* rule_providers to external_providers

* Remove unused reference to compile_scala (bazelbuild#950)

* final phase is inlined (bazelbuild#947)

all phases are equal
DefaultInfo is returned by a default_info phase
Other external providers are passed by their respective phases

* Rename phases logically (bazelbuild#953)

* Phases can override providers from previous phases (bazelbuild#948)

* override providers- failing test

* override providers- passing test

* docs

* Bundle input protos together with generated/compiled classes (bazelbuild#949)

* Init

* Pass bazel test //test/... with single _adjust_resources_path

* adjust_resources_path returns string instead of tuple

* remove prefix handling from ScalacProcessor.copyResources

* Remove unused method

* Remove resourceStripPrefix from CompileOptions

* Remove special path handling from ScalacProcessor because it is done in rule_impls.bzl

* Fix macro visibility

* Remove print

* Formatting

* Add comments

* more test cases

* lint

* Rebase on master

* extract resources.bzl

* Merge dependency_analyzer and unused_dependency_checker (bazelbuild#954)

* Merge dependency_analyzer and unused_dependency_checker

We merge dependency_analyer and unused_dependency_checker
projects because of the code they have in common, and
because we will be adding additional forms of checking
which would be complex with two different projects
going on.

* split

* ignore the .metals dir created by VSCode/Emacs with metals (bazelbuild#957)

* Fix doc for new naming convention (bazelbuild#960)

* Update ij.bazelproject (bazelbuild#961)

* Phase Scalafmt (bazelbuild#912)

* Phase Scalafmt

* Reuse formatter

* Remove glob

* Remove rules_jvm_external

* Rename argparse

* Remove executable

* Use shared code

* Remove imports

* Add comment

* Change file name

* Move args to private function

* Change to true

* Change conf location

* Change default conf

* Test custom conf

* Fix lint

* Fix build

* Remove trailing commas

* Add formatted and unformatted folder

* Rename test function

* Remove template file

* Better handle failing case

* Drop argparser

* Remove resolve_command

* Add comments

* Remove unnecessary code

* Change to RUNPATH

* Rename gitignore backup

* Remove comment

* Move conf file

* Add doc to attribute

* Switch to match readme

* Add doc

* Move doc to separate md

* Fix wording

* Fix lint

* Add url

* Add url

* use worker proto file instead of precompiled java (bazelbuild#956)

* Unify all maven urls (bazelbuild#968)

* readme (bazelbuild#969)

* fix proto regression (bazelbuild#963)

* add the cross repo proto test in the manner of $WORK usage

* conditionally trim root path based off of overall stripped prefix

* just an empty commit to trigger a CI rebuild

* simplify test case

* Add defs.bzl with core rules and notice about evolving APIs (bazelbuild#955)

* Add defs.bzl with core rules

* move to unstable directory

* unify all of the default info phases implementations (bazelbuild#958)

* unify all of the default info phases implementations

* collect_data = True

* Fix maven server urls (bazelbuild#973)

* Simplify phase_compile return struct (bazelbuild#974)

* Add a per-scala-version test for dependency analyzer (bazelbuild#971)

* multi_version

* change

* empty

* remove unused method (bazelbuild#976)

* Get files with extension (bazelbuild#979)

* Get files helper function

* Remove extra computation

* Move extension to shared file

* Move functions to paths.bzl

* Use skylib path is_absolute (bazelbuild#982)

* Add AST walking mode for dependency analyzer (bazelbuild#967)

* plugin

* lint

* Separate coverage (bazelbuild#972)

* Separate coverage from compile

* Remove unused

* Simplify condition

* Simplify struct

* Simplify return statement

* Simplify phase

* Fix lint

* Remove condition

* plugin3 (bazelbuild#986)

* Handle inlined literals in AST walker (bazelbuild#985)

* Handle inlined literals in AST walker

* comments

* comments

* When building JMH benchmarks, fail on error, instead of proceeding. (bazelbuild#977)

* When building JMH benchmarks, fail on error, instead of proceeding.

Currently, if there are errors in some (but not all) benchmarks, running
`bazel run //path/to/benchmark` will compile them, fail on some, and
then run the rest.

This changes that behavior so that any JMH build failure will fail the
build.

* Add a test for expected failures in JMH benchmarks.

* Document the fix to JMH builds as a breaking change.

* Split "test_benchmark_jmh_failure" from "test_benchmark_jmh".

* We don't need ValidBenchmark.scala when testing JMH failures.

* Centralize dependency logic (bazelbuild#975)

* calling

* lint

* path

* comments

* comments

* lint

* comment

* Include location in error report (bazelbuild#988)

* Include location in error report

* add test

* Ignore scalatest in unused dependency checker (bazelbuild#990)

* Ignore scalatest in unused dependency checker

* lint

* Make rules_scala compatible with --incompatible_load_proto_rules_from_bzl (bazelbuild#989)

* Make rules_scala compatible with --incompatible_load_proto_rules_from_bzl

* Use rules_java@0.1.1

* Run ./lint.sh

* Add load() for proto_library to @proto_cross_repo_boundary (bazelbuild#996)

Missed that one in bazelbuild#989.

* Update dependency configuration options (bazelbuild#995)

* Update dependency configuration

* lint

* comments

* comment

* comments

* Ignore base class annotation (bazelbuild#991)

* load java rules explicitly (bazelbuild#999)

* load python rules explicitly (bazelbuild#1000)

* Add test for scalac dependencies (bazelbuild#998)

* Add test for scalac dependencies

* comment

* specify deps for specs2 and specs2-junit deps  (bazelbuild#1002)

* specify deps for specs2 deps

needed for strict-deps/unused-deps

* Update specs2.bzl

* Update specs2_junit.bzl

* Update specs2_junit.bzl

* Update aspect.bzl

* Update aspect.bzl

* remove spotify from adopters (bazelbuild#1001)

They looked at Bazel but didn't adopt

* Revert "remove spotify from adopters (bazelbuild#1001)" (bazelbuild#1003)

This reverts commit 6442e78.

* Scalafmt 2.12 support (bazelbuild#1004)

* Scalafmt 2.12 support

* Upgrade scalafmt version

* Fix source pathing for code coverage (bazelbuild#1006)

* Fix source pathing for code coverage

* lint fixes hopefully?

* lint? idk what's going on here

* Rename in_out_pair to records

* Remove bad assumptions about how bazel works

* Clean up lingering srcs

Clean up lingering srcs

* this commit should fail tests

* this commit should pass tests

* let this test actually fail the CI

* update comments

* Refactor src_paths

* spelling is hard

* update to the latest worker protobuf file (bazelbuild#1007)

* Report macros as used (bazelbuild#1008)

* Update README.md with protobuf version matching actual dependencies (bazelbuild#1012)

Version taken from scala/private/macros/scala_repositories.bzl.
Previous version from docs was conflicting with actual version of zlib.

* Don't unnecessarily use fullyExploreTree (bazelbuild#1009)

* Fixed protobuf URL in README (bazelbuild#1013)

* Return resource's short_path when fail to find relative (bazelbuild#1010)

* Return resource's short_path when fail to find relative

* Add tests for imports (bazelbuild#1016)

* Add tests for imports

* update

* use bind to remove loader-specific labels in dependencies (bazelbuild#980)

* use bind to remove loader-specific labels in dependencies

* remove redundant bind

* Documentation for coverage support (bazelbuild#1017)

* Documentation for coverage support

* Coverage: update example script to use combined coverage report

* Coverage docs: adding note about only being tested with ScalaTest

* toolchain which turns on coverage is part of API (bazelbuild#1020)

* update rules_scala version (bazelbuild#1022)

fixes bazelbuild#1021

* Add fetch_source parameter to scala_repositories (bazelbuild#1027)

* add fetch sources to scala_repositories

* adding fetch_sources to WORKSPACE

Co-authored-by: Laurent Le Brun <laurentlb@gmail.com>
Co-authored-by: Igal Tabachnik <igalt@wix.com>
Co-authored-by: Long Cao <48221800+long-stripe@users.noreply.github.com>
Co-authored-by: P. Oscar Boykin <johnynek@users.noreply.github.com>
Co-authored-by: Ittai Zeidman <ittaiz@wix.com>
Co-authored-by: Mackenzie Starr <mackestarr@gmail.com>
Co-authored-by: Jonathon Belotti <jonathon@canva.com>
Co-authored-by: ianoc-stripe <ianoc@stripe.com>
Co-authored-by: Parth Mehrotra <parth.mehrotra.cs@gmail.com>
Co-authored-by: Christopher Johnson <tenorviol@yahoo.com>
Co-authored-by: Irina Iancu <iirina@users.noreply.github.com>
Co-authored-by: Ittai Zeidman <ittaiz@gmail.com>
Co-authored-by: joshrosen-stripe <48632449+joshrosen-stripe@users.noreply.github.com>
Co-authored-by: Paul Tarjan <github@paulisageek.com>
Co-authored-by: Benjamin Peterson <benjamin@python.org>
Co-authored-by: David Haxton <haxton.dc@gmail.com>
Co-authored-by: Alex Beal <39505601+beala-stripe@users.noreply.github.com>
Co-authored-by: lberki <lberki@users.noreply.github.com>
Co-authored-by: Andy Scott <andyscott@users.noreply.github.com>
Co-authored-by: Mantas Sakalauskas <mantass@wix.com>
Co-authored-by: Shachar Anchelovich <shacharan@wix.com>
Co-authored-by: ignasl <ignasl@wix.com>
Co-authored-by: Bor Kae Hwang <borkaehw@umich.edu>
Co-authored-by: Bor Kae Hwang <borkaehw@lucidchart.com>
Co-authored-by: Jonathon Belotti <jonathon.bel.melbourne@gmail.com>
Co-authored-by: Philipp Wollermann <philwo@google.com>
Co-authored-by: chenrui <rui@meetup.com>
Co-authored-by: chenrui <chenrui333@gmail.com>
Co-authored-by: Jin <jin@users.noreply.github.com>
Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
Co-authored-by: rivashin <rivashin@gmail.com>
Co-authored-by: Simonas Pinevičius <simonasp@wix.com>
Co-authored-by: Jamie5 <JamieLiPanda@gmail.com>
Co-authored-by: Jamie5 <jamieli550@gmail.com>
Co-authored-by: Samir Talwar <samir@noodlesandwich.com>
Co-authored-by: Yannic <contact@yannic-bonenberger.com>
Co-authored-by: David Haxton <davidhaxton@asana.com>
Co-authored-by: Gergely Fábián <gergo.fb@gmail.com>
Co-authored-by: pawelaw <pwronisz@gmail.com>
Co-authored-by: Steven Parkes <steven.parkes@ascend.io>
SocksDevil pushed a commit to SocksDevil/rules_scala that referenced this pull request Jul 6, 2020
* Add configurable phases

* Refactor rules implementation into configurable phases

* Customizable phases

* Customizable phases tests

* Break up init to more reasonable phases

* Move final to non-configurable phase

* Rename parameter builtin_customizable_phases

* Fix ijar

* Switch default for buildijar

* Add TODOs

* Rename provider

* Move to advanced_usage

* rename custom_phases

* Make default phase private

* Fix exports_jars

* Adjusted_phases

* Rename p to be more clear

* Add in-line comments

* Fix lint

* Add doc for phases

* Doc for consumers

* Doc for contributors

* Add more content

* Fix md

* Test for all rules

* Fix junit test

* Fix lint

* Add more tests

* Fix junit test

* Fix doc

* Change _test_ to _scalatest_

* More doc on provider
gergelyfabian pushed a commit to gergelyfabian/rules_scala that referenced this pull request May 31, 2022
@ittaiz
Copy link
Member

ittaiz commented Jul 13, 2022

@borkaehw @SrodriguezO out of interest- did lucid ever move to bazelbuild/rules_scala or remain on higherkindness?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants