Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
55687: *: bazel-ify cockroachdb r=irfansharif a=irfansharif This commit introduces a new build system to cockroachdb: Bazel. The hope here is to eventually replace our current Makefile. It sets the foundation for introducing Bazel in our CI systems for parallelized builds/test runs, artifact caching, remote builds, and many other such profits (literally, it could reduce infra spend). We originally prototyped a pseudo bazel-ified cockroachdb in #52824, which resulted in a week long effort (with otan@, jamesl@, and myself) to wrap it up in earnest in #55258. This is the polished version of the resulting work, the write up for which can be found at http://go.crdb.dev/bazel-hackweek. --- Most of the BUILD files here were auto-generated through Gazelle (see doc). Some of these auto-generated files required further manual tweaking to get just right (see doc). These were mostly around the packages that link into c-dependencies, but also the few packages that rely on auto-generated code (again, see doc). These specific files are the ones intended for review (they're also the ones responsible for auto-generation), among a few others. I've listed them out here: ``` new file: .bazelrc modified: .gitattributes modified: .gitignore new file: BUILD.bazel new file: DEPS.bzl modified: Makefile new file: WORKSPACE new file: pkg/ccl/gssapiccl/BUILD.bazel new file: pkg/ccl/storageccl/engineccl/BUILD.bazel new file: pkg/cli/BUILD.bazel new file: pkg/cmd/cockroach-oss/BUILD.bazel new file: pkg/cmd/cockroach-short/BUILD.bazel new file: pkg/cmd/cockroach/BUILD.bazel new file: pkg/col/coldata/BUILD.bazel new file: pkg/geo/geoproj/BUILD.bazel modified: pkg/geo/geoproj/geoproj.go modified: pkg/geo/geoproj/proj.cc new file: pkg/geo/geos/BUILD.bazel new file: pkg/sql/colconv/BUILD.bazel new file: pkg/sql/colexec/BUILD.bazel new file: pkg/sql/colexec/COLEXEC.bzl modified: pkg/sql/colexec/and_or_projection_tmpl.go modified: pkg/sql/colexec/any_not_null_agg_tmpl.go modified: pkg/sql/colexec/avg_agg_tmpl.go modified: pkg/sql/colexec/bool_and_or_agg_tmpl.go modified: pkg/sql/colexec/cast_tmpl.go new file: pkg/sql/colexec/colbuilder/BUILD.bazel new file: pkg/sql/colexec/colexec.go modified: pkg/sql/colexec/concat_agg_tmpl.go modified: pkg/sql/colexec/const_tmpl.go modified: pkg/sql/colexec/count_agg_tmpl.go modified: pkg/sql/colexec/default_agg_tmpl.go modified: pkg/sql/colexec/default_cmp_expr_tmpl.go modified: pkg/sql/colexec/default_cmp_proj_ops_tmpl.go modified: pkg/sql/colexec/default_cmp_sel_ops_tmpl.go modified: pkg/sql/colexec/distinct_tmpl.go modified: pkg/sql/colexec/hash_aggregator_tmpl.go modified: pkg/sql/colexec/hash_utils_tmpl.go modified: pkg/sql/colexec/hashjoiner_tmpl.go modified: pkg/sql/colexec/hashtable_tmpl.go modified: pkg/sql/colexec/is_null_ops_tmpl.go modified: pkg/sql/colexec/mergejoinbase_tmpl.go modified: pkg/sql/colexec/mergejoiner_tmpl.go modified: pkg/sql/colexec/min_max_agg_tmpl.go modified: pkg/sql/colexec/ordered_synchronizer_tmpl.go modified: pkg/sql/colexec/proj_const_ops_tmpl.go modified: pkg/sql/colexec/proj_non_const_ops_tmpl.go modified: pkg/sql/colexec/quicksort_tmpl.go modified: pkg/sql/colexec/rank_tmpl.go modified: pkg/sql/colexec/relative_rank_tmpl.go modified: pkg/sql/colexec/row_number_tmpl.go modified: pkg/sql/colexec/rowstovec_tmpl.go modified: pkg/sql/colexec/select_in_tmpl.go modified: pkg/sql/colexec/selection_ops_tmpl.go modified: pkg/sql/colexec/sort_tmpl.go modified: pkg/sql/colexec/substring_tmpl.go modified: pkg/sql/colexec/sum_agg_tmpl.go modified: pkg/sql/colexec/utils_tmpl.go modified: pkg/sql/colexec/values_differ_tmpl.go modified: pkg/sql/colexec/vec_comparators_tmpl.go modified: pkg/sql/colexec/window_peer_grouper_tmpl.go new file: pkg/sql/colflow/BUILD.bazel new file: pkg/sql/opt/BUILD.bazel new file: pkg/sql/opt/exec/BUILD.bazel new file: pkg/sql/opt/exec/execbuilder/BUILD.bazel new file: pkg/sql/opt/exec/explain/BUILD.bazel new file: pkg/sql/opt/memo/BUILD.bazel new file: pkg/sql/opt/norm/BUILD.bazel new file: pkg/sql/opt/optgen/lang/BUILD.bazel new file: pkg/sql/opt/xform/BUILD.bazel new file: pkg/sql/parser/BUILD.bazel new file: pkg/sql/parser/sql-gen.sh modified: pkg/sql/parser/sql.y new file: pkg/storage/BUILD.bazel modified: vendor ``` The changes to all the _tmpl.go files were needed to include necessary import analysis/compilation for bazel when generating the .eg.go files (also summarized in doc up above), and should be uncontroversial. I think it's easiest to pull the branch down locally and to click around to see what works, and what doesn't. I would start at the top-level BUILD.bazel and WORSPACE file. I've added comments to explain what most of added machinery does. Release note: None Co-authored-by: irfan sharif <[email protected]>
- Loading branch information