Caveat: I know that Webpack is not officially supported on Slackware Linux. However, I have not yet found a package that could not be made to work on Slackware eventually.
But this one may be the exception. I have tried several different installation methods (network, download single file, select subsets, etc.) of bot 10.1 and 9.2i. They all fail with the following message (repeated several times over) as soon as I try to create a new project:
ERROR:ProjectMgmt:387 - TOE: ITclInterp::ExecuteCmd gave Tcl result 'can't read
"::xilinx::Dpm::DeviceFieldType::NoFieldType": no such variable'.
Tcl_ErrnoId: unknown error
_cmd: ::xilinx::Dpm::dpm_devDevicePropertyDependency $piThisInterface
errorInfo: can't read "::xilinx::Dpm::DeviceFieldType::NoFieldType": no such
"set type $::xilinx::Dpm::DeviceFieldType::NoFieldType"
(procedure "_VerifyDeviceData" line 6)
invoked from within
(procedure "_GetDevices" line 2)
invoked from within
(procedure "::xilinx::Dpm::dpm_devDevicePropertyDependency" line 8)
invoked from within
It seems to be loading the necessary functions correctly but the variable "::xilinx::Dpm::DeviceFieldType::NoFieldType" is not getting defined. I have tried to find where this might be defined to see if something isn't getting loaded properly but have had no luck. After giving out a bunch of error messages it brings up the dialog to create a project and everything seems to work except that there are no entries for the "Synthesis Tool". I have tried changing the rest of the values and they all seem to work correctly.
There is also a tendency to get the message "QComboBox::changeItem: (ListTableItem) Index 0 out of range" once in a while - I assume this is when it tries to put something into the "Synthesis Tool" entry and only has a zero to put there.
My feeling is that something isn't getting loaded properly. Slackware 12.0 apparently already includes the correct version of TCL (8.4 appears to be what ISE uses). Everything else runs fine with the exception of xinfoenv in the common directory which seg faults - xinfo and xinfoenv in the ISE directory run fine.
Any hints on what may be going wrong with that one variable would be greatly appreciated.
I stumbled across the problem by going back a little further in time in this forum - specifically to a similar problem posted for 9.2i on gentoo by lvcargnini on 11-05-2007. The solution is in the reply by fellni posted on 11-16-2007. He unemerged tcl to use the tcl installed with Xilinx rather than the system version.
On Slackware 12.0 it works if you replace the file /usr/lib/libtcl8.4.so with the same library from the Xilinx distribution: $XILINX/lib/lin/libtcl8.4.so
It appears that they have their own version of the tclsh ($XILINX/bin/lin/xtclsh) but used the same name as the distributed tcl library except that it was modified from the distribution library. As near as I can tell it is not necessary to replace the tclsh (/usr/bin/tclsh) with the Xilinx version.
I haven't checked to see if this breaks anything else yet.
I have the same problem with Slackware 12.1 Linux and I've replaced the file /usr/lib/libtcl8.4.so with the same library from the xilinx distribution: $XILINX/lib/lin/libtcl8.4.so and the Webpack woks correctly, but I cannot know if the Xilinx version of this library is compatible with other programs.
Is there a way so that WebPack uses its own library located at $XILINX/lib/lin/libtcl8.4.so instead of the system library /usr/lib/libtcl8.4.so?
Actually, I stumbled across the correct solution on an Ubuntu site. This was necessary because the TCL libraries shipped with Webpack 10.1 broke several other applications.
I now have a script in my executable path that looks like this:
setenv LD_PRELOAD "/data/Xilinx/10.1/ISE/lib/lin/libtcl8.4.so /data/Xilinx/10.1/usb-driver/libusb-driver.so"
This allows me to have the right tcl library in /usr/lib but makes Webpack run. This command also loads the libusb-driver library - it is necessary to use impact to program the fpga across a usb cable. I haven't tested it extensively but it seems to work correctly. You can get libusb from http://www.rmdir.de/~michael/xilinx/ as either sources or a prebuilt executable. This driver is also supposed to work with some of the parallel cables.
Thanks for your help; I've written the following script for my Slackware distribution:
and it seems to work well!