Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
684ff5f
Update README.md
wisechengyi Jun 26, 2020
d18901a
Update README.md
wisechengyi Jun 26, 2020
34b1ac7
Merge pull request #1 from twitter-forks/readme_patch
wisechengyi Jun 30, 2020
45044bf
Merge pull request #2 from blorente/blorente/pull-changes-from-upstream
wisechengyi Jul 13, 2020
a41a986
Merge pull request #3 from blorente/upstream-master
blorente Sep 10, 2020
d352214
Cleanup ScalacProvider leftovers after toolchains refactoring (#1103)
liucijus Sep 11, 2020
41ade82
Add tut deps toolchain (#1105)
liucijus Sep 19, 2020
997c59f
Add Scalafmt deps toolchain (#1107)
liucijus Sep 19, 2020
bd63009
Add jmh deps toolchain (#1106)
liucijus Sep 19, 2020
b9e7976
Testing toolchain and Junit deps (#1102)
liucijus Sep 19, 2020
47ad552
Reduce duplication in directory delete utils (#1108)
liucijus Sep 28, 2020
f598f25
Fixed test_version.sh ignoring .bazelversion (#1119)
or-shachar Sep 30, 2020
48dd5d6
Added ability to configure reporter class (#1112)
viclovsky Sep 30, 2020
99a07a6
ScalaTest deps to toolchain (#1110)
liucijus Oct 2, 2020
e982eda
Keep all maven deps in the central place for easier version managemen…
liucijus Oct 11, 2020
ba94ed4
Fix scalac label for scala_proto_library (#1117)
simuons Oct 14, 2020
76c1d88
Require Bazel 3.5.0 (#1122)
liucijus Oct 15, 2020
5333ee3
ScalaPB deps toolchain (#1104)
liucijus Oct 21, 2020
9b02cf9
Add neverlink support (#1123)
liucijus Oct 21, 2020
6f57d2a
Add scrooge toolchain (#1116)
liucijus Oct 23, 2020
43d5f5c
Pass scalac as executable (#1121)
simuons Oct 23, 2020
89e800d
[CI-shell-tests] Support granular test timeout (#1125)
or-shachar Oct 26, 2020
63fdf24
Update docs for proto toolchain (#1129)
liucijus Oct 30, 2020
a561b1a
Fix toolchain registration call for ScalaTest (#1130)
liucijus Oct 30, 2020
40a667e
Introduce Scala config (#1133)
liucijus Nov 6, 2020
0491897
Reduce analyzer warnings (#1135)
liucijus Nov 13, 2020
b5687f4
Specs2 toolchain (#1136)
liucijus Nov 13, 2020
54a19bc
Upgrade bazel-toolchains to match current rules scala bazel version 3…
liucijus Nov 18, 2020
3e2c919
Update scalatest to version 3.1.2 (#1143)
cattibrie Nov 20, 2020
9f2244c
Use released protoc binaries (#1142)
simuons Nov 21, 2020
4685ee4
Add Gemini as rules_scala user (#1145)
jakemcc Nov 21, 2020
fef0a61
Update scrooge-generator, scrooge-core, util-core and util-logging to…
cattibrie Nov 21, 2020
ef63b0a
Support scrooge-generator compiler flags in thrift_library rule (#6)
cattibrie Oct 27, 2020
45e7c12
Add option parsing file
cattibrie Oct 27, 2020
55be459
Add scopt dependency
cattibrie Nov 24, 2020
753a7ca
Lint reformat
cattibrie Nov 26, 2020
07d27fc
Add test for compiler_args in thrift_library
cattibrie Nov 27, 2020
b324880
Fix lint error
cattibrie Nov 30, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.0
3.5.0
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ jobs:
- name: "[linux] Dry test rules_scala + latest bazel version"
<<: *linux
env: TEST_SCRIPT=test_rules_scala XDG_CACHE_HOME=~/xdg_cache USE_BAZEL_VERSION=latest
- name: "[linux] Examples"
<<: *linux
env: TEST_SCRIPT=test_examples XDG_CACHE_HOME=~/xdg_cache


allow_failures:
env: TEST_SCRIPT=test_rules_scala XDG_CACHE_HOME=~/xdg_cache USE_BAZEL_VERSION=latest
Expand Down
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Disclaimer

This is Twitter's fork of [bazelbuild/scala_rules](https://github.com/bazelbuild/rules_scala), intended for Twitter internal consumption to serve Twitter's short term needs. All changes are meant to be upstreamed back to [bazelbuild/scala_rules](https://github.com/bazelbuild/rules_scala).

# Scala Rules for Bazel
[![Build Status](https://travis-ci.org/bazelbuild/rules_scala.svg?branch=master)](https://travis-ci.org/bazelbuild/rules_scala) [![Build status](https://badge.buildkite.com/90ce5244556df74db805a3c24a703fb87458396f9e1ddd687e.svg?branch=master)](https://buildkite.com/bazel/scala-rules-scala-postsubmit) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/bazelbuild_rules_scala/Lobby)

Expand Down Expand Up @@ -50,8 +54,11 @@ http_archive(
sha256 = "8c48283aeb70e7165af48191b0e39b7434b0368718709d1bced5c3781787d8e7",
)

load("@io_bazel_rules_scala//:version.bzl", "bazel_version")
bazel_version(name = "bazel_version")
# Stores Scala version and other configuration
# 2.12 is a default version, other versions can be use by passing them explicitly:
# scala_config(scala_version = "2.11.12")
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
scala_config()

load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
scala_register_toolchains()
Expand Down Expand Up @@ -159,7 +166,8 @@ for an example workspace using another scala version.

| minimal bazel version | rules_scala gitsha |
|--------|--------------------|
| 2.0.0 | HEAD |
| 3.5.0 | HEAD |
| 2.0.0 | 116709091e5e1aab3346184217b565f4cb7ba4eb |
| 1.1.0 | d681a952da74fc61a49fc3167b03548f42fc5dde |
| 0.28.1 | bd0c388125e12f4f173648fc4474f73160a5c628 |
| 0.23.x | ca655e5a330cbf1d66ce1d9baa63522752ec6011 |
Expand Down Expand Up @@ -365,6 +373,7 @@ Here's a (non-exhaustive) list of companies that use `rules_scala` in production
* [Ascend](https://ascend.io/)
* [Canva](https://www.canva.com/)
* [Etsy](https://www.etsy.com/)
* [Gemini](https://gemini.com/)
* [Grand Rounds](http://grandrounds.com/)
* [Kitty Hawk](https://kittyhawk.aero/)
* [Meetup](https://meetup.com/)
Expand Down
188 changes: 74 additions & 114 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,34 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_maven_import_external")

skylib_version = "1.0.3"

http_archive(
name = "bazel_skylib",
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
type = "tar.gz",
url = "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/{}/bazel-skylib-{}.tar.gz".format(skylib_version, skylib_version),
)

http_archive(
name = "rules_proto",
sha256 = "8e7d59a5b12b233be5652e3d29f42fba01c7cbab09f6b3a8d0a57ed6d1e9a0da",
strip_prefix = "rules_proto-7e4afce6fe62dbff0a4a03450143146f9f2d7488",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/7e4afce6fe62dbff0a4a03450143146f9f2d7488.tar.gz",
"https://github.com/bazelbuild/rules_proto/archive/7e4afce6fe62dbff0a4a03450143146f9f2d7488.tar.gz",
],
)

load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")

# Declares @com_google_protobuf//:protoc pointing to released binary
# This should stop building protoc during bazel build
# See https://github.com/bazelbuild/rules_proto/pull/36
rules_proto_dependencies()

rules_proto_toolchains()

_build_tools_release = "3.3.0"

http_archive(
Expand All @@ -17,17 +45,18 @@ load("@com_github_bazelbuild_buildtools//buildifier:deps.bzl", "buildifier_depen

buildifier_dependencies()

load("@io_bazel_rules_scala//:version.bzl", "bazel_version")
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")

bazel_version(name = "bazel_version")
scala_config()

load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
load("//scala:scala.bzl", "scala_repositories")

scala_repositories(fetch_sources = True)

load("//scala:scala_cross_version.bzl", "default_maven_server_urls")
load("//scala:scala_cross_version.bzl", "default_maven_server_urls", "scala_mvn_artifact")
load("//scala:scala_maven_import_external.bzl", "scala_maven_import_external")
load("//twitter_scrooge:twitter_scrooge.bzl", "scrooge_scala_library", "twitter_scrooge")
load("//twitter_scrooge:twitter_scrooge.bzl", "twitter_scrooge")

twitter_scrooge()

Expand All @@ -47,85 +76,21 @@ load("//specs2:specs2_junit.bzl", "specs2_junit_repositories")

specs2_junit_repositories()

register_toolchains("//testing:testing_toolchain")

load("//scala/scalafmt:scalafmt_repositories.bzl", "scalafmt_default_config", "scalafmt_repositories")

scalafmt_default_config()

scalafmt_repositories()

load("//scala:scala_cross_version.bzl", "default_scala_major_version", "scala_mvn_artifact")

MAVEN_SERVER_URLS = default_maven_server_urls()

# needed for the cross repo proto test
load("//test/proto_cross_repo_boundary:repo.bzl", "proto_cross_repo_boundary_repository")

proto_cross_repo_boundary_repository()

# test adding a scala jar:
jvm_maven_import_external(
name = "com_twitter__scalding_date",
artifact = scala_mvn_artifact(
"com.twitter:scalding-date:0.17.0",
default_scala_major_version(),
),
artifact_sha256 = "973a7198121cc8dac9eeb3f325c93c497fe3b682f68ba56e34c1b210af7b15b3",
server_urls = MAVEN_SERVER_URLS,
)

# For testing that we don't include sources jars to the classpath
jvm_maven_import_external(
name = "org_typelevel__cats_core",
artifact = scala_mvn_artifact(
"org.typelevel:cats-core:0.9.0",
default_scala_major_version(),
),
artifact_sha256 = "3ca705cba9dc0632e60477d80779006f8c636c0e2e229dda3410a0c314c1ea1d",
server_urls = MAVEN_SERVER_URLS,
)

# test of a plugin
jvm_maven_import_external(
name = "org_psywerx_hairyfotr__linter",
artifact = scala_mvn_artifact(
"org.psywerx.hairyfotr:linter:0.1.17",
default_scala_major_version(),
),
artifact_sha256 = "59becd7883613064842b3a62f84315b02457dc439f42ef62e3c80408393c905b",
server_urls = MAVEN_SERVER_URLS,
)

# test of strict deps (scalac plugin UT + E2E)
jvm_maven_import_external(
name = "com_google_guava_guava_21_0_with_file",
artifact = "com.google.guava:guava:21.0",
artifact_sha256 = "972139718abc8a4893fa78cba8cf7b2c903f35c97aaf44fa3031b0669948b480",
server_urls = MAVEN_SERVER_URLS,
)

# test of import external
# scala maven import external decodes maven artifacts to its parts
# (group id, artifact id, packaging, version and classifier). To make sure
# the decoding and then the download url composition are working the artifact example
# must contain all the different parts and sha256s so the downloaded content will be
# validated against it
scala_maven_import_external(
name = "com_github_jnr_jffi_native",
artifact = "com.github.jnr:jffi:jar:native:1.2.17",
artifact_sha256 = "4eb582bc99d96c8df92fc6f0f608fd123d278223982555ba16219bf8be9f75a9",
fetch_sources = True,
licenses = ["notice"],
server_urls = MAVEN_SERVER_URLS,
srcjar_sha256 = "5e586357a289f5fe896f7b48759e1c16d9fa419333156b496696887e613d7a19",
)

jvm_maven_import_external(
name = "org_apache_commons_commons_lang_3_5",
artifact = "org.apache.commons:commons-lang3:3.5",
artifact_sha256 = "8ac96fc686512d777fca85e144f196cd7cfe0c0aec23127229497d1a38ff651c",
server_urls = MAVEN_SERVER_URLS,
)

new_local_repository(
name = "test_new_local_repo",
build_file_content =
Expand All @@ -152,16 +117,6 @@ register_toolchains("@io_bazel_rules_scala//test/proto:scalapb_toolchain")

load("//scala:scala_maven_import_external.bzl", "java_import_external", "scala_maven_import_external")

scala_maven_import_external(
name = "com_google_guava_guava_21_0",
artifact = "com.google.guava:guava:21.0",
artifact_sha256 = "972139718abc8a4893fa78cba8cf7b2c903f35c97aaf44fa3031b0669948b480",
fetch_sources = True,
licenses = ["notice"], # Apache 2.0
server_urls = MAVEN_SERVER_URLS,
srcjar_sha256 = "b186965c9af0a714632fe49b33378c9670f8f074797ab466f49a67e918e116ea",
)

# bazel's java_import_external has been altered in rules_scala to be a macro based on jvm_import_external
# in order to allow for other jvm-language imports (e.g. scala_import)
# the 3rd-party dependency below is using the java_import_external macro
Expand All @@ -186,8 +141,11 @@ format_repositories()

http_archive(
name = "io_bazel_rules_go",
sha256 = "45409e6c4f748baa9e05f8f6ab6efaa05739aa064e3ab94e5a1a09849c51806a",
url = "https://github.com/bazelbuild/rules_go/releases/download/0.18.7/rules_go-0.18.7.tar.gz",
sha256 = "d1ffd055969c8f8d431e2d439813e42326961d0942bdf734d2c95dc30c369566",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.24.5/rules_go-v0.24.5.tar.gz",
"https://github.com/bazelbuild/rules_go/releases/download/v0.24.5/rules_go-v0.24.5.tar.gz",
],
)

load(
Expand All @@ -200,17 +158,15 @@ go_rules_dependencies()

go_register_toolchains()

bazel_toolchains_version = "3.4.0"

bazel_toolchains_sha256 = "882fecfc88d3dc528f5c5681d95d730e213e39099abff2e637688a91a9619395"
bazel_toolchains_version = "3.5.0"

http_archive(
name = "bazel_toolchains",
sha256 = bazel_toolchains_sha256,
sha256 = "89a053218639b1c5e3589a859bb310e0a402dedbe4ee369560e66026ae5ef1f2",
strip_prefix = "bazel-toolchains-%s" % bazel_toolchains_version,
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/%s/bazel-toolchains-%s.tar.gz" % (bazel_toolchains_version, bazel_toolchains_version),
"https://github.com/bazelbuild/bazel-toolchains/releases/download/%s/bazel-toolchains-%s.tar.gz" % (bazel_toolchains_version, bazel_toolchains_version),
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/%s.tar.gz" % bazel_toolchains_version,
],
)

Expand All @@ -226,36 +182,40 @@ rbe_autoconfig(
name = "buildkite_config",
)

## deps for tests of limited deps support
load("//third_party/repositories:repositories.bzl", "repositories")

scala_maven_import_external(
name = "org_springframework_spring_core",
artifact = "org.springframework:spring-core:5.1.5.RELEASE",
artifact_sha256 = "f771b605019eb9d2cf8f60c25c050233e39487ff54d74c93d687ea8de8b7285a",
licenses = ["notice"], # Apache 2.0
jvm_maven_import_external(
name = "org_typelevel__cats_core",
artifact = scala_mvn_artifact(
"org.typelevel:cats-core:0.9.0",
SCALA_MAJOR_VERSION,
),
artifact_sha256 = "3ca705cba9dc0632e60477d80779006f8c636c0e2e229dda3410a0c314c1ea1d",
server_urls = MAVEN_SERVER_URLS,
)

scala_maven_import_external(
name = "org_springframework_spring_tx",
artifact = "org.springframework:spring-tx:5.1.5.RELEASE",
artifact_sha256 = "666f72b73c7e6b34e5bb92a0d77a14cdeef491c00fcb07a1e89eb62b08500135",
licenses = ["notice"], # Apache 2.0
server_urls = MAVEN_SERVER_URLS,
deps = [
"@org_springframework_spring_core",
repositories(
for_artifact_ids = [
# test adding a scala jar:
"com_twitter__scalding_date",
# For testing that we don't include sources jars to the classpath
# "org_typelevel__cats_core",
# test of a plugin
"org_psywerx_hairyfotr__linter",
# test of strict deps (scalac plugin UT + E2E)
"com_google_guava_guava_21_0_with_file",
"com_github_jnr_jffi_native",
"org_apache_commons_commons_lang_3_5",
"com_google_guava_guava_21_0",
# test of import external
# scala maven import external decodes maven artifacts to its parts
# (group id, artifact id, packaging, version and classifier). To make sure
# the decoding and then the download url composition are working the artifact example
# must contain all the different parts and sha256s so the downloaded content will be
# validated against it
"org_springframework_spring_core",
"org_springframework_spring_tx",
"org_spire_math_kind_projector",
],
)

## deps for tests of compiler plugin
scala_maven_import_external(
name = "org_spire_math_kind_projector",
artifact = scala_mvn_artifact(
"org.spire-math:kind-projector:0.9.10",
default_scala_major_version(),
),
artifact_sha256 = "36aca2493302e2c037328107a121cda1d28bf9119fbc04fb47ea1ff9bce3c03f",
fetch_sources = False,
licenses = ["notice"],
server_urls = MAVEN_SERVER_URLS,
maven_servers = MAVEN_SERVER_URLS,
)
Loading