def internal_ruby_extension( name, extension, deps = [], **kwargs): """Bazel rule to wrap up a generated ruby extension. NOTE: the rule is only an internal workaround. The interface may change and the rule may be removed when everything is properly "Bazelified". Args: name: the name of the target. extension: the path of the extension file. deps: extra dependencies to add. **kwargs: extra arguments to forward to the genrule. """ native.genrule( name = name, srcs = deps + [ "Rakefile", ":srcs", ":test_ruby_protos", ":tests", "//third_party/utf8_range:all_files", ], tags = ["manual"], outs = [extension], cmd = "pushd `dirname $(location Rakefile)`\n" + "BAZEL=true rake\n" + "popd\n" + "cp `dirname $(location Rakefile)`/%s $(OUTS)\n" % extension, **kwargs, )