summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/bootstrap.py92
-rw-r--r--etc/import.prebuilt/TARGETS.absl21
-rw-r--r--etc/import.prebuilt/TARGETS.bazel_remote_apis29
-rw-r--r--etc/import.prebuilt/TARGETS.boringssl12
-rw-r--r--etc/import.prebuilt/TARGETS.cli1122
-rw-r--r--etc/import.prebuilt/TARGETS.fmt8
-rw-r--r--etc/import.prebuilt/TARGETS.git213
-rw-r--r--etc/import.prebuilt/TARGETS.google_apis34
-rw-r--r--etc/import.prebuilt/TARGETS.grpc86
-rw-r--r--etc/import.prebuilt/TARGETS.gsl8
-rw-r--r--etc/import.prebuilt/TARGETS.json7
-rw-r--r--etc/import.prebuilt/TARGETS.protobuf13
-rw-r--r--etc/import.prebuilt/TARGETS.zlib6
-rw-r--r--etc/import.prebuilt/bin/TARGETS.protobuf1
-rw-r--r--etc/import.prebuilt/include/TARGETS.grpc11
-rw-r--r--etc/import.prebuilt/include/TARGETS.protobuf5
-rw-r--r--etc/import.prebuilt/proto/google/protobuf/TARGETS.protobuf19
-rw-r--r--etc/import.prebuilt/src/compiler/TARGETS.grpc5
-rw-r--r--etc/repos.json17
19 files changed, 399 insertions, 10 deletions
diff --git a/bin/bootstrap.py b/bin/bootstrap.py
index d4a638dd..61597abb 100755
--- a/bin/bootstrap.py
+++ b/bin/bootstrap.py
@@ -18,12 +18,19 @@ MAIN_MODULE = ""
MAIN_TARGET = ""
MAIN_STAGE = "bin/just"
+LOCAL_LINK_DIRS_MODULE = "src/buildtool/main"
+LOCAL_LINK_DIRS_TARGET = "just"
+
# relevant directories (global variables)
SRCDIR = os.getcwd()
WRKDIR = None
DISTDIR = []
+LOCALBASE = "/"
+
+# other global variables
+LOCAL_DEPS = False
def git_hash(content):
header = "blob {}\0".format(len(content)).encode('utf-8')
@@ -58,10 +65,10 @@ def run(cmd, *, cwd, **kwargs):
subprocess.run(cmd, cwd=cwd, check=True, **kwargs)
-def setup_deps():
+def setup_deps(src_wrkdir):
# unpack all dependencies and return a list of
# additional C++ flags required
- with open(os.path.join(SRCDIR, REPOS)) as f:
+ with open(os.path.join(src_wrkdir, REPOS)) as f:
config = json.load(f)["repositories"]
include_location = os.path.join(WRKDIR, "dep_includes")
link_flags = []
@@ -112,18 +119,80 @@ def setup_deps():
return {"include": ["-I", include_location], "link": link_flags}
+def config_to_local(*, repos_file, link_targets_file):
+ with open(repos_file) as f:
+ repos = json.load(f)
+ global_link_dirs = set()
+ for repo in repos["repositories"]:
+ desc = repos["repositories"][repo]
+ repo_desc = desc.get("repository")
+ if not isinstance(repo_desc, dict):
+ repo_desc = {}
+ if repo_desc.get("type") in ["archive", "zip"]:
+ local_bootstrap = desc.get("local_bootstrap", {})
+ desc["repository"] = {
+ "type": "file",
+ "path": os.path.normpath(
+ os.path.join(
+ LOCALBASE,
+ local_bootstrap.get("local_path", ".")))
+ }
+ if "link_dirs" in local_bootstrap:
+ link = []
+ for entry in local_bootstrap["link_dirs"]:
+ link += ["-L", os.path.join(LOCALBASE, entry)]
+ global_link_dirs.add(entry)
+ link += local_bootstrap.get("link", [])
+ local_bootstrap["link"] = link
+ desc["bootstrap"] = local_bootstrap
+ if "local_bootstrap" in desc:
+ del desc["local_bootstrap"]
+ if repo_desc.get("type") == "file":
+ local_bootstrap = desc.get("local_bootstrap", {})
+ desc["repository"] = {
+ "type": "file",
+ "path": local_bootstrap.get("local_path", desc["repository"].get("path"))
+ }
+ desc["bootstrap"] = local_bootstrap
+ if "local_bootstrap" in desc:
+ del desc["local_bootstrap"]
+
+ print("just-mr config rewritten to local:\n%s\n"
+ % (json.dumps(repos, indent=2)))
+ os.unlink(repos_file)
+ with open(repos_file, "w") as f:
+ json.dump(repos, f, indent=2)
+
+ with open(link_targets_file) as f:
+ target = json.load(f)
+ main = target[LOCAL_LINK_DIRS_TARGET]
+ link_external = ["-L%s" % (os.path.join(LOCALBASE, d),)
+ for d in global_link_dirs]
+ print("External link arguments %r" % (link_external,))
+ main["link external"] = link_external
+ target[LOCAL_LINK_DIRS_TARGET] = main
+ os.unlink(link_targets_file)
+ with open(link_targets_file, "w") as f:
+ json.dump(target, f, indent=2)
def bootstrap():
- # TODO: add package build mode, building against preinstalled dependencies
- # rather than building dependencies ourselves.
- print("Bootstrapping in %r from sources %r, taking files from %r" %
- (WRKDIR, SRCDIR, DISTDIR))
+ if LOCAL_DEPS:
+ print("Bootstrap build in %r from sources %r against LOCALBASE %r"
+ % (WRKDIR, SRCDIR, LOCALBASE))
+ else:
+ print("Bootstrapping in %r from sources %r, taking files from %r" %
+ (WRKDIR, SRCDIR, DISTDIR))
os.makedirs(WRKDIR, exist_ok=True)
- dep_flags = setup_deps()
- # handle proto
src_wrkdir = os.path.join(WRKDIR, "src")
shutil.copytree(SRCDIR, src_wrkdir)
- flags = ["-I", src_wrkdir] + dep_flags["include"]
+ if LOCAL_DEPS:
+ config_to_local(
+ repos_file =os.path.join(src_wrkdir, REPOS),
+ link_targets_file=os.path.join(src_wrkdir, LOCAL_LINK_DIRS_MODULE, "TARGETS")
+ )
+ dep_flags = setup_deps(src_wrkdir)
+ # handle proto
+ flags = ["-I", src_wrkdir] + dep_flags["include"] + ["-I", os.path.join(LOCALBASE, "include")]
cpp_files = []
for root, dirs, files in os.walk(src_wrkdir):
if 'test' in dirs:
@@ -177,6 +246,8 @@ def main(args):
global SRCDIR
global WRKDIR
global DISTDIR
+ global LOCAL_DEPS
+ global LOCALBASE
if len(args) > 1:
SRCDIR = os.path.abspath(args[1])
if len(args) > 2:
@@ -188,6 +259,9 @@ def main(args):
WRKDIR = tempfile.mkdtemp()
if not DISTDIR:
DISTDIR = [os.path.join(Path.home(), ".distfiles")]
+
+ LOCAL_DEPS = "PACKAGE" in os.environ
+ LOCALBASE = os.environ.get("LOCALBASE", "/")
bootstrap()
diff --git a/etc/import.prebuilt/TARGETS.absl b/etc/import.prebuilt/TARGETS.absl
new file mode 100644
index 00000000..986e6cb8
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.absl
@@ -0,0 +1,21 @@
+{ "absl":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["absl"]
+ , "link external":
+ [ "-lbad_optional_access"
+ , "-lstr_format_internal"
+ , "-ltime"
+ , "-lstrings"
+ , "-lstrings_internal"
+ , "-lbase"
+ , "-ldynamic_annotations"
+ , "-lspinlock_wait"
+ , "-lthrow_delegate"
+ , "-lraw_logging_internal"
+ , "-llog_severity"
+ , "-lint128"
+ , "-ltime_zone"
+ , "-lcivil_time"
+ ]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.bazel_remote_apis b/etc/import.prebuilt/TARGETS.bazel_remote_apis
new file mode 100644
index 00000000..8f846701
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.bazel_remote_apis
@@ -0,0 +1,29 @@
+{ "semver_proto":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["semver_proto"]
+ , "srcs": ["build/bazel/semver/semver.proto"]
+ }
+, "remote_execution_proto impl":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["remote_execution_proto"]
+ , "service": ["yes"]
+ , "srcs": ["build/bazel/remote/execution/v2/remote_execution.proto"]
+ , "deps":
+ [ "semver_proto"
+ , ["@", "google_apis", "", "google_api_annotations_proto"]
+ , ["@", "google_apis", "", "google_api_http_proto"]
+ , ["@", "google_apis", "", "google_longrunning_operations_proto"]
+ , ["@", "google_apis", "", "google_rpc_status_proto"]
+ ]
+ }
+, "remote_execution_proto":
+ { "type": "export"
+ , "target": "remote_execution_proto impl"
+ , "doc":
+ [ "Remote Execution API"
+ , ""
+ , "The Remote Execution API is an API that, at its most general, allows clients"
+ , "to request execution of binaries on a remote system."
+ ]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.boringssl b/etc/import.prebuilt/TARGETS.boringssl
new file mode 100644
index 00000000..3e4e0b71
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.boringssl
@@ -0,0 +1,12 @@
+{ "crypto":
+ { "type": ["@", "rules", "CC", "library"]
+ , "hdrs": [["TREE", null, "."]]
+ , "stage": ["openssl"]
+ , "link external": ["-lcrypto"]
+ }
+, "ssl":
+ { "type": ["@", "rules", "CC", "library"]
+ , "link external": ["-lssl"]
+ , "deps": ["crypto"]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.cli11 b/etc/import.prebuilt/TARGETS.cli11
new file mode 100644
index 00000000..1a8beb55
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.cli11
@@ -0,0 +1,22 @@
+{ "cli11":
+ { "type": ["@", "rules", "CC", "library"]
+ , "hdrs":
+ [ "Option.hpp"
+ , "Split.hpp"
+ , "Formatter.hpp"
+ , "ConfigFwd.hpp"
+ , "Version.hpp"
+ , "TypeTools.hpp"
+ , "Validators.hpp"
+ , "FormatterFwd.hpp"
+ , "Macros.hpp"
+ , "StringTools.hpp"
+ , "Error.hpp"
+ , "Timer.hpp"
+ , "CLI.hpp"
+ , "App.hpp"
+ , "Config.hpp"
+ ]
+ , "stage": ["CLI"]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.fmt b/etc/import.prebuilt/TARGETS.fmt
new file mode 100644
index 00000000..58c436e4
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.fmt
@@ -0,0 +1,8 @@
+{ "fmt":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["fmt"]
+ , "stage": ["fmt"]
+ , "hdrs": [["TREE", null, "."]]
+ , "link external": ["-lfmt"]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.git2 b/etc/import.prebuilt/TARGETS.git2
new file mode 100644
index 00000000..b4bf90e8
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.git2
@@ -0,0 +1,13 @@
+{ "git2":
+ { "type": ["@", "rules", "CC", "library"]
+ , "hdrs": ["git2.h", ["TREE", null, "git2"]]
+ , "link external":
+ [ "-lgit2"
+ , "-lgit2_os_unix"
+ , "-lgit2_hash_openssl"
+ , "-lgit2_pcre"
+ , "-lgit2_http_parser"
+ , "-lpthread"
+ ]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.google_apis b/etc/import.prebuilt/TARGETS.google_apis
new file mode 100644
index 00000000..802e1027
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.google_apis
@@ -0,0 +1,34 @@
+{ "google_api_http_proto":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["google_api_http_proto"]
+ , "srcs": ["google/api/http.proto"]
+ }
+, "google_api_annotations_proto":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["google_api_annotations_proto"]
+ , "srcs": ["google/api/annotations.proto"]
+ , "deps": ["google_api_http_proto"]
+ }
+, "google_bytestream_proto":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["google_bytestream_proto"]
+ , "service": ["yes"]
+ , "srcs": ["google/bytestream/bytestream.proto"]
+ , "deps": ["google_api_annotations_proto"]
+ }
+, "google_rpc_status_proto":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["google_rpc_status_proto"]
+ , "srcs": ["google/rpc/status.proto"]
+ }
+, "google_longrunning_operations_proto":
+ { "type": ["@", "rules", "proto", "library"]
+ , "name": ["google_longrunning_operations_proto"]
+ , "srcs": ["google/longrunning/operations.proto"]
+ , "deps":
+ [ "google_api_annotations_proto"
+ , "google_api_http_proto"
+ , "google_rpc_status_proto"
+ ]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.grpc b/etc/import.prebuilt/TARGETS.grpc
new file mode 100644
index 00000000..0af9910a
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.grpc
@@ -0,0 +1,86 @@
+{ "grpc++":
+ { "type": ["@", "rules", "CC", "library"]
+ , "hdrs": [["include", "grpcpp"]]
+ , "link external":
+ [ "-lgrpc++"
+ , "-lgrpc++_base"
+ , "-lgrpc"
+ , "-lcensus"
+ , "-lgrpc_lb_policy_pick_first"
+ , "-lgrpc_lb_policy_priority"
+ , "-lgrpc_lb_policy_round_robin"
+ , "-lgrpc_lb_policy_weighted_target"
+ , "-lgrpc_client_idle_filter"
+ , "-lgrpc_max_age_filter"
+ , "-lgrpc_resolver_dns_ares"
+ , "-lares"
+ , "-laddress_sorting"
+ , "-lgrpc_resolver_dns_native"
+ , "-lgrpc_resolver_dns_selection"
+ , "-lgrpc_resolver_sockaddr"
+ , "-lgrpc_transport_chttp2_server_insecure"
+ , "-lgrpc_transport_inproc"
+ , "-lgrpc_workaround_cronet_compression_filter"
+ , "-lgrpc_server_backward_compatibility"
+ , "-lgrpc_lb_policy_cds_secure"
+ , "-lgrpc_lb_policy_eds_secure"
+ , "-lgrpc_lb_address_filtering"
+ , "-lgrpc_lb_policy_grpclb_secure"
+ , "-lgrpc_grpclb_balancer_addresses"
+ , "-lgrpc_lb_upb"
+ , "-lgrpc_resolver_fake"
+ , "-lgrpc_lb_policy_lrs_secure"
+ , "-lgrpc_lb_policy_xds_routing"
+ , "-lgrpc_resolver_xds_secure"
+ , "-lgrpc_xds_client_secure"
+ , "-lenvoy_ads_upb"
+ , "-lenvoy_core_upb"
+ , "-lenvoy_type_upb"
+ , "-lenvoy_annotations_upb"
+ , "-ludpa_annotations_upb"
+ , "-lre2"
+ , "-lgrpc_transport_chttp2_client_secure"
+ , "-lgrpc_transport_chttp2_server_secure"
+ , "-lgrpc_transport_chttp2_server"
+ , "-lgrpc++_codegen_base_src"
+ , "-lgrpc_secure"
+ , "-ltsi"
+ , "-lalts_frame_protector"
+ , "-lalts_util"
+ , "-lalts_upb"
+ , "-lgrpc_transport_chttp2_client_insecure"
+ , "-lgrpc_transport_chttp2_client_connector"
+ , "-lgrpc_transport_chttp2"
+ , "-lgrpc_http_filters"
+ , "-lgrpc_message_size_filter"
+ , "-lgrpc_client_channel"
+ , "-lgrpc_client_authority_filter"
+ , "-lgrpc_deadline_filter"
+ , "-lgrpc_base"
+ , "-lgrpc_base_c"
+ , "-leventmanager_libuv"
+ , "-lgrpc_health_upb"
+ , "-ludpa_orca_upb"
+ , "-lproto_gen_validate_upb"
+ , "-lgoogle_api_upb"
+ , "-lupb"
+ , "-lupb_port"
+ , "-lgrpc_transport_chttp2_alpn"
+ , "-ltsi_interface"
+ , "-lgrpc_trace"
+ , "-lgpr_base"
+ ]
+ , "deps":
+ [ ["@", "absl", "", "absl"]
+ , ["@", "zlib", "", "zlib"]
+ , ["@", "libssl", "", "ssl"]
+ ]
+ }
+, "grpc++_codegen_proto":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["grpc++_codegen_proto"]
+ , "hdrs": [["include", "grpcpp"], ["include", "grpc++"], ["include", "grpc"]]
+ , "link external": ["-lgrpc++_codegen_base_src"]
+ , "deps": ["grpc++"]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.gsl b/etc/import.prebuilt/TARGETS.gsl
new file mode 100644
index 00000000..df06ea7e
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.gsl
@@ -0,0 +1,8 @@
+{ "gsl-lite":
+ {"type": ["@", "rules", "CC", "library"], "hdrs": ["gsl-lite hdrs"]}
+, "gsl-lite hdrs":
+ { "type": ["@", "rules", "CC", "header directory"]
+ , "hdrs": ["gsl", "gsl-lite.h", "gsl-lite.hpp", "gsl-lite-vc6.hpp"]
+ , "stage": ["gsl-lite"]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.json b/etc/import.prebuilt/TARGETS.json
new file mode 100644
index 00000000..df94fa83
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.json
@@ -0,0 +1,7 @@
+{ "json": {"type": ["@", "rules", "CC", "library"], "hdrs": ["json headers"]}
+, "json headers":
+ { "type": ["@", "rules", "CC", "header directory"]
+ , "stage": ["nlohmann"]
+ , "hdrs": [["TREE", null, "."]]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.protobuf b/etc/import.prebuilt/TARGETS.protobuf
new file mode 100644
index 00000000..a31d4138
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.protobuf
@@ -0,0 +1,13 @@
+{ "protoc":
+ {"type": ["@", "rules", "data", "staged"], "srcs": [["bin", "protoc"]]}
+, "C++ runtime":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["protobuf"]
+ , "hdrs": [["include", "protobuf"]]
+ , "link external": ["-lprotobuf", "-lprotobuf_lite"]
+ }
+, "well_known_protos":
+ { "type": ["@", "rules", "data", "staged"]
+ , "srcs": [["proto/google/protobuf", "well_known_protos"]]
+ }
+}
diff --git a/etc/import.prebuilt/TARGETS.zlib b/etc/import.prebuilt/TARGETS.zlib
new file mode 100644
index 00000000..2bddbfbc
--- /dev/null
+++ b/etc/import.prebuilt/TARGETS.zlib
@@ -0,0 +1,6 @@
+{ "zlib":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["zlib"]
+ , "link external": ["-lzlib"]
+ }
+}
diff --git a/etc/import.prebuilt/bin/TARGETS.protobuf b/etc/import.prebuilt/bin/TARGETS.protobuf
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/etc/import.prebuilt/bin/TARGETS.protobuf
@@ -0,0 +1 @@
+{}
diff --git a/etc/import.prebuilt/include/TARGETS.grpc b/etc/import.prebuilt/include/TARGETS.grpc
new file mode 100644
index 00000000..d310d8ea
--- /dev/null
+++ b/etc/import.prebuilt/include/TARGETS.grpc
@@ -0,0 +1,11 @@
+{ "grpc":
+ {"type": ["@", "rules", "data", "staged"], "srcs": [["TREE", null, "grpc"]]}
+, "grpcpp":
+ { "type": ["@", "rules", "data", "staged"]
+ , "srcs": [["TREE", null, "grpcpp"]]
+ }
+, "grpc++":
+ { "type": ["@", "rules", "data", "staged"]
+ , "srcs": [["TREE", null, "grpcpp"]]
+ }
+}
diff --git a/etc/import.prebuilt/include/TARGETS.protobuf b/etc/import.prebuilt/include/TARGETS.protobuf
new file mode 100644
index 00000000..8c76bf6e
--- /dev/null
+++ b/etc/import.prebuilt/include/TARGETS.protobuf
@@ -0,0 +1,5 @@
+{ "protobuf":
+ { "type": ["@", "rules", "data", "staged"]
+ , "srcs": [["TREE", null, "google/protobuf"]]
+ }
+}
diff --git a/etc/import.prebuilt/proto/google/protobuf/TARGETS.protobuf b/etc/import.prebuilt/proto/google/protobuf/TARGETS.protobuf
new file mode 100644
index 00000000..ebdf4beb
--- /dev/null
+++ b/etc/import.prebuilt/proto/google/protobuf/TARGETS.protobuf
@@ -0,0 +1,19 @@
+{ "well_known_protos":
+ { "type": ["@", "rules", "data", "staged"]
+ , "srcs":
+ [ "any.proto"
+ , "api.proto"
+ , "compiler/plugin.proto"
+ , "descriptor.proto"
+ , "duration.proto"
+ , "empty.proto"
+ , "field_mask.proto"
+ , "source_context.proto"
+ , "struct.proto"
+ , "timestamp.proto"
+ , "type.proto"
+ , "wrappers.proto"
+ ]
+ , "stage": ["google", "protobuf"]
+ }
+}
diff --git a/etc/import.prebuilt/src/compiler/TARGETS.grpc b/etc/import.prebuilt/src/compiler/TARGETS.grpc
new file mode 100644
index 00000000..e3a51445
--- /dev/null
+++ b/etc/import.prebuilt/src/compiler/TARGETS.grpc
@@ -0,0 +1,5 @@
+{ "grpc_cpp_plugin":
+ { "type": "install"
+ , "files": {"grpc_cpp_plugin": ["", "bin/grpc_cpp_plugin"]}
+ }
+}
diff --git a/etc/repos.json b/etc/repos.json
index 92d1b787..28c84200 100644
--- a/etc/repos.json
+++ b/etc/repos.json
@@ -16,6 +16,7 @@
, "catch2": "catch2"
}
, "bootstrap": {"link": ["-lpthread"]}
+ , "bootstrap_local": {"link": ["-lpthread"]}
}
, "just-distfiles":
{ "repository":
@@ -97,6 +98,7 @@
, "import targets":
{ "repository":
{"type": "file", "path": "etc/import", "pragma": {"to_git": true}}
+ , "local_bootstrap": {"local_path": "etc/import.prebuilt"}
}
, "gsl-lite":
{ "repository":
@@ -111,6 +113,7 @@
, "target_root": "import targets"
, "target_file_name": "TARGETS.gsl"
, "bindings": {"rules": "rules"}
+ , "local_bootstrap": {"local_path": "include/gsl-lite"}
}
, "cli11":
{ "repository":
@@ -125,6 +128,7 @@
, "target_file_name": "TARGETS.cli11"
, "bindings": {"rules": "rules"}
, "bootstrap": {"include_dir": "include/CLI", "include_name": "CLI"}
+ , "local_bootstrap": {"local_path": "include/CLI"}
}
, "json":
{ "repository":
@@ -139,6 +143,7 @@
, "target_file_name": "TARGETS.json"
, "bindings": {"rules": "rules"}
, "bootstrap": {"include_name": "nlohmann"}
+ , "local_bootstrap": {"local_path": "include/nlohmann"}
}
, "fmt":
{ "repository":
@@ -157,6 +162,8 @@
, "build": "cd src && clang++ -I ../include -c *.cc && ar cqs ../libfmt.a *.o"
, "link": ["-lfmt"]
}
+ , "local_bootstrap":
+ {"local_path": "include/fmt", "link": ["-lfmt"], "link_dirs": ["lib"]}
}
, "ssl":
{ "repository":
@@ -172,10 +179,15 @@
, "bindings": {"rules": "rules-boringssl"}
, "bootstrap":
{ "build": "SYS=`uname -s | tr 'A-Z' 'a-z'` && ARCH=`uname -m` && cc -I . -I src/include -c *.c src/crypto/*.c src/crypto/*/*.c $SYS-$ARCH/crypto/fipsmodule/*.S && ar cqs libcrypto.a *.o"
- , "link": ["-lcrypto"]
+ , "link": ["-lcrypto", "-lpthread"]
, "include_dir": "src/include/openssl"
, "include_name": "openssl"
}
+ , "local_bootstrap":
+ { "local_path": "include/openssl"
+ , "link": ["-lcrypto", "-lpthread"]
+ , "link_dirs": ["lib"]
+ }
}
, "protobuf":
{ "repository":
@@ -206,6 +218,7 @@
, "protoc": "protobuf"
, "google_apis": "google_apis"
}
+ , "local_bootstrap": {"local_path": "proto"}
}
, "google_apis":
{ "repository":
@@ -220,6 +233,7 @@
, "target_file_name": "TARGETS.google_apis"
, "bindings":
{"rules": "rules-protobuf", "protoc": "protobuf", "patches": "patches"}
+ , "local_bootstrap": {"local_path": "proto"}
}
, "upb":
{ "repository":
@@ -321,6 +335,7 @@
, "target_file_name": "TARGETS.git2"
, "bindings": {"rules": "rules-git2", "zlib": "zlib", "ssl": "ssl"}
, "bootstrap": {"include_dir": "include", "include_name": "."}
+ , "local_bootstrap": {"local_path": "include"}
}
, "catch2":
{ "repository":