From patchwork Mon Aug 19 10:05:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Tremer X-Patchwork-Id: 8016 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4WnSt10sLBz3x41 for ; Mon, 19 Aug 2024 10:06:17 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature ECDSA (secp384r1)) (Client CN "mail02.haj.ipfire.org", Issuer "E5" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4WnSsx4xLtz4Rj; Mon, 19 Aug 2024 10:06:13 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4WnSsx4B7dz345d; Mon, 19 Aug 2024 10:06:13 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4WnSst5L6Vz341Y for ; Mon, 19 Aug 2024 10:06:10 +0000 (UTC) Received: from michael.haj.ipfire.org (michael.haj.ipfire.org [172.28.1.242]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature ECDSA (secp384r1) client-digest SHA384) (Client CN "michael.haj.ipfire.org", Issuer "E5" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4WnSst0KtHz1rb; Mon, 19 Aug 2024 10:06:10 +0000 (UTC) Received: by michael.haj.ipfire.org (Postfix, from userid 0) id 4WnSss57ydzTgsX; Mon, 19 Aug 2024 10:06:09 +0000 (UTC) From: Michael Tremer To: development@lists.ipfire.org Subject: [PATCH 01/19] expect: Fix build with GCC 14.2 Date: Mon, 19 Aug 2024 10:05:50 +0000 Message-Id: <20240819100608.991138-2-michael.tremer@ipfire.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240819100608.991138-1-michael.tremer@ipfire.org> References: <20240819100608.991138-1-michael.tremer@ipfire.org> MIME-Version: 1.0 Message-ID-Hash: 4TVBSNFVLEUEPSDQ6O32NAJEACBQXSQU X-Message-ID-Hash: 4TVBSNFVLEUEPSDQ6O32NAJEACBQXSQU X-MailFrom: root@michael.haj.ipfire.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Michael Tremer X-Mailman-Version: 3.3.8 Precedence: list List-Id: IPFire development talk Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Signed-off-by: Michael Tremer --- lfs/expect | 1 + src/patches/expect-5.45.4-gcc14-1.patch | 288 ++++++++++++++++++++++++ 2 files changed, 289 insertions(+) create mode 100644 src/patches/expect-5.45.4-gcc14-1.patch diff --git a/lfs/expect b/lfs/expect index 459da1c53..d698b3f29 100644 --- a/lfs/expect +++ b/lfs/expect @@ -71,6 +71,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/tcl* && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) $(UPDATE_AUTOMAKE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/expect-5.45.4-gcc14-1.patch cd $(DIR_APP) && ./configure \ --prefix=$(TOOLS_DIR) \ --build=$(BUILDTARGET) \ diff --git a/src/patches/expect-5.45.4-gcc14-1.patch b/src/patches/expect-5.45.4-gcc14-1.patch new file mode 100644 index 000000000..e2a34df2e --- /dev/null +++ b/src/patches/expect-5.45.4-gcc14-1.patch @@ -0,0 +1,288 @@ +Submitted By: Xi Ruoyao +Date: 2024-04-07 +Initial Package Version: 5.45.4 +Upstream Status: Submitted (for a long time), but the upstream seems + inactive +Origin: Fedora & Self: + - Fedora expect-5.45.4-covscan-fixes.patch + - Fedora expect-c99.patch + - Fedora expect-configure-c99.patch + - We are directly patching configure instead of + patching configure.in like Fedora. It's + generally not a good idea, but better than + adding autoconf into chapter 7 or bloating this + patch into 100+ KiB (with a full regeneration + of the configure script). +Description: Fix some build failure caused by the pre-C99 syntax + no longer allowed by GCC 14 in the default C99 + mode. + +--- a/configure 2018-02-04 18:43:58.000000000 +0800 ++++ b/configure 2024-04-08 01:19:29.253548373 +0800 +@@ -7994,7 +7994,6 @@ + { + extern long timezone; + timezone += 1; +- exit (0); + ; + return 0; + } +@@ -8030,7 +8029,6 @@ + { + extern time_t timezone; + timezone += 1; +- exit (0); + ; + return 0; + } +@@ -8791,7 +8789,7 @@ + $as_echo_n "checking for memcpy... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++#include + int + main () + { +@@ -8831,7 +8829,7 @@ + /* end confdefs.h. */ + + #include +-main() { ++int main() { + #ifndef WNOHANG + return 0; + #else +@@ -8867,7 +8865,7 @@ + + #include + #include +-main() { ++int main() { + #ifdef WNOHANG + FILE *fp = fopen("wnohang","w"); + fprintf(fp,"%d",WNOHANG); +@@ -8935,7 +8933,9 @@ + /* end confdefs.h. */ + + #include +-#define RETSIGTYPE $retsigtype ++#include ++#include ++#include + + int signal_rearms = 0; + +@@ -8952,7 +8952,7 @@ + signal_rearms++; + } + +-main() ++int main() + { + signal(SIGINT,parent_sigint_handler); + +@@ -9234,10 +9234,9 @@ + /* end confdefs.h. */ + + #include +-main() ++int main() + { + struct sgttyb tmp; +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +@@ -9274,10 +9273,9 @@ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +- main() ++ int main() + { + struct termio tmp; +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +@@ -9312,10 +9310,9 @@ + # include + # endif + # include +- main() ++ int main() + { + struct termios tmp; +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +@@ -9350,7 +9347,7 @@ + #include + #endif + #include +-main() { ++int main() { + #if defined(TCGETS) || defined(TCGETA) + return 0; + #else +@@ -9388,7 +9385,7 @@ + #include + #endif + #include +-main() { ++int main() { + #ifdef TIOCGWINSZ + return 0; + #else +@@ -9423,7 +9420,7 @@ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +-main(){ ++int main(){ + #ifdef CRAY + return 0; + #else +@@ -9565,12 +9562,10 @@ + + extern char *tzname[2]; + extern int daylight; +-main() ++int main() + { + int *x = &daylight; + char **y = tzname; +- +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +--- a/exp_chan.c 2018-02-03 03:15:52.000000000 +0800 ++++ b/exp_chan.c 2024-04-07 21:56:43.663163369 +0800 +@@ -58,7 +58,7 @@ + + Tcl_ChannelType expChannelType = { + "exp", /* Type name. */ +- ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ ++ TCL_CHANNEL_VERSION_2, + ExpCloseProc, /* Close proc. */ + ExpInputProc, /* Input proc. */ + ExpOutputProc, /* Output proc. */ +@@ -68,6 +68,7 @@ + ExpWatchProc, /* Initialize notifier. */ + ExpGetHandleProc, /* Get OS handles out of channel. */ + NULL, /* Close2 proc */ ++ ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ + }; + + typedef struct ThreadSpecificData { + +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 ++#endif ++ ++//#ifdef HAVE_SYS_WAIT_H ++# include ++//#endif ++ + #ifdef HAVE_SYS_FCNTL_H + # include + #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 + /*extern char *sys_errlist[];*/ +@@ -189,6 +190,7 @@ static char slave_name[MAXPTYNAMELEN]; + #endif /* HAVE_SCO_CLIST_PTYS */ + + #ifdef HAVE_OPENPTY ++#include + static char master_name[64]; + static char slave_name[64]; + #endif