diff options
Diffstat (limited to 'poky/meta/recipes-devtools/expect')
7 files changed, 499 insertions, 0 deletions
diff --git a/poky/meta/recipes-devtools/expect/expect/0001-Resolve-string-formatting-issues.patch b/poky/meta/recipes-devtools/expect/expect/0001-Resolve-string-formatting-issues.patch new file mode 100644 index 000000000..af1d8c626 --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect/0001-Resolve-string-formatting-issues.patch @@ -0,0 +1,29 @@ +From 107cc370705d8520ba42f1416d89ed3544277c83 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 23 Mar 2017 13:44:41 +0200 +Subject: [PATCH] Resolve string formatting issues. + +Upstream-Status: Inappropriate [upstream seems dead] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + exp_clib.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/exp_clib.c b/exp_clib.c +index 172c05e..809200e 100644 +--- a/exp_clib.c ++++ b/exp_clib.c +@@ -1476,8 +1476,8 @@ expDiagLogU(str) + char *str; + { + if (exp_is_debugging) { +- fprintf(stderr,str); +- if (exp_logfile) fprintf(exp_logfile,str); ++ fprintf(stderr, "%s", str); ++ if (exp_logfile) fprintf(exp_logfile, "%s", str); + } + } + +-- +2.11.0 + diff --git a/poky/meta/recipes-devtools/expect/expect/0001-configure.in.patch b/poky/meta/recipes-devtools/expect/expect/0001-configure.in.patch new file mode 100644 index 000000000..7595a254a --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect/0001-configure.in.patch @@ -0,0 +1,108 @@ +Allow cross compiling. + +Signed-off-by: Anders Roxell <anders.roxell@enea.com> +Upstream-Status: Pending +--- +diff -uNr a/configure.in b/configure.in +--- a/configure.in 2012-12-14 15:31:32.623180450 +0100 ++++ b/configure.in 2012-12-14 15:53:34.518233519 +0100 +@@ -481,7 +481,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + AC_MSG_CHECKING([if any value exists for WNOHANG]) +@@ -506,7 +506,9 @@ + AC_MSG_RESULT(no) + AC_DEFINE(WNOHANG_BACKUP_VALUE, 1) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(yes) ++ AC_DEFINE_UNQUOTED(WNOHANG_BACKUP_VALUE, `cat wnohang`) ++ rm -f wnohang + ) + + # +@@ -574,7 +576,8 @@ + AC_DEFINE(REARM_SIG) + , + AC_MSG_RESULT(no) +-, AC_MSG_WARN([Expect can't be cross compiled]) ++, ++ AC_MSG_RESULT(no) + ) + + # HPUX7 has trouble with the big cat so split it +@@ -725,7 +728,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(yes) ++ AC_DEFINE(HAVE_SGTTYB) ++ PTY_TYPE=sgttyb + ) + + # mach systems have include files for unimplemented features +@@ -749,7 +754,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_TERMIO) ++ PTY_TYPE=termios ++ AC_MSG_RESULT(yes) + ) + + # now check for the new style ttys (not yet posix) +@@ -771,7 +778,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_TERMIOS) ++ PTY_TYPE=termios ++ AC_MSG_RESULT(yes) + ) + fi + +@@ -794,7 +803,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + AC_MSG_CHECKING([if TIOCGWINSZ in termios.h]) +@@ -816,7 +825,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # finally check for Cray style ttys +@@ -837,7 +846,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # +@@ -889,7 +898,8 @@ + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_SV_TIMEZONE) ++ AC_MSG_RESULT(yes), + ) + + diff --git a/poky/meta/recipes-devtools/expect/expect/0001-expect-Fix-segfaults-if-Tcl-is-built-with-stubs-and-.patch b/poky/meta/recipes-devtools/expect/expect/0001-expect-Fix-segfaults-if-Tcl-is-built-with-stubs-and-.patch new file mode 100644 index 000000000..b1d322d5c --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect/0001-expect-Fix-segfaults-if-Tcl-is-built-with-stubs-and-.patch @@ -0,0 +1,91 @@ +From f0049b4b2ea55b3b3c53bf6f0275654801c755d2 Mon Sep 17 00:00:00 2001 +From: Li Zhou <li.zhou@windriver.com> +Date: Thu, 28 Sep 2017 15:54:55 +0800 +Subject: [PATCH] expect: Fix segfaults if Tcl is built with stubs and Expect + is used directly from C program + +Description: This dirty hack fixes segfaults if Tcl is built with stubs + and Expect is used directly from C program. +Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588817 +Example: + #include <stdio.h> + #include <tcl8.5/expect.h> + int main() + { + FILE *pipe; + char *some_command = "uname"; + char datum; + pipe = exp_popen(some_command); + if (pipe == NULL) return 1; + while ((datum = getc (pipe)) != EOF) + printf("%c",datum); + } +Example: + #include <stdio.h> + #include "expect.h" + main() + { + int fd = 0; + fd = exp_spawnl("echo", "echo", "Hello User: Whats up?", (char*) 0); + switch (exp_expectl(fd, exp_regexp, "ser:", 1, exp_end)) { + case 1: { + printf("GOT ser:\n"); + break; + } + default: { + printf("DEFAULT\n"); + return 1; + } + } + printf("Normal Exit\n"); + return 0; + } +Author: Sergei Golovan <sgolovan@debian.org> + +Upstream-Status: Pending +This patch is backported from fedora changes for expect: +http://pkgs.fedoraproject.org/cgit/rpms/expect.git/commit/ +?h=master&id=b6737eed550be93182f2ed194e836a6cbbcf4fa3 +Signed-off-by: Li Zhou <li.zhou@windriver.com> +--- + exp_clib.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/exp_clib.c b/exp_clib.c +index 172c05e..19341d5 100644 +--- a/exp_clib.c ++++ b/exp_clib.c +@@ -114,7 +114,11 @@ extern unsigned long strtoul _ANSI_ARGS_((CONST char *string, + #include <stdlib.h> /* for malloc */ + #endif + +-#include <tcl.h> ++#define ckalloc(x) Tcl_Alloc(x) ++#define ckfree(x) Tcl_Free(x) ++extern char *Tcl_ErrnoMsg(int err); ++extern char *Tcl_Alloc(unsigned int size); ++extern void Tcl_Free(char *ptr); + #include "expect.h" + #define TclRegError exp_TclRegError + +@@ -389,7 +393,7 @@ char *exp; + FAIL("regexp too big"); + + /* Allocate space. */ +- r = (regexp *)ckalloc(sizeof(regexp) + (unsigned)rcstate->regsize); ++ r = (regexp *)malloc(sizeof(regexp) + (unsigned)rcstate->regsize); + if (r == NULL) + FAIL("out of space"); + +@@ -399,7 +403,7 @@ char *exp; + rcstate->regcode = r->program; + regc(MAGIC, rcstate); + if (reg(0, &flags, rcstate) == NULL) { +- ckfree ((char*) r); ++ free((char*) r); + return(NULL); + } + +-- +1.9.1 + diff --git a/poky/meta/recipes-devtools/expect/expect/0001-expect-install-scripts-without-using-the-fixline1-tc.patch b/poky/meta/recipes-devtools/expect/expect/0001-expect-install-scripts-without-using-the-fixline1-tc.patch new file mode 100644 index 000000000..274ad8635 --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect/0001-expect-install-scripts-without-using-the-fixline1-tc.patch @@ -0,0 +1,34 @@ +Upstream-Status: Inappropriate [wrlinux specific] + +Subject: expect: install scripts without using the fixline1 tcl script + +On older machines like SLED11.2, we are encountering do_install failures +complaining that 'GLIBC_2.14' is not found in /lib64/libc.so.6 but is required +by libtcl8.6.so.0. + +This is because that we're executing the fixline1 tcl script which requires +libtcl8.6.so.0 in sysroot. However, all commands in SCRIPTS already have got +the correct first line, that is '#!/bin/sh'. We don't need to modify anything. +That's why we could just copy them. + +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +--- + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index c05c880..f1394ff 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -380,7 +380,7 @@ dist: dist-clean doc + cp $(DIST_ROOT)/$(PKG_DIR).tar.gz $(top_builddir) + + $(SCRIPTS): +- $(TCLSH) $(srcdir)/fixline1 $(SHORT_BINDIR) < $(srcdir)/example/$@ > $@ ++ cp $(srcdir)/example/$@ $@ + + ## We cannot use TCL_LIBS below (after TCL_LIB_SPEC) because its + ## expansion references the contents of LIBS, which contains linker +-- +1.7.10.4 + diff --git a/poky/meta/recipes-devtools/expect/expect/0002-tcl.m4.patch b/poky/meta/recipes-devtools/expect/expect/0002-tcl.m4.patch new file mode 100644 index 000000000..dc4c6ba40 --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect/0002-tcl.m4.patch @@ -0,0 +1,17 @@ +Use proper -L path when cross compiling. + +Signed-off-by: Anders Roxell <anders.roxell@enea.com> +Upstream-Status: Pending +--- +diff -uNr a/tclconfig/tcl.m4 b/tclconfig/tcl.m4 +--- a/tclconfig/tcl.m4 2012-12-14 09:16:58.789861281 +0100 ++++ b/tclconfig/tcl.m4 2012-12-14 10:55:43.542297010 +0100 +@@ -371,7 +371,7 @@ + # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC + # instead of TCL_BUILD_LIB_SPEC since it will work with both an + # installed and uninstalled version of Tcl. +- if test -f "${TCL_BIN_DIR}/Makefile" ; then ++ if test -f "${TCL_BIN_DIR}/Makefile" || test "$cross_compiling" = yes; then + TCL_LIB_SPEC="${TCL_BUILD_LIB_SPEC}" + TCL_STUB_LIB_SPEC="${TCL_BUILD_STUB_LIB_SPEC}" + TCL_STUB_LIB_PATH="${TCL_BUILD_STUB_LIB_PATH}" diff --git a/poky/meta/recipes-devtools/expect/expect/01-example-shebang.patch b/poky/meta/recipes-devtools/expect/expect/01-example-shebang.patch new file mode 100644 index 000000000..8597f3138 --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect/01-example-shebang.patch @@ -0,0 +1,144 @@ +Author: Mike Markley <mike@markley.org> +Author: Sergei Golovan <sgolovan@debian.org> +Description: Fixes shebangs in examples (Closes: #152367). + +Backported from Debian + +Upstream-Status: Pending +Index: expect5.45/example/beer.exp +=================================================================== +--- expect5.45.orig/example/beer.exp 2006-01-25 13:51:39.000000000 -0800 ++++ expect5.45/example/beer.exp 2013-11-01 17:35:19.817318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expect -f ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect + + # 99 bottles of beer on the wall, Expect-style + # Author: Don Libes <libes@nist.gov> +Index: expect5.45/example/expectd.proto +=================================================================== +--- expect5.45.orig/example/expectd.proto 2010-07-02 09:03:31.000000000 -0700 ++++ expect5.45/example/expectd.proto 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,10 @@ +-#!/depot/tcl/src/expect/e -- ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect ++ + # Description: Simple fragment to begin a telnet daemon + # For more information, see Chapter 17 of "Exploring Expect" + # Author: Don Libes, NIST +Index: expect5.45/example/irsh +=================================================================== +--- expect5.45.orig/example/irsh 2010-07-02 09:03:31.000000000 -0700 ++++ expect5.45/example/irsh 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expect -- ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect + + # Do rsh interactively. For example, consider the following command: + # rsh <remote> ls -l "|" more +Index: expect5.45/example/passwd.cgi +=================================================================== +--- expect5.45.orig/example/passwd.cgi 2000-01-06 15:22:07.000000000 -0800 ++++ expect5.45/example/passwd.cgi 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expect -- ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect + + # This is a CGI script to process requests created by the accompanying + # passwd.html form. This script is pretty basic, although it is +Index: expect5.45/example/passwdprompt +=================================================================== +--- expect5.45.orig/example/passwdprompt 2003-09-05 12:01:59.000000000 -0700 ++++ expect5.45/example/passwdprompt 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expect ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect + + # This script prompts for a passwd from stdin while echoing *'s + +Index: expect5.45/example/reprompt +=================================================================== +--- expect5.45.orig/example/reprompt 2000-01-06 15:22:07.000000000 -0800 ++++ expect5.45/example/reprompt 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expect -- ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect + + # Name: reprompt + # Description: reprompt every so often until user enters something +Index: expect5.45/example/term_expect +=================================================================== +--- expect5.45.orig/example/term_expect 2005-02-15 10:11:31.000000000 -0800 ++++ expect5.45/example/term_expect 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expectk ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec wish "$0" ${1+"$@"} ++ ++package require Expect + + # Name: tkterm - terminal emulator using Expect and Tk text widget, v3.0 + # Author: Don Libes, July '94 +Index: expect5.45/example/vrfy +=================================================================== +--- expect5.45.orig/example/vrfy 2010-07-02 09:03:31.000000000 -0700 ++++ expect5.45/example/vrfy 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,9 @@ +-#!/depot/path/expect -f ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect + + + # separate address into user and host +Index: expect5.45/example/xrlogin +=================================================================== +--- expect5.45.orig/example/xrlogin 2000-01-06 15:22:08.000000000 -0800 ++++ expect5.45/example/xrlogin 2013-11-01 17:35:19.821318341 -0700 +@@ -1,4 +1,10 @@ +-#!/depot/path/expect -- ++#!/bin/sh ++# -*- tcl -*- ++# The next line is executed by /bin/sh, but not tcl \ ++exec tclsh "$0" ${1+"$@"} ++ ++package require Expect ++ + # xrlogin - rlogin but with current DISPLAY + # + # You can extend this idea to save any arbitrary information across rlogin diff --git a/poky/meta/recipes-devtools/expect/expect_5.45.4.bb b/poky/meta/recipes-devtools/expect/expect_5.45.4.bb new file mode 100644 index 000000000..96eacd929 --- /dev/null +++ b/poky/meta/recipes-devtools/expect/expect_5.45.4.bb @@ -0,0 +1,76 @@ +SUMMARY = "tool for automating interactive applications according to a script" +DESCRIPTION = "Expect is a tool for automating interactive applications according to a script. \ +Following the script, Expect knows what can be expected from a program and what \ +the correct response should be. Expect is also useful for testing these same \ +applications. And by adding Tk, you can also wrap interactive applications in \ +X11 GUIs. An interpreted language provides branching and high-level control \ +structures to direct the dialogue. In addition, the user can take control and \ +interact directly when desired, afterward returning control to the script. \ +" +HOMEPAGE = "http://sourceforge.net/projects/expect/" +LICENSE = "PD" +SECTION = "devel" + +LIC_FILES_CHKSUM = "file://license.terms;md5=fbf2de7e9102505b1439db06fc36ce5c" + +DEPENDS += "tcl" +RDEPENDS_${PN} = "tcl" + +inherit autotools update-alternatives + +SRC_URI = "${SOURCEFORGE_MIRROR}/expect/Expect/${PV}/${BPN}${PV}.tar.gz \ + file://0001-configure.in.patch \ + file://0002-tcl.m4.patch \ + file://01-example-shebang.patch \ + file://0001-expect-install-scripts-without-using-the-fixline1-tc.patch \ + file://0001-Resolve-string-formatting-issues.patch \ + file://0001-expect-Fix-segfaults-if-Tcl-is-built-with-stubs-and-.patch \ + " +SRC_URI[md5sum] = "00fce8de158422f5ccd2666512329bd2" +SRC_URI[sha256sum] = "49a7da83b0bdd9f46d04a04deec19c7767bb9a323e40c4781f89caf760b92c34" + +UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/expect/files/Expect/" +UPSTREAM_CHECK_REGEX = "/Expect/(?P<pver>(\d+[\.\-_]*)+)/" + +S = "${WORKDIR}/${BPN}${PV}" + +do_install_append() { + install -d ${D}${libdir} + install -m 0755 ${D}${libdir}/expect${PV}/libexpect*.so ${D}${libdir}/ + install -m 0755 ${S}/fixline1 ${D}${libdir}/expect${PV}/ + install -m 0755 ${S}/example/* ${D}${libdir}/expect${PV}/ + rm ${D}${libdir}/expect${PV}/libexpect*.so + sed -e 's|$dir|${libdir}|' -i ${D}${libdir}/expect${PV}/pkgIndex.tcl +} + +# Apparently the public Tcl headers are only in /usr/include/tcl8.6 +# when building for the target. +TCL_INCLUDE_PATH = "" +TCL_INCLUDE_PATH_class-target = "--with-tclinclude=${STAGING_INCDIR}/tcl8.6" + +EXTRA_OECONF += "--with-tcl=${STAGING_LIBDIR} \ + --enable-shared \ + --enable-threads \ + --disable-rpath \ + ${TCL_INCLUDE_PATH} \ + " +EXTRA_OEMAKE_install = " 'SCRIPTS=' " + +ALTERNATIVE_${PN} = "mkpasswd" +ALTERNATIVE_LINK_NAME[mkpasswd] = "${bindir}/mkpasswd" +# Use lower priority than busybox's mkpasswd (created when built with CONFIG_CRYPTPW) +ALTERNATIVE_PRIORITY[mkpasswd] = "40" + +FILES_${PN}-dev = "${libdir_native}/expect${PV}/libexpect*.so \ + ${includedir}/expect.h \ + ${includedir}/expect_tcl.h \ + ${includedir}/expect_comm.h \ + ${includedir}/tcldbg.h \ + ${includedir}/*.h \ + " + +FILES_${PN} += "${libdir}/libexpect${PV}.so \ + ${libdir}/expect${PV}/* \ + " + +BBCLASSEXTEND = "native nativesdk" |