The tcl84 port places the tcl include file hierarchy under /usr/local/include/tcl84. This directory contains a symbolic link to generic/tcl.h. The user expected to find tcl.h by supplying -I/usr/local/include/tcl8.4 to cc and using #include <tcl.h> or -I/usr/local/include and #include <tcl8.4/tcl.h>. tcl.h itself contains the line #include "tclPlatDecls.h" This line expects the file to find in the same directory as tcl.h was found: /usr/local/include/tcl8.4. This means, that there should be a symbolic link: /usr/local/include/tcl8.4/tclPlatDecls.h -> /usr/local/include/tcl8.4/generic/tclPlatDecls.h Fix: Make a symbolic link for the file in question by adding the following line around line 627 of unix/Makefile.in @ln -sf $(GENERIC_INCLUDE_INSTALL_DIR)/tclPlatDecls.h $(INCLUDE_INSTALL_DIR)/tclPlatDecls.h How-To-Repeat: try to compile the following file: /* BOF */ #include <tcl.h> /* EOF */ with cc -I/usr/local/include/tcl8.4 or /* BOF */ #include <tcl8.4/tcl.h> /* EOF */ with cc -I/usr/local/include Observer that in both cases tclPlatDecls.h cannot be found.
Responsible Changed From-To: freebsd-ports->dinoex Over to MAINTAINER
State Changed From-To: open->closed Committed Thanks.
On Mon, 18 Mar 2002, Kirk wrote: K>Hello. This fix didn't work for me. I added the line: K> K>@ln -sf $(GENERIC_INCLUDE_INSTALL_DIR)/tclPlatDecls.h $(INCLUDE_INSTALL_DIR)/tclPlatDecls.h K> K>first before the existing line 627, and then in a second try, after K>the existing line 627, in the file K> K>/usr/ports/lang/tcl84/work/tcl8.4a3/unix/Makefile.in K> K>in the ports of Freebsd release 4.5. I then did make deinstall and K>make install. I still have the exact problem reported. I'm not K>complaining, Freebsd is after all written for free, and bugs are few K>and far between. Also, installing TCL8.3 fixed the problem and works K>fine. I know the problem report says it's for 5.0-CURRENT, and perhaps K>that's why it didn't work on 4.5 release, but I wouldn't think it K>would make a difference. You must also re-configure the port after you have changed Makefile.in. tcl8.3 works , because its tcl.h did not include tclPlatDecls.h. NB: tcl8.4 is bad anyway, because the tcl maintainers have managed to change the API between two patch levels of 8.4 - they have changed function delcarations like TclSplitList that were stable for ages. Really annoying. harti -- harti brandt, http://www.fokus.gmd.de/research/cc/cats/employees/hartmut.brandt/private brandt@fokus.fhg.de