mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2024-09-20 11:23:16 +00:00
main/expect: fix build with gcc14
Import patches from arch Add autoreconf to prepare (one patch tweaks configure.in)
This commit is contained in:
parent
f9013886da
commit
ef26bb4fa4
4 changed files with 340 additions and 2 deletions
|
@ -2,13 +2,13 @@
|
|||
# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
|
||||
pkgname=expect
|
||||
pkgver=5.45.4
|
||||
pkgrel=4
|
||||
pkgrel=5
|
||||
pkgdesc="A tool for automating interactive applications"
|
||||
url="https://core.tcl-lang.org/expect/index"
|
||||
arch="all"
|
||||
# https://expect.sourceforge.net/FAQ.html#q6
|
||||
license="NIST-PD"
|
||||
makedepends="tcl-dev"
|
||||
makedepends="autoconf automake tcl-dev"
|
||||
subpackages="$pkgname-dev $pkgname-doc"
|
||||
source="https://downloads.sourceforge.net/project/expect/Expect/$pkgver/expect$pkgver.tar.gz
|
||||
07-file-handle.patch
|
||||
|
@ -17,12 +17,16 @@ source="https://downloads.sourceforge.net/project/expect/Expect/$pkgver/expect$p
|
|||
12-fdout.patch
|
||||
22-segfault-with-stubs.patch
|
||||
24-format.patch
|
||||
expect-5.45.4-covscan-fixes.patch
|
||||
expect-c99.patch
|
||||
expect-configure-c99.patch
|
||||
"
|
||||
builddir="$srcdir"/$pkgname$pkgver
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
update_config_sub
|
||||
autoreconf -i
|
||||
}
|
||||
|
||||
build() {
|
||||
|
@ -55,4 +59,7 @@ f7760ba5ce60659cce4d64beaf3cf50ecd6a8af7714b704bbd08ba970e0883b0eb7ddfd83522f21b
|
|||
8675a93f3344e4eeb5024faa487bdcdfb0bc8ec86ed0abcf5612e130e346b35f7d9bf7d601714cc6acb32ccc77ecc309e51e39e0a0ad17f0a3ceeacc5031f6ce 12-fdout.patch
|
||||
f4c7789feea3eae471c988d7c78ce78da1bd4ab765d142e7fce5a7a2a92e887310ba571ea2a010110f7e0859102fadfb56b2b7e1638c52586657299e6e332c91 22-segfault-with-stubs.patch
|
||||
38b542330d26ca0dade87bfad20f71f7411fc2951d4d53706f938f83a862ed4868990bc24bdbffb09c9591cca22cca913e073605216311a36a008550c00b1b78 24-format.patch
|
||||
0610e7e901857b773be7d5b01cae6a1844914b7f9ff1a7c5f02dc89e14dd6318711a2417f97a10fb28866fed77e16c7757ca6c6ca65e5603defddb551e9a14a3 expect-5.45.4-covscan-fixes.patch
|
||||
dc0078b3ccd7aacfd86e24249b0570b3c0cdbf1c0b660a1414df0b28d32503995e7fca3b582d08dc94a4855ef3cc280f2fc9233c331f07e30c23ff6e8a9f1b27 expect-c99.patch
|
||||
5e48866ffa0891f7c28edf871d563d67e7b720743feea1a199766b76b54316b97be4121a05c4de205b00eaa4efea8659349699d78fe12cb9777c89a36f2d6b78 expect-configure-c99.patch
|
||||
"
|
||||
|
|
107
main/expect/expect-5.45.4-covscan-fixes.patch
Normal file
107
main/expect/expect-5.45.4-covscan-fixes.patch
Normal file
|
@ -0,0 +1,107 @@
|
|||
diff -up expect5.45.4/exp_chan.c.orig expect5.45.4/exp_chan.c
|
||||
--- expect5.45.4/exp_chan.c.orig 2018-02-02 20:15:52.000000000 +0100
|
||||
+++ expect5.45.4/exp_chan.c 2018-10-09 14:14:44.851965292 +0200
|
||||
@@ -51,6 +51,8 @@ static void ExpWatchProc _ANSI_ARGS_((C
|
||||
int mask));
|
||||
static int ExpGetHandleProc _ANSI_ARGS_((ClientData instanceData,
|
||||
int direction, ClientData *handlePtr));
|
||||
+void exp_background_channelhandler _ANSI_ARGS_((ClientData,
|
||||
+ int));
|
||||
|
||||
/*
|
||||
* This structure describes the channel type structure for Expect-based IO:
|
||||
diff -up expect5.45.4/exp_clib.c.orig expect5.45.4/exp_clib.c
|
||||
--- expect5.45.4/exp_clib.c.orig 2018-10-09 14:14:44.841965281 +0200
|
||||
+++ expect5.45.4/exp_clib.c 2018-10-09 14:14:44.873965319 +0200
|
||||
@@ -37,6 +37,14 @@ would appreciate credit if this program
|
||||
# endif
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_UNISTD_H
|
||||
+# include <unistd.h>
|
||||
+#endif
|
||||
+
|
||||
+//#ifdef HAVE_SYS_WAIT_H
|
||||
+# include <sys/wait.h>
|
||||
+//#endif
|
||||
+
|
||||
#ifdef HAVE_SYS_FCNTL_H
|
||||
# include <sys/fcntl.h>
|
||||
#else
|
||||
@@ -2196,6 +2204,7 @@ int exp_getptyslave();
|
||||
#define sysreturn(x) return(errno = x, -1)
|
||||
|
||||
void exp_init_pty();
|
||||
+void exp_init_tty();
|
||||
|
||||
/*
|
||||
The following functions are linked from the Tcl library. They
|
||||
@@ -2715,6 +2724,7 @@ exp_spawnl TCL_VARARGS_DEF(char *,arg1)
|
||||
argv[i] = va_arg(args,char *);
|
||||
if (!argv[i]) break;
|
||||
}
|
||||
+ va_end(args);
|
||||
i = exp_spawnv(argv[0],argv+1);
|
||||
free((char *)argv);
|
||||
return(i);
|
||||
@@ -3188,6 +3198,7 @@ exp_expectl TCL_VARARGS_DEF(int,arg1)
|
||||
/* Ultrix 4.2 compiler refuses enumerations comparison!? */
|
||||
if ((int)type < 0 || (int)type >= (int)exp_bogus) {
|
||||
fprintf(stderr,"bad type (set %d) in exp_expectl\n",i);
|
||||
+ va_end(args);
|
||||
sysreturn(EINVAL);
|
||||
}
|
||||
|
||||
@@ -3253,6 +3264,7 @@ exp_fexpectl TCL_VARARGS_DEF(FILE *,arg1
|
||||
/* Ultrix 4.2 compiler refuses enumerations comparison!? */
|
||||
if ((int)type < 0 || (int)type >= (int)exp_bogus) {
|
||||
fprintf(stderr,"bad type (set %d) in exp_expectl\n",i);
|
||||
+ va_end(args);
|
||||
sysreturn(EINVAL);
|
||||
}
|
||||
|
||||
diff -up expect5.45.4/exp_log.c.orig expect5.45.4/exp_log.c
|
||||
--- expect5.45.4/exp_log.c.orig 2018-10-09 14:14:44.838965277 +0200
|
||||
+++ expect5.45.4/exp_log.c 2018-10-09 14:14:44.852965294 +0200
|
||||
@@ -174,7 +174,10 @@ expStdoutLog TCL_VARARGS_DEF(int,arg1)
|
||||
force_stdout = TCL_VARARGS_START(int,arg1,args);
|
||||
fmt = va_arg(args,char *);
|
||||
|
||||
- if ((!tsdPtr->logUser) && (!force_stdout) && (!tsdPtr->logAll)) return;
|
||||
+ if ((!tsdPtr->logUser) && (!force_stdout) && (!tsdPtr->logAll)) {
|
||||
+ va_end(args);
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
(void) vsnprintf(bigbuf,sizeof(bigbuf),fmt,args);
|
||||
expDiagWriteBytes(bigbuf,-1);
|
||||
diff -up expect5.45.4/exp_main_sub.c.orig expect5.45.4/exp_main_sub.c
|
||||
--- expect5.45.4/exp_main_sub.c.orig 2018-10-09 14:14:44.848965289 +0200
|
||||
+++ expect5.45.4/exp_main_sub.c 2018-10-09 14:14:44.852965294 +0200
|
||||
@@ -57,6 +57,7 @@ int exp_cmdlinecmds = FALSE;
|
||||
int exp_interactive = FALSE;
|
||||
int exp_buffer_command_input = FALSE;/* read in entire cmdfile at once */
|
||||
int exp_fgets();
|
||||
+int exp_tty_cooked_echo(Tcl_Interp *interp, exp_tty *tty_old, int *was_raw, int *was_echo);
|
||||
|
||||
Tcl_Interp *exp_interp; /* for use by signal handlers who can't figure out */
|
||||
/* the interpreter directly */
|
||||
diff -up expect5.45.4/pty_termios.c.orig expect5.45.4/pty_termios.c
|
||||
--- expect5.45.4/pty_termios.c.orig 2018-10-09 14:17:00.132127498 +0200
|
||||
+++ expect5.45.4/pty_termios.c 2018-10-09 14:33:59.393315570 +0200
|
||||
@@ -105,6 +105,7 @@ with openpty which supports 4000 while p
|
||||
|
||||
void expDiagLog();
|
||||
void expDiagLogPtr();
|
||||
+char *expErrnoMsg(int errorNo);
|
||||
|
||||
#include <errno.h>
|
||||
/*extern char *sys_errlist[];*/
|
||||
@@ -189,6 +190,7 @@ static char slave_name[MAXPTYNAMELEN];
|
||||
#endif /* HAVE_SCO_CLIST_PTYS */
|
||||
|
||||
#ifdef HAVE_OPENPTY
|
||||
+#include <pty.h>
|
||||
static char master_name[64];
|
||||
static char slave_name[64];
|
||||
#endif
|
24
main/expect/expect-c99.patch
Normal file
24
main/expect/expect-c99.patch
Normal file
|
@ -0,0 +1,24 @@
|
|||
Adjustments for compatibility with the currrent (Tcl 8.4.0+) channel
|
||||
implementation.
|
||||
|
||||
diff --git a/exp_chan.c b/exp_chan.c
|
||||
index c92e26b6fbd02305..944200a63b102672 100644
|
||||
--- a/exp_chan.c
|
||||
+++ b/exp_chan.c
|
||||
@@ -60,7 +60,7 @@ void exp_background_channelhandler _ANSI_ARGS_((ClientData,
|
||||
|
||||
Tcl_ChannelType expChannelType = {
|
||||
"exp", /* Type name. */
|
||||
- ExpBlockModeProc, /* Set blocking/nonblocking mode.*/
|
||||
+ TCL_CHANNEL_VERSION_2,
|
||||
ExpCloseProc, /* Close proc. */
|
||||
ExpInputProc, /* Input proc. */
|
||||
ExpOutputProc, /* Output proc. */
|
||||
@@ -70,6 +70,7 @@ Tcl_ChannelType expChannelType = {
|
||||
ExpWatchProc, /* Initialize notifier. */
|
||||
ExpGetHandleProc, /* Get OS handles out of channel. */
|
||||
NULL, /* Close2 proc */
|
||||
+ ExpBlockModeProc, /* Set blocking/nonblocking mode.*/
|
||||
};
|
||||
|
||||
typedef struct ThreadSpecificData {
|
200
main/expect/expect-configure-c99.patch
Normal file
200
main/expect/expect-configure-c99.patch
Normal file
|
@ -0,0 +1,200 @@
|
|||
Avoid calling exit without declaring the function.
|
||||
|
||||
Add missing <string.h> include for memcpy.
|
||||
|
||||
Use AC_TYPE_SIGNAL to fix REARM_SIG check. Add missing includes.
|
||||
|
||||
Fix various implicit int return types of main.
|
||||
|
||||
Submitted upstream here: <https://sourceforge.net/p/expect/patches/24/#6759>
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 51558fa14d2bcf7e..055c88fbd8797eaa 100755
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -452,7 +452,11 @@ AC_CHECK_FUNC(siglongjmp, AC_DEFINE(HAVE_SIGLONGJMP))
|
||||
# because Unixware 2.0 handles it specially and refuses to compile
|
||||
# autoconf's automatic test that is a call with no arguments
|
||||
AC_MSG_CHECKING([for memcpy])
|
||||
-AC_TRY_LINK(,[
|
||||
+AC_TRY_LINK([
|
||||
+#ifdef HAVE_STRING_H
|
||||
+#include <string.h>
|
||||
+#endif
|
||||
+],[
|
||||
char *s1, *s2;
|
||||
memcpy(s1,s2,0);
|
||||
],
|
||||
@@ -469,6 +473,7 @@ memcpy(s1,s2,0);
|
||||
AC_MSG_CHECKING([if WNOHANG requires _POSIX_SOURCE])
|
||||
AC_TRY_RUN([
|
||||
#include <sys/wait.h>
|
||||
+int
|
||||
main() {
|
||||
#ifndef WNOHANG
|
||||
return 0;
|
||||
@@ -489,6 +494,7 @@ rm -rf wnohang
|
||||
AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#include <sys/wait.h>
|
||||
+int
|
||||
main() {
|
||||
#ifdef WNOHANG
|
||||
FILE *fp = fopen("wnohang","w");
|
||||
@@ -527,16 +533,21 @@ else
|
||||
AC_DEFINE(SELECT_MASK_TYPE, fd_set)
|
||||
fi
|
||||
|
||||
-dnl # Check for the data type of the function used in signal(). This
|
||||
-dnl # must be before the test for rearming.
|
||||
-dnl # echo checking return type of signal handlers
|
||||
-dnl AC_HEADER_EGREP([(void|sighandler_t).*signal], signal.h, retsigtype=void,AC_DEFINE(RETSIGTYPE, int) retsigtype=int)
|
||||
+AC_TYPE_SIGNAL
|
||||
|
||||
# FIXME: check if alarm exists
|
||||
AC_MSG_CHECKING([if signals need to be re-armed])
|
||||
AC_TRY_RUN([
|
||||
#include <signal.h>
|
||||
-#define RETSIGTYPE $retsigtype
|
||||
+#ifdef HAVE_STDLIB_H
|
||||
+# include <stdlib.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_UNISTD_H
|
||||
+# include <unistd.h>
|
||||
+#endif
|
||||
+#ifndef NO_SYS_WAIT_H
|
||||
+# include <sys/wait.h>
|
||||
+#endif
|
||||
|
||||
int signal_rearms = 0;
|
||||
|
||||
@@ -553,6 +564,7 @@ int n;
|
||||
signal_rearms++;
|
||||
}
|
||||
|
||||
+int
|
||||
main()
|
||||
{
|
||||
signal(SIGINT,parent_sigint_handler);
|
||||
@@ -714,10 +726,11 @@ fi
|
||||
AC_MSG_CHECKING([for struct sgttyb])
|
||||
AC_TRY_RUN([
|
||||
#include <sgtty.h>
|
||||
+int
|
||||
main()
|
||||
{
|
||||
struct sgttyb tmp;
|
||||
- exit(0);
|
||||
+ return 0;
|
||||
}],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_SGTTYB)
|
||||
@@ -738,10 +751,11 @@ if test $mach -eq 0 ; then
|
||||
# pty_termios.c is set up to handle pty_termio.
|
||||
AC_MSG_CHECKING([for struct termio])
|
||||
AC_TRY_RUN([#include <termio.h>
|
||||
+ int
|
||||
main()
|
||||
{
|
||||
struct termio tmp;
|
||||
- exit(0);
|
||||
+ return 0;
|
||||
}],
|
||||
AC_DEFINE(HAVE_TERMIO)
|
||||
PTY_TYPE=termios
|
||||
@@ -760,10 +774,11 @@ if test $mach -eq 0 ; then
|
||||
# include <inttypes.h>
|
||||
# endif
|
||||
# include <termios.h>
|
||||
+ int
|
||||
main()
|
||||
{
|
||||
struct termios tmp;
|
||||
- exit(0);
|
||||
+ return 0;
|
||||
}],
|
||||
AC_DEFINE(HAVE_TERMIOS)
|
||||
PTY_TYPE=termios
|
||||
@@ -782,6 +797,7 @@ AC_TRY_RUN([
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
#include <termios.h>
|
||||
+int
|
||||
main() {
|
||||
#if defined(TCGETS) || defined(TCGETA)
|
||||
return 0;
|
||||
@@ -804,6 +820,7 @@ AC_TRY_RUN([
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
#include <termios.h>
|
||||
+int
|
||||
main() {
|
||||
#ifdef TIOCGWINSZ
|
||||
return 0;
|
||||
@@ -823,6 +840,7 @@ main() {
|
||||
AC_MSG_CHECKING([for Cray-style ptys])
|
||||
SETUID=":"
|
||||
AC_TRY_RUN([
|
||||
+int
|
||||
main(){
|
||||
#ifdef CRAY
|
||||
return 0;
|
||||
@@ -878,12 +896,13 @@ AC_MSG_CHECKING([for SV-style timezone])
|
||||
AC_TRY_RUN([
|
||||
extern char *tzname[2];
|
||||
extern int daylight;
|
||||
+int
|
||||
main()
|
||||
{
|
||||
int *x = &daylight;
|
||||
char **y = tzname;
|
||||
|
||||
- exit(0);
|
||||
+ return 0;
|
||||
}],
|
||||
AC_DEFINE(HAVE_SV_TIMEZONE)
|
||||
AC_MSG_RESULT(yes),
|
||||
diff --git a/tclconfig/tcl.m4 b/tclconfig/tcl.m4
|
||||
index 0689cab3da994068..ebe839e5553ba520 100644
|
||||
--- a/tclconfig/tcl.m4
|
||||
+++ b/tclconfig/tcl.m4
|
||||
@@ -2400,7 +2400,7 @@ AC_DEFUN([TEA_TIME_HANDLER], [
|
||||
AC_TRY_COMPILE([#include <time.h>],
|
||||
[extern long timezone;
|
||||
timezone += 1;
|
||||
- exit (0);],
|
||||
+ return 0;],
|
||||
tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
|
||||
if test $tcl_cv_timezone_long = yes ; then
|
||||
AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
|
||||
@@ -2412,7 +2412,7 @@ AC_DEFUN([TEA_TIME_HANDLER], [
|
||||
AC_TRY_COMPILE([#include <time.h>],
|
||||
[extern time_t timezone;
|
||||
timezone += 1;
|
||||
- exit (0);],
|
||||
+ return 0;],
|
||||
tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
|
||||
if test $tcl_cv_timezone_time = yes ; then
|
||||
AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
|
||||
@@ -2452,17 +2452,17 @@ AC_DEFUN([TEA_BUGGY_STRTOD], [
|
||||
double value;
|
||||
value = strtod(infString, &term);
|
||||
if ((term != infString) && (term[-1] == 0)) {
|
||||
- exit(1);
|
||||
+ return 1;
|
||||
}
|
||||
value = strtod(nanString, &term);
|
||||
if ((term != nanString) && (term[-1] == 0)) {
|
||||
- exit(1);
|
||||
+ return 1;
|
||||
}
|
||||
value = strtod(spaceString, &term);
|
||||
if (term == (spaceString+1)) {
|
||||
- exit(1);
|
||||
+ return 1;
|
||||
}
|
||||
- exit(0);
|
||||
+ return 0;
|
||||
}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
|
||||
tcl_cv_strtod_buggy=buggy)])
|
||||
if test "$tcl_cv_strtod_buggy" = buggy; then
|
Loading…
Reference in a new issue