2016-09-15 55 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?這只是包含索引文件的目錄的名稱,爲方便起見。 (它實際上也是一個局部變量; 內部被評估爲一個過程上下文。)