Bug 35817 - tcl84 port fails to place a link to tclPlatDecls.h into /usr/local/include/tcl8.4
Summary: tcl84 port fails to place a link to tclPlatDecls.h into /usr/local/include/tc...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Dirk Meyer
Depends on:
Reported: 2002-03-12 13:50 UTC by brandt
Modified: 2002-03-18 09:50 UTC (History)
0 users

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description brandt 2002-03-12 13:50:01 UTC
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


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
try to compile the following file:

/* BOF */
#include <tcl.h>
/* EOF */

with cc -I/usr/local/include/tcl8.4


/* BOF */
#include <tcl8.4/tcl.h>
/* EOF */

with cc -I/usr/local/include

Observer that in both cases tclPlatDecls.h cannot be found.
Comment 1 Ade Lovett freebsd_committer 2002-03-13 00:31:37 UTC
Responsible Changed
From-To: freebsd-ports->dinoex

Comment 2 Dirk Meyer freebsd_committer 2002-03-14 14:14:46 UTC
State Changed
From-To: open->closed

Committed Thanks.
Comment 3 brandt 2002-03-18 09:39:43 UTC
On Mon, 18 Mar 2002, Kirk wrote:

K>Hello. This fix didn't work for me. I added the line:
K>@ln -sf $(GENERIC_INCLUDE_INSTALL_DIR)/tclPlatDecls.h $(INCLUDE_INSTALL_DIR)/tclPlatDecls.h
K>first before the existing line 627, and then in a second try, after
K>the existing line 627, in the file
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

harti brandt, http://www.fokus.gmd.de/research/cc/cats/employees/hartmut.brandt/private