aboutsummaryrefslogtreecommitdiff
path: root/lang/expect
diff options
context:
space:
mode:
authorPietro Cerutti <gahr@FreeBSD.org>2016-03-18 19:41:42 +0000
committerPietro Cerutti <gahr@FreeBSD.org>2016-03-18 19:41:42 +0000
commite295ff513294b2c2c518743fce605e629f36a67a (patch)
tree00ae326c9352d64939d4a28a923a1e781d6435d6 /lang/expect
parent65df63e2efa84b529535b1f0316d03bd71128f89 (diff)
downloadports-e295ff513294b2c2c518743fce605e629f36a67a.tar.gz
ports-e295ff513294b2c2c518743fce605e629f36a67a.zip
lang/expect: update to 5.45.3, bump PORTREVISION on dependent ports
Notes
Notes: svn path=/head/; revision=411367
Diffstat (limited to 'lang/expect')
-rw-r--r--lang/expect/Makefile15
-rw-r--r--lang/expect/files/patch-configure45
-rw-r--r--lang/expect/files/patch-exp__event.c11
-rw-r--r--lang/expect/files/patch-exp_main_sub.c46
-rw-r--r--lang/expect/files/patch-expect-5.45.3504
5 files changed, 531 insertions, 90 deletions
diff --git a/lang/expect/Makefile b/lang/expect/Makefile
index 979fbadf32a8..c2db3a727fa0 100644
--- a/lang/expect/Makefile
+++ b/lang/expect/Makefile
@@ -2,20 +2,19 @@
# $FreeBSD$
PORTNAME= expect
-PORTVERSION= 5.45
-PORTREVISION= 2
+PORTVERSION= 5.45.3
CATEGORIES= lang tcl tk
-MASTER_SITES= SF/expect/Expect/${PORTVERSION}
-DISTNAME= ${PORTNAME}${PORTVERSION}
+MASTER_SITES= SF/expect/Expect/${PORTVERSION:R}
+DISTNAME= ${PORTNAME}${PORTVERSION:R}
MAINTAINER= tcltk@FreeBSD.org
COMMENT= Sophisticated scripter based on Tcl/Tk
-LIBEXPECT_VER= ${PORTVERSION:S/.//}
+LIBEXPECT_VER= ${PORTVERSION:S/.//g}
-WRKSRC= ${WRKDIR}/${PORTNAME}${PORTVERSION}
+WRKSRC= ${WRKDIR}/${DISTNAME}
-USES= tcl
+USES= tcl autoreconf
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-shared \
@@ -32,7 +31,7 @@ post-install:
${LN} -sf libexpect.so.1 \
${STAGEDIR}${PREFIX}/lib/libexpect.so
-regression-test: build
+do-test:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} test
.include <bsd.port.mk>
diff --git a/lang/expect/files/patch-configure b/lang/expect/files/patch-configure
deleted file mode 100644
index 408a46516afc..000000000000
--- a/lang/expect/files/patch-configure
+++ /dev/null
@@ -1,45 +0,0 @@
---- configure.orig 2010-09-16 20:46:47 UTC
-+++ configure
-@@ -8103,7 +8103,7 @@ fi
- # This configuration from FreeBSD Ports.
- SHLIB_CFLAGS="-fPIC"
- SHLIB_LD="${CC} -shared"
-- TCL_SHLIB_LD_EXTRAS="-soname \$@"
-+ TCL_SHLIB_LD_EXTRAS="-Wl,-soname=\$@"
- SHLIB_SUFFIX=".so"
- LDFLAGS=""
- if test $doRpath = yes; then
-@@ -8123,7 +8123,7 @@ fi
- # Version numbers are dot-stripped by system policy.
- TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
- UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
-- SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1'
-+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
- TCL_LIB_VERSIONS_OK=nodots
- ;;
- Darwin-*)
-@@ -16349,9 +16349,9 @@ rm -f conftest*
- if test x"${TK_BIN_DIR}" != x ; then
- SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
- fi
-- eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
-+ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${EXP_LIB_VERSION}${SHARED_LIB_SUFFIX}"
- else
-- eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
-+ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${EXP_LIB_VERSION}${UNSHARED_LIB_SUFFIX}"
- fi
- # Some packages build their own stubs libraries
- eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
-@@ -16368,10 +16368,10 @@ rm -f conftest*
- if test x"${TK_BIN_DIR}" != x ; then
- SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
- fi
-- eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
-+ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${EXP_LIB_VERSION}${SHARED_LIB_SUFFIX}"
- RANLIB=:
- else
-- eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
-+ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${EXP_LIB_VERSION}${UNSHARED_LIB_SUFFIX}"
- fi
- # Some packages build their own stubs libraries
- eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
diff --git a/lang/expect/files/patch-exp__event.c b/lang/expect/files/patch-exp__event.c
new file mode 100644
index 000000000000..989cef46d936
--- /dev/null
+++ b/lang/expect/files/patch-exp__event.c
@@ -0,0 +1,11 @@
+--- exp_event.c.orig 2010-07-01 00:53:49 UTC
++++ exp_event.c
+@@ -120,6 +120,8 @@ exp_unblock_background_channelhandler(es
+ case disarm_req_while_blocked:
+ exp_disarm_background_channelhandler_force(esPtr);
+ break;
++ default:
++ break;
+ }
+ }
+
diff --git a/lang/expect/files/patch-exp_main_sub.c b/lang/expect/files/patch-exp_main_sub.c
index 1fc2ab7de0f5..f69f72e33107 100644
--- a/lang/expect/files/patch-exp_main_sub.c
+++ b/lang/expect/files/patch-exp_main_sub.c
@@ -1,39 +1,11 @@
--- exp_main_sub.c.orig 2010-08-27 22:01:15 UTC
+++ exp_main_sub.c
-@@ -672,6 +672,9 @@ char **argv;
- char *args; /* ptr to string-rep of all args */
- char *debug_init;
-
-+ char *native;
-+ Tcl_DString ds;
-+
- exp_argv0 = argv[0];
-
- #ifdef TCL_DEBUGGER
-@@ -853,18 +856,23 @@ char **argv;
- expDiagLog("set argc %s\r\n",argc_rep);
-
- if (exp_cmdfilename) {
-- Tcl_SetVar(interp,"argv0",exp_cmdfilename,0);
-+ native = Tcl_ExternalToUtfDString(NULL, exp_cmdfilename, -1, &ds);
-+ Tcl_SetVar(interp,"argv0",native,0);
- expDiagLog("set argv0 \"%s\"\r\n",exp_cmdfilename);
- } else {
-- Tcl_SetVar(interp,"argv0",exp_argv0,0);
-+ native = Tcl_ExternalToUtfDString(NULL, exp_argv0, -1, &ds);
-+ Tcl_SetVar(interp,"argv0",native,0);
- expDiagLog("set argv0 \"%s\"\r\n",exp_argv0);
- }
-+ Tcl_DStringFree(&ds);
-
- args = Tcl_Merge(argc-optind,argv+optind);
- expDiagLogU("set argv \"");
- expDiagLogU(args);
- expDiagLogU("\"\r\n");
-- Tcl_SetVar(interp,"argv",args,0);
-+ native = Tcl_ExternalToUtfDString(NULL, args, -1, &ds);
-+ Tcl_SetVar(interp,"argv",native,0);
-+ Tcl_DStringFree(&ds);
- Tcl_Free(args);
-
- exp_interpret_rcfiles(interp,my_rc,sys_rc);
+@@ -33,7 +33,7 @@
+ #endif
+ #ifdef __CENTERLINE__
+ #undef EXP_VERSION
+-#define EXP_VERSION "5.45.0" /* I give up! */
++#define EXP_VERSION "5.45.3" /* I give up! */
+ /* It is not necessary that number */
+ /* be accurate. It is just here to */
+ /* pacify Centerline which doesn't */
diff --git a/lang/expect/files/patch-expect-5.45.3 b/lang/expect/files/patch-expect-5.45.3
new file mode 100644
index 000000000000..291236422e27
--- /dev/null
+++ b/lang/expect/files/patch-expect-5.45.3
@@ -0,0 +1,504 @@
+--- ChangeLog.orig 2010-10-26 22:09:36 UTC
++++ ChangeLog
+@@ -1,3 +1,59 @@
++2014-05-01 Andreas Kupries <andreask@activestate.com>
++
++ * exp_main_sub.c: Updated EXP_VERSION to 5.45.3
++ * configure, configure.in: Updated expect to version 5.45.3
++
++ * expect.man [http://sourceforge.net/p/expect/bugs/86/]. Report
++ and fix by Vitezlav Crhonek.
++
++ * expect.c [http://sourceforge.net/p/expect/bugs/76/]. Report and
++ fix by Mutsuhito Iikura. On finding a full buffer during
++ matching the sliding window mechanism slides too far, truncating
++ the whole buffer and preventing matches across the boundary. Fix
++ is shortening the slide distance (slide only one 1/3).
++
++ * expect.c: [http://sourceforge.net/p/expect/patches/18/]. Report
++ and fix both by Nils Carlson <nils.carlson@ludd.ltu.se>.
++ Replaced a cc==0 check with proper Tcl_Eof() check.
++
++2013-11-04 Andreas Kupries <andreask@activestate.com>
++
++ * tclconfig/tcl.m4: [http://sourceforge.net/p/expect/patches/17/]
++ * configure: Extended Tcl header detection for OS X Mountain Lion.
++
++ * exp_main_sub.c: Updated EXP_VERSION to 5.45.2
++ * configure, configure.in: Updated expect to version 5.45.2
++
++ * expect.c: [http://sourceforge.net/p/expect/patches/16/]. Report
++ and fix both by Per Cederqvist. Replaced a memcpy with memmove
++ as the latter properly handles overlapping memory, whereas the
++ original code does not.
++
++2012-08-15 Andreas Kupries <andreask@activestate.com>
++
++ * exp_main_sub.c: Updated EXP_VERSION to 5.45.1
++ * configure, configure.in: Updated expect to version 5.45.1
++
++ * exp_chan.c: Applied patch sent in by Ogawa Hirofumi
++ <hirofumi@mail.parknet.co.jp>. The patch fixes a problem when
++ talking a tty where the writer has died. Some operating systems
++ report the condition as EIO with nothing read, while this
++ actually an EOF. Without the patch the returned data is
++ incomplete due to the error reported immediately and dropping
++ data in buffers.
++
++2012-05-16 Andreas Kupries <andreask@activestate.com>
++
++ * exp_chan.c: [Bug 3526461]: Applied patch by Michael Cleverly
++ <cleverly@users.sourceforge.net> fixing a problem with the
++ iteration over the expect channel list where the loop code may
++ modify the list, breaking the iterator.
++
++ * exp_chan.c: [Bug 3526707]: Applied patch by Michael Cleverly
++ * exp_command.h: <cleverly@users.sourceforge.net> fixing problem
++ * expect.c: with an insufficient test for a lost channel in
++ exp_background_channelhandler.
++
+ 2010-10-26 Andreas Kupries <andreask@activestate.com>
+
+ * expect.c: [Bug 3095935]: Convert #bytes information to #chars to
+--- configure.in.orig 2010-08-27 21:51:53 UTC
++++ configure.in
+@@ -1,9 +1,9 @@
+ dnl
+ dnl Process this file with autoconf to produce a configure script.
+ dnl
+-AC_REVISION($Id: configure.in,v 5.80 2010/08/27 21:51:53 hobbs Exp $)
++AC_REVISION($Id: configure.in,v 5.83 2014/05/01 19:22:24 andreas_kupries Exp $)
+
+-AC_INIT([expect],[5.45])
++AC_INIT([expect],[5.45.3])
+
+ TEA_INIT([3.9])
+
+--- exp_chan.c.orig 2010-07-01 00:53:49 UTC
++++ exp_chan.c
+@@ -217,6 +217,11 @@ ExpInputProc(instanceData, buf, toRead,
+
+ bytesRead = read(esPtr->fdin, buf, (size_t) toRead);
+ /*printf("ExpInputProc: read(%d,,) = %d\r\n",esPtr->fdin,bytesRead);*/
++
++ /* Emulate EOF on tty for tcl */
++ if ((bytesRead == -1) && (errno == EIO) && isatty(esPtr->fdin)) {
++ bytesRead = 0;
++ }
+ if (bytesRead > -1) {
+ /* strip parity if requested */
+ if (esPtr->parity == 0) {
+@@ -447,6 +452,34 @@ expChannelCountGet()
+ ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
+ return tsdPtr->channelCount;
+ }
++
++int
++expChannelStillAlive(esBackupPtr, backupName)
++ ExpState *esBackupPtr;
++ char *backupName;
++{
++ ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
++ ExpState *esPtr;
++
++ /*
++ * This utility function is called from 'exp_background_channelhandler'
++ * and checks to make sure that backupName can still be found in the
++ * channels linked list at the same address as before.
++ *
++ * If it can't be (or if the memory address has changed) then it
++ * means that it was lost in the background (and possibly another
++ * channel was opened and reassigned the same name).
++ */
++
++ for (esPtr = tsdPtr->firstExpPtr; esPtr; esPtr = esPtr->nextPtr) {
++ if (0 == strcmp(esPtr->name, backupName))
++ return (esPtr == esBackupPtr);
++ }
++
++ /* not found; must have been lost in the background */
++ return 0;
++}
++
+ #if 0 /* Converted to macros */
+ int
+ expSizeGet(esPtr)
+@@ -602,12 +635,38 @@ exp_background_channelhandlers_run_all()
+ {
+ ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
+ ExpState *esPtr;
++ ExpState *esNextPtr;
++ ExpState *esPriorPtr = 0;
+
+ /* kick off any that already have input waiting */
+- for (esPtr = tsdPtr->firstExpPtr;esPtr;esPtr = esPtr->nextPtr) {
++ for (esPtr = tsdPtr->firstExpPtr;esPtr; esPriorPtr = esPtr, esPtr = esPtr->nextPtr) {
+ /* is bg_interp the best way to check if armed? */
+ if (esPtr->bg_interp && !expSizeZero(esPtr)) {
++ /*
++ * We save the nextPtr in a local variable before calling
++ * 'exp_background_channelhandler' since in some cases
++ * 'expStateFree' could end up getting called before it
++ * returns, leading to a likely segfault on the next
++ * interaction through the for loop.
++ */
++ esNextPtr = esPtr->nextPtr;
+ exp_background_channelhandler((ClientData)esPtr,0);
++ if (esNextPtr != esPtr->nextPtr) {
++ /*
++ * 'expStateFree' must have been called from
++ * underneath us so we know that esPtr->nextPtr is
++ * invalid. However, it is possible that either the
++ * original nextPtr and/or the priorPtr have been
++ * freed too. If the esPriorPtr->nextPtr is now
++ * esNextPtr it seems safe to proceed. Otherwise we
++ * break and end early for safety.
++ */
++ if (esPriorPtr && esPriorPtr->nextPtr == esNextPtr) {
++ esPtr = esPriorPtr;
++ } else {
++ break; /* maybe set esPtr = tsdPtr->firstExpPtr again? */
++ }
++ }
+ }
+ }
+ }
+--- exp_command.h.orig 2010-07-01 00:53:49 UTC
++++ exp_command.h
+@@ -244,6 +244,7 @@ EXTERN void exp_init_unit_random _ANSI_
+ EXTERN void exp_init_sig _ANSI_ARGS_((void));
+ EXTERN void expChannelInit _ANSI_ARGS_((void));
+ EXTERN int expChannelCountGet _ANSI_ARGS_((void));
++EXTERN int expChannelStillAlive _ANSI_ARGS_((ExpState *, char *));
+
+ EXTERN int exp_tcl2_returnvalue _ANSI_ARGS_((int));
+ EXTERN int exp_2tcl_returnvalue _ANSI_ARGS_((int));
+--- expect.c.orig 2010-10-26 22:09:36 UTC
++++ expect.c
+@@ -972,21 +972,21 @@ eval_case_string(
+ }
+ expDiagLogU(no);
+ } else if (e->use == PAT_FULLBUFFER) {
+- expDiagLogU(Tcl_GetString(e->pat));
+- expDiagLogU("? ");
+- /* this must be the same test as in expIRead */
++ expDiagLogU(Tcl_GetString(e->pat));
++ expDiagLogU("? ");
++ /* this must be the same test as in expIRead */
+ /* We drop one third when are at least 2/3 full */
+ /* condition is (size >= max*2/3) <=> (size*3 >= max*2) */
+ if (((expSizeGet(esPtr)*3) >= (esPtr->input.max*2)) && (numchars > 0)) {
+- o->e = e;
+- o->matchlen = numchars;
++ o->e = e;
++ o->matchlen = numchars/3;
+ o->matchbuf = str;
+- o->esPtr = esPtr;
+- expDiagLogU(yes);
+- return(EXP_FULLBUFFER);
+- } else {
+- expDiagLogU(no);
+- }
++ o->esPtr = esPtr;
++ expDiagLogU(yes);
++ return(EXP_FULLBUFFER);
++ } else {
++ expDiagLogU(no);
++ }
+ }
+ return(EXP_NOMATCH);
+ }
+@@ -1093,8 +1093,10 @@ ecases_remove_by_expi(
+
+ /* shift remaining elements down */
+ /* but only if there are any left */
++ /* Use memmove to handle the overlap */
++ /* memcpy breaks */
+ if (i+1 != ecmd->ecd.count) {
+- memcpy(&ecmd->ecd.cases[i],
++ memmove(&ecmd->ecd.cases[i],
+ &ecmd->ecd.cases[i+1],
+ ((ecmd->ecd.count - i) - 1) *
+ sizeof(struct exp_cmd_descriptor *));
+@@ -1859,17 +1861,8 @@ expRead(
+ /* try to read it */
+ cc = expIRead(interp,esPtr,timeout,tcl_set_flags);
+
+- /* the meaning of 0 from i_read means eof. Muck with it a */
+- /* little, so that from now on it means "no new data arrived */
+- /* but it should be looked at again anyway". */
+- if (cc == 0) {
++ if (Tcl_Eof(esPtr->channel)) {
+ cc = EXP_EOF;
+- } else if (cc > 0) {
+- /* successfully read data */
+- } else {
+- /* failed to read data - some sort of error was encountered such as
+- * an interrupt with that forced an error return
+- */
+ }
+ } else if (cc == EXP_DATA_OLD) {
+ cc = 0;
+@@ -1967,6 +1960,8 @@ exp_buffer_shuffle( /* INTL */
+ str = esPtr->input.buffer;
+ numchars = esPtr->input.use;
+
++ /* We discard 1/3 of the data in the buffer.
++ */
+ skiplen = numchars/3;
+ p = str + skiplen;
+
+@@ -1975,7 +1970,7 @@ exp_buffer_shuffle( /* INTL */
+ */
+
+ lostChar = *p;
+- /* temporarily stick null in middle of string */
++ /* Temporarily stick null in middle of string to terminate */
+ *p = 0;
+
+ expDiagLog("%s: set %s(buffer) \"",caller_name,array_name);
+@@ -1986,12 +1981,13 @@ exp_buffer_shuffle( /* INTL */
+ save_flags);
+
+ /*
+- * restore damage
++ * Restore damage done fir display above.
+ */
+ *p = lostChar;
+
+ /*
+- * move 2nd half of string down to 1st half
++ * move the higher 2/3 of the string down over the lower 2/3.
++ * This destroys the 1st 1/3.
+ */
+
+ newlen = numchars - skiplen;
+@@ -2503,8 +2499,12 @@ do_more_data:
+ */
+
+ /* First check that the esPtr is even still valid! */
+- /* This ought to be sufficient. */
+- if (0 == Tcl_GetChannel(interp,backup,(int *)0)) {
++ /*
++ * It isn't sufficient to just check that 'Tcl_GetChannel' still knows about
++ * backup since it is possible that esPtr was lost in the background AND
++ * another process spawned and reassigned the same name.
++ */
++ if (!expChannelStillAlive(esPtr, backup)) {
+ expDiagLog("expect channel %s lost in background handler\n",backup);
+ return;
+ }
+--- expect.man.orig 2006-01-25 21:51:28 UTC
++++ expect.man
+@@ -173,7 +173,9 @@ way, use the
+ .B \-b
+ flag.
+ (When using Expectk, this option is specified as
+-.BR \-buffer .) Note that stdio-buffering may still take place however this shouldn't cause problems when reading from a fifo or stdin.
++.BR \-buffer .)
++Note that stdio-buffering may still take place however this shouldn't cause
++problems when reading from a fifo or stdin.
+ .PP
+ If the string "\-" is supplied as a filename, standard input is read instead.
+ (Use "./\-" to read from a file actually named "\-".)
+--- fixcat.orig 2016-03-18 13:19:35 UTC
++++ fixcat
+@@ -0,0 +1,21 @@
++#!expect --
++# Synopsis: fixcat
++# Author: Don Libes
++
++# Description: test to see if /bin/cat is unbuffered (i.e., -u is needed)
++# Return 0 if buffered, 1 if unbuffered.
++#
++# If this file is sitting in an architecture-specific library directory,
++# then it serves as a marker that your /bin/cat buffers by default.
++
++# test for when catting to/from files
++log_user 0
++spawn -open [open "|cat" "r+"]
++send "\r"
++expect "\r" {exit 1}
++
++# test for when catting to real tty
++#log_user 0
++#spawn /bin/cat
++#send "\r"
++#expect "\r\n\r\n" {exit 1}
+--- tclconfig/tcl.m4.orig 2010-11-09 19:42:10 UTC
++++ tclconfig/tcl.m4
+@@ -9,7 +9,7 @@
+ # See the file "license.terms" for information on usage and redistribution
+ # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ #
+-# RCS: @(#) $Id: tcl.m4,v 1.6 2010/09/16 20:46:47 hobbs Exp $
++# RCS: @(#) $Id: tcl.m4,v 1.7 2013/11/04 19:42:08 andreas_kupries Exp $
+
+ AC_PREREQ(2.57)
+
+@@ -1632,7 +1632,7 @@ dnl AC_CHECK_TOOL(AR, ar)
+ # This configuration from FreeBSD Ports.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="${CC} -shared"
+- TCL_SHLIB_LD_EXTRAS="-soname \$[@]"
++ TCL_SHLIB_LD_EXTRAS="-Wl,-soname\$[@]"
+ SHLIB_SUFFIX=".so"
+ LDFLAGS=""
+ AS_IF([test $doRpath = yes], [
+@@ -1646,7 +1646,7 @@ dnl AC_CHECK_TOOL(AR, ar)
+ # Version numbers are dot-stripped by system policy.
+ TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+- SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1'
++ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ Darwin-*)
+@@ -3220,9 +3220,9 @@ print("manifest needed")
+ if test x"${TK_BIN_DIR}" != x ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
+ fi
+- eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
++ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${EXP_LIB_VERSION}${SHARED_LIB_SUFFIX}"
+ else
+- eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
++ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${EXP_LIB_VERSION}${UNSHARED_LIB_SUFFIX}"
+ fi
+ # Some packages build their own stubs libraries
+ eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+@@ -3239,10 +3239,10 @@ print("manifest needed")
+ if test x"${TK_BIN_DIR}" != x ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
+ fi
+- eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
++ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${EXP_LIB_VERSION}${SHARED_LIB_SUFFIX}"
+ RANLIB=:
+ else
+- eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
++ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${EXP_LIB_VERSION}${UNSHARED_LIB_SUFFIX}"
+ fi
+ # Some packages build their own stubs libraries
+ eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+@@ -3389,9 +3389,12 @@ AC_DEFUN([TEA_PRIVATE_TCL_HEADERS], [
+ # the framework's Headers and PrivateHeaders directories
+ case ${TCL_DEFS} in
+ *TCL_FRAMEWORK*)
+- if test -d "${TCL_BIN_DIR}/Headers" -a \
+- -d "${TCL_BIN_DIR}/PrivateHeaders"; then
+- TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}"
++ if test -d "${TCL_BIN_DIR}/Headers"; then
++ if test -d "${TCL_BIN_DIR}/PrivateHeaders"; then
++ TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}"
++ elif test -d "${TCL_BIN_DIR}/Headers/tcl-private"; then
++ TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/Headers/tcl-private\" ${TCL_INCLUDES}"
++ fi
+ else
+ TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`"
+ fi
+--- testsuite/expect.tests/expect-tests.exp.orig 2016-03-18 13:19:35 UTC
++++ testsuite/expect.tests/expect-tests.exp
+@@ -0,0 +1,104 @@
++# Copyright (C) 1988, 1990, 1991, 1992 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
++
++# Please email any bugs, comments, and/or additions to this file to:
++# bug-dejagnu@prep.ai.mit.edu
++
++# This file was written by Rob Savoye. (rob@cygnus.com)
++
++#
++# the initial work on the version of these tests from the tcl release was done
++# by Mary Ann May-Pumphrey of Sun Microsystems.
++#
++if $tracelevel then {
++ strace $tracelevel
++ }
++
++expect_before buffer_full { error "Buffer full" }
++expect_start
++
++set timeoutmsg "Timed out: Never got started, "
++set timeout 20
++set file all
++set command "unidentified test in $file"
++
++if ![file exists ${srcdir}/../tests] {
++ perror "The source for the test cases is missing." 0
++ return -1
++}
++send "cd ${srcdir}/../tests\r"
++expect {
++ -re "set VERBOSE 1\[\r\n\]*1\[\r\n\]*$eprompt" {
++ verbose "Set verbose flag for tests"
++ exp_continue
++ }
++ -re "cd $srcdir/../tests\[\r\n\]*$eprompt" {
++ verbose "Changed directory to $srcdir/../tests" 2
++ }
++ -re "no files matched glob pattern" {
++ warning "Didn't cd to $srcdir/../tests"
++ }
++ timeout {
++ perror "Couldn't change directories" 0
++ return -1
++ }
++}
++
++exp_send "source $file\r"
++expect {
++ -re "source $file\[\r\n\]*$eprompt" {
++ verbose "Sourced test $file ..."
++ set timeoutmsg "Never got to the end of "
++ exp_continue
++ }
++ "install Tcl or set your TCL_LIBRARY environment variable" {
++ perror "You need to set the TCL_LIBRARY environment variable"
++ return -1
++ }
++ -re "no files matched glob pattern" {
++ warning "Didn't cd to $srcdir/../tests"
++ }
++ -re "\[\r\n\]*\\+\\+\\+\\+ (\[a-z\]*-\[.0-9\]*) PASSED\[\r\n\]*" {
++ pass $expect_out(1,string)
++ exp_continue
++ }
++ -re "\[\r\n\]*\\+* (\[a-z\]*-\[.0-9\]*) FAILED\[\r\n\]*" {
++ fail $expect_out(1,string)
++ exp_continue
++ }
++ -re "Test generated error:\[\r\n\]*.*\[\r\n\]*" {
++ regsub "Test generated error:\[\r\n\]+" $expect_out(0,string) "" tmp
++ regsub -all "\[\r\n\]*\[a-z.\]test\[\r\n\]*" $tmp "" tmp
++ regsub -all "\[\r\n\]*" $tmp "" tmp
++ perror "Got a test case bug \"$tmp\""
++ exp_continue
++ }
++ -re "\[x\]+ \[a-i\]+ \[A-K\]+ \[0-9\]+ " {
++ verbose "Got standard output message from exec 8.1 test." 3
++ exp_continue
++ }
++ "*Error: bad option *" {
++ fail "$command (Got a bad option)"
++ }
++ eof {
++ verbose "Done" 2
++ }
++ timeout {
++ warning "$timeoutmsg $file"
++ }
++}
++
++catch close