summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rwxr-xr-xetc/gen-repos.sh29
-rw-r--r--etc/gen_readme.py35
-rw-r--r--etc/imports/rules.TARGETS6
-rw-r--r--etc/repos.json545
-rw-r--r--etc/repos.template.json14
5 files changed, 629 insertions, 0 deletions
diff --git a/etc/gen-repos.sh b/etc/gen-repos.sh
new file mode 100755
index 0000000..a704bf8
--- /dev/null
+++ b/etc/gen-repos.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Copyright 2024 Huawei Cloud Computing Technology Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -euo pipefail
+
+readonly ROOT=$(readlink -f $(dirname $0)/..)
+
+: ${RULES_CC_REPO:=https://github.com/just-buildsystem/rules-cc}
+: ${RULES_CC_BRANCH:=master}
+
+just-import-git -C ${ROOT}/etc/repos.template.json \
+ --as rules-cc -b ${RULES_CC_BRANCH} ${RULES_CC_REPO} rules \
+ | \
+ just-import-git -C - \
+ --map test-rules test-rules \
+ --as rules-test -b ${RULES_CC_BRANCH} ${RULES_CC_REPO} tests \
+ | ${ROOT}/bin/hdump.py > ${ROOT}/etc/repos.json
diff --git a/etc/gen_readme.py b/etc/gen_readme.py
new file mode 100644
index 0000000..66618a3
--- /dev/null
+++ b/etc/gen_readme.py
@@ -0,0 +1,35 @@
+import json
+import os
+from typing import List
+
+def lines(doc:List[str]):
+ return '\n'.join(doc)
+
+def gen_doc(dir: str, f):
+
+ with open(os.path.join(dir, "RULES")) as r:
+ rules = json.load(r)
+
+ for k, v in sorted(rules.items()):
+ print(f"### `[\"{os.path.basename(dir)}\", \"{k}\"]`\n\n {lines(v['doc'])}\n", file=f)
+ print("| Field | Description |", file=f)
+ print("| ----- | ----------- |", file=f)
+ for field, doc in sorted(v["field_doc"].items()):
+ print(f"| `\"{field}\"` | {' '.join(doc)} |", file=f)
+ print(file=f)
+
+
+def main():
+ with open("README.md", "w") as f:
+ print(
+ """# Rust rules for the [`just`](https://github.com/just-buildsystem/justbuild) build system
+
+A collection of rules for building Rust libraries, binaries and unit tests.
+""",
+ file=f,
+ )
+ gen_doc("rules/rust", f)
+ gen_doc("rules/cargo", f)
+
+
+main()
diff --git a/etc/imports/rules.TARGETS b/etc/imports/rules.TARGETS
new file mode 100644
index 0000000..5b41441
--- /dev/null
+++ b/etc/imports/rules.TARGETS
@@ -0,0 +1,6 @@
+{ "tree":
+ { "type": "install"
+ , "dirs": [[["TREE", null, "rules"], "rules"]]
+ , "tainted": ["test"]
+ }
+}
diff --git a/etc/repos.json b/etc/repos.json
new file mode 100644
index 0000000..936a90b
--- /dev/null
+++ b/etc/repos.json
@@ -0,0 +1,545 @@
+{ "main": "rust-rules"
+, "repositories":
+ { "rust-rules":
+ { "repository": {"type": "file", "path": "."}
+ , "bindings": {"test-rules": "rules-test", "rules-cc": "rules-cc"}
+ }
+ , "imports": {"repository": {"type": "file", "path": "etc/imports"}}
+ , "test-rules":
+ { "repository": "rust-rules"
+ , "target_root": "imports"
+ , "target_file_name": "rules.TARGETS"
+ }
+ , "rules-cc":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/rules-cc"
+ , "branch": "master"
+ , "commit": "ba89bf29f2dd7d13dbd659d5319232ee98070126"
+ , "subdir": "rules"
+ }
+ }
+ , "rules-test":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/rules-cc"
+ , "branch": "master"
+ , "commit": "ba89bf29f2dd7d13dbd659d5319232ee98070126"
+ , "subdir": "tests"
+ }
+ , "bindings":
+ { "test-just": "rules-test/just"
+ , "test-rules": "test-rules"
+ , "test-libs": "rules-test/test-libs"
+ , "rules": "rules-test/rules"
+ }
+ }
+ , "rules-test/gtest":
+ { "repository":
+ { "type": "archive"
+ , "fetch": "https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz"
+ , "content": "cbd19f97df3ab86b174520cd850d238617c156e0"
+ , "sha256": "ad7fdba11ea011c1d925b3289cf4af2c66a352e18d4c7264392fead75e919363"
+ , "subdir": "googletest-1.13.0"
+ }
+ , "target_root": "rules-test/imports"
+ , "target_file_name": "gtest.TARGETS"
+ }
+ , "rules-test/just":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/justbuild"
+ , "branch": "v1.4.0-alpha+20240619"
+ , "commit": "96158f57c36bbc649abcd9a213bf04df6cf8a1f5"
+ }
+ , "bindings":
+ { "rules": "rules-test/just/rules-just"
+ , "gsl": "rules-test/just/com_github_microsoft_gsl"
+ , "cli11": "rules-test/just/cli11"
+ , "json": "rules-test/just/json"
+ , "fmt": "rules-test/just/fmt"
+ , "ssl": "rules-test/just/ssl"
+ , "grpc": "rules-test/just/com_github_grpc_grpc"
+ , "googleapis": "rules-test/just/google_apis"
+ , "bazel_remote_apis": "rules-test/just/bazel_remote_apis"
+ , "libgit2": "rules-test/just/com_github_libgit2_libgit2"
+ , "protoc": "rules-test/just/protobuf"
+ , "libcurl": "rules-test/just/com_github_curl_curl"
+ , "libarchive": "rules-test/just/com_github_libarchive_libarchive"
+ }
+ }
+ , "rules-test/just/bazel_remote_apis":
+ { "repository":
+ { "type": "archive"
+ , "content": "da6d7d589ccd1924ba9840a4e329e438dfa27f86"
+ , "fetch": "https://github.com/bazelbuild/remote-apis/archive/e1fe21be4c9ae76269a5a63215bb3c72ed9ab3f0.tar.gz"
+ , "sha256": "7421abd5352ccf927c2050453a4dbfa1f7b1c7170ec3e8702b6fe2d39b8805fe"
+ , "sha512": "3042690ee4b17a27db92ca867b4225c25f3f16344dce5fe86695d72ddda531e1593a5f0f70a291283451ce1e9f606c2285d222df3787815cd8f4054e1113bc9d"
+ , "subdir": "remote-apis-e1fe21be4c9ae76269a5a63215bb3c72ed9ab3f0"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.bazel_remote_apis"
+ , "bindings":
+ { "rules": "rules-test/just/rules"
+ , "google_apis": "rules-test/just/google_apis"
+ , "patches": "rules-test/just/patches"
+ }
+ }
+ , "rules-test/just/bzip2":
+ { "repository":
+ { "type": "archive"
+ , "content": "f9d91f2012aedeedcfd3bd918124ca11f0160373"
+ , "fetch": "https://github.com/libarchive/bzip2/archive/refs/tags/bzip2-1.0.8.tar.gz"
+ , "sha256": "db106b740252669664fd8f3a1c69fe7f689d5cd4b132f82ba82b9afba27627df"
+ , "sha512": "596d1b304f1f2d64b020d04845db10a2330c7f614a9fd0b5344afff65877d2141b3fcaa43d9e2dbc2f6a7929a1dab07df54d3d4bd69678b53906472958c7b80c"
+ , "subdir": "bzip2-bzip2-1.0.8"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.bzip2"
+ , "bindings": {"rules": "rules-test/just/rules-bzip2"}
+ }
+ , "rules-test/just/cli11":
+ { "repository":
+ { "type": "archive"
+ , "content": "eb82119c62808a65bb2d15561f1968259ed50c95"
+ , "fetch": "https://github.com/CLIUtils/CLI11/archive/refs/tags/v2.4.1.tar.gz"
+ , "sha256": "73b7ec52261ce8fe980a29df6b4ceb66243bb0b779451dbd3d014cfec9fdbb58"
+ , "sha512": "965290d09977672d3bc3c57ca4b89a88c2c09461da6e866b18217d702d4d5a0977588fcb8fef1a3c3804e61ad80d276029f47469cc83dbfdc7021ee35f6b7269"
+ , "subdir": "CLI11-2.4.1"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.cli11"
+ , "bindings": {"rules": "rules-test/just/rules"}
+ }
+ , "rules-test/just/com_github_cares_cares":
+ { "repository":
+ { "type": "archive"
+ , "content": "4237a53f7a5dc1cfb4d04a6b6374f8674c32e271"
+ , "fetch": "https://github.com/c-ares/c-ares/releases/download/cares-1_19_1/c-ares-1.19.1.tar.gz"
+ , "sha256": "321700399b72ed0e037d0074c629e7741f6b2ec2dda92956abe3e9671d3e268e"
+ , "sha512": "466a94efda626e815a6ef7a890637056339f883d549ea6055e289fd8cd2391130e5682c905c0fb3bd7e955af7f6deb793562c170eb0ee066a4a62085a82ba470"
+ , "subdir": "c-ares-1.19.1"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.cares"
+ , "bindings":
+ { "rules": "rules-test/just/rules"
+ , "grpc": "rules-test/just/com_github_grpc_grpc"
+ }
+ }
+ , "rules-test/just/com_github_curl_curl":
+ { "repository":
+ { "type": "archive"
+ , "content": "7b7ace4d7cc7d4059163bbd789ef7071e5d326e5"
+ , "fetch": "https://github.com/curl/curl/releases/download/curl-8_6_0/curl-8.6.0.tar.gz"
+ , "sha256": "9c6db808160015f30f3c656c0dec125feb9dc00753596bf858a272b5dd8dc398"
+ , "sha512": "43fdb6b81b394f3382d353d5f57673b2b3d26cfe34b25d08a526bc0597f508d5298e5a7088d0736d1f139cad19cd922affa51533c3a5a4bb5f2de68891c2958d"
+ , "subdir": "curl-8.6.0"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.curl"
+ , "bindings":
+ { "rules": "rules-test/just/rules-curl"
+ , "zlib": "rules-test/just/zlib"
+ , "ssl": "rules-test/just/ssl"
+ , "cares": "rules-test/just/com_github_cares_cares"
+ }
+ }
+ , "rules-test/just/com_github_grpc_grpc":
+ { "repository":
+ { "type": "archive"
+ , "content": "d89bbef10ae30b511e062e6aa36520a2805e0f97"
+ , "fetch": "https://github.com/grpc/grpc/archive/refs/tags/v1.62.1.tar.gz"
+ , "sha256": "c9f9ae6e4d6f40464ee9958be4068087881ed6aa37e30d0e64d40ed7be39dd01"
+ , "sha512": "3224ad2617c18156f90c54c1ebf1f2015e405a6f12546e8709e0c905f52508c9f1a13b4d5a6cc7a35abf58b429985b5b504c9062f50c0d3d6aa163180a61047a"
+ , "subdir": "grpc-1.62.1"
+ , "pragma": {"special": "ignore"}
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.grpc"
+ , "rule_file_name": "RULES.grpc"
+ , "bindings":
+ { "rules": "rules-test/just/rules-grpc"
+ , "protobuf": "rules-test/just/protobuf"
+ , "ssl": "rules-test/just/ssl"
+ , "absl": "rules-test/just/com_google_absl"
+ , "zlib": "rules-test/just/zlib"
+ , "re2": "rules-test/just/re2"
+ , "cares": "rules-test/just/com_github_cares_cares"
+ , "google_apis": "rules-test/just/google_apis"
+ }
+ }
+ , "rules-test/just/com_github_libarchive_libarchive":
+ { "repository":
+ { "type": "archive"
+ , "content": "50abf77b7226df46a33013f278464c1588b0ceea"
+ , "fetch": "https://github.com/libarchive/libarchive/releases/download/v3.7.4/libarchive-3.7.4.tar.gz"
+ , "sha256": "7875d49596286055b52439ed42f044bd8ad426aa4cc5aabd96bfe7abb971d5e8"
+ , "sha512": "a37006350c2a61a35ecbe638c3168661bef5cbcb7dd3e5ec9a14af1a9aa89ec1be23902cdd17c60bf15859ba1e41bad8456dee9df686bc2d825b30d453cb2e44"
+ , "subdir": "libarchive-3.7.4"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.archive"
+ , "bindings":
+ { "rules": "rules-test/just/rules-archive"
+ , "zlib": "rules-test/just/zlib"
+ , "ssl": "rules-test/just/ssl"
+ , "bzip2": "rules-test/just/bzip2"
+ , "lzma": "rules-test/just/lzma"
+ }
+ }
+ , "rules-test/just/com_github_libgit2_libgit2":
+ { "repository":
+ { "type": "archive"
+ , "content": "80f999c62e8da8da7d64fe543c8eeb9953bf6974"
+ , "fetch": "https://github.com/libgit2/libgit2/archive/refs/tags/v1.7.2.tar.gz"
+ , "sha256": "de384e29d7efc9330c6cdb126ebf88342b5025d920dcb7c645defad85195ea7f"
+ , "sha512": "825737e4a1991fba50ea535f15b0e560ebe76ead752e04aeba36925b944d0da77fe9826a70980a1aa3d0bf9afbedfab79dd92e799c9252931384c89ebec9b012"
+ , "subdir": "libgit2-1.7.2"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.git2"
+ , "bindings":
+ { "rules": "rules-test/just/rules-git2"
+ , "zlib": "rules-test/just/zlib"
+ , "ssl": "rules-test/just/ssl"
+ }
+ }
+ , "rules-test/just/com_github_microsoft_gsl":
+ { "repository":
+ { "type": "archive"
+ , "content": "386f0a89a47763481223a63d5026215af8d3c827"
+ , "fetch": "https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz"
+ , "sha256": "f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9"
+ , "sha512": "7fa7446796c6bf82fb3bff09f86a69c446a27be528bef3b17c8bc5ad2f24d5cf86bdb3d3813ecb44726e8f395020180e97e41027330d1fbf545cc0f0b44aac29"
+ , "subdir": "GSL-4.0.0/include/gsl"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.gsl"
+ , "bindings": {"rules": "rules-test/just/rules"}
+ }
+ , "rules-test/just/com_google_absl":
+ { "repository":
+ { "type": "archive"
+ , "content": "e9bacd5f3a5c3a51f4f0f50e9ed963464714caa7"
+ , "fetch": "https://github.com/abseil/abseil-cpp/releases/download/20240116.0/abseil-cpp-20240116.0.tar.gz"
+ , "sha256": "338420448b140f0dfd1a1ea3c3ce71b3bc172071f24f4d9a57d59b45037da440"
+ , "sha512": "018488e69cca472ef118631bd79bca4ef0cf1363432e79b81532942168d305511e4cdf4dc72611275e9a9de00cd71c0245be4ec287ff36147248e218218bf825"
+ , "subdir": "abseil-cpp-20240116.0"
+ , "mirrors":
+ [ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/abseil/abseil-cpp/archive/20240116.0.tar.gz"
+ ]
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.absl"
+ , "bindings":
+ { "rules": "rules-test/just/rules-absl"
+ , "patches": "rules-test/just/patches"
+ }
+ }
+ , "rules-test/just/fmt":
+ { "repository":
+ { "type": "zip"
+ , "content": "c54a3ec3cba9177c0be51051b762a74449ea1466"
+ , "fetch": "https://github.com/fmtlib/fmt/releases/download/10.2.1/fmt-10.2.1.zip"
+ , "sha256": "312151a2d13c8327f5c9c586ac6cf7cddc1658e8f53edae0ec56509c8fa516c9"
+ , "sha512": "1cf0e3dd09c7d87e0890b8743559159d3be2a8f33c135516962d17c4eeb7b00659e6acd74518bd5566ee4e83ddaba155fecb4c229f90cd258b3b832e72ad82cd"
+ , "subdir": "fmt-10.2.1"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.fmt"
+ , "bindings": {"rules": "rules-test/just/rules"}
+ }
+ , "rules-test/just/google_apis":
+ { "repository":
+ { "type": "archive"
+ , "content": "5d9001f3dff8dec1880c06c0de100a0c2fc65094"
+ , "fetch": "https://github.com/googleapis/googleapis/archive/2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz"
+ , "sha256": "5bb6b0253ccf64b53d6c7249625a7e3f6c3bc6402abd52d3778bfa48258703a0"
+ , "sha512": "cdeefae807df7097174b4bb28c0900b06a68d424c00ebba4ff5add260c9c651351d5e429bfc5de42f95ebb75dadec313f7bd3991c2fa476c9104f9ea656acad4"
+ , "subdir": "googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92"
+ , "mirrors":
+ [ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/googleapis/googleapis/archive/2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz"
+ ]
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.google_apis"
+ , "bindings":
+ {"rules": "rules-test/just/rules", "patches": "rules-test/just/patches"}
+ }
+ , "rules-test/just/json":
+ { "repository":
+ { "type": "zip"
+ , "content": "733571f96614cc01fcebf76c8359f52706677c61"
+ , "fetch": "https://github.com/nlohmann/json/releases/download/v3.11.3/include.zip"
+ , "sha256": "a22461d13119ac5c78f205d3df1db13403e58ce1bb1794edc9313677313f4a9d"
+ , "sha512": "8d923e2586acf736fc1886bf1839ca0126444ec60ce93a4bd18c21eef4475dff6f608203e42bf4968878dc50727a8c20c517dd8c1ac5c6b0bb6a95f2dce5546e"
+ , "subdir": "include/nlohmann"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.json"
+ , "bindings": {"rules": "rules-test/just/rules"}
+ }
+ , "rules-test/just/lzma":
+ { "repository":
+ { "type": "archive"
+ , "content": "6dae9322046ff66b7074c33b24be9a98f5cee42a"
+ , "fetch": "https://github.com/xz-mirror/xz/archive/refs/tags/v5.4.0.tar.gz"
+ , "sha256": "26ec069c41e5dfae221825b9f28a4934cb6ce3bedd3f55bc0a08073f7c2e42fd"
+ , "sha512": "60aba20197d329a1e0d86b32de8a9727a98e5ff6f1eda6111c5ddf85086edeefcf9e2cc3998d237e248bf4af7cf746923b45d236e6b47d88f63cf3d57cae9e8f"
+ , "subdir": "xz-5.4.0"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.lzma"
+ , "bindings": {"rules": "rules-test/just/rules-lzma"}
+ }
+ , "rules-test/just/patches":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/justbuild"
+ , "branch": "v1.4.0-alpha+20240619"
+ , "commit": "96158f57c36bbc649abcd9a213bf04df6cf8a1f5"
+ , "subdir": "etc/patches"
+ }
+ }
+ , "rules-test/just/protobuf":
+ { "repository":
+ { "type": "archive"
+ , "content": "989aa1fec35687ab84229fa84099582dd8f0246a"
+ , "fetch": "https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz"
+ , "sha256": "9bd87b8280ef720d3240514f884e56a712f2218f0d693b48050c836028940a42"
+ , "sha512": "d2fad2188118ced2cd951bdb472d72cc9e9b2158c88eeca652c76332a884b5b5b4b58628f7777272fa693140753823584ea9c7924f1655b1d5a363f59bdf7a4c"
+ , "subdir": "protobuf-25.1"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.protobuf"
+ , "bindings":
+ { "rules": "rules-test/just/rules-protobuf"
+ , "zlib": "rules-test/just/zlib"
+ , "absl": "rules-test/just/com_google_absl"
+ }
+ }
+ , "rules-test/just/re2":
+ { "repository":
+ { "type": "archive"
+ , "content": "8eebd70d7ebd33ac5d736090cecd7cfe1831b9e3"
+ , "fetch": "https://github.com/google/re2/archive/refs/tags/2022-04-01.tar.gz"
+ , "sha256": "1ae8ccfdb1066a731bba6ee0881baad5efd2cd661acd9569b689f2586e1a50e9"
+ , "sha512": "fc3d7cc1ee6bd771719845566d83ffc8c4e19d838748e842a1e19c7564473c9a0a061bebb3966ffa82de6515346f9bbddc2d94ceb3de89233f58826774bd7ce7"
+ , "subdir": "re2-2022-04-01"
+ , "mirrors":
+ [ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/re2/archive/2022-04-01.tar.gz"
+ ]
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.re2"
+ , "bindings": {"rules": "rules-test/just/rules-re2"}
+ }
+ , "rules-test/just/rules":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/justbuild"
+ , "branch": "v1.4.0-alpha+20240619"
+ , "commit": "96158f57c36bbc649abcd9a213bf04df6cf8a1f5"
+ , "subdir": "rules"
+ }
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "bindings": {"toolchain": "rules-test/just/toolchain"}
+ }
+ , "rules-test/just/rules-absl":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.absl"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-archive":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.archive"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-boringssl":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.boringssl"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-bzip2":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.bzip2"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-curl":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.curl"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-git2":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.git2"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-grpc":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.grpc"
+ , "bindings":
+ {"base": "rules-test/just/rules", "protoc": "rules-test/just/protobuf"}
+ }
+ , "rules-test/just/rules-just":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.just"
+ , "bindings":
+ { "base": "rules-test/just/rules"
+ , "protoc": "rules-test/just/protobuf"
+ , "grpc": "rules-test/just/com_github_grpc_grpc"
+ }
+ }
+ , "rules-test/just/rules-lzma":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.lzma"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-protobuf":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.protobuf"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/rules-re2":
+ { "repository": "rules-test/just/rules"
+ , "target_root": "rules-test/just/defaults"
+ , "rule_root": "rules-test/just/rules"
+ , "target_file_name": "TARGETS.re2"
+ , "bindings": {"base": "rules-test/just/rules"}
+ }
+ , "rules-test/just/ssl":
+ { "repository":
+ { "type": "archive"
+ , "content": "7b7deaf147baf61c8efdc8a4ac79a16ba70b216e"
+ , "fetch": "https://github.com/google/boringssl/archive/ae72a4514c7afd150596b0a80947f3ca9b8363b5.tar.gz"
+ , "sha256": "057f662b0e85931a84945b2e89ba201fd44b0583da827c948fe443593690fb83"
+ , "sha512": "757a2727a2ab0e45656c22d807ea1217c74c276f51fa721a87f92b59a4d040d9931586e912b4558f57330340cc3af6361f1694b1479b764635c6a111b356afc4"
+ , "subdir": "boringssl-ae72a4514c7afd150596b0a80947f3ca9b8363b5"
+ , "mirrors":
+ [ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/ae72a4514c7afd150596b0a80947f3ca9b8363b5.tar.gz"
+ ]
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.boringssl"
+ , "bindings":
+ { "rules": "rules-test/just/rules-boringssl"
+ , "patches": "rules-test/just/patches"
+ }
+ }
+ , "rules-test/just/toolchain":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/justbuild"
+ , "branch": "v1.4.0-alpha+20240619"
+ , "commit": "96158f57c36bbc649abcd9a213bf04df6cf8a1f5"
+ , "subdir": "etc/toolchain"
+ }
+ , "rule_root": "rules-test/just/rules"
+ }
+ , "rules-test/just/zlib":
+ { "repository":
+ { "type": "archive"
+ , "content": "88faf0fca21e0d82de44366fdd52aaadbab2e6b6"
+ , "fetch": "https://github.com/madler/zlib/releases/download/v1.3/zlib-1.3.tar.gz"
+ , "sha256": "ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e"
+ , "sha512": "185795044461cd78a5545250e06f6efdb0556e8d1bfe44e657b509dd6f00ba8892c8eb3febe65f79ee0b192d6af857f0e0055326d33a881449f3833f92e5f8fb"
+ , "subdir": "zlib-1.3"
+ }
+ , "target_root": "rules-test/just/import targets"
+ , "target_file_name": "TARGETS.zlib"
+ , "bindings": {"rules": "rules-test/just/rules"}
+ }
+ , "rules-test/libcurl":
+ { "repository":
+ { "type": "archive"
+ , "content": "540b4de2edfa015b894ad86d51b33a55f451ac99"
+ , "fetch": "https://github.com/curl/curl/releases/download/curl-8_0_1/curl-8.0.1.tar.gz"
+ , "sha256": "5fd29000a4089934f121eff456101f0a5d09e2a3e89da1d714adf06c4be887cb"
+ , "sha512": "87d945e65176613c6296f8b130bd6c5355e3ca3c62ee4010edd481950cad9760482fd3be8a84e51501c118c29ebc284b8f87c49b06f9d248e9da5819fda38f8f"
+ , "subdir": "curl-8.0.1"
+ }
+ , "target_root": "rules-test/imports"
+ , "target_file_name": "libcurl.TARGETS"
+ , "bindings": {"libz": "rules-test/libz"}
+ }
+ , "rules-test/libz":
+ { "repository":
+ { "type": "archive"
+ , "content": "d115fc690fa59d3be51b3442158876536140b6c2"
+ , "fetch": "https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz"
+ , "sha256": "b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30"
+ , "sha512": "99f0e843f52290e6950cc328820c0f322a4d934a504f66c7caa76bd0cc17ece4bf0546424fc95135de85a2656fed5115abb835fd8d8a390d60ffaf946c8887ad"
+ , "subdir": "zlib-1.2.13"
+ }
+ , "target_root": "rules-test/imports"
+ , "target_file_name": "libz.TARGETS"
+ }
+ , "rules-test/rules":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/rules-cc"
+ , "branch": "master"
+ , "commit": "ba89bf29f2dd7d13dbd659d5319232ee98070126"
+ , "subdir": "rules"
+ }
+ }
+ , "rules-test/test-libs":
+ { "repository": "rules-test/imports"
+ , "target_file_name": "libs.TARGETS"
+ , "bindings":
+ { "gtest": "rules-test/gtest"
+ , "libz": "rules-test/libz"
+ , "libcurl": "rules-test/libcurl"
+ }
+ }
+ , "rules-test/imports":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/rules-cc"
+ , "branch": "master"
+ , "commit": "ba89bf29f2dd7d13dbd659d5319232ee98070126"
+ , "subdir": "etc/imports"
+ }
+ }
+ , "rules-test/just/defaults":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/justbuild"
+ , "branch": "v1.4.0-alpha+20240619"
+ , "commit": "96158f57c36bbc649abcd9a213bf04df6cf8a1f5"
+ , "subdir": "etc/defaults"
+ }
+ }
+ , "rules-test/just/import targets":
+ { "repository":
+ { "type": "git"
+ , "repository": "https://github.com/just-buildsystem/justbuild"
+ , "branch": "v1.4.0-alpha+20240619"
+ , "commit": "96158f57c36bbc649abcd9a213bf04df6cf8a1f5"
+ , "subdir": "etc/import"
+ }
+ }
+ }
+}
diff --git a/etc/repos.template.json b/etc/repos.template.json
new file mode 100644
index 0000000..2bf98e9
--- /dev/null
+++ b/etc/repos.template.json
@@ -0,0 +1,14 @@
+{ "main": "rust-rules"
+, "repositories":
+ { "rust-rules":
+ { "repository": {"type": "file", "path": "."}
+ , "bindings": {"test-rules": "rules-test", "rules-cc": "rules-cc"}
+ }
+ , "imports": {"repository": {"type": "file", "path": "etc/imports"}}
+ , "test-rules":
+ { "repository": "rust-rules"
+ , "target_root": "imports"
+ , "target_file_name": "rules.TARGETS"
+ }
+ }
+}