Skip to content

Commit

Permalink
lib: add BUILD files
Browse files Browse the repository at this point in the history
The `grammar` macro from `pest_derive` doesn't actually interpret the given file
as relative in our case, so we have to give it the fully qualified relative path
which exists in the `buck-out/` dir.

Signed-off-by: Austin Seipp <[email protected]>
  • Loading branch information
thoughtpolice committed Jun 25, 2024
1 parent 2cc0b14 commit ff8c768
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 0 deletions.
1 change: 1 addition & 0 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
alias(name = name, actual = actual)
for (name, actual) in [
# (top-level name, fully-qualified target name)
("jj-lib", "//lib:lib"),
("gen-protos", "//lib/gen-protos:gen-protos"),
("proc-macros", "//lib/proc-macros:proc-macros"),
]
Expand Down
115 changes: 115 additions & 0 deletions lib/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@

load("//buck/shims/jj.bzl", "jj")

[
# set an alias for 'lib' which is the default for this package, and jj-lib
# which other crates may set dependencies on. defaults to the full build
alias(
name = name,
actual = ':jj-lib-full',
) for name in [ 'lib', 'jj-lib' ]
]

filegroup(
name = 'protos.pb',
srcs = glob(['src/protos/*.proto']),
visibility = [ '//lib/...' ],
)

# extra dependencies for the full build of jj-lib
FULL_DEPS = [
'third-party//rust:git2',
'third-party//rust:gix',
'third-party//rust:watchman_client',
]

# these deps are shared between all versions
# of jj-lib. filter out FULL_DEPS from this list
COMMON_DEPS = filter(lambda x: x not in FULL_DEPS, [
# CARGO-SYNC-START: dependencies
'//lib/proc-macros:jj-lib-proc-macros',
'third-party//rust:async-trait',
'third-party//rust:backoff',
'third-party//rust:blake2',
'third-party//rust:bytes',
'third-party//rust:chrono',
'third-party//rust:config',
'third-party//rust:digest',
'third-party//rust:either',
'third-party//rust:futures',
'third-party//rust:git2',
'third-party//rust:gix',
'third-party//rust:glob',
'third-party//rust:hex',
'third-party//rust:ignore',
'third-party//rust:itertools',
'third-party//rust:maplit',
'third-party//rust:once_cell',
'third-party//rust:pest',
'third-party//rust:pest_derive',
'third-party//rust:pollster',
'third-party//rust:prost',
'third-party//rust:rand',
'third-party//rust:rand_chacha',
'third-party//rust:rayon',
'third-party//rust:ref-cast',
'third-party//rust:regex',
'third-party//rust:serde',
'third-party//rust:serde_json',
'third-party//rust:smallvec',
'third-party//rust:strsim',
'third-party//rust:tempfile',
'third-party//rust:thiserror',
'third-party//rust:tokio',
'third-party//rust:tracing',
'third-party//rust:watchman_client',
'third-party//rust:whoami',
'third-party//rust:zstd',
# CARGO-SYNC-END
]) + select({
"config//os:windows": [
# CARGO-SYNC-START: dependencies@cfg(windows)
'third-party//rust:winreg',
# CARGO-SYNC-END
],
"DEFAULT": [
# CARGO-SYNC-START: dependencies@cfg(unix)
'third-party//rust:rustix',
# CARGO-SYNC-END
],
})

jj.rust_library(
name = "jj-lib-full",
crate = "jj_lib",
srcs = glob([
"src/**/*.pest",
"src/**/*.rs",
], exclude = [
"src/protos/*.rs"
]),
mapped_srcs = {
"//lib/gen-protos:protos.rs": "src/protos",
},
features = [
"watchman",
"git",
],
deps = COMMON_DEPS + FULL_DEPS,
)

jj.rust_library(
name = "jj-lib-core",
crate = "jj_lib",
srcs = glob([
"src/**/*.pest",
"src/**/*.rs",
], exclude = [
"src/protos/*.rs"
]),
mapped_srcs = {
"//lib/gen-protos:protos.rs": "src/protos",
},

deps = COMMON_DEPS,
)
2 changes: 2 additions & 0 deletions lib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ include = [
"!*.snap*",
]

[lints]
workspace = true

[[test]]
name = "runner"
Expand Down
5 changes: 5 additions & 0 deletions lib/PACKAGE
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

package(
inherit = True,
visibility = [ 'PUBLIC' ],
)
6 changes: 6 additions & 0 deletions lib/src/fileset_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ use thiserror::Error;

use crate::dsl_util::{self, InvalidArguments, StringLiteralParser};

#[cfg(buck_build)]
#[derive(Parser)]
#[grammar = "lib/src/fileset.pest"]
struct FilesetParser;

#[cfg(not(buck_build))]
#[derive(Parser)]
#[grammar = "fileset.pest"]
struct FilesetParser;
Expand Down
6 changes: 6 additions & 0 deletions lib/src/revset_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ use crate::dsl_util::{
FoldableExpression, InvalidArguments, KeywordArgument, StringLiteralParser,
};

#[cfg(buck_build)]
#[derive(Parser)]
#[grammar = "lib/src/revset.pest"]
struct RevsetParser;

#[cfg(not(buck_build))]
#[derive(Parser)]
#[grammar = "revset.pest"]
struct RevsetParser;
Expand Down

0 comments on commit ff8c768

Please sign in to comment.