tclVFS building


There are a variety of fixes to tclvfs compilation and running in the latest release. In particular, various TEA files have been added, and the code works with multiple interpreters very well.

Tcl 8.6

As of 2012-11-30, the latest release, tclvfs-20080503.tar.gz, does not build against Tcl 8.6. Use the latest files in the repository instead.


The majority of the following details the trials and tribulations as tclvfs is ported to new platforms.

Note: tclvfs is known to build and run ok on:

  • windows
  • linux
  • solaris
  • MacOS X (using version 1.4.1 off cvs 2011-07-01)

(please add your platform when it works).

There are preview stand-alone builds of Tclkit for Windows and Linux, which use the new VFS core and include support for the above examples (see [L1 ]). I have not yet packaged the adjusted sources, which are essentially off-the-shelf Tcl, Tk, Metakit, and TclVfs releases... -- JCW

22-3-2002 - it looks like tclvfs also builds on:

  • alpha-linux
  • freebsd-linux (needs tweaks to tcl/compat/unistd.h)
  • ppc-linux
  • ppc-macosx
  • sparc-linux
  • sparc-solaris (needs cd generic; ln -s ../vfs.o)
  • i386-bsdos41

Most of these were done as part of Tclkit ports on the SourceForge compile farm. One drawback of the current config is that it does not seem to support building from another directory (you have to do "./configure"). -- JCW

Vince: All 'build' bugs are basically bugs in TEA or in the sample-extension. I am happy to accept any build patches, but am completely unwilling to waste any time trying to fix TEA issues.

LV: SPARC/Solaris 2.6 , Tcl 8.4a4 , tclvfs from Nov 11, 2001. After copying copies of config.sub, config.guess, and tcl.m4 from tcl's CVS distribution, tclvfs will configure and compile as well as passes most of the test suite. However, there was a problem with the ftp test where, on my machine, the ftp takes 60+ seconds to connect. In this case, tclvfs times out and the test fails.

Chang Li: Is there a timeout variable? Vince: No, something like this ought to be added in the future to deal with asynchronous filesystem access.

LV Sept, 2002 I have noted on the chat and elsewhere that the Makefile in the current versions of TclVFS no longer appear to install the actual VFS file systems. Steve Cassidy and I worked on this for a while and if you check Steve's Cantcl archive you can find something that might give you an idea on how to modify things to get them to work. I think that it came pretty close to working for me out of the box (well, after I created the appropriate .so for my platform).

LV Feb, 2003 The latest CVS head for tclvfs appears to build and install better than ever before. Now, it's up to users to start contributing new vfs types!

Setok Feb, 2003: Seems as if tclvfs needs the Tcl source to compile? Is this really necessary? At least on my Tcl8.4 installation on debian it wouldn't compile, complaining about a missing header file.

22feb03 jcw - Should be ok. But there is still some nastiness left in the tclvfs build, at least on just about all *bsd variants I tried - it can be worked around by adding "$(TCL_DECLS)" to the CCFLAGS in the makefile. The effects are weird and varying, it causes tcl headers to make incorrect decisions and try to define or include the wrong stuff (thx to Mark Roseman for the explanation and workaround).

Setok OK with latest build.

JMN 2006-09-09

FreeBSD (both 5.x & 6.x tried) tclvfs checked out 2006-09-09

The generated Makefile seems to need some manual hacking or else make complains it has no target for vfs.o e.g "make: don't know how to make vfs.o. Stop"

Configure was tried from both base source dir and from within generic/

e.g "./configure --enable-threads --with-tcl=/usr/local/tcl/lib --with-tclinclude=/usr/local/tcl/include"

In Makefile, commented:

 #      $(COMPILE) -c `echo $<` -o $@


 vfs.o: $(top_builddir)/generic/vfs.c
        $(COMPILE) -c `echo $(top_builddir)/generic/vfs.c` -o $@

Jasp 3/10/2008 — I got that problem too, trying to compile tclvfs-20080503 on my Gentoo machine (with Tcl 8.5.1). This fix worked, thanks for that. :-)