【发布时间】:2012-05-21 14:59:00
【问题描述】:
我不完全知道我做了什么,但似乎我破坏了我的构建系统。
$ scons install
scons: Reading SConscript files ...
File "<string>", line 1
I_���.�K
H�4����Ǐ��U)�f���R�f���ў�U)�f���R�f���ў�
^
SyntaxError: invalid syntax
不可打印的字符是有意的。
坏事是:即使在“已知的工作”版本上重置也无济于事,以及使用像 --debug=stacktrace 这样的选项。我的版本控制系统(mercurial)没有显示SCons 文件中的更改,我不知道如何继续。任何提示如何让 mercurial 打印它正在处理的文件的名称以找出正在发生的事情?
我的下一步是对该项目进行新的克隆(希望能够构建),但我很好奇这里出了什么问题。
更新
当我更新到 Ubuntu 12.04 后问题消失了。 “消失”意味着在这种情况下,我突然能够执行scons --clean 命令,之后我能够再次重建我的项目。遗憾的是我无法重现该错误,所以最后我不知道是什么原因造成的,因为它工作了几个月,而且我的同事之前没有一个出现过这样奇怪的错误。
这是我的脚本的摘录:
vars = Variables( "variables.cache" )
vars.Add( "CXX", "use this c++ compiler", "/usr/bin/g++" )
# (other stuff added to vars)
env = Environment( variables = vars ) # <-- this line caused the error
在解决这个问题的过程中,我的印象是,在更新之后,Python 能够给我一个更好的错误消息,并且该消息(试图记住它)vars 在某种程度上是无效的。所以也许问题出在variables.cache,我不知道。也许我应该删除这个文件(我没有删除)以消除错误。
【问题讨论】:
-
为什么要使用不可打印的字符?
-
抱歉没有找到更好的词。我的意思是:他们在终端中以这种方式出现,我在这里没有输入错误,隐藏了有用的代码行。看起来 scons 试图解析二进制文件之类的?
标签: scons