Skip to content

Commit

Permalink
[pre-release] no more dev branch (#148)
Browse files Browse the repository at this point in the history
* Change project structure (#12)

* [1 - Initial code refactor] basic classes extraction (#13)

* proces lock is a semaphore

* process start methods moved to the new class

* Build.Query moved to class

* targets options moved to the class

* action graph parser moved to the class

* getMnemonics moved to the class

* packages rearrangement

* scala sbt server moved to the class

* java sbt server moved to the class

* buildClientLogger + methods bodies moved uder calls

* brackets in ifs

* rebase

* proper enterprise package structure

* BUILD files in subpackages

* packages without java prefix

* logger todo

* imports are sorted

* Configure CI. (#16)

* Configure CI.

* Change job name.

* Add ls.

* Update java.ci.yml

* Update java.ci.yml

* Update java.ci.yml

* Fix test.sh

* Comment out tests.

* Update java.ci.yml

* Update test.sh

* Revert comment

* Uncomment one test

* Uncomment more tests

* Comment test

* Uniform commenting

* Uncomment one test

* Uncomment one test

* Uncomment one test

* Uncomment one test

* Uncomment one test

* Uncomment one test

* Uncomment one test

* Update BazelBspServerTest.java

* Add master

* Uncomment tests

* Increase time limit of tests

* Increase time limit of tests

* Remove master

* Increase time limit of tests

* Increase time limit of one test

* Decrease total time

* Add master

* Refactor pt 2 (#18)

- Introduced `BazelRunner` class which is fully responsible for starting processes, awaiting them and gathering results
- Moved synchronized `get<BazelData>` methods to `BazelDataResolver`. They are no longer required to be synchronized, as all the required data is fetched in the constructor of `BazelBspServer`
- Removed checked exceptions in many places and the need for try-to-rethrow
- Removed `Either`s in many places where they were no longer needed
- Corrected several minor issues (`setBackendPort` appending to a constant, `convertExitCode` not using enum names)

* Add a CI job for formatting (#20)

Add a CI job for formatting

* Test refactor (#19)

* data moved to the separete class

* runner extraction + additional methods extraction

* workspace field is now in data class + constructor argument removal

* timeouts moved to the data class

* methods refactor

* .test.sh update

* logger

* test logs

* one more log

* minor reformat

* lombok dep removal

* code reformat

* buildifier

* fix

* [configuration] Optional argument on server startup (#15)

* [configuration] Optional argument on server startup

Add a optional parameters when starting a server to specify the target
that should be built.

* BEP Server refactor (#21)

* Separating interface implementations and general dependency structure refactor (#24)

* Extracted ScalaBuildServer implementation

* Extracted JavaBuildServer implementation, both classes now implement proper interfaces

* Extracted BuildServer endpoints, very tentatively (previous problems with it)

* Extracted BuildServer implementation more properly

* Tidied up initialized/finished methods + other smaller

* Extracted several things to ParsingUtils and Constants

* Extracted BazelBspServerLifetime and BazelBspRequestHelpers, Java- and ScalaBuildServer classes now not dependent on BazelBspServer

* Added server config, Bazel runner and Bazel data dependencies to the server implementation

* Adjusted BazelData dependencies

* Extracted ServerBuildManager

* Hotfix of the cyclical dependency, to improve iteratively

* Moved part of the BSP integration in Server to the BazelBspServer constructor

* Added further parts to the constructor integration

* Removed cyclical dependency between BuildManager and BuildServerImpl

* Started removing cyclical dependency between BazelBspServer and BepServer: BazelData passed in the constructor

* Resolved cyclical dependency between BuildManager and BepServer

* Cleaned up in BazelBspServer

* Simplified the constructor, moved away logic

* General cleanup

* Extracted suppliers from interface methods in BuildServerImpl

* Added build server implementations as fields

* Prepared for interface and service separation

* Separated BuildServer logic from interface implementation

* Separated logic from interface implementation for Scala and Java BuildServers

* Extracted BEP package

* Created new packages and grouped the files + small style improvements

* Minor style corrections

* Renamed Server.java, imported io.grpc.Server

* Corrections after review

* Naming and packaging changes

* Formatting fix

* Formatting fix

* bazel runner refactor (#23)

* package update

* BazelRunner logs + minor change

* ExitCodeMapper

* runBazelCommandBes update

* BazelRunnerUpdate v2

* BazelTestRunner

* BazelCleanRunner

* BazelRunRunner

* BazelBuildRunner

* BazelInfoRunner

* BazelActionGraphQueryRunner

* BazelQueryRunner

* renames

* bazel runner builder

* packages update

* QueryResolver update

* code reformat

* buldifier

* targets fix

* format fix

* format fix

* format fix v2

* format fix v3

* format fix v4

* rebase

* review fix

* reformat

* test fix

* query kind param

* reformat

* review fix

* reformat

* packages rename

* runner lists creation update

* refactor

* common -> commons

* resolver -> resolvers

* service -> services

* util -> utils

* Packages rearrange + Utils refactor (#30)

* local services setter update

* .../impl -> .../bsp/impl

* .../services -> .../bsp/services

* ClasspathParser

* StderrDiagnosticsParser

* cleanup

* BazelBspServerTestData rollback

* .../resolvers -> .../bsp/resolvers

* reformat

* ActionGraphParser moved to resolvers

* ParsingUtils update

* reformat

* flag fix

* review fix

* setLocalService rollback

* reviw fix

* getRuleType rollback

* rename

* [Post BazelBuilder refactor part 1] TargetsResolver update (#33)

* BuildClientLogger does NOT throw an exception

* BuildClientLogger moved to bep package

* TargetsUtils now maps targets to uris

* .../resolvers/targets package

* Scala/JavaBuildServerService constructor update

* TargetsResolver constructor update

* TargetsResolver builder

* TargetsResolver refactor

* targets package removal

* reformat

* review fixes

* unused import + targetsResolver constructor visibility

* [Post BazelBuilder refactor part 2] TargetsRuleResolver (#34)

* ActionGraphParser getInputs more optimal implementation

* typo in tests

* TargetsResolver -> TargetsLanguageOptionsResolver

* TargetsRulesResolver

* reformat

* TargetsRulesResolver -> TargetRulesResolver

* Solving problems with Scala- and Java-specific endpoints (#32)

* Added an aggregate build server implementation file for passing to the launcher

* Renamed the hub class

* Moved the hub class to server/bsp

* buildTargetScalaTestClasses implementation  (#35)

* method signature update

* poc

* logic implementation

* getSrcsPaths signature rollback

* reformat

* Apply suggestions from code review

Co-authored-by: Magdalena Augustyńska <32980499+magda-aug@users.noreply.github.com>

* rules filter update

* main_class is the only source + constants update

* targets resolver is created only once in constructor

* reformat

* hasGivenName

* test

* test fix

* reformat

* success typo

Co-authored-by: Magdalena Augustyńska <32980499+magda-aug@users.noreply.github.com>

* Implement buildTargetScalaMainClasses (#36)

* Init

* Fix resolving target options

* Fix variable name

* Change access

* Fix formatting

* Fix formatting

* Read arguments

* Upgrade bsp-testkit

* Add empty test

* Fix formatting

* Move constants

* Fix

* Add more data to test

* Add package name

* Move targetRulesResolver to constructor

* return Completable Future instead of null

* Extract method

* Extract isAttributeSpecifiedAndHasGivenName

* Call buildServerImpl

* Pass compiler options and args to test

* Fix tests

* Fix tests

* Add more args to test

* Read also jvm flags

* Move to constants

* Read only jvm flags

* fix formatting

* unify naming

* use helper method

* remove duplicate methods

* Add more test cases

* revert

* Add test case

* target without args test case

* increase timeout

* add test case without jvm flags

* increase timeout

* increase timeout

* buildClient is now used in the bazel runner (#41)

* buildClient is now used in bazel runner

* format

* bazel runner doesnt throw an exception anymore

* javacoptions and scalacoptions tests (#37)

* scalacopts test

* javacopts test

* reformat

* buildifier

* java_binary import

* test fix

* testkit vestion bump + test fix

* more descriptive targets names

* scalac classDirectory and classpath test update

* .bazelversion file

* __main__/bazel-out/darwin-fastbuild/ removal

* workspaceReload implementation (#38)

* bazel builder sync

* workspaceReload PoC

* bazel sync -> bazel fetch

* reformat

* dev branch import fix (#46)

* executeBazelCommand -> executeBazelBesCommand

* bazel call

* bazel args checker removal

* bazel info update

* log update

* log config

* log level update

* config fix

* log fix

* fix

* log

* more logging

* XDXD

* LOL2

* bazel runner update

* reformat

* initializer clean up

* reformat

* exit code to constant

* date in logger

* bazelProcess moved to the bazel package

* refomat

* Prohibit wildcard imports using error-prone (#45)

So apparently error-prone is built into Bazel and provides a check for wildcard imports.
http://errorprone.info/docs/installation

* script for building and running server (#47)

* filtering blank strings from build progress logs (#50)

* filtering blank strings

* trim rollback

* isBlank -> isEmpty

* additional trim

* Fix build calls and outgroup groups interpretation (#49)

* Add builder without mnemonics for build command

* Change valid parts of classpath parsing

* Switch bazel build calls to use withArguments

* Action graph parser v2 (#42)

* scalacopts test

* javacopts test

* reformat

* buildifier

* scalac classDirectory and classpath test update

* Parse action graph v2 for bazel versions over 4.0.0

* Fix test

* Add tests for different bazel versions

* Comparison of semantic versions

* Format

* Get semantic version out of `bazel info release` command

* Extract action graph v1 tests

* Action graph parser method reorder

* Explicitly get semantic version parts

* Remove redundant return

* Refactor action graph parsers

* Remove logs for creation of test clients

* Refactor semantic version comparator

* Remove comment from .bazelignore

* Cleanup semantic version

* Streamify depset expansion to artifacts

* Remove default visibility from new concat method for strings

* Fix depset expansion when common nodes are traversed

* semantic version comparator is now static

* Improve readability of action graph parser

* Change test logging

* Remove wildcard imports

Co-authored-by: Abrams27 <abramowiczmarcin99@gmail.com>

* >=info logs are separate now (#51)

* separate logs

* new logging levels

* appending logs

* Get jdk info (#43)

* scalacopts test

* javacopts test

* reformat

* buildifier

* scalac classDirectory and classpath test update

* Parse action graph v2 for bazel versions over 4.0.0

* Fix test

* Add tests for different bazel versions

* Comparison of semantic versions

* Format

* Get semantic version out of `bazel info release` command

* Extract action graph v1 tests

* Action graph parser method reorder

* Explicitly get semantic version parts

* Remove redundant return

* Refactor action graph parsers

* Remove logs for creation of test clients

* Refactor semantic version comparator

* Remove comment from .bazelignore

* Cleanup semantic version

* Streamify depset expansion to artifacts

* Remove default visibility from new concat method for strings

* Fix depset expansion when common nodes are traversed

* semantic version comparator is now static

* Improve readability of action graph parser

* Change test logging

* Remove wildcard imports

* Get java home from default settings

* Get java version from aspect

* Get java version through aspect

* Refactor jvm build target data fetching

* Refactor jvm build target logic

* Map java home to uri

* Add java projects tests

* Remove ignored files

* Format

* Remove action graph logs

* Add new project directories to tests script

* Update BSP dependency

Co-authored-by: Abrams27 <abramowiczmarcin99@gmail.com>

* Refactor build manager into several build managers

commit 3fc3f66
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Thu Apr 15 15:39:50 2021 +0000

    Add no build flag to aspects

commit 3364cd1
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Thu Apr 15 12:29:16 2021 +0000

    Add manager for aspects

commit 935c5fc
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Wed Apr 14 12:00:30 2021 +0000

    Update refactor according to new changes

commit 936ac94
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Mon Mar 22 18:05:17 2021 +0000

    Refactor BazelBspServerBuildManager into several different services

commit 4dd0b01
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Fri Feb 26 15:46:40 2021 +0000

    Get semantic version out of `bazel info release` command

commit c594dc1
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Tue Feb 16 16:43:52 2021 +0000

    Fix test

commit f931ccd
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Mon Feb 15 17:17:08 2021 +0000

    Parse action graph v2 for bazel versions over 4.0.0

commit 5f8f55f
Author: Abrams27 <abramowiczmarcin99@gmail.com>
Date:   Sat Feb 6 21:53:54 2021 +0100

    scalac classDirectory and classpath test update

commit a2088c5
Author: Abrams27 <abramowiczmarcin99@gmail.com>
Date:   Sat Jan 30 23:21:16 2021 +0100

    buildifier

commit 9dbb63c
Author: Abrams27 <abramowiczmarcin99@gmail.com>
Date:   Sat Jan 30 23:20:21 2021 +0100

    reformat

commit 57f6fa6
Author: Abrams27 <abramowiczmarcin99@gmail.com>
Date:   Sat Jan 30 23:13:22 2021 +0100

    javacopts test

commit 26abd73
Author: Abrams27 <abramowiczmarcin99@gmail.com>
Date:   Sat Jan 30 22:38:32 2021 +0100

    scalacopts test

commit c0591d0
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Tue Mar 23 19:47:12 2021 +0000

    Add builder without mnemonics for build command

* Add lazy variables

Squashed commits of the following:

commit 3c83a38
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Fri Apr 16 12:10:26 2021 +0000

    Lazy vals recalculated on workspace reload

commit 5ff6d62
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Thu Apr 15 23:15:28 2021 +0000

    Add lazy vals for complicated calculations

* add Apache 2 license and badges

* Entire repository import test (#53)

* testkit version bump

* test

* todo

* style

* style v2

* ci fix 1

* ci fix

* variable update + gitignore update

* Add cpp support to packages:

commit c8c38f8
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Fri May 14 10:14:44 2021 +0000

    Add cpp folder to tests

commit 686b657
Merge: b0b06a3 5032915
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Thu May 13 22:44:35 2021 +0000

    Merge branch 'dev' into cpp-extension

commit b0b06a3
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Thu May 13 15:30:35 2021 +0000

    Add cpp dependency

commit b7cd44d
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Wed Apr 14 11:12:29 2021 +0000

    Add more options to cpp target example

commit 483d9fd
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Tue Apr 13 22:14:00 2021 +0000

    Tests for cpp

commit 73bc827
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Thu Apr 8 18:11:36 2021 +0000

    Updated cpp options command call

commit dfa21f4
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Wed Mar 17 19:01:18 2021 +0000

    Add cpp extension method service

commit 9fa25dd
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Tue Mar 16 18:48:17 2021 +0000

    Add cpp build target

* Remove java 11 methods

* Squashed commit of the following:

commit a9bac73
Author: Andre Rocha <andrefmrocha@live.com.pt>
Date:   Tue May 25 22:32:53 2021 +0000

    Add bazel-sonatype dependency

* Update scala repository checksums

* ProjectView files parser implementation (#55)

* ProjectView files parser implementation

* code reformat

* buildifier

* ci tests

* character variable extraction

* reading test config from file

* java docs

* parse default method

* google format

* google format v2

* PoC: First, very very very basic projectview usage (#57)

* reading file

* projecview provider

* projectview provider usage

* logic

* deps

* fix

* buildifier

* google format

* config removal

* google format v2

* test fix

* google format v3

* kind moved to utils

* config rollback

* fix

* Guarantee deps are built before finishing import. (#56)

* Guarantee deps are built before finishing import.

Dependencies must be fully build in order to guarantee the dependencies are all present for indexing.

* Increase tests timeout

* Refactor BazelBspCompilationManager for more readability

* Refactor targets union to TargetsUtils

* [Projectview] import support (#58)

* DirectoriesSectionParserTest tests rename

* TargetsSectionParserTest tests rename

* ProjectViewParserImplTest tests rename

* ProjectViewSectionSplitterTest tests rename

* import test

* splitter test update

* ProjectImportParser

* merge

* parser + test adjustment

* buildifier

* format

* format v2

* format v3

* format v4

* format v5

* format v6

* format v7

* format v8

* Update README.md

* Update README.md

* [fix] projectview - tab symbol parsing  (#66)

* tabs fix + test

* tests update

* google style

* google style v2

* [fix] Semantic version - more generic support (#68)

* tests

* homebrew version test

* impl fix

* google style

* [fix] 'Loading: 0 packages loaded' message prohibition (#71)

[fix] 'Loading: 0 packages loaded' message prohibition

* [fix] java 8 feature fix (#73)

* installation process simplification (#76)

* depdendencies update

* install script update

* instalation location

* Update README.md

* Update README.md

* Update README.md

* version bump

* RC1 version

* [fix] bazel WORKSPACE warnings fix (#81)

* sha update

* workspace update

* 404 fix?

* main/src ... removal (#82)

* [change] Integration tests upgrade (#83)

* test resources -> e2e

* .bazelignore update

* sample repo new test

* style + buildifier

* sample repo bash runner

* BazelBspActionGraphV1Test test

* style

* BazelBspActionGraphV2Test + build files update

* BazelBspJava11ProjectTest

* BazelBspJava8ProjectTest

* BazelBspEntireRepositoryImportTest + style

* BazelBspCppProjectTest

* e2e:all

* buildifier

* [change] e2e tests CI update (#84)

* ci update

* test scrip fix

* shared cache

* old tests removal (#86)

* [change] multimode project (#87)

* projectview extraction

* commons extraction

* e2e visibility update

* bazelrunner extraction

* install extraction

* server extraction

* readme update

* [change] unit tests ci update (#89)

* [change] docs update (#91)

* README - tests section

* Create BUMPVERSION.md

* [fix] Semantic Versioning regex update (#93)

* rolling release test

* regex update

* [added] changelog (#97)

* 1.0.0 changelog

* Update CHANGELOG.md

* [fixed] targets from `exports` attribute are passed to the BSP deps attribute (#98)

* daemon typo fix

* test update + fix

* BuildRuleAttributeExtractor

* BazelBspQueryManager update

* ScalaBuildServerService update

* build fix

* TargetsLanguageOptionsResolver update

* google format

* ci update

* google format

* google style

* .getExplicitlySpecified

* google style

* Update CHANGELOG.md

* Update CHANGELOG.md

* [fixed] scala test rules include `scala_specs2_junit_test` (#101)

* e2e test

* buildifier

* scala_specs2_junit_test should be included in model now

* buildifier

* test update

* Update CHANGELOG.md

* Update CHANGELOG.md

* format

* fix

* [release-preparation] 1.0.1 (#102)

* version bump

* changelog

* [release-preparation] cleanup

* [release-preparation] final cleanup

* Allow running a Bazel command without [positional] arguments

One command that doesn't accept arguments at all (only flags) is `bazel clean`.

* [change] better heuristics for guessing source roots (#126)

* Better heuristics for guessing source roots

* refactoring

* formatting

* no recursion

* refactoring and test

* Refactoring and changelog

* more refactoring

* Add JvmBuildServer implementation to fix running tests

* [change] bump java to 11 (#129)

Co-authored-by: Lukasz Wawrzyk <uwawrzyk@twitter.com>

* [feature] handle multiple projects in one workspace (#130)

Co-authored-by: Lukasz Wawrzyk <uwawrzyk@twitter.com>

* [fix] project bazel version switched to 3.7.2 (#141)

* [fix] .bazelversion file

* [fix] changelog upadate

* [fix] badges in readme (#142)

* Update README.md

* Integration tests badge

* format badge

* unit tests badge

* return only the relevant output jar rather than 5-6 jars including sources, headers etc. (#136)

* build project during sync (#137)

* Filter out non runtime jars for running apps and tests (#131)

* Filter out non runtime jars

* use aspect to get runtime classpath

* improve test framework

* [feature] project view 2000 (#143)

* project view parser major refactor

* bazel_path section

* i love java 11

* style

* buildifier

* style v2

* debugger_address section

* i love java 11 more

* debugger_address section part 2

* splitter tests update

* splitter test fix

* java_path section

* comments

* project view usages

* scala.md fix

* e2e test resources fix

* e2e test resources fix part 2

* [e2e] cleaning environment before installation

* tests update

* new mechanism usage

* fix

* visibility and toString() impl

* little test change

* style

* another little test fix

* targets visibility update

* i really love tests

* try > java exceptions

* builidier

* visibility update

* more visibility update

* format

* java docs

* compareByName -> hasName

* instanceOf -> getInstance

* split -> getRawSectionsForFileContent

* anoter -> another_

* list -> stream

* commons in ci

* getInstance -> createInstance

* readme update

* format

* Update CHANGELOG.md

* Update CHANGELOG.md

* targets validation out

* bazel in install update

* even more tests

* [fix] error diagnostics with correct position (#146)

* new FileDiagnostic

* new StderrDiagnosticsParser

* usages

* Update CHANGELOG.md

* [change] handle aspects when multiple projects are in workspace (#132)

Co-authored-by: Andrzej Głuszak <gluszak.andrzej@gmail.com>
Co-authored-by: Magdalena Augustyńska <32980499+magda-aug@users.noreply.github.com>
Co-authored-by: ex0ns <ex0ns@users.noreply.github.com>
Co-authored-by: Gerard Drozdz <gerardd@interia.pl>
Co-authored-by: André Rocha <andre.rocha@jetbrains.com>
Co-authored-by: Andre Rocha <andrefmrocha@live.com.pt>
Co-authored-by: Justin Kaeser <justin.kaeser@jetbrains.com>
Co-authored-by: odisseus <odisseus@users.noreply.github.com>
Co-authored-by: Lukasz Wawrzyk <uwawrzyk@twitter.com>
Co-authored-by: Łukasz Wawrzyk <lukasz.wawrzyk@gmail.com>
Co-authored-by: Łukasz Wawrzyk <lwawrzyk@virtuslab.com>
  • Loading branch information
12 people committed Feb 15, 2022
1 parent 201cb26 commit 9ebca73
Show file tree
Hide file tree
Showing 136 changed files with 4,946 additions and 1,231 deletions.
4 changes: 2 additions & 2 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
build --java_toolchain=@bazel_tools//tools/jdk:toolchain_java8
build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java8
build --java_toolchain=@bazel_tools//tools/jdk:toolchain_java11
build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java11
build --javacopt="-Xep:WildcardImport:ERROR"
test --javacopt="-Xep:WildcardImport:ERROR"
run --javacopt="-Xep:WildcardImport:ERROR"
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.7.2
34 changes: 17 additions & 17 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -30,10 +30,10 @@ jobs:
needs: setup
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -49,10 +49,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -68,10 +68,10 @@ jobs:
needs: setup
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -87,10 +87,10 @@ jobs:
needs: setup
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -106,10 +106,10 @@ jobs:
needs: setup
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -125,10 +125,10 @@ jobs:
needs: setup
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -144,10 +144,10 @@ jobs:
needs: setup
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Cache bazel
uses: actions/cache@v2
env:
Expand All @@ -156,4 +156,4 @@ jobs:
path: ~/.cache/bazel
key: ${{ runner.os }}-${{ env.cache-name }}-${{ github.sha }}
- name: Run test
run: bazel run //e2e:BazelBspEntireRepositoryImportTest
run: bazel run //e2e:BazelBspEntireRepositoryImportTest
33 changes: 22 additions & 11 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,46 @@ on:
branches: [ dev, master ]

jobs:
commons-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Run tests
run: bazel test //commons/...

bazelrunner-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Run tests
run: bazel test //bazelrunner/...
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Run tests
run: bazel test //bazelrunner/...

projectview-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Run tests
run: bazel test //projectview/...

server-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Run tests
run: bazel test //server/...
19 changes: 14 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,38 @@
<!-- Keep a Changelog guide -> https://keepachangelog.com -->

## [Unreleased]
### Features 🎉
- New, better project view! Now you can configure installer as well! | [#143](https://github.com/JetBrains/bazel-bsp/pull/143)

### Changes 🔄
- Improved heuristics for guessing source roots. It looks directory structures such as `src/java` or `main/java`. | [#126](https://github.com/JetBrains/bazel-bsp/pull/126)

### Fixes 🛠️
- Error diagnostics are now also sent for source files, including targets. | [#146](https://github.com/JetBrains/bazel-bsp/pull/146)
- Now the project is built using bazel version `3.7.2`, as the rules currently used are no longer supported by bazel. | [#141](https://github.com/JetBrains/bazel-bsp/pull/141)


## [1.0.1] - 24.09.2021
### Added
### Features 🎉
- [This](CHANGELOG.md) changelog. | [#97](https://github.com/JetBrains/bazel-bsp/pull/97)

### Changed
### Changes 🔄
- Implementation of e2e tests. Have been moved to the `e2e` module and are now based on execution scenarios. | [#83](https://github.com/JetBrains/bazel-bsp/pull/83)
- Github actions e2e tests execution - e2e tests are executed in parallel. | [#84](https://github.com/JetBrains/bazel-bsp/pull/84)
- Project structure - now it is multi module project. | [#87](https://github.com/JetBrains/bazel-bsp/pull/87)
- Github actions unit tests execution - each module has a separate job. | [#89](https://github.com/JetBrains/bazel-bsp/pull/89)
- Created [document](docs/BUMPVERSION.md) with release tips. | [#91](https://github.com/JetBrains/bazel-bsp/pull/91)

### Removed
### Removed ✂️
- Old implementation of e2e tests. | [#86](https://github.com/JetBrains/bazel-bsp/pull/86)

### Fixed
### Fixes 🛠️
- Warnings generated by the [WORKSPACE file](WORKSPACE). | [#81](https://github.com/JetBrains/bazel-bsp/pull/81)
- Semantic versioning parser - now it can parse every valid version. | [#93](https://github.com/JetBrains/bazel-bsp/pull/93)
- `exports` attribute propagation to the BSP | [#98](https://github.com/JetBrains/bazel-bsp/pull/98)
- Now all `scala_junit_test` based rules (including `scala_specs2_junit_test`) are included in the BSP tests, unfortunately without test classes. | [#101](https://github.com/JetBrains/bazel-bsp/pull/101)

## [1.0.0] - 23.08.2021
### Added
- Everything...


Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
[![JetBrains team project](http://jb.gg/badges/team.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
[![Integration test](https://github.com/JetBrains/bazel-bsp/actions/workflows/integration-test.yml/badge.svg)](https://github.com/JetBrains/bazel-bsp/actions/workflows/integration-test.yml)
[![Format](https://github.com/JetBrains/bazel-bsp/actions/workflows/format.yml/badge.svg)](https://github.com/JetBrains/bazel-bsp/actions/workflows/format.yml)
[![Integration tests](https://github.com/JetBrains/bazel-bsp/actions/workflows/integration-tests.yml/badge.svg)](https://github.com/JetBrains/bazel-bsp/actions/workflows/integration-tests.yml)
[![Unit tests](https://github.com/JetBrains/bazel-bsp/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/JetBrains/bazel-bsp/actions/workflows/unit-tests.yml)

# Bazel BSP
An implementation of the [Build Server Protocol](https://github.com/build-server-protocol/build-server-protocol) for Bazel.
Expand Down Expand Up @@ -52,9 +54,9 @@ cs launch -r m2Local org.jetbrains.bsp:bazel-bsp:<your version> -M org.jetbrains


## Project Views
In order to work on huge monorepos you might want to specify directories and targets to work on. To address this issue, Bazel BSP supports part of the [Project Views](https://ij.bazel.build/docs/project-views.html) introduced by Google. Currently you can use following rules: `directories`, `targets` and `import`.
In order to work on huge monorepos you might want to specify directories and targets to work on. To address this issue, Bazel BSP supports (partly) the [Project Views](https://ij.bazel.build/docs/project-views.html) introduced by Google.

Simply create a `projectview.bazelproject` file, specify rules inside and run the server. If no such files will be found, by default entire project will be loaded.
Check [project view readme](projectview/README.md) for more info.


## Tests
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public BazelData resolveBazelData() {
String version = readOnlyBazelLine(BAZEL_VERSION_PARAMETER);
Path workspacePath = Paths.get(execRoot);
String workspaceLabel = workspacePath.toFile().getName();
return new BazelData(execRoot, workspaceRoot, binRoot, workspaceLabel, version);
Path bspProjectRoot = Paths.get("").toAbsolutePath().normalize();
return new BazelData(execRoot, workspaceRoot, binRoot, workspaceLabel, version, bspProjectRoot);
}

private String readOnlyBazelLine(String argument) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package org.jetbrains.bsp.bazel.bazelrunner;

import ch.epfl.scala.bsp4j.StatusCode;
import com.google.common.base.Suppliers;
import com.google.common.collect.Lists;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.bsp.bazel.server.loggers.BuildClientLogger;
Expand All @@ -19,9 +23,27 @@ public class BazelRunner {

private Optional<Integer> besBackendPort = Optional.empty();
private Optional<BuildClientLogger> buildClientLogger = Optional.empty();
private final Supplier<File> workspaceRoot;

public BazelRunner(String bazelBinaryPath) {
this.bazel = bazelBinaryPath;
this.workspaceRoot = Suppliers.memoize(this::resolveWorkspaceRoot);
}

private File resolveWorkspaceRoot() {
var builder = new ProcessBuilder(bazel, "info", "workspace");
try {
var process = new BazelProcess(builder.start(), Optional.empty());
var result = process.waitAndGetResult();
if (result.getStatusCode() != StatusCode.OK) {
throw new RuntimeException(
"Failed to run bazel info workspace. Make sure that the project is created inside a"
+ " bazel workspace");
}
return new File(result.getStdout().get(0));
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public BazelRunnerCommandBuilder commandBuilder() {
Expand All @@ -48,10 +70,6 @@ private String getBesBackendAddress() {
}

BazelProcess runBazelCommand(String command, List<String> flags, List<String> arguments) {
if (arguments.isEmpty()) {
LOGGER.fatal("Not enough arguments");
throw new IllegalArgumentException("Not enough arguments");
}

try {
LOGGER.info(
Expand All @@ -68,6 +86,7 @@ private synchronized BazelProcess runBazelProcess(
LOGGER.info("Running: {}", processArgs);

ProcessBuilder processBuilder = new ProcessBuilder(processArgs);
processBuilder.directory(workspaceRoot.get());
Process process = processBuilder.start();

return new BazelProcess(process, buildClientLogger);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
package org.jetbrains.bsp.bazel.bazelrunner.data;

import java.nio.file.Path;

public class BazelData {

private final String execRoot;
private final String workspaceRoot;
private final String binRoot;
private final String workspaceLabel;
private final SemanticVersion version;
private final Path bspProjectRoot;

public BazelData(
String execRoot,
String workspaceRoot,
String binRoot,
String workspaceLabel,
String version) {
String version,
Path bspProjectRoot) {
this.execRoot = execRoot;
this.workspaceRoot = workspaceRoot;
this.binRoot = binRoot;
this.workspaceLabel = workspaceLabel;
this.version = SemanticVersion.fromReleaseData(version);
this.bspProjectRoot = bspProjectRoot;
}

public String getExecRoot() {
Expand All @@ -40,4 +45,8 @@ public String getWorkspaceLabel() {
public SemanticVersion getVersion() {
return version;
}

public Path getBspProjectRoot() {
return bspProjectRoot;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ java_library(
deps = [
"@maven//:ch_epfl_scala_bsp4j",
"@maven//:com_google_guava_guava",
"@maven//:io_vavr_vavr",
],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.jetbrains.bsp.bazel.commons;

import com.google.common.io.CharSource;
import com.google.common.io.Files;
import io.vavr.control.Try;
import java.nio.charset.Charset;
import java.nio.file.Path;

public final class BetterFiles {

public static Try<String> tryReadFileContent(Path filePath) {
return Try.success(filePath)
.map(Path::toFile)
.map(file -> Files.asCharSource(file, Charset.defaultCharset()))
.mapTry(CharSource::read);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,15 @@ public class Constants {
public static final String BAZELBSP_LOG_FILE_NAME = "bazelbsp.log";
public static final String BAZELBSP_TRACE_JSON_FILE_NAME = "bazelbsp.trace.json";

public static final List<String> KNOWN_SOURCE_ROOTS =
ImmutableList.of("java", "scala", "kotlin", "javatests", "src", "test", "main", "testsrc");
public static final String DIAGNOSTICS = "diagnostics";
public static final String EXEC_ROOT_PREFIX = "exec-root://";
public static final String SCALA_COMPILER_CLASSPATH_FILES = "scala_compiler_classpath_files";
public static final String JAVA_RUNTIME_CLASSPATH_ASPECT_OUTPUT_GROUP =
"java_runtime_classpath_files";

public static final String SCALA_TEST_MAIN_CLASSES_ATTRIBUTE_NAME = "main_class";

public static final String DEFAULT_PROJECT_VIEW_FILE = "projectview.bazelproject";
public static final String PROJECT_VIEW_FILE_PATH = "projectview.bazelproject";
public static final String DEFAULT_PROJECT_VIEW_FILE_PATH =
".bazelbsp/default-projectview.bazelproject";
}

0 comments on commit 9ebca73

Please sign in to comment.