aboutsummaryrefslogtreecommitdiffstats
path: root/lang
diff options
context:
space:
mode:
authormi <mi@FreeBSD.org>2009-04-21 15:52:35 +0800
committermi <mi@FreeBSD.org>2009-04-21 15:52:35 +0800
commita411145e1b06f67dd62101f9a201b699f00329e7 (patch)
tree17f3dc558cc73e48d8505e2d19c7c65a15b8fb60 /lang
parent8f6f110431765ad02848c38e06bce8ebe93e6745 (diff)
downloadfreebsd-ports-gnome-a411145e1b06f67dd62101f9a201b699f00329e7.tar.gz
freebsd-ports-gnome-a411145e1b06f67dd62101f9a201b699f00329e7.tar.zst
freebsd-ports-gnome-a411145e1b06f67dd62101f9a201b699f00329e7.zip
Ubreak by making the port check for availability of Tcl's man-pages.
Tcl-8.4 does not install those by default any more... Approved by: portmgr (erwin) PR: ports/133555
Diffstat (limited to 'lang')
-rw-r--r--lang/tclX/Makefile16
-rw-r--r--lang/tclX/files/patch-const184
-rw-r--r--lang/tclX/files/patch-intptr124
3 files changed, 317 insertions, 7 deletions
diff --git a/lang/tclX/Makefile b/lang/tclX/Makefile
index 1cd4d7eced7f..bd3a2ed2ea47 100644
--- a/lang/tclX/Makefile
+++ b/lang/tclX/Makefile
@@ -7,7 +7,7 @@
PORTNAME= tclX
PORTVERSION= 8.4
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= lang tcl devel
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR=tclx
@@ -16,8 +16,6 @@ DISTNAME= tclx${PORTVERSION}
MAINTAINER= mi@aldan.algebra.com
COMMENT= Extended TCL
-BROKEN= does not compile
-
USE_BZIP2= yes
USE_TCL_BUILD= 84
USE_TCL= 84
@@ -30,12 +28,9 @@ CONFIGURE_ARGS= --enable-shared \
--with-help=Help \
--with-tcl="${TCL_LIBDIR}"
PLIST_SUB= TCLX_VER=${PORTVERSION}
+MAKE_JOBS_SAFE= yes
ALL_TARGET= binaries libraries # test
INSTALL_TARGET= install-binaries install-libraries
-.ifndef(NOPORTDOCS)
-ALL_TARGET+= doc
-INSTALL_TARGET+=install-help
-.endif
MAN3= CmdWrite.3 Handles.3 Keylist.3 ObjCmdWrite.3 TclXInit.3
MANN= TclX.n
@@ -74,3 +69,10 @@ pre-su-install:
cd ${WRKSRC}/doc && ${INSTALL_MAN} ${MANN} ${PREFIX}/man/mann
.include <bsd.port.post.mk>
+
+.ifndef(NOPORTDOCS) && exists(${MANPREFIX}/man/mann/Tcl.n.gz)
+ALL_TARGET+= doc
+INSTALL_TARGET+=install-help
+.else
+PLIST_SUB:= ${PLIST_SUB:NPORTDOCS=*} PORTDOCS='@comment '
+.endif
diff --git a/lang/tclX/files/patch-const b/lang/tclX/files/patch-const
new file mode 100644
index 000000000000..48e3f022c337
--- /dev/null
+++ b/lang/tclX/files/patch-const
@@ -0,0 +1,184 @@
+Submitted to TclX developers as:
+
+https://sourceforge.net/tracker/index.php?func=detail&aid=2687373&group_id=13247&atid=313247
+
+ -mi
+
+--- generic/tclExtend.h 2002-09-25 20:23:29.000000000 -0400
++++ generic/tclExtend.h 2009-03-14 17:57:46.000000000 -0400
+@@ -123,19 +123,19 @@
+ EXTERN int TclX_KeyedListGet _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_Obj *keylPtr,
+- char *key,
++ const char *key,
+ Tcl_Obj **valuePtrPtr));
+
+ EXTERN int TclX_KeyedListSet _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_Obj *keylPtr,
+- char *key,
++ const char *key,
+ Tcl_Obj *valuePtr));
+
+ EXTERN int TclX_KeyedListDelete _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_Obj *keylPtr,
+- char *key));
++ const char *key));
+
+ EXTERN int TclX_KeyedListGetKeys _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_Obj *keylPtr,
+- char *key,
++ const char *key,
+ Tcl_Obj **listObjPtrPtr));
+
+--- generic/tclXkeylist.c 2005-11-21 13:54:13.000000000 -0500
++++ generic/tclXkeylist.c 2009-03-15 00:43:31.000000000 -0400
+@@ -121,9 +121,9 @@
+ int entryIdx));
+
+-static int
++static intptr_t
+ FindKeyedListEntry _ANSI_ARGS_((keylIntObj_t *keylIntPtr,
+- char *key,
++ const char *key,
+ int *keyLenPtr,
+- char **nextSubKeyPtr));
++ const char **nextSubKeyPtr));
+
+ static void
+@@ -342,5 +342,5 @@
+ int entryIdx;
+ {
+- int idx;
++ intptr_t idx;
+
+ #ifndef NO_KEYLIST_HASH_TABLE
+@@ -348,5 +348,5 @@
+ Tcl_HashEntry *entryPtr;
+ Tcl_HashSearch search;
+- int nidx;
++ intptr_t nidx;
+
+ entryPtr = Tcl_FindHashEntry(keylIntPtr->hashTbl,
+@@ -364,5 +364,5 @@
+ for (entryPtr = Tcl_FirstHashEntry(keylIntPtr->hashTbl, &search);
+ entryPtr != NULL; entryPtr = Tcl_NextHashEntry(&search)) {
+- nidx = (int) Tcl_GetHashValue(entryPtr);
++ nidx = (intptr_t) Tcl_GetHashValue(entryPtr);
+ if (nidx > entryIdx) {
+ Tcl_SetHashValue(entryPtr, (ClientData) (nidx - 1));
+@@ -397,13 +397,14 @@
+ *-----------------------------------------------------------------------------
+ */
+-static int
++static intptr_t
+ FindKeyedListEntry (keylIntPtr, key, keyLenPtr, nextSubKeyPtr)
+ keylIntObj_t *keylIntPtr;
+- char *key;
++ const char *key;
+ int *keyLenPtr;
+- char **nextSubKeyPtr;
++ const char **nextSubKeyPtr;
+ {
+- char *keySeparPtr;
+- int keyLen, findIdx = -1;
++ const char *keySeparPtr;
++ int keyLen;
++ intptr_t findIdx = -1;
+
+ keySeparPtr = strchr (key, '.');
+@@ -417,18 +418,17 @@
+ if (keylIntPtr->hashTbl != NULL) {
+ Tcl_HashEntry *entryPtr;
+- char tmp = key[keyLen];
++ char *tmp;
++ const char *_key;
++
+ if (keySeparPtr != NULL) {
+- /*
+- * A few extra guards in setting this, as if we are passed
+- * a const char, this can crash.
+- */
+- key[keyLen] = '\0';
+- }
+- entryPtr = Tcl_FindHashEntry(keylIntPtr->hashTbl, key);
++ tmp = alloca(keyLen + 1);
++ strncpy(tmp, key, keyLen);
++ tmp[keyLen] = '\0';
++ _key = tmp;
++ } else
++ _key = key;
++ entryPtr = Tcl_FindHashEntry(keylIntPtr->hashTbl, _key);
+ if (entryPtr != NULL) {
+- findIdx = (int) Tcl_GetHashValue(entryPtr);
+- }
+- if (keySeparPtr != NULL) {
+- key[keyLen] = tmp;
++ findIdx = (intptr_t)Tcl_GetHashValue(entryPtr);
+ }
+ }
+@@ -556,5 +556,6 @@
+ keylEntry_t *keyEntryPtr;
+ char *key;
+- int keyLen, idx, objc, subObjc;
++ int keyLen, objc, subObjc;
++ intptr_t idx;
+ Tcl_Obj **objv, **subObjv;
+ #ifndef NO_KEYLIST_HASH_TABLE
+@@ -720,9 +721,9 @@
+ Tcl_Interp *interp;
+ Tcl_Obj *keylPtr;
+- char *key;
++ const char *key;
+ Tcl_Obj **valuePtrPtr;
+ {
+ keylIntObj_t *keylIntPtr;
+- char *nextSubKey;
++ const char *nextSubKey;
+ int findIdx;
+
+@@ -775,11 +776,12 @@
+ Tcl_Interp *interp;
+ Tcl_Obj *keylPtr;
+- char *key;
++ const char *key;
+ Tcl_Obj *valuePtr;
+ {
+ keylIntObj_t *keylIntPtr;
+ keylEntry_t *keyEntryPtr;
+- char *nextSubKey;
+- int findIdx, keyLen, status = TCL_OK;
++ const char *nextSubKey;
++ intptr_t findIdx;
++ int keyLen, status = TCL_OK;
+ Tcl_Obj *newKeylPtr;
+
+@@ -901,9 +903,10 @@
+ Tcl_Interp *interp;
+ Tcl_Obj *keylPtr;
+- char *key;
++ const char *key;
+ {
+ keylIntObj_t *keylIntPtr, *subKeylIntPtr;
+- char *nextSubKey;
+- int findIdx, status;
++ const char *nextSubKey;
++ intptr_t findIdx;
++ int status;
+
+ if (Tcl_ConvertToType (interp, keylPtr, &keyedListType) != TCL_OK)
+@@ -975,11 +978,12 @@
+ Tcl_Interp *interp;
+ Tcl_Obj *keylPtr;
+- char *key;
++ const char *key;
+ Tcl_Obj **listObjPtrPtr;
+ {
+ keylIntObj_t *keylIntPtr;
+ Tcl_Obj *listObjPtr;
+- char *nextSubKey;
+- int idx, findIdx;
++ const char *nextSubKey;
++ int idx;
++ intptr_t findIdx;
+
+ if (Tcl_ConvertToType (interp, keylPtr, &keyedListType) != TCL_OK)
diff --git a/lang/tclX/files/patch-intptr b/lang/tclX/files/patch-intptr
new file mode 100644
index 000000000000..4f5751f5016e
--- /dev/null
+++ b/lang/tclX/files/patch-intptr
@@ -0,0 +1,124 @@
+Submitted to TclX developers as:
+
+https://sourceforge.net/tracker/index.php?func=detail&aid=2687373&group_id=13247&atid=313247
+
+ -mi
+
+--- unix/tclXunixDup.c 2001-10-24 19:31:50.000000000 -0400
++++ unix/tclXunixDup.c 2009-03-14 18:01:57.000000000 -0400
+@@ -98,5 +98,5 @@
+ Tcl_GetChannelHandle (srcChannel, TCL_WRITABLE, &handle);
+ }
+- srcFileNum = (int) handle;
++ srcFileNum = (int)(intptr_t)handle;
+ channelType = Tcl_GetChannelType (srcChannel);
+
+@@ -134,7 +134,7 @@
+
+ if (STREQU (channelType->typeName, "tcp")) {
+- newChannel = Tcl_MakeTcpClientChannel ((ClientData) newFileNum);
++ newChannel = Tcl_MakeTcpClientChannel ((ClientData)(intptr_t)newFileNum);
+ } else {
+- newChannel = Tcl_MakeFileChannel ((ClientData) newFileNum,
++ newChannel = Tcl_MakeFileChannel ((ClientData)(intptr_t)newFileNum,
+ mode);
+ }
+@@ -231,7 +231,7 @@
+
+ if (isSocket) {
+- channel = Tcl_MakeTcpClientChannel ((ClientData) fileNum);
++ channel = Tcl_MakeTcpClientChannel ((ClientData)(intptr_t)fileNum);
+ } else {
+- channel = Tcl_MakeFileChannel ((ClientData) fileNum,
++ channel = Tcl_MakeFileChannel ((ClientData)(intptr_t)fileNum,
+ mode);
+ }
+--- generic/tclExtdInt.h 2005-07-12 15:03:15.000000000 -0400
++++ generic/tclExtdInt.h 2009-03-14 20:54:32.000000000 -0400
+@@ -517,5 +517,5 @@
+ Tcl_Channel channel,
+ void *sockaddr,
+- int sockaddrSize));
++ socklen_t sockaddrSize));
+
+ extern int
+@@ -523,5 +523,5 @@
+ Tcl_Channel channel,
+ void *sockaddr,
+- int sockaddrSize));
++ socklen_t sockaddrSize));
+
+ extern int
+--- unix/tclXunixOS.c 2005-07-12 15:03:15.000000000 -0400
++++ unix/tclXunixOS.c 2009-03-14 20:53:03.000000000 -0400
+@@ -118,5 +118,5 @@
+ }
+ }
+- return (int) handle;
++ return (intptr_t)handle;
+ }
+
+@@ -248,9 +248,9 @@
+ return TCL_ERROR;
+ }
+- channels [0] = Tcl_MakeFileChannel ((ClientData) fileNums [0],
++ channels [0] = Tcl_MakeFileChannel ((ClientData)(intptr_t)fileNums [0],
+ TCL_READABLE);
+ Tcl_RegisterChannel (interp, channels [0]);
+
+- channels [1] = Tcl_MakeFileChannel ((ClientData) fileNums [1],
++ channels [1] = Tcl_MakeFileChannel ((ClientData)(intptr_t)fileNums [1],
+ TCL_WRITABLE);
+ Tcl_RegisterChannel (interp, channels [1]);
+@@ -958,5 +958,5 @@
+ Tcl_Channel channel;
+ void *sockaddr;
+- int sockaddrSize;
++ socklen_t sockaddrSize;
+ {
+
+@@ -988,5 +988,5 @@
+ Tcl_Channel channel;
+ void *sockaddr;
+- int sockaddrSize;
++ socklen_t sockaddrSize;
+ {
+ if (getsockname (ChannelToFnum (channel, 0),
+@@ -1019,5 +1019,5 @@
+ int *valuePtr;
+ {
+- int valueLen = sizeof (*valuePtr);
++ socklen_t valueLen = sizeof (*valuePtr);
+
+ if (getsockopt (ChannelToFnum (channel, 0), SOL_SOCKET, option,
+@@ -1486,5 +1486,5 @@
+ return TCL_ERROR;
+ }
+- *fnumPtr = (int) handle;
++ *fnumPtr = (intptr_t)handle;
+ return TCL_OK;
+ }
+--- unix/tclXunixSock.c 2004-11-22 19:13:14.000000000 -0500
++++ unix/tclXunixSock.c 2009-03-14 20:59:08.000000000 -0400
+@@ -95,5 +95,5 @@
+ Tcl_Channel channel;
+
+- channel = Tcl_MakeTcpClientChannel ((ClientData) socketFD);
++ channel = Tcl_MakeTcpClientChannel ((ClientData)(intptr_t)socketFD);
+ Tcl_RegisterChannel (interp, channel);
+
+@@ -225,5 +225,5 @@
+ goto unixError;
+
+- channel = Tcl_MakeTcpClientChannel ((ClientData) socketFD);
++ channel = Tcl_MakeTcpClientChannel ((ClientData)(intptr_t)socketFD);
+ Tcl_RegisterChannel (interp, channel);
+
+@@ -267,5 +267,6 @@
+ Tcl_Channel channel;
+ unsigned options;
+- int acceptSocketFD, addrLen;
++ int acceptSocketFD;
++ socklen_t addrLen;
+ int socketFD = -1;
+ int nextArg;