speech-tools: fix build with gcc15; fix unrunnable scripts (#516188)

This commit is contained in:
7c6f434c
2026-05-05 05:55:45 +00:00
committed by GitHub
4 changed files with 156 additions and 2 deletions
@@ -0,0 +1,46 @@
diff --git a/siod/editline.c b/siod/editline.c
index 6a1b847..964fe5e 100644
--- a/siod/editline.c
+++ b/siod/editline.c
@@ -176,7 +176,7 @@ STATIC STATUS h_next();
STATIC STATUS h_prev();
STATIC STATUS h_first();
STATIC STATUS h_last();
-STATIC int substrcmp(char *text, char *pat, int len);
+STATIC int substrcmp(const char *text, const char *pat, size_t len);
STATIC ECHAR *search_hist(ECHAR *search, ECHAR *(*move)());
STATIC STATUS h_search();
STATIC STATUS fd_char();
@@ -224,10 +224,10 @@ int rl_meta_chars = 0;
*/
STATIC ECHAR *editinput();
#if defined(USE_TERMCAP)
-extern char *getenv();
-extern char *tgetstr();
-extern int tgetent();
-extern int tgetnum();
+extern char *getenv(const char *);
+extern char *tgetstr(char *, char **);
+extern int tgetent(char *, const char *);
+extern int tgetnum(char *);
#endif /* defined(USE_TERMCAP) */
/*
@@ -806,7 +806,7 @@ STATIC STATUS h_last()
/*
** Return zero if pat appears as a substring in text.
*/
-STATIC int substrcmp(char *text, char *pat, int len)
+STATIC int substrcmp(const char *text, const char *pat, size_t len)
{
ECHAR c;
@@ -823,7 +823,7 @@ STATIC ECHAR *search_hist(ECHAR *search, ECHAR *(*move)())
static ECHAR *old_search;
int len;
int pos;
- int (*match)();
+ int (*match)(const char *, const char *, size_t);
char *pat;
/* Save or get remembered search pattern. */
@@ -0,0 +1,39 @@
diff --git a/scripts/est_examples.sh b/scripts/est_examples.sh
index 5e6f38c..b931fda 100755
--- a/scripts/est_examples.sh
+++ b/scripts/est_examples.sh
@@ -64,7 +64,7 @@ EOF
prepend() {
var="$1"
extra="$2"
- eval "val=\$$var"
+ eval "val=\${$var:-}"
if [ -n "$val" ]
then
diff --git a/scripts/shared_script b/scripts/shared_script
index b159134..2732699 100644
--- a/scripts/shared_script
+++ b/scripts/shared_script
@@ -5,7 +5,7 @@
extend() {
var="$1"
extra="$2"
- eval "val=\$$var"
+ eval "val=\${$var:-}"
if [ -n "$val" ]
then
diff --git a/scripts/shared_setup_sh b/scripts/shared_setup_sh
index 64f0ba9..e0488f4 100644
--- a/scripts/shared_setup_sh
+++ b/scripts/shared_setup_sh
@@ -4,7 +4,7 @@
extend() {
var="$1"
extra="$2"
- eval "val=\$$var"
+ eval "val=\${$var:-}"
if [ -n "$val" ]
then
+15 -2
View File
@@ -5,6 +5,7 @@
fetchpatch,
ncurses,
alsa-lib,
perl,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -22,10 +23,17 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/festvox/speech_tools/commit/06141f69d21bf507a9becb5405265dc362edb0df.patch";
hash = "sha256-tRestCBuRhak+2ccsB6mvDxGm/TIYX4eZ3oppCOEP9s=";
})
# Fix C23 compatibility: https://github.com/festvox/speech_tools/pull/58
./fix-c23.patch
# Fix "unbonded variable" error in some scripts
./fix-unbonded-variable.patch
# Fix "ISO C++17 does not allow 'register' storage class specifier
./remove-register-specifier.patch
];
buildInputs = [
ncurses
perl
]
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
@@ -48,11 +56,16 @@ stdenv.mkDerivation (finalAttrs: {
# c99 makes isnan valid for float and double
substituteInPlace include/EST_math.h \
--replace '__isnanf(X)' 'isnan(X)'
# fix script referenced paths
substituteInPlace config/rules/script_process.awk \
--replace-fail "topdir" "\"$out\"" \
--replace-fail "est" "\"$out\""
'';
installPhase = ''
mkdir -p "$out"/{bin,lib}
for d in bin lib; do
mkdir -p "$out"/{bin,include,lib}
for d in bin include lib; do
for i in ./$d/*; do
test "$(basename "$i")" = "Makefile" ||
cp -r "$(readlink -f $i)" "$out/$d"
@@ -0,0 +1,56 @@
diff --git a/base_class/string/EST_strcasecmp.c b/base_class/string/EST_strcasecmp.c
index 72a9b7c..e196c3a 100755
--- a/base_class/string/EST_strcasecmp.c
+++ b/base_class/string/EST_strcasecmp.c
@@ -86,7 +86,7 @@ static const unsigned char def_charmap[] = {
int
EST_strcasecmp(const char *s1, const char *s2, const unsigned char *charmap)
{
- register const unsigned char *cm = charmap?charmap:def_charmap,
+ const unsigned char *cm = charmap?charmap:def_charmap,
*us1 = (const unsigned char *)s1,
*us2 = (const unsigned char *)s2;
int r;
@@ -102,7 +102,7 @@ int
EST_strncasecmp(const char *s1, const char *s2, size_t n, const unsigned char *charmap)
{
if (n != 0) {
- register const unsigned char *cm = charmap?charmap:def_charmap,
+ const unsigned char *cm = charmap?charmap:def_charmap,
*us1 = (const unsigned char *)s1,
*us2 = (const unsigned char *)s2;
diff --git a/base_class/string/regexp.cc b/base_class/string/regexp.cc
index 8b8f15f..c6211fa 100644
--- a/base_class/string/regexp.cc
+++ b/base_class/string/regexp.cc
@@ -175,7 +175,7 @@ STATIC char *regbranch(int *flagp);
STATIC char *regpiece(int *flagp);
STATIC char *regatom(int *flagp);
STATIC char *regnode(char op);
-STATIC char *regnext(register char *p);
+STATIC char *regnext(char *p);
STATIC void regc(char b);
STATIC void reginsert(char op, char *opnd);
STATIC void regtail(char *p, char *val);
diff --git a/base_class/string/regsub.c b/base_class/string/regsub.c
index 017cea2..ed7cc9b 100644
--- a/base_class/string/regsub.c
+++ b/base_class/string/regsub.c
@@ -38,11 +38,11 @@ const hs_regexp *prog;
const char *source;
char *dest;
{
- register char *src;
- register char *dst;
- register char c;
- register int no;
- register int len;
+ char *src;
+ char *dst;
+ char c;
+ int no;
+ int len;
if (prog == NULL || source == NULL || dest == NULL) {
hs_regerror("NULL parm to regsub");