BUCKannotatedBUCKsource41 lines · 1.5 KB · raw
1load("//build:defs.bzl", "VERSION", "first_party_library")
2
3first_party_library(
4    name = "postjevsql",
5    pgrx_extension = True,
6    srcs = glob(["src/**/*.rs"]),
7    crate_root = "src/lib.rs",
8    # pg_module_magic! embeds these, as cargo would set them.
9    env = {
10        "CARGO_PKG_NAME": "postjevsql",
11        "CARGO_PKG_VERSION": VERSION,
12    },
13    deps = [
14        "//third-party:jev-client",
15        "//third-party:jev-protocol",
16        "//crates/postjevsql-core:postjevsql-core",
17        "//crates/postjevsql-pg:postjevsql-pg",
18        "//third-party:pgrx",
19        "//third-party:serde_json",
20    ],
21    visibility = ["PUBLIC"],
22)
23
24# The installable tree the tests mount at /ext (PG18's
25# extension_control_path / dynamic_library_path; contract §3):
26#   share/extension/postjevsql.control
27#   share/extension/postjevsql--<VERSION>.sql  (generated from the .so)
28#   lib/postjevsql.so
29genrule(
30    name = "ext",
31    srcs = ["postjevsql.control"],
32    out = "ext",
33    cmd = " && ".join([
34        "mkdir -p $OUT/share/extension $OUT/lib",
35        "cp $(location :postjevsql[cdylib]) $OUT/lib/postjevsql.so",
36        # @CARGO_VERSION@ is pgrx's placeholder; VERSION is the only source.
37        "sed 's/@CARGO_VERSION@/" + VERSION + "/' $SRCDIR/postjevsql.control > $OUT/share/extension/postjevsql.control",
38        "$(exe //tools/pgrx-schema:pgrx-schema) postjevsql $OUT/lib/postjevsql.so $OUT/share/extension/postjevsql.control $OUT/share/extension/postjevsql--" + VERSION + ".sql",
39    ]),
40    visibility = ["PUBLIC"],
41)