1
私は、paziの依存関係を扱うbazelを手に入れようとしています。bazel pypiマクロセルフエッジ
./pypi.bzl:
def _impl(ctx):
ctx.actions.run_shell(
command = "pip download %s" % ctx.package
)
_pypi_package = rule(
implementation=_impl,
attrs={"package": attr.label(mandatory=True)},
)
def pypi_package(package):
_pypi_package(name = package, package = package)
./BUILD:
py_binary(
name = "app",
srcs = ["app.py"],
deps = [":python-dateutil"]
)
load("//:pypi.bzl", "pypi_package")
pypi_package(
package="python-dateutil",
)
構築しようとすると:
$ bazel build app
ERROR: /path/to/cwd/BUILD:9:1: in _pypi_package rule //:python-dateutil: cycle in dependency graph:
//:app
.-> //:python-dateutil [self-edge]
`--
This cycle occurred because of a configuration option.
ERROR: Analysis of target '//:app' failed; build aborted.
INFO: Elapsed time: 0.219s
これも作業するための正しいアプローチである場合には考えていません外部の依存関係とは、それを無視して、私はここで自己鎮圧から来ているか分からない。実際には、私はpypi_package
ルールのためのdepsを宣言しているとは思えません。どうしたの?
[run_shell'](https://docs.bazel.build/versions/master/skylark/lib/actions.html#run_shell)に 'outputs'を指定する必要があると思います。そうしないとBazelに理由がありませんアクションを実行する(何も出力に依存しないため)。 –