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)
The installable tree the tests mount at /ext (PG18's extension_control_path / dynamic_library_path; contract §3): share/extension/postjevsql.control share/extension/postjevsql--<VERSION>.sql (generated from the .so) 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)