Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
413 views
in Technique[技术] by (71.8m points)

name 'float' is not defined : Starklark / Bazel

I'm trying to add floating-point operations to my .bzl file. According to the Bazel globals specification, the float() function should be defined, as per the Starlark specification. However, when I try to add float(), I get the following error,

ERROR: /home/username/code/project/foo.bzl:4:3: name 'float' is not defined

Is there anything else I have to import? I assume that since the float() keyword is defined in the global namespace I wouldn't need to import it. According to the starlark spec page on the Bazel site page, floats are not supported, but this directly conflicts with the float() specification on the global page.

update: running Bazel 3.7.1

question from:https://stackoverflow.com/questions/65647915/name-float-is-not-defined-starklark-bazel

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you build Bazel from master it does already support float. I added Bazel from master to my system via the alias potato. Bazel 3.7.2 (and earlier) does not support the float type. I guess we won't see any float support in 3.7.x.

If you need floating point math for Bazel 3.7.2 and earlier you have to implement floating-point math using integer tricks. See for instance here.

Maybe you can achieve your goal without requiring float as shown here or by falling back to a "normal" Python script.

BTW: In the documentation, you can switch to the current used Bazel version - which will give you 404 for float and Bazel 3.7.2 and earlier. Only for master, there is documentation available.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...