Merge pull request #47448 from kalbasit/nixpkgs_add-bazel-watcher
bazel-watcher: init at 0.5.0
This commit is contained in:
commit
2e38f5fc6e
|
@ -25,7 +25,13 @@ in stdenv.mkDerivation (fBuildAttrs // {
|
||||||
buildPhase = fFetchAttrs.buildPhase or ''
|
buildPhase = fFetchAttrs.buildPhase or ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
bazel --output_base="$bazelOut" --output_user_root="$bazelUserRoot" fetch $bazelFlags $bazelTarget
|
# Bazel computes the default value of output_user_root before parsing the
|
||||||
|
# flag. The computation of the default value involves getting the $USER
|
||||||
|
# from the environment. I don't have that variable when building with
|
||||||
|
# sandbox enabled. Code here
|
||||||
|
# https://github.com/bazelbuild/bazel/blob/9323c57607d37f9c949b60e293b573584906da46/src/main/cpp/startup_options.cc#L123-L124
|
||||||
|
#
|
||||||
|
USER=homeless-shelter bazel --output_base="$bazelOut" --output_user_root="$bazelUserRoot" fetch $bazelFlags $bazelTarget
|
||||||
|
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
|
@ -33,10 +39,19 @@ in stdenv.mkDerivation (fBuildAttrs // {
|
||||||
installPhase = fFetchAttrs.installPhase or ''
|
installPhase = fFetchAttrs.installPhase or ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
|
# Remove all built in external workspaces, Bazel will recreate them when building
|
||||||
|
rm -rf $bazelOut/external/{bazel_tools,\@bazel_tools.marker}
|
||||||
|
rm -rf $bazelOut/external/{embedded_jdk,\@embedded_jdk.marker}
|
||||||
|
rm -rf $bazelOut/external/{local_*,\@local_*}
|
||||||
|
|
||||||
# Patching markers to make them deterministic
|
# Patching markers to make them deterministic
|
||||||
for i in $bazelOut/external/\@*.marker; do
|
sed -i 's, -\?[0-9][0-9]*$, 1,' $bazelOut/external/\@*.marker
|
||||||
sed -i 's, -\?[0-9][0-9]*$, 1,' "$i"
|
|
||||||
done
|
# Remove all vcs files
|
||||||
|
rm -rf $(find $bazelOut/external -type d -name .git)
|
||||||
|
rm -rf $(find $bazelOut/external -type d -name .svn)
|
||||||
|
rm -rf $(find $bazelOut/external -type d -name .hg)
|
||||||
|
|
||||||
# Patching symlinks to remove build directory reference
|
# Patching symlinks to remove build directory reference
|
||||||
find $bazelOut/external -type l | while read symlink; do
|
find $bazelOut/external -type l | while read symlink; do
|
||||||
ln -sf $(readlink "$symlink" | sed "s,$NIX_BUILD_TOP,NIX_BUILD_TOP,") "$symlink"
|
ln -sf $(readlink "$symlink" | sed "s,$NIX_BUILD_TOP,NIX_BUILD_TOP,") "$symlink"
|
||||||
|
|
80
pkgs/development/tools/bazel-watcher/default.nix
Normal file
80
pkgs/development/tools/bazel-watcher/default.nix
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
{ buildBazelPackage
|
||||||
|
, cacert
|
||||||
|
, fetchFromGitHub
|
||||||
|
, fetchpatch
|
||||||
|
, git
|
||||||
|
, go
|
||||||
|
, stdenv
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildBazelPackage rec {
|
||||||
|
name = "bazel-watcher-${version}";
|
||||||
|
version = "0.5.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bazelbuild";
|
||||||
|
repo = "bazel-watcher";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1sis723hwax4dg0c28x20yj0hjli66q1ykcvjirgy57znz4iwlq9";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/bazelbuild/bazel-watcher/commit/4d5928eee3dd5843a1b55136d914b78fef7f25d0.patch";
|
||||||
|
sha256 = "0gxzcdqgifrmvznfy0p5nd11b39n2pwxcvpmhc6hxf85mwlxz7dg";
|
||||||
|
})
|
||||||
|
|
||||||
|
./update-gazelle-fix-ssl.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ go git ];
|
||||||
|
|
||||||
|
bazelTarget = "//ibazel";
|
||||||
|
|
||||||
|
fetchAttrs = {
|
||||||
|
preBuild = ''
|
||||||
|
patchShebangs .
|
||||||
|
|
||||||
|
# tell rules_go to use the Go binary found in the PATH
|
||||||
|
sed -e 's:go_register_toolchains():go_register_toolchains(go_version = "host"):g' -i WORKSPACE
|
||||||
|
|
||||||
|
# tell rules_go to invoke GIT with custom CAINFO path
|
||||||
|
export GIT_SSL_CAINFO="${cacert}/etc/ssl/certs/ca-bundle.crt"
|
||||||
|
'';
|
||||||
|
|
||||||
|
preInstall = ''
|
||||||
|
# Remove the go_sdk (it's just a copy of the go derivation) and all
|
||||||
|
# references to it from the marker files. Bazel does not need to download
|
||||||
|
# this sdk because we have patched the WORKSPACE file to point to the one
|
||||||
|
# currently present in PATH. Without removing the go_sdk from the marker
|
||||||
|
# file, the hash of it will change anytime the Go derivation changes and
|
||||||
|
# that would lead to impurities in the marker files which would result in
|
||||||
|
# a different sha256 for the fetch phase.
|
||||||
|
rm -rf $bazelOut/external/{go_sdk,\@go_sdk.marker}
|
||||||
|
sed -e '/^FILE:@go_sdk.*/d' -i $bazelOut/external/\@*.marker
|
||||||
|
'';
|
||||||
|
|
||||||
|
sha256 = "1iyjvibvlwg980p7nizr6x5v31dyp4a344f0xn839x393583k59d";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildAttrs = {
|
||||||
|
preBuild = ''
|
||||||
|
patchShebangs .
|
||||||
|
|
||||||
|
# tell rules_go to use the Go binary found in the PATH
|
||||||
|
sed -e 's:go_register_toolchains():go_register_toolchains(go_version = "host"):g' -i WORKSPACE
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -Dm755 bazel-bin/ibazel/*_pure_stripped/ibazel $out/bin/ibazel
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/bazelbuild/bazel-watcher;
|
||||||
|
description = "Tools for building Bazel targets when source files change.";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ kalbasit ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
diff --git a/WORKSPACE b/WORKSPACE
|
||||||
|
index 4011d9b..d085ae8 100644
|
||||||
|
--- a/WORKSPACE
|
||||||
|
+++ b/WORKSPACE
|
||||||
|
@@ -52,11 +52,9 @@ http_archive(
|
||||||
|
|
||||||
|
http_archive(
|
||||||
|
name = "bazel_gazelle",
|
||||||
|
- sha256 = "c0a5739d12c6d05b6c1ad56f2200cb0b57c5a70e03ebd2f7b87ce88cabf09c7b",
|
||||||
|
- urls = [
|
||||||
|
- "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/0.14.0/bazel-gazelle-0.14.0.tar.gz",
|
||||||
|
- "https://github.com/bazelbuild/bazel-gazelle/releases/download/0.14.0/bazel-gazelle-0.14.0.tar.gz",
|
||||||
|
- ],
|
||||||
|
+ sha256 = "0600ea2daf98170211dc561fd348a8a9328c91eb6df66a381eaaf0bcd122e80b",
|
||||||
|
+ strip_prefix = "bazel-gazelle-b34f46af2f31ee0470e7364352c2376bcc10d079",
|
||||||
|
+ url = "https://github.com/bazelbuild/bazel-gazelle/archive/b34f46af2f31ee0470e7364352c2376bcc10d079.tar.gz",
|
||||||
|
)
|
||||||
|
|
||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies")
|
|
@ -8058,6 +8058,8 @@ with pkgs;
|
||||||
buildBazelPackage = buildBazelPackage.override { enableNixHacks = false; };
|
buildBazelPackage = buildBazelPackage.override { enableNixHacks = false; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bazel-watcher = callPackage ../development/tools/bazel-watcher { };
|
||||||
|
|
||||||
buildBazelPackage = callPackage ../build-support/build-bazel-package { };
|
buildBazelPackage = callPackage ../build-support/build-bazel-package { };
|
||||||
|
|
||||||
bear = callPackage ../development/tools/build-managers/bear { };
|
bear = callPackage ../development/tools/build-managers/bear { };
|
||||||
|
|
Loading…
Reference in a new issue