-
Notifications
You must be signed in to change notification settings - Fork 4k
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
Windows: break the dependency on Bash #4319
Labels
area-Windows
Windows-specific issues and feature requests
P1
I'll work on this now. (Assignee required)
team-OSS
Issues for the Bazel OSS team: installation, release processBazel packaging, website
type: feature request
Comments
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 9, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 12, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 12, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 12, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 12, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 13, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 13, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the --shell_executable flag. See bazelbuild#4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9
bazel-io
pushed a commit
that referenced
this issue
Apr 16, 2018
Bazel automatically detects the local Bash and creates a custom toolchain rule for it. Later, rules that use Bash will require this toolchain and retrieve Bash's path from it instead of relying on hardcoded paths or the `--shell_executable` flag. See #4319 Change-Id: Idd8242a20d202b1f5a56cddac95b625c6c08ede9 Closes #4980. Change-Id: Ic2406a4da260b284e15852070d58472ca18340af PiperOrigin-RevId: 193022708
This was referenced Apr 17, 2018
bazel-io
pushed a commit
that referenced
this issue
Apr 23, 2018
SpawnAction.setShellCommand(String) now expects the shell interpreter's path as an argument. This change enables two things: - rules can report an error if the shell is missing - SpawnAction no longer has to know about a default shell The new ShToolchain class will later also be responsible for retrieving the active shell toolchain (added in 81ed3ad). This change brings Bazel closer to not depend on the shell unless it has to (e.g. to run shell scripts). See #4319 RELNOTES: none PiperOrigin-RevId: 193885943
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 23, 2018
Fix error reporting in the path conversion methods of the Bazel client. Previously the error reporting logic used GetLastErrorString in places where it was not appropriate (i.e. it was not a failed Windows API call that caused an error). This cleanup prepares removing the concept of the MSYS root from the Bazel client, since MSYS paths are no longer supported and we want to cut Bazel's dependency on Bash (thus MSYS) completely. See bazelbuild#4319 Change-Id: Ie50a20e0ee0c572592f637340a2f2948c7f53088
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 23, 2018
Fix error reporting in the path conversion methods of the Bazel client. Previously the error reporting logic used GetLastErrorString in places where it was not appropriate (i.e. it was not a failed Windows API call that caused an error). This cleanup prepares removing the concept of the MSYS root from the Bazel client, since MSYS paths are no longer supported and we want to cut Bazel's dependency on Bash (thus MSYS) completely. See bazelbuild#4319 Change-Id: Ie50a20e0ee0c572592f637340a2f2948c7f53088
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 23, 2018
Fix error reporting in the path conversion methods of the Bazel client. Previously the error reporting logic used GetLastErrorString in places where it was not appropriate (i.e. it was not a failed Windows API call that caused an error). This cleanup prepares removing the concept of the MSYS root from the Bazel client, since MSYS paths are no longer supported and we want to cut Bazel's dependency on Bash (thus MSYS) completely. See bazelbuild#4319 Change-Id: Ie50a20e0ee0c572592f637340a2f2948c7f53088
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 23, 2018
Fix error reporting in the path conversion methods of the Bazel client. Previously the error reporting logic used GetLastErrorString in places where it was not appropriate (i.e. it was not a failed Windows API call that caused an error). This cleanup prepares removing the concept of the MSYS root from the Bazel client, since MSYS paths are no longer supported and we want to cut Bazel's dependency on Bash (thus MSYS) completely. See bazelbuild#4319 Change-Id: Ie50a20e0ee0c572592f637340a2f2948c7f53088
bazel-io
pushed a commit
that referenced
this issue
Apr 24, 2018
Fix error reporting in the path conversion methods of the Bazel client. Previously the error reporting logic used GetLastErrorString in places where it was not appropriate (i.e. it was not a failed Windows API call that caused an error). This cleanup prepares removing the concept of the MSYS root from the Bazel client, since MSYS paths are no longer supported and we want to cut Bazel's dependency on Bash (thus MSYS) completely. See #4319 Change-Id: Ie50a20e0ee0c572592f637340a2f2948c7f53088 Closes #5072. Change-Id: Ie50a20e0ee0c572592f637340a2f2948c7f53088 PiperOrigin-RevId: 194052665
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 25, 2018
The Bazel client no longer supports MSYS paths. The only exception is "/dev/null" which the client treats as "NUL". After this change you can no longer pass MSYS paths as Bazel flag values on Windows. See bazelbuild#4319 Change-Id: I39d81843015c5a4014dd5953bac2e1c29dcd5bed
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 25, 2018
The Bazel client no longer supports MSYS paths. The only exception is "/dev/null" which the client treats as "NUL". After this change you can no longer pass MSYS paths as Bazel flag values on Windows. See bazelbuild#4319 Change-Id: I39d81843015c5a4014dd5953bac2e1c29dcd5bed
bazel-io
pushed a commit
that referenced
this issue
Apr 26, 2018
The Bazel client no longer supports MSYS paths. The only exception is "/dev/null" which the client treats as "NUL". After this change you can no longer pass MSYS paths as Bazel flag values on Windows. See #4319 Change-Id: I39d81843015c5a4014dd5953bac2e1c29dcd5bed PiperOrigin-RevId: 194372504
laszlocsomor
added a commit
to laszlocsomor/bazel-skylib
that referenced
this issue
Mar 25, 2019
This PR adds a new rule: diff_test(). The test rule compares the contents of two files. The 'diff_test.expect_same' attribute tells whether the files are expected to be the same or not. The test succeeds if the files are the same and expected to be so, or if the files are different and expected to be so. Otherwise the test fails. This rules requires no Bash on Windows, so it works without Bash, without /usr/bin/diff, and with the Windows-native test wrapper. See bazelbuild/bazel#5508 See bazelbuild/bazel#4319
laszlocsomor
added a commit
to laszlocsomor/bazel-skylib
that referenced
this issue
Mar 25, 2019
This PR adds a new rule: diff_test(). The test rule compares the contents of two files. The 'diff_test.expect_same' attribute tells whether the files are expected to be the same or not. The test succeeds if the files are the same and expected to be so, or if the files are different and expected to be so. Otherwise the test fails. This rules requires no Bash on Windows, so it works without Bash, without /usr/bin/diff, and with the Windows-native test wrapper. See bazelbuild/bazel#5508 See bazelbuild/bazel#4319
laszlocsomor
added a commit
to laszlocsomor/bazel-skylib
that referenced
this issue
Mar 25, 2019
This PR adds a new rule: diff_test(). The test rule compares the contents of two files. The 'diff_test.expect_same' attribute tells whether the files are expected to be the same or not. The test succeeds if the files are the same and expected to be so, or if the files are different and expected to be so. Otherwise the test fails. This rules requires no Bash on Windows, so it works without Bash, without /usr/bin/diff, and with the Windows-native test wrapper. See bazelbuild/bazel#5508 See bazelbuild/bazel#4319
laszlocsomor
added a commit
to laszlocsomor/bazel-skylib
that referenced
this issue
Apr 9, 2019
This new test rule compares two files and passes if the files match. On Linux/macOS/non-Windows, the test compares files using 'diff'. On Windows, the test compares files using 'fc.exe'. This utility is available on all Windows versions I tried (Windows 2008 Server, Windows 2016 Datacenter Core). See bazelbuild/bazel#5508 See bazelbuild/bazel#4319
c-parsons
pushed a commit
to bazelbuild/bazel-skylib
that referenced
this issue
Apr 12, 2019
This new test rule compares two files and passes if the files match. On Linux/macOS/non-Windows, the test compares files using 'diff'. On Windows, the test compares files using 'fc.exe'. This utility is available on all Windows versions I tried (Windows 2008 Server, Windows 2016 Datacenter Core). See bazelbuild/bazel#5508 See bazelbuild/bazel#4319
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 26, 2019
TestActionBuilder now only looks up the shell (via ShToolchain.getPathOrError) when the shell is required. Now, when using the Windows-native test wrapper with --shell_toolchain="" (and without a shell-command-looking --run_under argument) the TestActionBuilder won't depend on Bash. Related: bazelbuild#4319
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 26, 2019
TestActionBuilder now only looks up the shell (via ShToolchain.getPathOrError) when the shell is required. Now, when using the Windows-native test wrapper with --shell_toolchain="" (and without a shell-command-looking --run_under argument) the TestActionBuilder won't depend on Bash. Related: bazelbuild#4319
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 26, 2019
TestActionBuilder now only looks up the shell (via ShToolchain.getPathOrError) when the shell is required. Now, when using the Windows-native test wrapper with --shell_toolchain="" (and without a shell-command-looking --run_under argument) the TestActionBuilder won't depend on Bash. Related: bazelbuild#4319
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 26, 2019
test_wrapper_test asserts that Bazel can run tests with the Windows-native test wrapper, i.e. without Bash. Yet test_wrapper_test itself required Bash for its mock sh_test rules. This PR replaces those sh_test rules with simple Starlark test rules. Related: bazelbuild#4319
bazel-io
pushed a commit
that referenced
this issue
Apr 29, 2019
test_wrapper_test asserts that Bazel can run tests with the Windows-native test wrapper, i.e. without Bash. Yet test_wrapper_test itself required Bash for its mock sh_test rules. This PR replaces those sh_test rules with simple Starlark test rules. Related: #4319 Closes #8165. Change-Id: I6a3d6641d0998f5a7f02def61902e3fb8187e0c9 PiperOrigin-RevId: 245688126
laszlocsomor
added a commit
to laszlocsomor/bazel
that referenced
this issue
Apr 30, 2019
TestActionBuilder now only looks up the shell (via ShToolchain.getPathOrError) when the shell is required. Now, when using the Windows-native test wrapper with --shell_toolchain="" (and without a shell-command-looking --run_under argument) the TestActionBuilder won't depend on Bash. Related: bazelbuild#4319
bazel-io
pushed a commit
that referenced
this issue
May 2, 2019
TestActionBuilder now only looks up the shell (via ShToolchain.getPathOrError) when the shell is required. Now, when using the Windows-native test wrapper with --shell_toolchain="" (and without a shell-command-looking --run_under argument) the TestActionBuilder won't depend on Bash. Related: #4319 Closes #8161. PiperOrigin-RevId: 246275913
Status:
|
luca-digrazia
pushed a commit
to luca-digrazia/DatasetCommitsDiffSearch
that referenced
this issue
Sep 4, 2022
The CommandHelper no longer looks up the shell interpreter's path itself. Instead its ctor takes the path as an argument. This change will allow incrementally migrating rules that use CommandHelper to start depending on the shell toolchain. Shell-using rules today only use the ShellConfiguration config fragment to look up the shell's path. In the future, more and more rules will also retrieve the active shell toolchain, and be able to: 1. use the auto-detected local shell interpreter's location, especially when it's not the default /bin/bash 2. use define different shell toolchains (different interpreter paths) for remote builds 3. gracefully fail the build if the machine has no shell installed but the action graph included a shell action See bazelbuild/bazel#4319 Change-Id: I4da4e77e7d1fe57e8e4f5eb8820d03a840915e20 Closes #5283. Change-Id: I4da4e77e7d1fe57e8e4f5eb8820d03a840915e20 PiperOrigin-RevId: 198298315
luca-digrazia
pushed a commit
to luca-digrazia/DatasetCommitsDiffSearch
that referenced
this issue
Sep 4, 2022
SpawnAction.setShellCommand(String) now expects the shell interpreter's path as an argument. This change enables two things: - rules can report an error if the shell is missing - SpawnAction no longer has to know about a default shell The new ShToolchain class will later also be responsible for retrieving the active shell toolchain (added in bazelbuild/bazel@81ed3ad). This change brings Bazel closer to not depend on the shell unless it has to (e.g. to run shell scripts). See bazelbuild/bazel#4319 RELNOTES: none PiperOrigin-RevId: 193885943
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area-Windows
Windows-specific issues and feature requests
P1
I'll work on this now. (Assignee required)
team-OSS
Issues for the Bazel OSS team: installation, release processBazel packaging, website
type: feature request
Bazel should not require the presence of Bash, nor the presence of the
BAZEL_SH
envvar.Bash should be just another tool(chain) like Python.
The text was updated successfully, but these errors were encountered: