Pants 在构建时因 scala 相关错误而失败 python
Pants fails with scala related errors when building python
我正在尝试使用裤子来构建一个简单的 pex,只是为了测试一下。但是,我 运行 遇到了一些问题:
$ ./pants binary src/python/hworld
INFO] Detected git repository at /home/jovalko/pants on branch master
23:03:48 00:00 [main]
(To run a reporting server: ./pants server)
23:03:48 00:00 [bootstrap]
23:03:48 00:00 [setup]
23:03:48 00:00 [parse]
FAILURE:
Failed to resolve target for tool: //:scala-compiler. This target was obtained from
option scalac in scope scala-platform. You probably need to add this target to your tools
BUILD file(s), usually located in BUILD.tools in the workspace root.
Exception AddressLookupError: name 'scala_jar' is not defined
while executing BUILD file FilesystemBuildFile(/home/jovalko/pants/BUILD.tools)
Loading addresses from '' failed.
23:03:48 00:00 [complete]
FAILURE
由于很难将我的问题的所有部分表达为一个粘贴,我已经发布了它们on github(为外部链接道歉)。
相关位是我的最高水平BUILD
:
# Pants source code
source_root('src/python')
和我的 hworld 二进制文件的 BUILD
:
python_binary(name='hworld',
source='hworld.py'
)
也许还有 BUILD.tools
但它很长,我直接从 pantsbuild/pants 复制了它(正如文档中所建议的,我从另一个 repo 的工作版本开始)。
我尝试了各种排列(使用 BUILD.tools,不使用 pants.ini
中的各种东西)但在每种情况下它都失败了,因为与 scala 相关的东西......这有点令人困惑,因为我只是在构建 python。而且,pantsbuild/pants 仓库中的 运行 对我来说很好。
我会提醒你,我是裤子的新手,很可能我做了一些愚蠢的事情;)。有什么想法吗?
以防其他人遇到这个问题,我通过从我的 BUILD.tools
:
中删除与 scala 相关的(特别是任何使用 scala_jar
的条目)解决了这个问题
diff --git a/BUILD.tools b/BUILD.tools
index d0f1cf7..049fb2f 100644
--- a/BUILD.tools
+++ b/BUILD.tools
@@ -23,32 +23,3 @@ jar_library(name = 'scala-repl',
':scala-library',
])
-jar_library(name = 'scalastyle',
- jars = [
- scala_jar(org='org.scalastyle', name='scalastyle', rev='0.3.2')
- ])
-
-jar_library(name = 'scrooge-gen',
- jars = [
- scala_jar(org='com.twitter', name='scrooge-generator', rev='3.20.0',
- excludes=[
- # scrooge requires libthrift 0.5.0-1 which is not available on
- # the default maven repos. Force scrooge to use thrift-0.6.1, which
- # is compatible, instead.
- exclude(org = 'org.apache.thrift', name = 'libthrift')
- ])
- ],
- dependencies = [
- '3rdparty:thrift-0.6.1',
- ])
-
-jar_library(name = 'scrooge-linter',
- jars = [
- scala_jar(org='com.twitter', name='scrooge-linter', rev='3.20.0',
- excludes=[
- exclude(org = 'org.apache.thrift', name = 'libthrift')
- ])
- ],
- dependencies = [
- '3rdparty:thrift-0.6.1',
- ])
diff --git a/src/python/hworld/BUILD b/src/python/hworld/BUILD
index ecfdd58..6407c02 100644
--- a/src/python/hworld/BUILD
+++ b/src/python/hworld/BUILD
这看起来像是您的 pants 设置使用来自 master 的代码,但您的虚拟环境中的 pants 版本落后了一些提交。根据您的pants.ini,您在示例中使用的是 0.0.50 版本,它会自动从 pypi 中提取 0.0.50 版本。
但是 scala_jar 实现落在 0.0.50 和 0.0.51 之间,特别是 this commit here。
通过修补您的 diff 并修改 pants.ini 中的 pants_version,我能够编译您的项目。不过,我很高兴你找到了能让你取得进步的东西。
我正在尝试使用裤子来构建一个简单的 pex,只是为了测试一下。但是,我 运行 遇到了一些问题:
$ ./pants binary src/python/hworld
INFO] Detected git repository at /home/jovalko/pants on branch master
23:03:48 00:00 [main]
(To run a reporting server: ./pants server)
23:03:48 00:00 [bootstrap]
23:03:48 00:00 [setup]
23:03:48 00:00 [parse]
FAILURE:
Failed to resolve target for tool: //:scala-compiler. This target was obtained from
option scalac in scope scala-platform. You probably need to add this target to your tools
BUILD file(s), usually located in BUILD.tools in the workspace root.
Exception AddressLookupError: name 'scala_jar' is not defined
while executing BUILD file FilesystemBuildFile(/home/jovalko/pants/BUILD.tools)
Loading addresses from '' failed.
23:03:48 00:00 [complete]
FAILURE
由于很难将我的问题的所有部分表达为一个粘贴,我已经发布了它们on github(为外部链接道歉)。
相关位是我的最高水平BUILD
:
# Pants source code
source_root('src/python')
和我的 hworld 二进制文件的 BUILD
:
python_binary(name='hworld',
source='hworld.py'
)
也许还有 BUILD.tools
但它很长,我直接从 pantsbuild/pants 复制了它(正如文档中所建议的,我从另一个 repo 的工作版本开始)。
我尝试了各种排列(使用 BUILD.tools,不使用 pants.ini
中的各种东西)但在每种情况下它都失败了,因为与 scala 相关的东西......这有点令人困惑,因为我只是在构建 python。而且,pantsbuild/pants 仓库中的 运行 对我来说很好。
我会提醒你,我是裤子的新手,很可能我做了一些愚蠢的事情;)。有什么想法吗?
以防其他人遇到这个问题,我通过从我的 BUILD.tools
:
scala_jar
的条目)解决了这个问题
diff --git a/BUILD.tools b/BUILD.tools
index d0f1cf7..049fb2f 100644
--- a/BUILD.tools
+++ b/BUILD.tools
@@ -23,32 +23,3 @@ jar_library(name = 'scala-repl',
':scala-library',
])
-jar_library(name = 'scalastyle',
- jars = [
- scala_jar(org='org.scalastyle', name='scalastyle', rev='0.3.2')
- ])
-
-jar_library(name = 'scrooge-gen',
- jars = [
- scala_jar(org='com.twitter', name='scrooge-generator', rev='3.20.0',
- excludes=[
- # scrooge requires libthrift 0.5.0-1 which is not available on
- # the default maven repos. Force scrooge to use thrift-0.6.1, which
- # is compatible, instead.
- exclude(org = 'org.apache.thrift', name = 'libthrift')
- ])
- ],
- dependencies = [
- '3rdparty:thrift-0.6.1',
- ])
-
-jar_library(name = 'scrooge-linter',
- jars = [
- scala_jar(org='com.twitter', name='scrooge-linter', rev='3.20.0',
- excludes=[
- exclude(org = 'org.apache.thrift', name = 'libthrift')
- ])
- ],
- dependencies = [
- '3rdparty:thrift-0.6.1',
- ])
diff --git a/src/python/hworld/BUILD b/src/python/hworld/BUILD
index ecfdd58..6407c02 100644
--- a/src/python/hworld/BUILD
+++ b/src/python/hworld/BUILD
这看起来像是您的 pants 设置使用来自 master 的代码,但您的虚拟环境中的 pants 版本落后了一些提交。根据您的pants.ini,您在示例中使用的是 0.0.50 版本,它会自动从 pypi 中提取 0.0.50 版本。
但是 scala_jar 实现落在 0.0.50 和 0.0.51 之间,特别是 this commit here。
通过修补您的 diff 并修改 pants.ini 中的 pants_version,我能够编译您的项目。不过,我很高兴你找到了能让你取得进步的东西。