2016-09-15 92 views
0

最近我发现,如果包装需要用不存在的包名和在auto_path中pkgIndex文件中的一个评价再次包含包不存在包需要再tclPkgUnknown进入无限递归。 我不知道是不是允许从pkgIndex评估包需求或这是一个隐藏的错误?包需要内部pkgIndex

+1

为什么你要在pkgIndex文件中有一个'package require'?这只是对pkgIndex文件的滥用,而不是错误。 –

+0

在系统中,我们保持形式封装加密的所有TCL文件需要ENCR dencryptAndEval {加密脚本} – ArmanHunanyan

+0

有人能告诉我一个关于TCL的包文件比这更多的信息https://www.tcl.tk/man/tcl8.5 /tutorial/Tcl31.html。特别是如何创建C++代码的tcl包 – ArmanHunanyan

回答

1

一个pkgIndex.tcl文件应该运行package require本身。它应该只是调用package ifneeded告诉软件包管理系统如何加载特定的包的特定版本。这是因为索引脚本的加载时间有点不同 - 在软件包发现期间 - 而不一定是在真正需要该软件包版本的时候。如果你坚持这个规则,你就不会有任何问题。

下面是这种东西应该是在里面。

# Maybe some comments here? 
package ifneeded Foo 1.2.3 [list source [file join $dir foo.1-2-3.tcl]] 

The $dir?这只是包含索引文件的目录的名称,为方便起见。 (它实际上也是一个局部变量; 内部被评估为一个过程上下文。)