ok/jj
1
0
Fork 0
forked from mirrors/jj
jj/.buckconfig
Austin Seipp 5547e28cea buck: repository prep work
This lays the basic groundwork to invoke buck2 in a way that barely works and
builds nothing.

The `jj.bzl` code will be used in some upcoming diffs to add `BUCK` files to the
various crates.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2024-09-04 14:27:39 -05:00

115 lines
4.4 KiB
Text

[cells]
# 'cells' that are defined in the project. all 'jj' code should remain under
# 'root', while 'prelude' is the prelude, and third-party is where any vendored
# code should go.
root = .
mode = buck/mode
prelude = buck/prelude
toolchains = buck/toolchains
third-party = buck/third-party
none = none
[external_cells]
# use the built-in prelude that is packaged inside of the buck2 executable. at
# any time we could vendor it, or use a 'git' cell, if we needed to apply custom
# patches
prelude = bundled
[cell_aliases]
# these aliases are all required by the upstream buck2 prelude, with stubs for
# meta-specific cells. 'config//' is occasionally useful for select() calls
config = prelude
buck = none
fbcode = none
fbsource = none
[buildfile]
name = BUILD
# for the sake of future compatibility and migrations, we don't want any BUILD
# files in the project to use raw, un-imported symbols from the prelude like
# 'cxx_library()'; we instead want to make sure every rule is explicitly
# wrapped, load()ed and called, i.e. they should use 'jj.cxx_library()' instead.
# do this by loading noprelude.bzl into every BUILD file, which will stub out
# these bad symbols with an error message.
includes = root//buck/shims/noprelude.bzl
[buck2]
# use sha256 since everything supports it. XXX FIXME (aseipp): blake3?
digest_algorithms = SHA256
# enable deferred materialization. this means that intermediate outputs will
# never get written to disk, and instead will be stored in the remote cache for
# all intermediate execution steps.
#
# we don' use RE yet, but keep these enabled so we don' have to change things or
# find problems later. this also enables (local disk) sqlite materialization
# state, and defers writes to the end of actions to help improve performance.
materializations = deferred
sqlite_materializer_state = true
defer_write_actions = true
# hash all commands in the action graph; this helps avoid some spurious
# recompilations when the action graph changes, but the actual commands don't.
# NOTE: this requires `materializations = deferred`
hash_all_commands = true
# deferred materialization requires that cache outputs never expire. if they do,
# a command might fail if it expects a hit on an object that was supposed to be
# an input. in that case, the buck2d daemon needs to restart to 'purge' its
# knowledge of that object. this enables that.
restarter = true
# enable checking the peak memory in the interpreter, and also set a byte limit
# for the interpreter. this is useful for catching runaway memory usage in BUILD
# files just in case people start going crazy with them.
check_starlark_peak_memory = true
# default limit is 5MiB = 5 * 1024 * 1024 = 5242880 bytes
default_starlark_peak_memory = 5242880
# also, enforce a max callstack size to prevent ridiculous stack sizes and
# put a limit on how deep/abstract things can get.
starlark_max_callstack_size = 50
[build]
# set the default execution platform for builds on this machine. NOTE: this
# platform definition is where remote execution (optionally) is enabled via
# ExecutionPlatformRegistrationInfo
execution_platforms = root//buck/platforms:default
[parser]
# set the default execution platform for several target patterns. this is
# required; the main documentation for the format is the source code, I think...
target_platform_detector_spec = \
target:root//...->root//buck/platforms:default \
target:third-party//...->root//buck/platforms:default \
target:toolchains//...->root//buck/platforms:default
[project]
# things that should not be scanned by buck2 for file changes. if you notice
# something strange is being scanned, it might be worth adding here.
ignore = \
.jj, \
.git, \
.direnv, \
.watchman-cookie** \
target
[buck2_re_client]
# default address for the cas/actioncache. this should be public for users so
# they can always get build results. this does NOT include the 'engine_address'
# service, which enables actual remote execution. that must be enabled
# explicitly in .buckconfig.local
cas_address = https://builds.example.com
action_cache_address = https://builds.example.com
# 'instance name', which in RBE is the basic unit of isolation for projects; we
# always default this for simplicity
instance_name = jujutsu
# always use TLS for all build products
tls = true
# in .buckconfig.local:
#
# [buck2_re_client]
# engine_address = https://builds.jujutsu.dev
# http_headers = x-build-api-key:$BUILD_API_KEY