chore: compile socat from source
diff --git a/WORKSPACE b/WORKSPACE
index c900302..e680dc3 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -39,3 +39,9 @@
go_register_toolchains(version = "1.17.2")
gazelle_dependencies()
+
+load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
+
+# This sets up some common toolchains for building targets. For more details, please see
+# https://bazelbuild.github.io/rules_foreign_cc/0.9.0/flatten.html#rules_foreign_cc_dependencies
+rules_foreign_cc_dependencies()
diff --git a/external/socat.BUILD b/external/socat.BUILD
new file mode 100644
index 0000000..4f3f855
--- /dev/null
+++ b/external/socat.BUILD
@@ -0,0 +1,47 @@
+load("@rules_foreign_cc//foreign_cc:defs.bzl", "configure_make")
+
+filegroup(
+ name = "all_srcs",
+ srcs = glob(
+ include = ["**"],
+ exclude = ["*.bazel"],
+ ),
+)
+
+configure_make(
+ name = "socat",
+ env = select({
+ "@platforms//os:macos": {"AR": ""},
+ "//conditions:default": {},
+ }),
+ lib_source = ":all_srcs",
+ out_binaries = ["socat"],
+ visibility = ["//visibility:public"],
+)
+
+# load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+# load("@aspect_bazel_lib//lib:expand_make_vars.bzl", "expand_template")
+
+# expand_template(
+# name = "fix_socat",
+# out = "main.c",
+# substitutions = {
+# "#include \"./VERSION\"": "\"1.7.4.3\"",
+# },
+# template = "socat.c",
+# )
+
+# copy_file(
+# name = "config",
+# src = "config.h.in",
+# out = "config.h",
+# )
+
+# cc_binary(
+# name = "socat",
+# srcs = glob(["*.h"]) + [
+# "config.h",
+# "main.c",
+# "xioopts.c",
+# ],
+# )
diff --git a/lib/repositories.bzl b/lib/repositories.bzl
index 8482c9a..e6d719f 100644
--- a/lib/repositories.bzl
+++ b/lib/repositories.bzl
@@ -28,6 +28,21 @@
],
)
+ http_archive(
+ name = "socat",
+ build_file = "socat.BUILD",
+ sha256 = "d697245144731423ddbbceacabbd29447089ea223e9a439b28f9ff90d0dd216e",
+ strip_prefix = "socat-1.7.4.3",
+ urls = ["http://www.dest-unreach.org/socat/download/socat-1.7.4.3.tar.gz"],
+ )
+
+ http_archive(
+ name = "rules_foreign_cc",
+ sha256 = "2a4d07cd64b0719b39a7c12218a3e507672b82a97b98c6a89d38565894cf7c51",
+ strip_prefix = "rules_foreign_cc-0.9.0",
+ url = "https://github.com/bazelbuild/rules_foreign_cc/archive/refs/tags/0.9.0.tar.gz",
+ )
+
if override_local_config_platform:
local_config_platform(
name = "local_config_platform",
diff --git a/lib/wrap_binary.bzl b/lib/wrap_binary.bzl
index 0b25340..7aa56c7 100644
--- a/lib/wrap_binary.bzl
+++ b/lib/wrap_binary.bzl
@@ -64,6 +64,10 @@
def tty_binary(name, binary, runfiles_manifest_key, **kwargs):
"""Wrap a binary such that it sees a tty attached to its stdin
+ FIXME: document
+ load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
+ rules_foreign_cc_dependencies()
+
Args:
name: Name of the rule
binary: Label of an executable target to wrap